|  | @@ -1,50 +1,19 @@
 | 
	
		
			
				|  |  |  <template>
 | 
	
		
			
				|  |  |    <div>
 | 
	
		
			
				|  |  | -    <!-- 奖扣ab分弹窗 -->
 | 
	
		
			
				|  |  | -    <el-dialog
 | 
	
		
			
				|  |  | -      :title="title"
 | 
	
		
			
				|  |  | -      :visible.sync="visible"
 | 
	
		
			
				|  |  | -      :close-on-click-modal="false"
 | 
	
		
			
				|  |  | -      :before-close="closePopup"
 | 
	
		
			
				|  |  | -      width="600px">
 | 
	
		
			
				|  |  | +    <!-- 积分申请 -->
 | 
	
		
			
				|  |  | +    <el-dialog :title="title" :visible.sync="visible" :close-on-click-modal="false" :before-close="closePopup" width="600px">
 | 
	
		
			
				|  |  |        <div>
 | 
	
		
			
				|  |  | -        <el-form :model="dialogData" ref="dialogData" label-width="80px" v-loading="loading">          
 | 
	
		
			
				|  |  | +        <el-form :model="dialogData" ref="dialogData" label-width="80px" v-loading="loading">
 | 
	
		
			
				|  |  |            <div v-for="(item,index) in dialogData.items" :key="index" @click="itemIndex = index">
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |              <div style="overflow: hidden;">
 | 
	
		
			
				|  |  |                <span style="line-height: 36px;">申请明细({{index+1}})</span>
 | 
	
		
			
				|  |  |                <el-button type="text" class="fr" v-show="index > 0 || dialogData.items.length > 1" @click="delItem(index)">删除</el-button>
 | 
	
		
			
				|  |  |              </div>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            <el-form-item label="录入对象" :prop="'items.'+ index +'.employeeName'" :rules="[{ required: true, message: '请选择录入对象', trigger: 'change' }]">
 | 
	
		
			
				|  |  | -              <el-row>
 | 
	
		
			
				|  |  | -                <el-col :span="18">
 | 
	
		
			
				|  |  | -                  <el-input v-show="item.employeeNames.length==0" auto-complete="off" v-model="item.employeeName" placeholder="请选择录入对象"></el-input>
 | 
	
		
			
				|  |  | -                  <div @click="item.show_employee_selector = true" style=" position: absolute; top: 0; right: 0; left: 0; bottom: 0; z-index: 9;"></div>
 | 
	
		
			
				|  |  | -                  <div v-if="item.employeeNames.length>0"  @click="item.show_employee_selector = true" class="zindexName">
 | 
	
		
			
				|  |  | -                    <span v-for="(arr,att) in item.employeeNames" :key="att">
 | 
	
		
			
				|  |  | -                      <WWOpenData type="userName" :openid="arr.name"></WWOpenData><span v-if="(item.employeeNames.length-att)>1">,</span>
 | 
	
		
			
				|  |  | -                    </span>
 | 
	
		
			
				|  |  | -                  </div>
 | 
	
		
			
				|  |  | -                </el-col>
 | 
	
		
			
				|  |  | -              </el-row>
 | 
	
		
			
				|  |  | -              <!-- <EmployeeSelector
 | 
	
		
			
				|  |  | -                :is_filtration_creator="true"
 | 
	
		
			
				|  |  | -                :employee_not_select="item.employee_not_select"
 | 
	
		
			
				|  |  | -                :can_select_employee="true"
 | 
	
		
			
				|  |  | -                :can_select_dept="false"
 | 
	
		
			
				|  |  | -                :multi="false"
 | 
	
		
			
				|  |  | -                :selected="item.employee_selected"
 | 
	
		
			
				|  |  | -                :visible.sync="item.show_employee_selector"
 | 
	
		
			
				|  |  | -                @confirm="employee_confirm"/> -->
 | 
	
		
			
				|  |  | -              <EmployeeSelector
 | 
	
		
			
				|  |  | -                :isChecKedAll="false"
 | 
	
		
			
				|  |  | -                :employee_not_select="item.employee_not_select"
 | 
	
		
			
				|  |  | -                :multi="false"
 | 
	
		
			
				|  |  | -                :selected="item.employee_selected"
 | 
	
		
			
				|  |  | -                :visible.sync="item.show_employee_selector"
 | 
	
		
			
				|  |  | -                @confirm="employee_confirm"
 | 
	
		
			
				|  |  | -              />
 | 
	
		
			
				|  |  | +            <el-form-item label="录入对象" :prop="'items.'+ index +'.employeeInfo.name'" :rules="[{ required: true, message: '请选择录入对象', trigger: 'change' }]">
 | 
	
		
			
				|  |  | +              <div class="zindexName" @click="selectEmployee(index)">
 | 
	
		
			
				|  |  | +                <WWOpenData type="userName" v-if="item.employeeInfo.id" :openid="item.employeeInfo.name"></WWOpenData></span>
 | 
	
		
			
				|  |  | +                <span style="color: #DCDFE6;" v-else>请选择录入对象</span>
 | 
	
		
			
				|  |  | +              </div>
 | 
	
		
			
				|  |  |              </el-form-item>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              <el-form-item label="指定规则">
 | 
	
	
		
			
				|  | @@ -62,6 +31,7 @@
 | 
	
		
			
				|  |  |                :popper-class="'itemClass'"
 | 
	
		
			
				|  |  |                :options="rule_item_list"
 | 
	
		
			
				|  |  |                @change="ruleItemChange"
 | 
	
		
			
				|  |  | +              @visible-change="visibleChange($event,index)"
 | 
	
		
			
				|  |  |                :show-all-levels="false"
 | 
	
		
			
				|  |  |                :props="{ children: 'child', label: 'name', value: 'id'}"
 | 
	
		
			
				|  |  |                ></el-cascader>
 | 
	
	
		
			
				|  | @@ -71,7 +41,7 @@
 | 
	
		
			
				|  |  |                <div v-show="item.rule_item_details.range_type == 2">{{get_point_name(item.rule_item_details.pt_id)}}  {{item.rule_item_details.min_point}} ~ {{item.rule_item_details.max_point}}</div>
 | 
	
		
			
				|  |  |                <div>{{item.rule_item_details.name}}</div>
 | 
	
		
			
				|  |  |              </el-form-item>
 | 
	
		
			
				|  |  | -            
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              <el-form-item label="发生时间" :prop="'items.'+ index +'.event_time'" :rules="[{ required: true, message: '请选择时间', trigger: 'blur' }]">
 | 
	
		
			
				|  |  |                <el-row>
 | 
	
		
			
				|  |  |                  <el-col :span="18">
 | 
	
	
		
			
				|  | @@ -79,11 +49,11 @@
 | 
	
		
			
				|  |  |                  </el-col>
 | 
	
		
			
				|  |  |                </el-row>
 | 
	
		
			
				|  |  |              </el-form-item>
 | 
	
		
			
				|  |  | -            
 | 
	
		
			
				|  |  | -            <el-form-item label="事件内容" :prop="'items.'+ index +'.remark'" :rules="[{ required: true, message: '请输入事件内容', trigger: 'blur' },{ min: 3, max: 100, message: '长度在 3 到 100 个字符', trigger: 'blur' }]">
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            <el-form-item label="事件内容" :prop="'items.'+ index +'.remark'" :rules="[{ required: true, message: '请输入事件内容', trigger: 'blur' },{ min: 3, max: 300, message: '长度在 3 到 300 个字符', trigger: 'blur' }]">
 | 
	
		
			
				|  |  |                <el-row>
 | 
	
		
			
				|  |  |                  <el-col :span="18">
 | 
	
		
			
				|  |  | -                  <el-input type="textarea" rows="6" placeholder="请输入事件内容(限100字)" style="width: 100%;" v-model="item.remark"></el-input>
 | 
	
		
			
				|  |  | +                  <el-input type="textarea" rows="6" placeholder="请输入事件内容(限300字)" style="width: 100%;" v-model="item.remark"></el-input>
 | 
	
		
			
				|  |  |                  </el-col>
 | 
	
		
			
				|  |  |                </el-row>
 | 
	
		
			
				|  |  |              </el-form-item>
 | 
	
	
		
			
				|  | @@ -105,42 +75,11 @@
 | 
	
		
			
				|  |  |                  <el-button size="small" type="primary" >点击上传</el-button>(最多选择3张)
 | 
	
		
			
				|  |  |                </uploadOss>
 | 
	
		
			
				|  |  |              </el-form-item>
 | 
	
		
			
				|  |  | -            
 | 
	
		
			
				|  |  | -            <el-form-item label="审批人" :prop="'items.'+ index +'.approvalName'" :rules="[{ required: true, message: '请选择审批人', trigger: 'blur' }]">
 | 
	
		
			
				|  |  | -              
 | 
	
		
			
				|  |  | -              <el-row>
 | 
	
		
			
				|  |  | -                <el-col :span="18">
 | 
	
		
			
				|  |  | -                  <el-input v-if="item.approvalName==''" auto-complete="off" v-model="item.approvalName" placeholder="请选择审批人"></el-input>
 | 
	
		
			
				|  |  | -                  <div v-if="item.approval_selected.length == 0" @click="approval_selected_null" style=" position: absolute; top: 0; right: 0; left: 0; bottom: 0; z-index: 9;"></div>
 | 
	
		
			
				|  |  | -                  
 | 
	
		
			
				|  |  | -                  <div v-else-if="item.approvalName!=''" @click="item.show_approval_selector = true" class="zindexName">
 | 
	
		
			
				|  |  | -                    <WWOpenData type="userName" :openid="item.approvalName"></WWOpenData>
 | 
	
		
			
				|  |  | -                  </div>
 | 
	
		
			
				|  |  | -                  <div v-else-if="item.approvalName==''" @click="item.show_approval_selector = true" style=" position: absolute; top: 0; right: 0; left: 0; bottom: 0; z-index: 9;"></div>
 | 
	
		
			
				|  |  | -                </el-col>
 | 
	
		
			
				|  |  | -              </el-row>
 | 
	
		
			
				|  |  | -              <!-- <EmployeeSelector
 | 
	
		
			
				|  |  | -                :employee_not_select="item.approval_not_select"
 | 
	
		
			
				|  |  | -                :can_select_employee="true"
 | 
	
		
			
				|  |  | -                :can_select_dept="false"
 | 
	
		
			
				|  |  | -                :multi="false"
 | 
	
		
			
				|  |  | -                :employee_list="item.approval_employee_list"
 | 
	
		
			
				|  |  | -                :selected="item.approval_selected"
 | 
	
		
			
				|  |  | -                :visible.sync="item.show_approval_selector"
 | 
	
		
			
				|  |  | -                @confirm="approval_confirm"/> -->
 | 
	
		
			
				|  |  | -              <EmployeeSelector
 | 
	
		
			
				|  |  | -                :employee_not_select="item.approval_not_select"
 | 
	
		
			
				|  |  | -                :multi="false"
 | 
	
		
			
				|  |  | -                :isChecKedAll="false"
 | 
	
		
			
				|  |  | -                :is_filtration_creator="false"
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                :user_employee_list="true"
 | 
	
		
			
				|  |  | -                :employee_list="item.approval_employee_list"
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                :selected="item.approval_selected"
 | 
	
		
			
				|  |  | -                :visible.sync="item.show_approval_selector"
 | 
	
		
			
				|  |  | -                @confirm="approval_confirm"
 | 
	
		
			
				|  |  | -              />
 | 
	
		
			
				|  |  | +            <el-form-item label="审批人" :prop="'items.'+ index +'.reviewerInfo.name'" :rules="[{ required: true, message: '请选择审批人', trigger: 'blur' }]">
 | 
	
		
			
				|  |  | +              <div class="zindexName" @click="selectReviewer(index)">
 | 
	
		
			
				|  |  | +                <WWOpenData type="userName" v-if="item.reviewerInfo.id" :openid="item.reviewerInfo.name"></WWOpenData></span>
 | 
	
		
			
				|  |  | +                <span style="color: #DCDFE6;" v-else>请选择审批人</span>
 | 
	
		
			
				|  |  | +              </div>
 | 
	
		
			
				|  |  |              </el-form-item>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |            </div>
 | 
	
	
		
			
				|  | @@ -158,27 +97,49 @@
 | 
	
		
			
				|  |  |        </div>
 | 
	
		
			
				|  |  |      </el-dialog>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        <el-dialog
 | 
	
		
			
				|  |  | -          :title="'提交结果'"
 | 
	
		
			
				|  |  | -          :visible.sync="error_list_show"
 | 
	
		
			
				|  |  | -          :append-to-body='true'
 | 
	
		
			
				|  |  | -          @close='error_list_SX'
 | 
	
		
			
				|  |  | -          width="700px">
 | 
	
		
			
				|  |  | -          <el-table :data="error_list">
 | 
	
		
			
				|  |  | -            <el-table-column prop="target" label="员工">
 | 
	
		
			
				|  |  | -              <template slot-scope="scope">
 | 
	
		
			
				|  |  | -                <WWOpenData type="userName" :openid="scope.row.target"></WWOpenData>
 | 
	
		
			
				|  |  | -              </template>
 | 
	
		
			
				|  |  | -            </el-table-column>
 | 
	
		
			
				|  |  | -            <el-table-column prop="point" label="积分"></el-table-column>
 | 
	
		
			
				|  |  | -            <el-table-column prop="status" label="处理状态">
 | 
	
		
			
				|  |  | -              <template slot-scope="scope">
 | 
	
		
			
				|  |  | -                <span :style="'color:'+(scope.row.status==0?'#f70000':'#47bf47')">{{scope.row.status==0?'申请失败':'申请成功'}}</span>
 | 
	
		
			
				|  |  | -              </template>
 | 
	
		
			
				|  |  | -            </el-table-column>
 | 
	
		
			
				|  |  | -            <el-table-column prop="msg" label="备注信息"></el-table-column>
 | 
	
		
			
				|  |  | -          </el-table>
 | 
	
		
			
				|  |  | -        </el-dialog>
 | 
	
		
			
				|  |  | +    <!-- 录入对象 -->
 | 
	
		
			
				|  |  | +    <EmployeeSelector
 | 
	
		
			
				|  |  | +      :isChecKedAll="false"
 | 
	
		
			
				|  |  | +      :multi="false"
 | 
	
		
			
				|  |  | +      isRequired
 | 
	
		
			
				|  |  | +      :selected="employee_selected"
 | 
	
		
			
				|  |  | +      :visible.sync="isShowEmployee"
 | 
	
		
			
				|  |  | +      @confirm="employee_confirm"
 | 
	
		
			
				|  |  | +    />
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    <!-- 审批人 -->
 | 
	
		
			
				|  |  | +    <EmployeeSelector
 | 
	
		
			
				|  |  | +      :multi="false"
 | 
	
		
			
				|  |  | +      :isChecKedAll="false"
 | 
	
		
			
				|  |  | +      :is_filtration_creator="false"
 | 
	
		
			
				|  |  | +      :user_employee_list="true"
 | 
	
		
			
				|  |  | +      isRequired
 | 
	
		
			
				|  |  | +      :employee_list="approval_employee_list"
 | 
	
		
			
				|  |  | +      :selected="approval_selected"
 | 
	
		
			
				|  |  | +      :visible.sync="isShowApproval"
 | 
	
		
			
				|  |  | +      @confirm="approval_confirm"
 | 
	
		
			
				|  |  | +    />
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    <el-dialog
 | 
	
		
			
				|  |  | +      :title="'提交结果'"
 | 
	
		
			
				|  |  | +      :visible.sync="error_list_show"
 | 
	
		
			
				|  |  | +      :append-to-body='true'
 | 
	
		
			
				|  |  | +      width="700px">
 | 
	
		
			
				|  |  | +      <el-table :data="error_list">
 | 
	
		
			
				|  |  | +        <el-table-column prop="target" label="员工">
 | 
	
		
			
				|  |  | +          <template slot-scope="scope">
 | 
	
		
			
				|  |  | +            <WWOpenData type="userName" :openid="scope.row.target"></WWOpenData>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +        </el-table-column>
 | 
	
		
			
				|  |  | +        <el-table-column prop="point" label="积分"></el-table-column>
 | 
	
		
			
				|  |  | +        <el-table-column prop="status" label="处理状态">
 | 
	
		
			
				|  |  | +          <template slot-scope="scope">
 | 
	
		
			
				|  |  | +            <span :style="'color:'+(scope.row.status==0?'#f70000':'#47bf47')">{{scope.row.status==0?'申请失败':'申请成功'}}</span>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +        </el-table-column>
 | 
	
		
			
				|  |  | +        <el-table-column prop="msg" label="备注信息"></el-table-column>
 | 
	
		
			
				|  |  | +      </el-table>
 | 
	
		
			
				|  |  | +    </el-dialog>
 | 
	
		
			
				|  |  |    </div>
 | 
	
		
			
				|  |  |  </template>
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -187,7 +148,6 @@
 | 
	
		
			
				|  |  |    import EmployeeSelector from '@/views/common/EmployeeSelector'
 | 
	
		
			
				|  |  |    import uploadOss from "@/views/upload_oss/upload"
 | 
	
		
			
				|  |  |    import { getToken } from '@/utils/auth'
 | 
	
		
			
				|  |  | -  import { get_employee_map } from '@/api/login'
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    export default {
 | 
	
		
			
				|  |  |      name: 'applicationIntegration',
 | 
	
	
		
			
				|  | @@ -221,31 +181,16 @@
 | 
	
		
			
				|  |  |          error_list_show:false,//错误信息弹窗
 | 
	
		
			
				|  |  |          Xtoken: { 'X-Token': getToken() },
 | 
	
		
			
				|  |  |          loading: false,
 | 
	
		
			
				|  |  | -        dialogData:{ 
 | 
	
		
			
				|  |  | +        dialogData:{
 | 
	
		
			
				|  |  |            items: [{
 | 
	
		
			
				|  |  |              rule_switch: true,
 | 
	
		
			
				|  |  |              rule_id: '',
 | 
	
		
			
				|  |  |              item_id: '',
 | 
	
		
			
				|  |  |              remark: '',
 | 
	
		
			
				|  |  |              event_time: moment().format('YYYY-MM-DD'),
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            // 审批人信息
 | 
	
		
			
				|  |  | -            reviewer_id: '',
 | 
	
		
			
				|  |  | -            approvalName: '',
 | 
	
		
			
				|  |  | -            approval_not_select: [],
 | 
	
		
			
				|  |  | -            approval_employee_id:0,//当前选中人的直属上级。0表示没有直属上级
 | 
	
		
			
				|  |  | -            approval_employee_list: [],//当前选中人的 上级
 | 
	
		
			
				|  |  | -            approval_selected: {dept: [],employee:[]},
 | 
	
		
			
				|  |  | -            show_approval_selector: false,
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            // 录入对象
 | 
	
		
			
				|  |  | -            employee_id: '',
 | 
	
		
			
				|  |  | -            employeeName: '',
 | 
	
		
			
				|  |  | -            employeeNames:[],
 | 
	
		
			
				|  |  | -            employee_not_select: [],
 | 
	
		
			
				|  |  | -            employee_selected: {dept: [],employee:[]},
 | 
	
		
			
				|  |  | -            show_employee_selector: false,
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +            approval_employee_list:[],
 | 
	
		
			
				|  |  | +            employeeInfo:{},// 录入对象
 | 
	
		
			
				|  |  | +            reviewerInfo:{},// 审批人信息
 | 
	
		
			
				|  |  |              // 附件
 | 
	
		
			
				|  |  |              fileList: [],
 | 
	
		
			
				|  |  |              files: [],
 | 
	
	
		
			
				|  | @@ -260,139 +205,205 @@
 | 
	
		
			
				|  |  |          // 规则细则
 | 
	
		
			
				|  |  |          rule_item_list: [],
 | 
	
		
			
				|  |  |          flatteningIntegralRules: null,
 | 
	
		
			
				|  |  | -        user_info: null,
 | 
	
		
			
				|  |  | -        employee_map: JSON.parse(localStorage.getItem('SET_EMPLOYEE_MAP')),
 | 
	
		
			
				|  |  | +        user_info: this.$store.getters.user_info,
 | 
	
		
			
				|  |  |          point_types: JSON.parse(localStorage.getItem('SET_POINT_TYPES')),
 | 
	
		
			
				|  |  |          btn_loading: false,
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +        itemIndex:0,
 | 
	
		
			
				|  |  |          user_list: [],
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 审批人
 | 
	
		
			
				|  |  | +        approval_employee_list:[],
 | 
	
		
			
				|  |  | +        approval_selected:{dept: [],employee:[]},
 | 
	
		
			
				|  |  | +        isShowApproval:false,
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 录入对象
 | 
	
		
			
				|  |  | +        employee_selected:{dept: [],employee:[]},
 | 
	
		
			
				|  |  | +        isShowEmployee:false,
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      components: {EmployeeSelector,uploadOss},
 | 
	
		
			
				|  |  | -    watch:{},
 | 
	
		
			
				|  |  | -    mounted() {
 | 
	
		
			
				|  |  | -      get_employee_map().then(response => {
 | 
	
		
			
				|  |  | -        if (response.data.code == 1) {
 | 
	
		
			
				|  |  | -          const data = {}
 | 
	
		
			
				|  |  | -          for (const i in response.data.data.list) {
 | 
	
		
			
				|  |  | -            data[response.data.data.list[i].id] = response.data.data.list[i]
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | -          if (window.plus) {
 | 
	
		
			
				|  |  | -            plus.storage.setItem('SET_EMPLOYEE_MAP', JSON.stringify(data))
 | 
	
		
			
				|  |  | -          } else {
 | 
	
		
			
				|  |  | -            localStorage.setItem('SET_EMPLOYEE_MAP', JSON.stringify(data))
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | -          this.employee_map = data
 | 
	
		
			
				|  |  | +    watch:{
 | 
	
		
			
				|  |  | +      visible(val){
 | 
	
		
			
				|  |  | +        if(val){
 | 
	
		
			
				|  |  | +          // 初始化录入对象
 | 
	
		
			
				|  |  | +          this.dialogData.items[0].employeeInfo = this.user_info;
 | 
	
		
			
				|  |  | +          this.getUserInfo(this.user_info.id,(res)=>{
 | 
	
		
			
				|  |  | +             this.initializesReviewer(res.employee_detail.superior_list,this.itemIndex) //设置上级列表
 | 
	
		
			
				|  |  | +             this.dialogData.items[0].reviewerInfo={};
 | 
	
		
			
				|  |  | +             let superior_id= res.employee_detail.superior_id //选中对象的直属上级id
 | 
	
		
			
				|  |  | +             res.employee_detail.superior_list.forEach(e=>{
 | 
	
		
			
				|  |  | +               if(e.id==superior_id){
 | 
	
		
			
				|  |  | +                 this.dialogData.items[0].reviewerInfo=e;
 | 
	
		
			
				|  |  | +               }
 | 
	
		
			
				|  |  | +             })
 | 
	
		
			
				|  |  | +          })
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -      })
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    mounted() {
 | 
	
		
			
				|  |  |        this.getRuleItemData()
 | 
	
		
			
				|  |  | -      this.user_info = this.$store.getters.user_info
 | 
	
		
			
				|  |  | -      this.point_types = JSON.parse(localStorage.getItem('SET_POINT_TYPES'))
 | 
	
		
			
				|  |  | -      // 初始化录入对象
 | 
	
		
			
				|  |  | -      this.dialogData.items[0].employee_selected.employee = [{id: this.user_info.id ,img_url: this.user_info.img_url,name: this.user_info.name}]
 | 
	
		
			
				|  |  | -      this.dialogData.items[0].employee_id = this.user_info.id
 | 
	
		
			
				|  |  | -      this.dialogData.items[0].employeeName = this.user_info.name
 | 
	
		
			
				|  |  | -      this.dialogData.items[0].employeeNames = this.dialogData.items[0].employee_selected.employee
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      this.initializesReviewer(this.user_info.employee_detail.superior_list,0,true)
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      methods: {
 | 
	
		
			
				|  |  | -      // 附件上传
 | 
	
		
			
				|  |  | -      beforeUpload(file){
 | 
	
		
			
				|  |  | -        const isJPG = /^image\/(jpeg|png|jpg)$/.test(file.type)
 | 
	
		
			
				|  |  | -        const isLt2M = file.size / 1024 / 1024 < 1
 | 
	
		
			
				|  |  | -        if (!isJPG) {
 | 
	
		
			
				|  |  | -          this.$message.error('上传头像图片只能是 JPG 格式!')
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        if (!isLt2M) {
 | 
	
		
			
				|  |  | -          this.$message.error('上传头像图片大小不能超过 2MB!')
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // 选择录入对象
 | 
	
		
			
				|  |  | +      selectEmployee(index){
 | 
	
		
			
				|  |  | +        const item = this.dialogData.items[index];
 | 
	
		
			
				|  |  | +        if(item.employeeInfo.id){
 | 
	
		
			
				|  |  | +          this.employee_selected.employee=[item.employeeInfo]
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        return isJPG && isLt2M   
 | 
	
		
			
				|  |  | +        this.isShowEmployee=true;
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  | -      onFilePreView(file) {
 | 
	
		
			
				|  |  | -        window.open(file.response.url,'_blank')
 | 
	
		
			
				|  |  | +      // 选择审批人
 | 
	
		
			
				|  |  | +      selectReviewer(index){
 | 
	
		
			
				|  |  | +        const item = this.dialogData.items[index];
 | 
	
		
			
				|  |  | +        if(!item.employeeInfo.id){
 | 
	
		
			
				|  |  | +          this.$message.error("请先选择录入对象")
 | 
	
		
			
				|  |  | +          return false
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        this.approval_employee_list=item.approval_employee_list;
 | 
	
		
			
				|  |  | +        if(item.reviewerInfo.id){
 | 
	
		
			
				|  |  | +          this.approval_selected.employee=[item.reviewerInfo]
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        this.isShowApproval=true;
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  | -      onFileRemove(file, fileList) {
 | 
	
		
			
				|  |  | -        this.dialogData.items[this.itemIndex].fileList = fileList
 | 
	
		
			
				|  |  | -        this.dialogData.items[this.itemIndex].files = []
 | 
	
		
			
				|  |  | -        fileList.forEach((element,index) => {
 | 
	
		
			
				|  |  | -          this.dialogData.items[this.itemIndex].files.push(element.url)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // 提交数据
 | 
	
		
			
				|  |  | +      save(){
 | 
	
		
			
				|  |  | +        let reviewer_infoid = false
 | 
	
		
			
				|  |  | +        let data = {items: []}
 | 
	
		
			
				|  |  | +        this.dialogData.items.forEach(element => {
 | 
	
		
			
				|  |  | +          let obj={
 | 
	
		
			
				|  |  | +            rule_id: element.rule_id || 0,
 | 
	
		
			
				|  |  | +            employee_id: element.employeeInfo.id || 0 ,
 | 
	
		
			
				|  |  | +            item_id: element.item_id || 0,
 | 
	
		
			
				|  |  | +            remark: element.remark,
 | 
	
		
			
				|  |  | +            event_time: element.event_time,
 | 
	
		
			
				|  |  | +            pt_id: element.pt_id,
 | 
	
		
			
				|  |  | +            reviewer_id: element.reviewerInfo.id || 0,
 | 
	
		
			
				|  |  | +            files: element.files
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +          data.items.push(obj)
 | 
	
		
			
				|  |  | +          if(element.reviewerInfo.id == this.user_info.id) reviewer_infoid = true
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  | +        if(reviewer_infoid){
 | 
	
		
			
				|  |  | +          this.btn_loading = false
 | 
	
		
			
				|  |  | +          this.$message.warning('不能提交给自己审批,请直接对员工进行【积分奖扣】或更换审批人')
 | 
	
		
			
				|  |  | +          return
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        this.$http('post','/api/integral/review/apply',data,'v2').then(res => {
 | 
	
		
			
				|  |  | +            this.$refs['dialogData'].resetFields();
 | 
	
		
			
				|  |  | +            this.$message.success(res.data.msg)
 | 
	
		
			
				|  |  | +            this.error_list = res.data.data.list
 | 
	
		
			
				|  |  | +            this.error_list_show = true
 | 
	
		
			
				|  |  | +            this.dialogData.items[0].employee_id = this.user_info.id
 | 
	
		
			
				|  |  | +            this.closePopup()
 | 
	
		
			
				|  |  | +        }).finally(()=>{
 | 
	
		
			
				|  |  | +          this.btn_loading = false
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  | -      handleFilesSuccess(response, file, fileList) {
 | 
	
		
			
				|  |  | -        this.dialogData.items[this.itemIndex].fileList = fileList
 | 
	
		
			
				|  |  | -        this.dialogData.items[this.itemIndex].files = []
 | 
	
		
			
				|  |  | -        fileList.forEach((element,index) => {
 | 
	
		
			
				|  |  | -          this.dialogData.items[this.itemIndex].files.push(element.url)
 | 
	
		
			
				|  |  | +      // 选择审核人
 | 
	
		
			
				|  |  | +      approval_confirm(data){
 | 
	
		
			
				|  |  | +        const item = this.dialogData.items[this.itemIndex]
 | 
	
		
			
				|  |  | +        if(data.employee.length>0){
 | 
	
		
			
				|  |  | +          item.reviewerInfo = data.employee[0]
 | 
	
		
			
				|  |  | +        }else{
 | 
	
		
			
				|  |  | +          item.reviewerInfo={};
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      // 选择对象
 | 
	
		
			
				|  |  | +      employee_confirm(data){
 | 
	
		
			
				|  |  | +        const item = this.dialogData.items[this.itemIndex]; //对应申请
 | 
	
		
			
				|  |  | +        let employee=data.employee[0];
 | 
	
		
			
				|  |  | +        if(employee){
 | 
	
		
			
				|  |  | +          item.employeeInfo=employee;
 | 
	
		
			
				|  |  | +          this.getUserInfo(employee.id,(res)=>{
 | 
	
		
			
				|  |  | +             this.initializesReviewer(res.employee_detail.superior_list,this.itemIndex) //设置上级列表
 | 
	
		
			
				|  |  | +             item.reviewerInfo={};
 | 
	
		
			
				|  |  | +             let superior_id= res.employee_detail.superior_id //选中对象的直属上级id
 | 
	
		
			
				|  |  | +             res.employee_detail.superior_list.forEach(e=>{
 | 
	
		
			
				|  |  | +               if(e.id==superior_id){
 | 
	
		
			
				|  |  | +                 item.reviewerInfo=e;
 | 
	
		
			
				|  |  | +               }
 | 
	
		
			
				|  |  | +             })
 | 
	
		
			
				|  |  | +          })
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      //获取缓存起来的审批人
 | 
	
		
			
				|  |  | +      getUserInfo(id,func) {
 | 
	
		
			
				|  |  | +      		this.$http('get', '/api/employee/info', {id: id }).then(res =>{
 | 
	
		
			
				|  |  | +            func(res.data.data)
 | 
	
		
			
				|  |  | +          })
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      // 获取积分名称
 | 
	
		
			
				|  |  | +      get_point_name(id){
 | 
	
		
			
				|  |  | +        let name = ''
 | 
	
		
			
				|  |  | +        this.point_types.forEach(element => {
 | 
	
		
			
				|  |  | +          if (element.id == id) {
 | 
	
		
			
				|  |  | +            name = element.name
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  | +        return name
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      // 审核人为空
 | 
	
		
			
				|  |  | -      approval_selected_null(){
 | 
	
		
			
				|  |  | -        this.$message.error('您没有审批人,请联系管理员');
 | 
	
		
			
				|  |  | +      // 初始化审核人列表
 | 
	
		
			
				|  |  | +      initializesReviewer(list,index){
 | 
	
		
			
				|  |  | +        const superior = list || this.user_info.employee_detail.superior_list
 | 
	
		
			
				|  |  | +        const num = index || 0
 | 
	
		
			
				|  |  | +        const item = this.dialogData.items[num]
 | 
	
		
			
				|  |  | +        item.approval_employee_list = [...superior]
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      // 当switch 改变了
 | 
	
		
			
				|  |  | +      switchChange(index,value){
 | 
	
		
			
				|  |  | +        this.itemIndex = index
 | 
	
		
			
				|  |  | +        const item = this.dialogData.items[this.itemIndex]
 | 
	
		
			
				|  |  | +        if (!value) {
 | 
	
		
			
				|  |  | +          item.rule_id = ""
 | 
	
		
			
				|  |  | +          item.item_id = ""
 | 
	
		
			
				|  |  | +          item.rule_item_list_value = ""
 | 
	
		
			
				|  |  | +          item.rule_item_details = {range_type: ''}
 | 
	
		
			
				|  |  | +        }else{
 | 
	
		
			
				|  |  | +          item.rule_id = ""
 | 
	
		
			
				|  |  | +          item.rule_list_value = ""
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  |        // 获取规则信息
 | 
	
		
			
				|  |  |        getRuleData(){
 | 
	
		
			
				|  |  | -        let self = this
 | 
	
		
			
				|  |  |          let data = {
 | 
	
		
			
				|  |  |            cycle_type: '1'
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          this.integralType === 1?data.pt_id = '1':this.integralType === 2?data.pt_id = '2':data.pt_id = '3'
 | 
	
		
			
				|  |  |          this.$http('get','/api/integral/rule/trees',data).then(res => {
 | 
	
		
			
				|  |  | -					if (res.data.code == 1) {
 | 
	
		
			
				|  |  | -            const resultData = res.data.data
 | 
	
		
			
				|  |  | -            self.rule_list = resultData.rule_tree
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | -          self.rule_list = self.getTreeData(self.rule_list)
 | 
	
		
			
				|  |  | -				}).catch(e => {self.$message.error(e.data.msg)})
 | 
	
		
			
				|  |  | +          const resultData = res.data.data
 | 
	
		
			
				|  |  | +          this.rule_list = this.getTreeData(resultData.rule_tree)
 | 
	
		
			
				|  |  | +      	})
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  |        // 获取规则细则
 | 
	
		
			
				|  |  |        getRuleItemData(){
 | 
	
		
			
				|  |  | -        let self = this
 | 
	
		
			
				|  |  |          let data = {cycle_type: '1'}
 | 
	
		
			
				|  |  | -        self.loading = true
 | 
	
		
			
				|  |  | +        this.loading = true
 | 
	
		
			
				|  |  |          this.$http('get','/api/integral/rule/trees',data,'v2').then(res => {
 | 
	
		
			
				|  |  | -					if (res.data.code == 1) {
 | 
	
		
			
				|  |  |              const resultData = res.data.data
 | 
	
		
			
				|  |  | -            self.rule_item_list = resultData.tree
 | 
	
		
			
				|  |  | -            // self.flatteningIntegralRules = self.getItemDetail(self.rule_item_list)//
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | -        }).catch(e => {self.$message.error(e.data.msg)})
 | 
	
		
			
				|  |  | -        .finally(()=>{
 | 
	
		
			
				|  |  | -          self.loading = false
 | 
	
		
			
				|  |  | +            this.rule_item_list = resultData.tree
 | 
	
		
			
				|  |  | +        }).finally(()=>{
 | 
	
		
			
				|  |  | +          this.loading = false
 | 
	
		
			
				|  |  |          })
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  | +      visibleChange(val,index){
 | 
	
		
			
				|  |  | +        if(val){
 | 
	
		
			
				|  |  | +          this.itemIndex=index
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  |        // 规则细则变化关闭down
 | 
	
		
			
				|  |  |        ruleItemChange(value){
 | 
	
		
			
				|  |  |          let item = this.dialogData.items[this.itemIndex]
 | 
	
		
			
				|  |  |          let ruleItemDetail = null
 | 
	
		
			
				|  |  |          ruleItemDetail = this.$refs["ruleItem"][this.itemIndex].getCheckedNodes()[0].data
 | 
	
		
			
				|  |  | -        console.log(ruleItemDetail)
 | 
	
		
			
				|  |  |          if(ruleItemDetail){
 | 
	
		
			
				|  |  |            item.rule_item_details = ruleItemDetail
 | 
	
		
			
				|  |  |            item.remark = ruleItemDetail.name
 | 
	
		
			
				|  |  |            item.rule_id = ruleItemDetail.pid
 | 
	
		
			
				|  |  |            item.item_id = value[value.length - 1]
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        this.$refs.ruleItem.dropDownVisible = false; 
 | 
	
		
			
				|  |  | -        // let item = this.dialogData.items[this.itemIndex]
 | 
	
		
			
				|  |  | -        // let ruleItemDetail = {}
 | 
	
		
			
				|  |  | -        // // this.flatteningIntegralRules.forEach(element => {
 | 
	
		
			
				|  |  | -        // //   if (element.id == value[value.length - 1]) {
 | 
	
		
			
				|  |  | -        // //     ruleItemDetail = {...element}
 | 
	
		
			
				|  |  | -        // //   }
 | 
	
		
			
				|  |  | -        // // })
 | 
	
		
			
				|  |  | -        
 | 
	
		
			
				|  |  | -        // console.log(this.$refs["ruleItem"][this.itemIndex].getCheckedNodes()[0].data)
 | 
	
		
			
				|  |  | -        // ruleItemDetail = this.$refs["ruleItem"][this.itemIndex].getCheckedNodes()[0].data
 | 
	
		
			
				|  |  | -        // if(ruleItemDetail){
 | 
	
		
			
				|  |  | -        //   item.rule_item_details = ruleItemDetail
 | 
	
		
			
				|  |  | -        //   item.remark = ruleItemDetail.name
 | 
	
		
			
				|  |  | -        //   item.rule_id = ruleItemDetail.pid
 | 
	
		
			
				|  |  | -        //   item.item_id = value[value.length - 1]
 | 
	
		
			
				|  |  | -        // }
 | 
	
		
			
				|  |  | -        // this.$refs.ruleItem.dropDownVisible = false; 
 | 
	
		
			
				|  |  | +        this.$refs.ruleItem.dropDownVisible = false;
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  |        // 规则分类变化关闭dewn
 | 
	
		
			
				|  |  |        ruleChange(value){
 | 
	
	
		
			
				|  | @@ -412,19 +423,36 @@
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return data;
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      getItemDetail(arr) {//此递归暂不用,规则多的情况下会出问题
 | 
	
		
			
				|  |  | -        let result = []
 | 
	
		
			
				|  |  | -        for (const item of arr) {
 | 
	
		
			
				|  |  | -          var res = JSON.parse(JSON.stringify(item)) // 先克隆一份数据作为第一层级的填充
 | 
	
		
			
				|  |  | -          delete res['child']
 | 
	
		
			
				|  |  | -          result.push(res)
 | 
	
		
			
				|  |  | -          if (item.child instanceof Array && item.child.length > 0) { // 如果当前child为数组并且长度大于0,才可进入getItemDetail()方法
 | 
	
		
			
				|  |  | -            result = result.concat(this.getItemDetail(item.child))
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | +      // 附件上传
 | 
	
		
			
				|  |  | +      beforeUpload(file){
 | 
	
		
			
				|  |  | +        const isJPG = /^image\/(jpeg|png|jpg)$/.test(file.type)
 | 
	
		
			
				|  |  | +        const isLt2M = file.size / 1024 / 1024 < 1
 | 
	
		
			
				|  |  | +        if (!isJPG) {
 | 
	
		
			
				|  |  | +          this.$message.error('上传头像图片只能是 JPG 格式!')
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if (!isLt2M) {
 | 
	
		
			
				|  |  | +          this.$message.error('上传头像图片大小不能超过 2MB!')
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        return result
 | 
	
		
			
				|  |  | +        return isJPG && isLt2M
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  | +      onFilePreView(file) {
 | 
	
		
			
				|  |  | +        window.open(file.response.url,'_blank')
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      onFileRemove(file, fileList) {
 | 
	
		
			
				|  |  | +        this.dialogData.items[this.itemIndex].fileList = fileList
 | 
	
		
			
				|  |  | +        this.dialogData.items[this.itemIndex].files = []
 | 
	
		
			
				|  |  | +        fileList.forEach((element,index) => {
 | 
	
		
			
				|  |  | +          this.dialogData.items[this.itemIndex].files.push(element.url)
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      handleFilesSuccess(response, file, fileList) {
 | 
	
		
			
				|  |  | +        this.dialogData.items[this.itemIndex].fileList = fileList
 | 
	
		
			
				|  |  | +        this.dialogData.items[this.itemIndex].files = []
 | 
	
		
			
				|  |  | +        fileList.forEach((element,index) => {
 | 
	
		
			
				|  |  | +          this.dialogData.items[this.itemIndex].files.push(element.url)
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |        // 加一条
 | 
	
		
			
				|  |  |        addItem(){
 | 
	
		
			
				|  |  |          this.dialogData.items.push({
 | 
	
	
		
			
				|  | @@ -433,24 +461,9 @@
 | 
	
		
			
				|  |  |            item_id: '',
 | 
	
		
			
				|  |  |            remark: '',
 | 
	
		
			
				|  |  |            event_time: moment().format('YYYY-MM-DD'),
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -          // 审批人信息
 | 
	
		
			
				|  |  | -          reviewer_id: '',
 | 
	
		
			
				|  |  | -          approvalName: '',
 | 
	
		
			
				|  |  | -          approval_not_select: [],
 | 
	
		
			
				|  |  | -          approval_employee_id:0,//当前选中人的直属上级。0表示没有直属上级
 | 
	
		
			
				|  |  | -          approval_employee_list: this.user_info.employee_detail.superior_list,
 | 
	
		
			
				|  |  | -          approval_selected: {dept: [],employee:[]},
 | 
	
		
			
				|  |  | -          show_approval_selector: false,
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -          // 录入对象
 | 
	
		
			
				|  |  | -          employee_id: this.user_info.id,
 | 
	
		
			
				|  |  | -          employeeName: this.user_info.name,
 | 
	
		
			
				|  |  | -          employeeNames: [{id: this.user_info.id ,img_url: this.user_info.img_url,name: this.user_info.name}],
 | 
	
		
			
				|  |  | -          employee_not_select: [],
 | 
	
		
			
				|  |  | -          employee_selected: {dept: [],employee:[{id: this.user_info.id ,img_url: this.user_info.img_url,name: this.user_info.name}]},
 | 
	
		
			
				|  |  | -          show_employee_selector: false,
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +          employeeInfo:{},// 录入对象
 | 
	
		
			
				|  |  | +          reviewerInfo:{},// 审批人信息
 | 
	
		
			
				|  |  | +          approval_employee_list:[],
 | 
	
		
			
				|  |  |            // 附件
 | 
	
		
			
				|  |  |            fileList: [],
 | 
	
		
			
				|  |  |            files: [],
 | 
	
	
		
			
				|  | @@ -473,11 +486,10 @@
 | 
	
		
			
				|  |  |              message: '删除成功!'
 | 
	
		
			
				|  |  |            });
 | 
	
		
			
				|  |  |          })
 | 
	
		
			
				|  |  | -        
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  |        closeDialog(formName){
 | 
	
		
			
				|  |  |          this.$refs[formName].resetFields();
 | 
	
		
			
				|  |  | -        // this.$emit('update:visible', false)
 | 
	
		
			
				|  |  |          this.closePopup()
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  |        delItem(index){
 | 
	
	
		
			
				|  | @@ -501,138 +513,6 @@
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  | -      // 提交数据
 | 
	
		
			
				|  |  | -      save(){
 | 
	
		
			
				|  |  | -        let reviewer_infoid = false
 | 
	
		
			
				|  |  | -        let self = this
 | 
	
		
			
				|  |  | -        let data = {items: []}
 | 
	
		
			
				|  |  | -        self.dialogData.items.forEach(element => {
 | 
	
		
			
				|  |  | -          data.items.push({rule_id: element.rule_id || 0, employee_id: element.employee_id || 0 ,item_id: element.item_id || 0, remark: element.remark, event_time: element.event_time, pt_id: element.pt_id, reviewer_id: element.reviewer_id || 0, files: element.files})
 | 
	
		
			
				|  |  | -          if(element.reviewer_id == this.user_info.id) reviewer_infoid = true
 | 
	
		
			
				|  |  | -        });
 | 
	
		
			
				|  |  | -        if(reviewer_infoid){ 
 | 
	
		
			
				|  |  | -          self.btn_loading = false
 | 
	
		
			
				|  |  | -          this.$message.warning('不能提交给自己审批,请直接对员工进行【积分奖扣】或更换审批人')
 | 
	
		
			
				|  |  | -          return
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        this.$http('post','/api/integral/review/apply',data,'v2').then(res => {
 | 
	
		
			
				|  |  | -          if(res.data.code == 1){
 | 
	
		
			
				|  |  | -            self.$refs['dialogData'].resetFields();
 | 
	
		
			
				|  |  | -            // self.$emit('update:visible', false)
 | 
	
		
			
				|  |  | -            self.$message.success(res.data.msg)
 | 
	
		
			
				|  |  | -            this.error_list = res.data.data.list
 | 
	
		
			
				|  |  | -            this.error_list_show = true
 | 
	
		
			
				|  |  | -            this.dialogData.items[0].employee_id = this.user_info.id
 | 
	
		
			
				|  |  | -            this.closePopup()
 | 
	
		
			
				|  |  | -          }else{
 | 
	
		
			
				|  |  | -            self.$message.error(res.data.msg)
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | -          self.btn_loading = false
 | 
	
		
			
				|  |  | -        }).catch(e => {self.$message.close()})
 | 
	
		
			
				|  |  | -        .finally(()=>{
 | 
	
		
			
				|  |  | -        })
 | 
	
		
			
				|  |  | -      },
 | 
	
		
			
				|  |  | -      //关闭错误信息时的回调
 | 
	
		
			
				|  |  | -      error_list_SX(){
 | 
	
		
			
				|  |  | -        // this.loadBaseData();
 | 
	
		
			
				|  |  | -        // this.loadEmployeeList()
 | 
	
		
			
				|  |  | -      },
 | 
	
		
			
				|  |  | -      // 当switch 改变了
 | 
	
		
			
				|  |  | -      switchChange(index,value){
 | 
	
		
			
				|  |  | -        this.itemIndex = index
 | 
	
		
			
				|  |  | -        const item = this.dialogData.items[this.itemIndex]
 | 
	
		
			
				|  |  | -        if (!value) {
 | 
	
		
			
				|  |  | -          item.rule_id = ""
 | 
	
		
			
				|  |  | -          item.item_id = ""
 | 
	
		
			
				|  |  | -          item.rule_item_list_value = ""
 | 
	
		
			
				|  |  | -          item.rule_item_details = {range_type: ''}
 | 
	
		
			
				|  |  | -        }else{
 | 
	
		
			
				|  |  | -          item.rule_id = ""
 | 
	
		
			
				|  |  | -          item.rule_list_value = ""
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -      },
 | 
	
		
			
				|  |  | -      // 初始化审核人
 | 
	
		
			
				|  |  | -      initializesReviewer(list,index,bool){
 | 
	
		
			
				|  |  | -        const superior = list || this.user_info.employee_detail.superior_list
 | 
	
		
			
				|  |  | -        const num = index || 0
 | 
	
		
			
				|  |  | -        const item = this.dialogData.items[num]
 | 
	
		
			
				|  |  | -        item.approval_employee_list = [...superior]
 | 
	
		
			
				|  |  | -        // if (superior.length !== 0) {
 | 
	
		
			
				|  |  | -        //   if(bool){
 | 
	
		
			
				|  |  | -        //     item.approval_employee_id = this.user_info.employee_detail.superior_id//直属上级(这里是第一个,默认为当前登录人)
 | 
	
		
			
				|  |  | -        //   }
 | 
	
		
			
				|  |  | -        //   if(item.approval_employee_id != 0){//判断有无直属上级
 | 
	
		
			
				|  |  | -        //     for(let a in item.approval_employee_list){
 | 
	
		
			
				|  |  | -        //       if(item.approval_employee_id == item.approval_employee_list[a].id){
 | 
	
		
			
				|  |  | -        //         item.approval_employee_list[a].direct_Supervisor = true//一个字段,是直属上级的字段,为true
 | 
	
		
			
				|  |  | -        //       }
 | 
	
		
			
				|  |  | -        //     }
 | 
	
		
			
				|  |  | -        //     for(let i in superior){
 | 
	
		
			
				|  |  | -        //         if(item.approval_employee_id == superior[i].id){
 | 
	
		
			
				|  |  | -        //           item.approval_selected.employee = [{id: superior[i].id ,img_url: superior[i].img_url,name: superior[i].name}]
 | 
	
		
			
				|  |  | -        //           item.reviewer_id = superior[i].id
 | 
	
		
			
				|  |  | -        //           item.approvalName = superior[i].name//审批人
 | 
	
		
			
				|  |  | -        //         }
 | 
	
		
			
				|  |  | -        //     }
 | 
	
		
			
				|  |  | -        //   }else{
 | 
	
		
			
				|  |  | -        //     // 拿取列表最后一个的数据,没有筛选
 | 
	
		
			
				|  |  | -        //     item.approval_selected.employee = [{id: superior[superior.length - 1].id ,img_url: superior[superior.length - 1].img_url,name: superior[superior.length - 1].name}]
 | 
	
		
			
				|  |  | -        //     item.reviewer_id = superior[superior.length - 1].id//审批人id
 | 
	
		
			
				|  |  | -        //     item.approvalName = superior[superior.length - 1].name//审批人name
 | 
	
		
			
				|  |  | -        //   }
 | 
	
		
			
				|  |  | -          
 | 
	
		
			
				|  |  | -        // }
 | 
	
		
			
				|  |  | -      },
 | 
	
		
			
				|  |  | -      // 选择审核人
 | 
	
		
			
				|  |  | -      approval_confirm(data){
 | 
	
		
			
				|  |  | -        const item = this.dialogData.items[this.itemIndex]
 | 
	
		
			
				|  |  | -        item.approvalName = ''
 | 
	
		
			
				|  |  | -        item.approval_selected.employee = []
 | 
	
		
			
				|  |  | -        item.reviewer_id = ''
 | 
	
		
			
				|  |  | -        if (data.employee !== null && data.employee.length != 0) {
 | 
	
		
			
				|  |  | -          item.approvalName = data.employee[0].name
 | 
	
		
			
				|  |  | -          item.approval_selected.employee = [{name: data.employee[0].name,id:data.employee[0].id,img_url: data.employee[0].img_url}]
 | 
	
		
			
				|  |  | -          item.reviewer_id = data.employee[0].id
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -      },
 | 
	
		
			
				|  |  | -      // 选择对象
 | 
	
		
			
				|  |  | -      employee_confirm(data){
 | 
	
		
			
				|  |  | -        const item = this.dialogData.items[this.itemIndex]
 | 
	
		
			
				|  |  | -        if (data.employee !== null && data.employee.length != 0) {
 | 
	
		
			
				|  |  | -          for (const key in this.employee_map) {
 | 
	
		
			
				|  |  | -            if (this.employee_map.hasOwnProperty(key)) {
 | 
	
		
			
				|  |  | -              const element = this.employee_map[key];//循环人员列表
 | 
	
		
			
				|  |  | -              if(element.id == data.employee[0].id){//通过选中的id拿到当前人员信息
 | 
	
		
			
				|  |  | -                item.approval_employee_id = element.superior_id//选中对象的直属上级id
 | 
	
		
			
				|  |  | -                // item.approval_employee_list = element.superior_list//选中对象的上级列表
 | 
	
		
			
				|  |  | -                this.initializesReviewer(element.superior_list,this.itemIndex)
 | 
	
		
			
				|  |  | -              }
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        item.employeeName = ''
 | 
	
		
			
				|  |  | -        item.employeeNames = []
 | 
	
		
			
				|  |  | -        item.employee_selected.employee = []
 | 
	
		
			
				|  |  | -        item.employee_id = ''
 | 
	
		
			
				|  |  | -        if (data.employee !== null && data.employee.length != 0) {
 | 
	
		
			
				|  |  | -          item.employeeNames = data.employee
 | 
	
		
			
				|  |  | -          item.employeeName = data.employee[0].name
 | 
	
		
			
				|  |  | -          item.employee_selected.employee = [{name: data.employee[0].name,id:data.employee[0].id,img_url: data.employee[0].img_url}]
 | 
	
		
			
				|  |  | -          item.employee_id = data.employee[0].id
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        
 | 
	
		
			
				|  |  | -      },
 | 
	
		
			
				|  |  | -      // 获取积分名称
 | 
	
		
			
				|  |  | -      get_point_name(id){
 | 
	
		
			
				|  |  | -        let name = ''
 | 
	
		
			
				|  |  | -        this.point_types.forEach(element => {
 | 
	
		
			
				|  |  | -          if (element.id == id) {
 | 
	
		
			
				|  |  | -            name = element.name
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | -        });
 | 
	
		
			
				|  |  | -        return name
 | 
	
		
			
				|  |  | -      },
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |        // 关闭弹窗
 | 
	
		
			
				|  |  |        closePopup(){
 | 
	
		
			
				|  |  |          //关闭重置窗口状态
 | 
	
	
		
			
				|  | @@ -642,24 +522,9 @@
 | 
	
		
			
				|  |  |              item_id: '',
 | 
	
		
			
				|  |  |              remark: '',
 | 
	
		
			
				|  |  |              event_time: moment().format('YYYY-MM-DD'),
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            // 审批人信息
 | 
	
		
			
				|  |  | -            reviewer_id: '',
 | 
	
		
			
				|  |  | -            approvalName: '',
 | 
	
		
			
				|  |  | -            approval_not_select: [],
 | 
	
		
			
				|  |  | -            approval_employee_id:0,//当前选中人的直属上级。0表示没有直属上级
 | 
	
		
			
				|  |  | -            approval_employee_list: [],//当前选中人的 上级
 | 
	
		
			
				|  |  | -            approval_selected: {dept: [],employee:[]},
 | 
	
		
			
				|  |  | -            show_approval_selector: false,
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            // 录入对象
 | 
	
		
			
				|  |  | -            employee_id: this.user_info.id,
 | 
	
		
			
				|  |  | -            employeeName: this.user_info.name,
 | 
	
		
			
				|  |  | -            employeeNames: [{id: this.user_info.id ,img_url: this.user_info.img_url,name: this.user_info.name}],
 | 
	
		
			
				|  |  | -            employee_not_select: [],
 | 
	
		
			
				|  |  | -            employee_selected: {dept: [],employee:[{id: this.user_info.id ,img_url: this.user_info.img_url,name: this.user_info.name}]},
 | 
	
		
			
				|  |  | -            show_employee_selector: false,
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +            employeeInfo:{},// 录入对象
 | 
	
		
			
				|  |  | +            reviewerInfo:{},// 审批人信息
 | 
	
		
			
				|  |  | +            approval_employee_list:[],
 | 
	
		
			
				|  |  |              // 附件
 | 
	
		
			
				|  |  |              fileList: [],
 | 
	
		
			
				|  |  |              files: [],
 | 
	
	
		
			
				|  | @@ -697,7 +562,6 @@
 | 
	
		
			
				|  |  |       border-radius:3px;
 | 
	
		
			
				|  |  |       padding-left:15px;
 | 
	
		
			
				|  |  |       overflow: hidden;
 | 
	
		
			
				|  |  | +     cursor: pointer;
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | -  // ruleClass
 | 
	
		
			
				|  |  | -  // itemClass
 | 
	
		
			
				|  |  | -</style>
 | 
	
		
			
				|  |  | +</style>
 |