|
@@ -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 < 5
|
|
|
+ if (!isJPG) {
|
|
|
+ this.$message.error('上传图片只能是 jpeg|png|jpg 格式!')
|
|
|
}
|
|
|
- return result
|
|
|
+ if (!isLt2M) {
|
|
|
+ this.$message.error('上传图片大小不能超过 5MB!')
|
|
|
+ }
|
|
|
+ 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>
|