浏览代码

技能博物馆---退休录入

jbb 2 年之前
父节点
当前提交
8381e773ba
共有 3 个文件被更改,包括 1377 次插入204 次删除
  1. 24 5
      src/views/activiti/form/demoForm2.vue
  2. 1353 0
      src/views/activiti/form/demoForm3.vue
  3. 0 199
      src/views/activiti/form/personnelFilesModallJn.vue

+ 24 - 5
src/views/activiti/form/demoForm2.vue

@@ -135,6 +135,7 @@ export default {
                 add: this.add,
                 gv:this.funName,
                 department:[],//技能博物管下拉框信息
+                personListJn:[]//技能博物馆人员信息下拉框
             },
             postInfo: {},//职位信息
             deptInfo: {},//部门信息
@@ -220,6 +221,18 @@ export default {
                                  this.$message.error(res.message)
                              }
                         })
+                        //技能博物馆人员信息
+                        this.getAction('/sys/user/list', { pageSize: -1}).then(res => {
+                             if (res.success) {
+                                 var aa = []
+                                 res.result.records.map(item =>{
+                                     aa.push({value:item.realname,label:item.realname,workNo:item.workNo,post:item.post,nInductionTime:item.nInductionTimenInductionTime})
+                                 })
+                              this.dynamicData.personListJn = aa
+                            } else {
+                                 this.$message.error(res.message)
+                             }
+                        })
                         // 获取用户下拉数据
                         this.getAction('/sys/user/list2', { pageSize: 20000 }).then(userData => {
                             if (res.success) {
@@ -327,11 +340,6 @@ export default {
          this.$refs.DepartmentModal.departmentModVis = true
             this.$refs.DepartmentModal.personLists()
         },
-        // 技能博物馆获取人员信息
-        pesonListJn(){
-            this.$refs.personnelFilesModallJn.personnelFilesModallJn = true
-            this.$refs.personnelFilesModallJn. personLists()
-        },
         closeP(value){
              var that = this
             this.cvarr.map(item=>{
@@ -662,6 +670,17 @@ export default {
           if(key == 'employee_name' && this.processData.businessTable == 'separation_application'){//离职申请
             this.$refs.KFB.setData({job_title:this.postInfo[value]})   
           }
+          //技能博物馆-----退休录入
+          if(key == 'name' && this.processData.businessTable == 'bwg_retire_input'){//技能博物馆 ---- 退休录入
+              this.dynamicData.personListJn.map(item =>{
+                  if(item.label == value){
+                      this.$refs.KFB.setData({employee_number:item.workNo}) 
+                      this.$refs.KFB.setData({post:item.post}) 
+                      this.$refs.KFB.setData({rz_date:item.nInductionTim}) 
+                  }
+              })
+            // this.$refs.KFB.setData({employee_number:this.postInfo[value]})   
+          }
                  
             //改变的表单是主子表类型时
             if((value instanceof Array) && (key.indexOf('child&')!==-1)){

+ 1353 - 0
src/views/activiti/form/demoForm3.vue

@@ -0,0 +1,1353 @@
+<template>
+  <div class="form-main" id="form-main">
+    <a-card :body-style="{ padding: '24px 32px' }" :bordered="false">
+      <!-- <a-form @submit="handleSubmit" :form="form">
+        <a-form-item
+          label="标题"
+          :labelCol="{lg: {span: 7}, sm: {span: 7}}"
+          :wrapperCol="{lg: {span: 10}, sm: {span: 17} }">
+          <a-input :disabled="disabled"
+                   v-decorator="[
+            'name',
+            {rules: [{ required: true, message: '请输入标题' }]}
+          ]"
+                   name="name"
+                   placeholder="给目标起个名字" />
+        </a-form-item>
+        <a-form-item v-if="!disabled"
+                     :wrapperCol="{ span: 24 }"
+                     style="text-align: center"
+        >
+          <a-button htmlType="submit" type="primary" :disabled="disabled||btndisabled" @click="handleSubmit">保存</a-button>
+          <a-button style="margin-left: 8px" :disabled="disabled" @click="close">取消</a-button>
+        </a-form-item>
+      </a-form>-->
+      <k-form-build
+        :value="jsonData"
+        @change="handleChange"
+        :dynamicData="dynamicData"
+        ref="KFB"
+        @submit="handleSubmit"
+      />
+      <div style="text-align:center">
+        <a-button
+          htmlType="submit"
+          type="primary"
+          :disabled="disabled || btndisabled"
+          @click="handleSubmit"
+          class="noprint"
+        >保存</a-button>
+        <todoManageOperation
+          v-if="processData.operationType && processData.operationType == '1'"
+          :processData="processData"
+          :todoManageOperationObject="todoManageOperationObject"
+          :disabled="disabled"
+          :btndisabled="btndisabled"
+          @refreshToDo="refreshToDo"
+          @handleSubmit2="handleSubmit2"
+        ></todoManageOperation>
+        <a-button style="margin-left: 8px;" :disabled="disabled || disabled2" @click="close"   class="noprint">取消</a-button>
+        <!-- <a-button  type="primary"  v-if="printDisable" @click="changedd"   class="noprint" style="margin-left:10px">打印</a-button> -->
+      </div>
+    </a-card>
+    <personnel-files-modal ref="personnelFilesModal" @close="closeP"></personnel-files-modal>
+    <fixed-zy-modal ref="FixedZyModal" @close="closeP"></fixed-zy-modal>
+    <car-sq-modal ref="CarSqModal" @close="closeP"></car-sq-modal>
+    <material-sl-modal ref="MaterialSlModal" @close="closeP"></material-sl-modal>
+    <!-- 技能博物馆人员列表 -->
+    <personnel-files-modall-jn ref="personnelFilesModallJn" @close="closeP"></personnel-files-modall-jn> 
+  </div>
+</template>
+
+<script>
+import pick from 'lodash.pick'
+import todoManageOperation from '../operation/todoManageOperation'
+import PersonnelFilesModal from './personnelFilesModal'
+import personnelFilesModallJn from './personnelFilesModallJn'
+import CarSqModal from './carSqModal'
+import MaterialSlModal from './materialSlModal'
+import FixedZyModal from './fixedZyModal'
+import { postAction, postFormDataAction} from '@/api/manage'
+import {annualLeave} from '@api/oa/cd-personnel-files'
+import moment from 'moment'
+export default {
+    name: 'DemoForm',
+    props: {
+    /* 全局禁用,可表示查看 */
+        disabled: {
+            type: Boolean,
+            default: false,
+            required: false
+        },
+        /* 流程数据 */
+        processData: {
+            type: Object,
+            default: () => {
+                return {}
+            },
+            required: false
+        },
+        /* 是否新增 */
+        isNew: { type: Boolean, default: false, required: false }
+    },
+    components: {
+        todoManageOperation,
+        moment,
+        PersonnelFilesModal,
+        FixedZyModal,
+        CarSqModal,
+        MaterialSlModal,
+        personnelFilesModallJn
+    },
+    data () {
+        return {
+            isSJ: false,
+            todoManageOperationObject: {
+                isSave: false,
+                formData: {},
+                jsonData: {}
+            },
+            leave:0,//剩余年假
+            disabled2: false, // 用来取决于表单时不同流程节点填写不同表单信息使用
+            jsonData: {}, // 前台任意改变的json
+            jsonDataSave: {}, // 保存到数据库的json
+            url: {
+                getForm: '/actBusiness/getForm',
+                addApply: '/actBusiness/add',
+                editForm: '/actBusiness/editForm',
+                leaveType: '/sys/dict/getDictItems'
+            },
+            description: '流程表单demo,按例开发表单。需在 activitiMixin.js 中加入写好的表单',
+            // form
+            form: this.$form.createForm(this),
+            /* 表单回显数据 */
+            data: {},
+            btndisabled: false,
+            ceshi_file: null,
+            fArr:[],//保存含有help的单个表单信息
+            cvarr:[],//保存表单所有的label和key(用来寻找改变字段对应的key)
+            bv:[],//保存所有含有help的表单信息
+            dynamicData: {
+                jsonData: {},
+                typeData: [], // 请假类型下拉数据
+                reimbursementTypeList: [], // 报销类型下拉数据
+                invoiceTypeList: [], // 发票类型下拉数据
+                add: this.add,
+                gv:this.funName,
+                department:[],//技能博物管下拉框信息
+            },
+            postInfo: {},//职位信息
+            deptInfo: {},//部门信息
+            itemModelNameList: [], // 子表字段名
+            buttonArr:[],
+            printDisable:false//打印按钮
+        }
+    },
+    watch: {
+    // 'dynamicData.jsonData'(){
+    //   console.log("发生改变了")
+    // },
+        dynamicData: {
+            handler (newName, oldName) {
+                console.log('obj.a changed')
+                console.log(newName)
+                console.log(oldName)
+                newName.handle = this.funName1
+                newName.fixed_zy = this.fixedZy
+                newName.fixed_gh =this.fixedGh
+                newName.fixed_db=this.fixedDb
+                newName.fixed_bf=this.fixedBf
+                newName.car_sq = this.carSq
+                newName.material_sl = this.materialSl
+                newName.pesonListJn = this.pesonListJn
+            },
+            immediate: true,
+            deep: true
+        }
+    },
+    created () {
+        window.deleteRow = this.deleteRow
+        // console.log('流程数据', this.processData)
+        // 加载一些下拉选择数据等
+        // this.getDataList()
+        let businessTable = ''
+        // 如果没有值则在另一个属性上有值
+        if (!this.processData.businessTable) {
+            this.processData.businessTable = this.processData.tableName
+        }
+        this.getAction('/tbTableInfo/query', {
+            businessTable: this.processData.businessTable,
+            taskNodeId: this.processData.key,
+            tableId: this.processData.tableId,
+            type: '1'
+        }).then(res => {
+            var jsonString = JSON.stringify(res.result.jsonContent)
+            var index = 1
+
+            var dynamicKeyValueList = []
+            for (var index = 1; index !== -1;) {
+                // 动态字符位置
+                index = jsonString.indexOf('"dynamicKey"', index)
+                if (index !== -1) {
+                    // 从指定字符的周后一个字符后开始找(")
+                    var ihStart = jsonString.indexOf('"', index + 12)
+                    // 再从 (") 后面位置还是找下一个 (")
+                    var ihEnd = jsonString.indexOf('"', ihStart + 1)
+                    // 获取引号之间的字符
+                    var dynamicKeyValue = jsonString.substring(ihStart + 1, ihEnd)
+                    // 如果动态表示不为空则获取
+                    if (dynamicKeyValue != '') {
+                        dynamicKeyValueList.push(dynamicKeyValue)
+                    }
+                    index = ihEnd + 1
+                }
+            }
+            let that = this;
+            if (dynamicKeyValueList.length > 0) {
+                // 获取数据字典数据源
+                postAction('/sys/dict/getDictItems/getDictList', dynamicKeyValueList).then(dictData => {
+                    if (dictData.success) {
+                        this.dynamicData = dictData.result.dicList
+                         //技能博物馆部门信息
+                        this.getAction('/sys/sysDepart/queryMyDeptList').then(res => {
+                             if (res.success) {
+                               var aa=[]
+                               res.result.map(item=>{
+                               aa.push({value:item.departName,label:item.departName})
+                             })
+                             this.dynamicData.department = aa
+                            } else {
+                                 this.$message.error(res.message)
+                             }
+                        })
+                        // 获取用户下拉数据
+                        this.getAction('/sys/user/list2', { pageSize: 20000 }).then(userData => {
+                            if (res.success) {
+                              
+                                if(userData.data != null && userData.data.supplierList != null){
+                                    // userData.data.supplierList.forEach(user => {
+                                    //      console.log("userDatacode",user.code);
+                                    //      console.log("userDataname",user.name);
+                                    // })
+                                    this.dynamicData.supplierList = userData.data.supplierList
+                                }
+                              
+                                userData.result.records.forEach(user => {
+                                    user.label = user.realname
+                                    user.value = user.username
+                                    that.postInfo[user.username] = user.post
+                                    that.deptInfo[user.username] = user.deptName
+                                })
+                                // 存到动态数据源中
+                                this.dynamicData.userList = userData.result.records
+                                this.dynamicData.add = this.add // 新增按钮
+                                
+                                // 获取json
+                                this.jsonData = res.result.jsonContent
+                                // this.jsonData.list[2].columns[0].list[0].help = "date_1663752082983,date_1663753163575,min"
+                                this.cvarr = []
+                                this.cvarr = []
+                                this.fArr =[]
+                                //遍历help
+                                this.forHelp(this.jsonData)
+                                this.jsonDataSave = JSON.parse(JSON.stringify(res.result.jsonContent))
+                                // 获取申请人信息
+                                this.getApplicant()
+                                // 如果是手机端子表初始化子表model
+                                this.listUpdateModel()
+                                if (!this.isNew) {
+                                    this.init()
+                                }
+                            } else {
+                                this.$message.error(userData.message)
+                            }
+                        })
+                    } else {
+                        this.$message.error(dictData.message)
+                    }
+                })
+            } else {
+                // 获取json
+                this.jsonData = res.result.jsonContent
+                // this.jsonData.list[0].trs[5].tds[2].list[0].help = 'input_1662521241170,input_1662521240862,-'
+                // this.jsonData.list[0].trs[3].tds[2].list[0].help = 'today'
+                 this.cvarr = []
+                 this.fArr =[]
+                 //遍历help(计算)
+                 this.forHelp(this.jsonData)               
+                // 获取申请人信息
+                this.getApplicant()
+                // 如果是手机端子表初始化子表model
+                this.listUpdateModel()
+                // window.jsonData=this.jsonData;
+                if (!this.isNew) {
+                    this.init()
+                }
+            }
+
+            // 后台检测到流程节点有关联表单且前台处于我的待办界面打开表单详情
+            if (res.result.isSave && this.processData.isSuspended != undefined) {
+                this.disabled = false
+                this.btndisabled = false
+            }
+        })
+    },
+    methods: {
+        fixedZy(){
+            this.$refs.FixedZyModal.fixedZyModVis = true
+            this.$refs.FixedZyModal.personLists('正常')
+            this.$refs.FixedZyModal.sat = '转移'
+
+        },
+        fixedGh(){
+            this.$refs.FixedZyModal.fixedZyModVis = true
+            this.$refs.FixedZyModal.personLists('正常')
+            this.$refs.FixedZyModal.sat = '归还'
+        },
+        fixedDb(){
+            this.$refs.FixedZyModal.fixedZyModVis = true
+            this.$refs.FixedZyModal.personLists('正常')
+            this.$refs.FixedZyModal.sat = '调拨'
+        },
+        fixedBf(){
+            this.$refs.FixedZyModal.fixedZyModVis = true
+            this.$refs.FixedZyModal.personLists('正常')
+            this.$refs.FixedZyModal.sat = '报废'
+        },
+        carSq(){
+             this.$refs.CarSqModal.carSqModVis = true
+            this.$refs.CarSqModal.personLists()
+        },
+        materialSl(){
+             this.$refs.MaterialSlModal.materialSlModVis = true
+            this.$refs.MaterialSlModal.personLists()
+        },
+        //获取部门信息
+        getDepartment(){
+         this.$refs.DepartmentModal.departmentModVis = true
+            this.$refs.DepartmentModal.personLists()
+        },
+        // 技能博物馆获取人员信息
+        pesonListJn(){
+            this.$refs.personnelFilesModallJn.personnelFilesModallJn = true
+            this.$refs.personnelFilesModallJn. personLists()
+        },
+        closeP(value){
+             var that = this
+            this.cvarr.map(item=>{
+                for(let key in value){
+                    if(item.model == key){
+                        setTimeout(function(){
+                        that.$refs.KFB.setData({[key]:value[key]})   
+                        },0)
+                    }
+                }
+                
+            })
+           
+           
+        },
+         funName1(){
+            this.$refs.personnelFilesModal.declareElementsModVis = true
+            this.$refs.personnelFilesModal.personLists()
+        },
+    // 根据字典名字获取数据源
+        getDataListByName (name) {
+            this.getAction(this.url.leaveType + '/' + name).then(res => {
+                if (res.success) {
+                    this.dynamicData[name] = res.result
+                    console.log(111)
+                } else {
+                    this.$message.error(res.message)
+                }
+            })
+        },
+        // 获取获取下拉数据等
+        getDataList () {
+            // 获取请假类型下拉数据
+            this.getAction(this.url.leaveType + '/leave_type').then(res => {
+                if (res.success) {
+                    this.dynamicData.typeData = res.result
+                } else {
+                    this.$message.error(res.message)
+                }
+            })
+            // 获取报销类型下拉数据
+            this.getAction(this.url.leaveType + '/reimbursement_type').then(res => {
+                if (res.success) {
+                    this.dynamicData.reimbursementTypeList = res.result
+                } else {
+                    this.$message.error(res.message)
+                }
+            })
+            // 获取发票类型下拉数据
+            this.getAction(this.url.leaveType + '/invoice_type').then(res => {
+                if (res.success) {
+                    this.dynamicData.invoiceTypeList = res.result
+                } else {
+                    this.$message.error(res.message)
+                }
+            })
+        },
+        /* 回显数据 */
+        init () {
+            this.btndisabled = true
+            var r = this.processData
+            this.getAction(this.url.getForm, {
+                tableId: r.tableId,
+                tableName: r.tableName
+            }).then(res => {
+                // 第一次调接口根据子表数据渲染子表前台效果
+                // 只有手机端才执行
+                if (this.isSJ) {
+                    _.keys(res.result).forEach((e, i) => {
+                        if (e.indexOf('child&') != -1) {
+                            if (i > 0) {
+                                this.add()
+                            }
+                        }
+                    })
+                }
+                this.getAction(this.url.getForm, {
+                    tableId: r.tableId,
+                    tableName: r.tableName
+                }).then(res => {
+                    if (res.success) {
+                        let formData = res.result
+                        formData.tableName = r.tableName
+                        // console.log("taboe",formData);
+                        this.data = formData
+                        // 如果表单是手机端的子表则
+                        if (this.isSJ) {
+                            var formModelList = _.keys(this.data)
+                                .join(',')
+                                .split(',')
+                            var itemList = []
+                            formModelList.forEach(element => {
+                                if (element.indexOf('child&') != -1) {
+                                    itemList = JSON.parse(JSON.stringify(this.data[element]))
+                                    delete this.data[element]
+                                }
+                            })
+                            // 子表字段名
+                            // 子表数据model和值组装
+                            itemList.forEach((item, index) => {
+                                this.itemModelNameList.forEach(itemModelName => {
+                                    this.data[itemModelName + '@' + (index + 1)] = item[itemModelName]
+                                })
+                            })
+                        }
+                        // 赋值
+                        this.$refs.KFB.setData(this.data)
+                        this.btndisabled = false
+                    } else {
+                        this.$message.error(res.message)
+                    }
+                })
+            })
+        },
+        //遍历help
+        forHelp(obj){
+            for(var a in obj){
+                if (typeof(obj[a]) == "object"){
+                    if(obj[a].help !=='' && obj[a].help){
+                        //保存每一项的label和key
+                        this.cvarr.push({model:obj[a].model,key:obj[a].key,type:obj[a].type})
+                        obj[a].help = obj[a].help.split(',')
+                        //保存含有help的item中的label和help里的信息
+                        this.fArr=[
+                                  {
+                                   label:obj[a].model,
+                                   value:'',
+                                 },
+                                 {
+                                  label: obj[a].help[0],
+                                  value:'',
+                                 },
+                                {
+                                  label: obj[a].help[1],
+                                  value:'',
+                                 },
+                                {
+                                   label: obj[a].help[2],
+                                   value:'',
+                                },
+                            ]
+                        //保存多各含有help的数据
+                        this.bv.push({bn:this.fArr})
+                       //默认当天时间
+                        this.defualtData(this.fArr)
+                    }else if(obj[a].help ==''){
+                        this.cvarr.push({model:obj[a].model,key:obj[a].key,type:obj[a].type})
+                    }else if(obj[a].type == 'button'){
+                        this.buttonArr.push(obj[a])
+                         this.buttonShow(obj[a])         
+                    }
+                    this.forHelp(obj[a])
+                }
+                }     
+                
+        },
+        buttonShow(obj){
+            if(obj.label == '打印'){
+                this.printDisable = true
+            }
+        },
+        defualtData(item){
+                           if(item[1].label =='today'){
+                               item[0].value =moment(new Date().toLocaleDateString()).format('YYYY-MM-DD HH:mm')
+                               var that = this
+                               setTimeout(function(){
+                               that.$refs.KFB.setData({[item[0].label]:item[0].value})   
+                                  },0)
+                           }else if(item[1].label =='user'){
+                              this.$store.getters.userInfo
+                               var that = this
+                               setTimeout(function(){
+                               that.$refs.KFB.setData({[item[0].label]:that.$store.getters.userInfo.username})   
+							   
+                               if(that.processData.businessTable == 'regular_employee_apply'){//员工转正申请
+                                 that.$refs.KFB.setData({apply_department:that.deptInfo[that.$store.getters.userInfo.username]})   
+                                 // that.$refs.KFB.setData({job_title:that.postInfo[that.$store.getters.userInfo.username]})   
+                               }
+                               if(that.processData.businessTable == 'seal_apply'){//用印申请单
+                                 that.$refs.KFB.setData({apply_department:that.deptInfo[that.$store.getters.userInfo.username]})   
+                               }
+                               if(that.processData.businessTable == 'separation_application'){//离职申请
+                                 that.$refs.KFB.setData({job_title:that.postInfo[that.$store.getters.userInfo.username]})   
+                               }
+                          
+							   
+                                  },0)
+                                  annualLeave({username:that.$store.getters.userInfo.username}).then(res => {
+                                   if (res.success) {
+                                   this.leave = res.result.nannualNowNum
+                                  }else{
+                                   this.$message.error(res.message);
+                                  }
+                                })
+                           }
+        },
+        // 获取申请人信息
+        getApplicant () {
+            console.log('aa', this.$refs.KFB.form.getFieldValue('applicant'))
+            // if (this.$refs.KFB.form.getFieldValue('applicant')) {
+            //   alert(1)
+            //   this.$refs.KFB.setData({
+            //     applicant: this.$store.getters.userInfo.username
+            //   })
+            // }
+        },
+        changedd(){
+         window.print()
+        },
+        //主子表计算 
+         tableCalculation(value){
+             var number1 = 0,
+                number2 = 0
+                //寻找help信息中对应的modol值
+               this.bv.map(item=>{
+                       this.cvarr.map(vv=>{
+                           if(vv.key == item.bn[1].label){
+                               number1 = vv.model
+                           }else if(vv.key == item.bn[2].label){
+                               number2 = vv.model
+                           }
+                   })
+                   //表中每一行分别计算
+                   var sum = 0
+                    value.map(b=>{
+                      b[item.bn[0].label] = b[number1]*b[number2]  
+                      sum += b[item.bn[0].label]   //计算出表格内的总价总和
+                      if(this.$store.getters.nickname=='崔崇杰'){
+                           b['procurement_type']='1'
+                      }else{
+                          b['procurement_type']='2'
+                      } 
+                    })  
+                    this.$refs.KFB.setData({sum:sum})   
+
+               })
+         },
+         specialTerms(value,key){
+            var that = this
+            //剩余年假
+            if(key == 'employe_name'){
+                setTimeout(function(){
+                    annualLeave({username:value}).then(res => {
+                    if (res.success) {
+                      //选择姓名获取页面的请假类型和时间间隔
+                      that.leave = res.result.nannualNowNum
+                      var category = that.$refs.KFB.form.getFieldValue('leave_category')
+                      var time1 = that.$refs.KFB.form.getFieldValue('start_date')
+                      var time2 = that.$refs.KFB.form.getFieldValue('end_date')
+                      var timeC=that.timeDifference(time1,time2,'min') //获取时间差
+                      //事假,超过180分钟,年假大于0.5
+                      if(category == 1 &&timeC>=180&&that.leave>=0.5){
+                          that.$refs.KFB.setData({unit:'2'})
+                          that.$refs.KFB.setData({leave_category:'2'})
+                        }else if(category == 2 && that.leave<0.5){   //类型为年假,剩余年假小于0.5
+                             that.$refs.KFB.setData({unit:'1'}) 
+                             that.$refs.KFB.setData({leave_category:''})
+                             that.$message.error('剩余年假不足!');
+                        }
+                    }else{
+                       that.$message.error(res.message); 
+                       
+                    }
+                })
+                },0)
+            }
+             //请假类型与单位
+            //事假
+            if(key == 'leave_category' && value == '1'){
+                setTimeout(function(){
+                var time1 = that.$refs.KFB.form.getFieldValue('start_date')
+                var time2 = that.$refs.KFB.form.getFieldValue('end_date')
+                var timeC=that.timeDifference(time1,time2,'min') //获取时间差
+                if(timeC>=180 && that.leave>=0.5){ //事假,时间差大于180,剩余年假大于0.5
+                    that.$refs.KFB.setData({unit:'2'})
+                    that.$refs.KFB.setData({leave_category:'2'})
+                }else{
+                    that.$refs.KFB.setData({unit:'1'})   
+                }
+                },0)
+            }else if(key == 'leave_category' && value == '3'){  //病假
+                setTimeout(function(){
+                 that.$refs.KFB.setData({unit:'1'})   
+                },0)
+            }else if(key == 'leave_category' && value == '2'){//年假
+                 setTimeout(function(){
+                    if(that.leave >=0.5){  //剩余年假大于0.5
+                        that.$refs.KFB.setData({unit:'2'})  
+                    }else{ //剩余年假小于0.5
+                         that.$refs.KFB.setData({unit:'1'}) 
+                         that.$refs.KFB.setData({leave_category:''})
+                         that.$message.error('剩余年假不足!');
+                    }
+
+                },0)
+
+            }else if(key == 'leave_category'){
+                setTimeout(function(){
+                    that.$refs.KFB.setData({unit:'2'})   
+                },0)
+            }
+            //时间间隔和类型
+            if(key =='start_date' || key =='end_date'){
+                setTimeout(function(){
+                    var time2 = that.$refs.KFB.form.getFieldValue('end_date')
+                    var time1 = that.$refs.KFB.form.getFieldValue('start_date')
+                    var timeC=that.timeDifference(time1,time2,'min')
+                    var lx=that.$refs.KFB.form.getFieldValue('leave_category')
+                    if(timeC>=180&&lx=='1'&&that.leave>=0.5){ //事假,时间差大于180,剩余年假大于0.5
+                        that.$refs.KFB.setData({unit:'2'})
+                          that.$refs.KFB.setData({leave_category:'2'})
+                     }
+                },0)
+                
+            }
+         },
+        // 表单字段数值发生改变事件
+        handleChange (value, key) {  
+          if(key == 'proposer' && this.processData.businessTable == 'regular_employee_apply'){//员工转正申请:申请人部门
+            this.$refs.KFB.setData({apply_department:this.deptInfo[value]})   
+          }
+          if(key == 'regular_employee' && this.processData.businessTable == 'regular_employee_apply'){//员工转正申请:转正人员岗位
+            this.$refs.KFB.setData({job_title:this.postInfo[value]})   
+          }
+          if(key == 'proposer' && this.processData.businessTable == 'seal_apply'){//用印申请单
+            this.$refs.KFB.setData({apply_department:this.deptInfo[value]})   
+          }
+          if(key == 'employee_name' && this.processData.businessTable == 'separation_application'){//离职申请
+            this.$refs.KFB.setData({job_title:this.postInfo[value]})   
+          }
+                 
+            //改变的表单是主子表类型时
+            if((value instanceof Array) && (key.indexOf('child&')!==-1)){
+                this.tableCalculation(value)
+            }
+            //特别字段
+            this.specialTerms(value,key)
+
+            //代码赘余,日后维护
+            //保存发生改变字段名对应的key 
+            var cc ='',
+                type = ''
+                this.cvarr.map(k =>{
+                     if(k.model ==key){
+                        cc=k.key
+                        type = k.type
+                      }})
+            //根据数值改变计算
+            var that =this
+            setTimeout(function(){
+              that.bv.map(event =>{
+                 if(event.bn[1].label == cc || event.bn[2].label == cc){
+                    that.cvarr.map(k=>{
+                        if(k.key == event.bn[1].label){
+                                 event.bn[1].value = that.$refs.KFB.form.getFieldValue(k.model)
+                        }else if(k.key == event.bn[2].label){
+                                 event.bn[2].value = that.$refs.KFB.form.getFieldValue(k.model)
+                        }
+                    })
+                    if(type == 'date'){
+                        if(event.bn[1].value!=='' && event.bn[2].value!==''){
+                            var state = ''
+                            state = event.bn[3].label
+                            event.bn[0].value = that.timeDifference(event.bn[1].value,event.bn[2].value,state)
+                        }
+                       }else{
+                        if(event.bn[3].label =="+"){
+                           event.bn[0].value = Number(event.bn[1].value)+Number(event.bn[2].value)  
+                        }else if(event.bn[3].label =="-"){
+                           event.bn[0].value = Number(event.bn[1].value)-Number(event.bn[2].value)  
+                        }else if(event.bn[3].label =="*"){
+                            event.bn[0].value = Number(event.bn[1].value)*Number(event.bn[2].value)  
+                        }
+                    }         
+                    that.$refs.KFB.setData({[event.bn[0].label]:event.bn[0].value})
+                 }
+              })     
+ 
+            },0)
+                     // // 数据变化时触发
+            // // 如果开始时间发生变化
+            // if (key == 'start_time') {
+            //     // 判断结束时间是否存在
+            //     if (this.$refs.KFB.form.getFieldValue('end_time')) {
+            //         // 获取时间差
+            //         let duration = startEndFun(value, this.$refs.KFB.form.getFieldValue('end_time'))
+            //         if (duration) {
+            //             // 使用k-form-design组件的form属性修改表单数据
+            //             this.$refs.KFB.setData({
+            //                 duration: duration
+            //             })
+            //         }
+            //     }
+            // }
+            // // 如果结束时间发生变化
+            // if (key == 'end_time') {
+            //     // 判断结束时间是否存在
+            //     if (this.$refs.KFB.form.getFieldValue('start_time')) {
+            //         // 获取时间差
+            //         let duration = startEndFun(this.$refs.KFB.form.getFieldValue('start_time'), value)
+            //         if (duration) {
+            //             // 使用k-form-design组件的form属性修改表单数据
+            //             this.$refs.KFB.setData({
+            //                 duration: duration
+            //             })
+            //         }
+            //     }
+            // }
+        },
+        // handler
+        handleSubmit (e) {
+            // return new Promise((resolve)=>{
+            // 通过函数获取数据
+            this.$refs.KFB.getData()
+                .then(res => {
+                  let formData1 = JSON.parse(JSON.stringify(res))
+                  console.log("orl",formData1)
+                    // 处理手机端子表数据
+                    if (this.isSJ) {
+                        this.itemData(res)
+                    }
+                    // 清除为空的表单数据
+                    _.keys(res).forEach(r => {
+                        if (!res[r]) {
+                            delete res[r]
+                        }
+                    })
+                    // 获取数据成功
+                    let formData = JSON.parse(JSON.stringify(res))
+                    console.log(formData)
+                    formData.id = this.data.id
+                    formData.procDefId = this.processData.id
+                    formData.procDeTitle = this.processData.name
+
+                    if (!formData.tableName) formData.tableName = this.processData.businessTable
+                    formData.filedNames = _.keys(res).join(',')
+                    formData.filedNames = getFiledNames(formData) // 获取主表字段,排除子表标识
+                    var url = this.url.addApply
+                    if (!this.isNew) {
+                        url = this.url.editForm
+                    }
+                    // 是否存在子表
+                    let ischild = false
+                    // 循环表单字段属性判断是否属性中包含数组对象
+                    let i = 0 // 子表数量
+                    _.keys(res)
+                        .join(',')
+                        .split(',')
+                        .forEach(element => {
+                            if (formData[element] instanceof Array) {
+                                // 判断是否符合子表命名规则
+                                if (element.indexOf('&') != -1) {
+                                    let tableChildNameList = element.split('&')
+                                    // 判断是否能拆分两个字符,子表标识和子表数据库名称
+                                    if (tableChildNameList.length == 2) {
+                                        i++
+                                        let childName = tableChildNameList[1] // 子表数据库名称
+                                        if (!formData.table_name_children) {
+                                            // 第一次拼接
+                                            formData.table_name_children = childName // 表名
+                                        } else {
+                                            // 后面的表明拼接用“,”隔开
+                                            formData.table_name_children = formData.table_name_children + ',' + childName // 表名
+                                        }
+                                        // 定义属性名和值
+                                        formData['childFiledNames' + i] = _.keys(formData[element][0]).join(',') // 子表字段名
+                                        formData['childList' + i] = JSON.stringify(formData[element]) // 子表数据
+                                        ischild = true
+                                    }
+                                } else {
+                                    // 如果不是子表则是上传文件,则转字符串
+                                    formData[element] = JSON.stringify(formData[element])
+                                }
+                            }
+                            // formData[element];
+                        })
+                    // 判断需不需要存子表
+                    if (ischild) {
+                        formData.filedNames = formData.filedNames + ',table_name_children'
+                    }
+
+                    console.log(formData)
+                    // 子表数据
+                    // 调用保存接口
+                    this.btndisabled = true
+                    this.todoManageOperationObject.formData = formData
+                    this.todoManageOperationObject.url = url
+                    // formData.jsonContent=JSON.stringify(this.jsonData).toString()
+                    // 获取是否部门负责人
+                    formData.filedNames = formData.filedNames + ',is_leaders'
+                    // formData.is_leaders = this.$store.getters.userInfo.identity
+                    formData.is_leaders = this.$store.getters.userInfo.isPossess
+                    // 清除子表规则的属性
+                    _.keys(formData).forEach(r => {
+                        if (r.indexOf('child&') != -1) {
+                            delete formData[r]
+                        }
+                    })
+                    // 如果手机端子表得则需要修改json
+                    // var jsonPamats = JSON.parse(JSON.stringify(this.jsonData))
+                    var jsonPamats = JSON.parse(JSON.stringify(this.jsonDataSave))
+                    if (!this.isSJ && this.isNew) {
+                        jsonPamats = null
+                    }
+                    this.todoManageOperationObject.jsonData = jsonPamats
+                    // 非我的待办节点打卡表单界面
+                    postFormDataAction(url, formData, { jsonContent: jsonPamats })
+                        .then(res => {
+                            if (res.success) {
+                                this.todoManageOperationObject.isSave = true
+                                this.$message.success('保存成功!')
+                                console.log('123')
+                                this.$emit('afterSubmit', formData)
+                                this.$emit('close')
+                                // resolve(true);
+                            } else {
+                                this.$message.error(res.message)
+                                // resolve(false);
+                            }
+                        })
+                        .finally(() => {
+                            this.btndisabled = false
+                            // resolve(false);
+                        })
+                })
+                .catch(err => {
+                    console.log(err, '校验失败')
+                    // resolve(false);
+                })
+            // })
+        },
+        // 我的待办点击通过保存专用
+        handleSubmit2 (e) {
+            // return new Promise((resolve)=>{
+            // 通过函数获取数据
+            this.$refs.KFB.getData()
+                .then(res => {
+                    // 处理手机端子表数据
+                    if (this.isSJ) {
+                        this.itemData(res)
+                    }
+                    // 清除为空的表单数据
+                    _.keys(res).forEach(r => {
+                        if (!res[r]) {
+                            delete res[r]
+                        }
+                    })
+                    // 获取数据成功
+                    let formData = JSON.parse(JSON.stringify(res))
+                    console.log(formData)
+                    formData.id = this.data.id
+                    formData.procDefId = this.processData.id
+                    formData.procDeTitle = this.processData.name
+                    // formData.jsonContent=JSON.stringify(this.jsonData)
+                    if (!formData.tableName) formData.tableName = this.processData.businessTable
+                    formData.filedNames = _.keys(res).join(',')
+                    formData.filedNames = getFiledNames(formData) // 获取主表字段,排除子表标识
+                    var url = this.url.addApply
+                    if (!this.isNew) {
+                        url = this.url.editForm
+                    }
+                    // 是否存在子表
+                    let ischild = false
+                    // 循环表单字段属性判断是否属性中包含数组对象
+                    let i = 0 // 子表数量
+                    _.keys(res)
+                        .join(',')
+                        .split(',')
+                        .forEach(element => {
+                            if (formData[element] instanceof Array) {
+                                // 判断是否符合子表命名规则
+                                if (element.indexOf('&') != -1) {
+                                    let tableChildNameList = element.split('&')
+                                    // 判断是否能拆分两个字符,子表标识和子表数据库名称
+                                    if (tableChildNameList.length == 2) {
+                                        i++
+                                        let childName = tableChildNameList[1] // 子表数据库名称
+                                        if (!formData.table_name_children) {
+                                            // 第一次拼接
+                                            formData.table_name_children = childName // 表名
+                                        } else {
+                                            // 后面的表明拼接用“,”隔开
+                                            formData.table_name_children = formData.table_name_children + ',' + childName // 表名
+                                        }
+                                        // 定义属性名和值
+                                        formData['childFiledNames' + i] = _.keys(formData[element][0]).join(',') // 子表字段名
+                                        formData['childList' + i] = JSON.stringify(formData[element]) // 子表数据
+                                        ischild = true
+                                    }
+                                } else {
+                                    // 如果不是子表则是上传文件,则转字符串
+                                    formData[element] = JSON.stringify(formData[element])
+                                }
+                            }
+                            // formData[element];
+                        })
+                    // 判断需不需要存子表
+                    if (ischild) {
+                        formData.filedNames = formData.filedNames + ',table_name_children'
+                    }
+
+                    console.log(formData)
+                    // 子表数据
+                    // 调用保存接口
+                    this.btndisabled = true
+                    this.todoManageOperationObject.formData = formData
+                    this.todoManageOperationObject.url = url
+                    // 获取是否部门负责人
+                    formData.filedNames = formData.filedNames + ',is_leaders'
+                    // formData.is_leaders = this.$store.getters.userInfo.identity
+                    formData.is_leaders = this.$store.getters.userInfo.isPossess
+                    // 清除子表规则的属性
+                    _.keys(formData).forEach(r => {
+                        if (r.indexOf('child&') != -1) {
+                            delete formData[r]
+                        }
+                    })
+                    // 如果手机端子表得则需要修改json
+                    // var jsonPamats = JSON.parse(JSON.stringify(this.jsonData))
+                    var jsonPamats = JSON.parse(JSON.stringify(this.jsonDataSave))
+                    if (!this.isSJ && this.isNew) {
+                        jsonPamats = null
+                    }
+                    this.todoManageOperationObject.jsonData = jsonPamats
+                })
+                .catch(err => {
+                    console.log(err, '校验失败')
+                    // resolve(false);
+                })
+            // })
+        },
+        close () {
+            this.$emit('close')
+        },
+        getData () {
+            // 通过函数获取数据
+            this.$refs.KFB.getData()
+                .then(res => {
+                    // 获取数据成功
+                    alert(JSON.stringify(res))
+                })
+                .catch(err => {
+                    console.log(err, '校验失败')
+                })
+        },
+        // 刷新待办列表
+        refreshToDo () {
+            this.close()
+            this.$emit('getDataList')
+        },
+        itemData (res) {
+            var childName = '' // 子表规则名称
+            var itemIndex = 0
+            this.jsonData.list.forEach((element, index) => {
+                if (element.label.indexOf('child&') != -1) {
+                    childName = element.label // 获取规则名
+                    itemIndex = itemIndex + 1
+                }
+            })
+            var itemList = [] // 封装子表数据
+            for (var i = 1; i <= itemIndex; i++) {
+                var itemObject = {} // 子表对象
+                this.itemModelNameList.forEach(name => {
+                    // 获取子表得值和封装对象
+                    itemObject[name] = res[name + '@' + i]
+                    delete res[name + '@' + i]
+                })
+                itemList.push(itemObject)
+            }
+            res[childName] = itemList // 完成子表数据封装
+            console.log(res)
+        },
+        deleteRow (idIndex) {
+            // 删除
+            this.jsonData.list.splice(idIndex, 1)
+            // 删除掉得json之后 重新处理model 和value
+            let childIndex = 0
+            this.jsonData.list.forEach((element, index) => {
+                if (element.label.indexOf('child&') != -1) {
+                    childIndex = childIndex + 1
+                    // 只有当前删除的对象json的后面对象json才进行修改
+                    if (index >= idIndex) {
+                        // 修改删除按钮的index
+                        element.columns[0].list[1].options.defaultValue =
+              '<a href="javascript:void(0);" \n onclick="deleteRow(' + childIndex + ')">删除</a>'
+                        // 修改model
+                        updateModel(element, childIndex)
+                        // 需要调整的子表值
+                        var updateModelObject = {}
+                        // 修改value
+                        this.$refs.KFB.getData().then(res => {
+                            // 根据原始字段名拼接带规则的
+                            this.itemModelNameList.forEach(modelName => {
+                                updateModelObject[modelName + '@' + childIndex] = res[modelName + '@' + (childIndex + 1)]
+                            })
+                            this.$refs.KFB.setData(updateModelObject)
+                        })
+                    }
+                }
+            })
+            console.log(JSON.stringify(this.jsonData.list))
+        },
+        add () {
+            let childLable = '' // 子表json标题
+            let childValue = {} // 新增子表json
+            let isReturn = false
+            let childIndex = 0
+            var itemList = []
+            this.jsonData.list.forEach((element, index) => {
+                if (element.label.indexOf('child&') != -1) {
+                    childValue = JSON.parse(JSON.stringify(element))
+                    childLable = element.label
+                    // 处理删除按钮
+                    childIndex = childIndex + 1
+                    // element.columns[0].list[1].options.dynamicFun = 'delete' + childIndex
+                    console.log(element.columns[0].list[1].options)
+                    element.columns[0].list[1].options.defaultValue =
+            '<a href="javascript:void(0);" \n onclick="deleteRow(' + childIndex + ')">删除</a>'
+                    updateModel(childValue, childIndex)
+                }
+
+                if (!isReturn && childLable != '' && element.label != childLable) {
+                    isReturn = true
+                    // 处理删除按钮
+                    childIndex = childIndex + 1
+                    // childValue.columns[0].list[1].options.dynamicFun = 'delete' + childIndex
+                    childValue.columns[0].list[1].options.defaultValue =
+            '<a href="javascript:void(0);" \n onclick="deleteRow(' + childIndex + ')">删除</a>'
+                    updateModel(childValue, childIndex)
+                    // this.jsonData.list.splice(index, 0, childValue)
+                    itemList.push(childValue)
+                }
+                itemList.push(element)
+            })
+            this.jsonData.list = itemList
+            console.log(JSON.stringify(this.jsonData.list))
+        },
+        // 把整个子表json的model进行规则修改
+        async listUpdateModel () {
+            let modelIndex = 0 // 子表model自增
+            // 循环整个json的表单
+            this.jsonData.list.forEach((element, index) => {
+                // 找到为子表的json
+                if (element.label.indexOf('child&') != -1) {
+                    this.isSJ = true
+                    // 获取子表原始得model字段名
+                    if (modelIndex == 0) {
+                        var i = 1
+                        var itemString = JSON.stringify(element)
+                        var itemModelNameList = [] // 储存子表字段名
+                        for (var i = 1; i !== -1;) {
+                            // 动态字符位置
+                            i = itemString.indexOf('"model"', i)
+                            if (i !== -1) {
+                                // 从指定字符的周后一个字符后开始找(")
+                                var ihStart = itemString.indexOf('"', i + 7)
+                                // 再从 (") 后面位置还是找下一个 (")
+                                var ihEnd = itemString.indexOf('"', ihStart + 1)
+                                // 获取引号之间的字符
+                                var model = itemString.substring(ihStart + 1, ihEnd)
+                                // 如果动态表示不为空则获取
+                                if (model != '') {
+                                    if (model.indexOf('@') != -1) {
+                                        model = model.substring(0, model.length - 2)
+                                    }
+                                    itemModelNameList.push(model)
+                                }
+                                i = ihEnd + 1
+                            }
+                        }
+                        this.itemModelNameList = itemModelNameList
+                    }
+                    modelIndex = modelIndex + 1
+                    // 修改model
+                    updateModel(element, modelIndex)
+                }
+            })
+        },
+        //计算时间差
+        timeDifference(start, end,state){
+            // if(start>end){
+            //    this.$message.error('起始时间不可大于结束时间');
+            // }else{
+              let beginTime = (new Date(start).getTime()) / 1000;
+              let endTime = (new Date(end).getTime()) / 1000;
+               //计算天数
+              var timediff = endTime - beginTime;
+              var days = parseInt(timediff / 86400);  //60*60*24
+             //计算小时数
+             var remain = timediff % 86400 ;
+             var hours = parseInt(remain / 3600);
+             //计算分钟数
+             var remain = remain % 3600;
+             var mins = parseInt(remain / 60);
+             var res = days + '天' + hours + '小时' + mins + '分';
+             if(state == 'min'){
+                return days*24*60+hours*60+mins
+             }else if(state == 'hour'){
+                 return days*24+hours+mins/60
+             }else if(state == 'day'){
+                 if(start.split(' ').length==1 && end.split(' ').length == 1){
+                      return days+1+hours/24+mins/60/24
+                 }else{
+                     return days+hours/24+mins/60/24
+                 }
+                  
+             }else if(state == 'day/hour/min'){
+                 return days+'天'+hours+'小时'+mins+'分'
+             }else if(state == 'hour/min'){
+                 return (days*24+hours)+'小时'+mins+'分'
+             }
+            }
+             
+      }
+    // }
+}
+
+// 获取主表字段,排除子表标识
+function getFiledNames (formData) {
+    let filedNames = ''
+    let list = formData.filedNames.split(',') // 获取表单属性名集合
+    list.forEach(element => {
+        if (element.indexOf('&') == -1) {
+            // 查询是否有这个字段
+            if (filedNames == '') {
+                // 第一次则直接等于
+                filedNames = element
+            } else {
+                // 后面用逗号隔开
+                filedNames = filedNames + ',' + element
+            }
+        }
+    })
+    return filedNames
+}
+// 根据开始时间 结束时间计算天数
+function startEndFun (start, end) {
+    let startTime = new Date(start)
+    let endTime = new Date(end)
+    if (startTime >= endTime) {
+        return 0
+        }
+    // 1,分钟取整
+    startTime = carryTime(startTime)
+    endTime = carryTime(endTime)
+    // 2,计算总天数
+    var totalTime = 0 // 工时,天数
+    if (startTime.getDay() == 6 || startTime.getDay() == 0) {
+        totalTime = endTime.getDate() - startTime.getDate()
+    } else {
+        totalTime = Math.floor((endTime - startTime) / (3600 * 1000) / 24)
+    }
+    // 3,拿初始值赋值给一个临时变量
+    var tempStartTime = new Date()
+    tempStartTime.setTime(startTime.getTime())
+    // 4,计算出总天数
+    while (tempStartTime.getDate() < endTime.getDate()) {
+        if (tempStartTime.getDay() == 6 || tempStartTime.getDay() == 0) {
+            // 周六或者周日减去
+            totalTime--
+        }
+        tempStartTime.setDate(tempStartTime.getDate() + 1)
+    }
+
+    // 5,计算出总小时数
+    var temp = 0 // 工时,小时
+    do {
+        if (startTime.getDay() == 6 || startTime.getDay() == 0) {
+            // 周六周日
+            startTime.setDate(startTime.getDate() + 1)
+            //* ********周六周日直接跳过,初始化为早晨9点
+            startTime.setHours(9)
+            startTime.setMinutes(0)
+            continue
+        }
+
+        if (endTime.getDay() == 6 || endTime.getDay() == 0) {
+            // 周六周日
+            endTime.setDate(endTime.getDate() + 1)
+            //* ********周六周日直接跳过,初始化为早晨9点
+            endTime.setHours(9)
+            endTime.setMinutes(0)
+            continue
+        }
+
+        let tempMinutes = startTime.getHours() * 60 + startTime.getMinutes()
+        // 上午9点到12点半,算工时
+        if (tempMinutes >= 9 * 60 && tempMinutes < 12 * 60) {
+            temp += 0.05
+        }
+        // 上午14点到18点半,算工时
+        if (tempMinutes >= 13 * 60 && tempMinutes < 18 * 60) {
+            temp += 0.05
+        }
+        startTime.setTime(startTime.getTime() + 0.5 * 3600 * 1000) // 每次增加半个小时
+    } while (startTime.getHours() * 60 + startTime.getMinutes() != endTime.getHours() * 60 + endTime.getMinutes())
+    {
+        totalTime += Math.floor(temp / 0.8)
+        totalTime += temp % 0.8
+        totalTime = Math.round(totalTime * 100) / 100
+    }
+    var days = Math.floor(totalTime)
+    var hours = Math.round((totalTime - days) * 100) / 10
+    console.log(days + '天', hours + '小时')
+    return days * 8 + hours
+
+    // if (start && end) {
+    //   let startTime = new Date(start) // 开始时间
+    //   let endTime = new Date(end) // 结束时间
+    //   let usedTime = endTime - startTime // 相差的毫秒数
+    //   let days = (usedTime / 1000 / 60 / 60).toFixed(2) // 计算出天数
+    //   return days
+    // } else {
+    //   return null
+    // }
+}
+
+// 格式化时间
+function formatDate (date, fmt) {
+    if (/(y+)/.test(fmt)) {
+        fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
+    }
+    let o = {
+        'M+': date.getMonth() + 1,
+        'd+': date.getDate(),
+        'h+': date.getHours(),
+        'm+': date.getMinutes(),
+        's+': date.getSeconds()
+    }
+    for (let k in o) {
+        if (new RegExp(`(${k})`).test(fmt)) {
+            let str = o[k] + ''
+            fmt = fmt.replace(RegExp.$1, RegExp.$1.length === 1 ? str : padLeftZero(str))
+        }
+    }
+    return fmt
+}
+
+function padLeftZero (str) {
+    return ('00' + str).substr(str.length)
+}
+
+/*
+ * 0-15分不算工时
+ * 15-45算半个小时
+ * 45-60算一个小时
+ * */
+function carryTime (date) {
+    if (date.getMinutes() > 0 && date.getMinutes() < 15) {
+        date.setMinutes(0)
+    }
+    if (date.getMinutes() >= 15 && date.getMinutes() < 30) {
+        date.setMinutes(30)
+    }
+    if (date.getMinutes() > 30 && date.getMinutes() < 45) {
+        date.setMinutes(30)
+    }
+    if (date.getMinutes() >= 45) {
+        date.setHours(date.getHours() + 1)
+        date.setMinutes(0)
+    }
+    return date
+}
+
+// function
+
+/**
+ * 修改model绑定值
+ */
+function updateModel (object, childIndex) {
+    let keyString = _.keys(object).join(',')
+    if (keyString.indexOf('model') != -1) {
+    // 如果没有修改过则直接修改
+        if (object['model'].indexOf('@') == -1) {
+            object['model'] = object['model'] + '@' + childIndex
+        } else {
+            // 修改过则截取修改前的再进行修改
+            var m = object['model'].substring(0, object['model'].length - 2)
+            object['model'] = m + '@' + childIndex
+        }
+    }
+    // 递归
+    _.keys(object)
+        .join(',')
+        .split(',')
+        .forEach(l => {
+            if (object[l] instanceof Array) {
+                object[l].forEach(element => {
+                    updateModel(element, childIndex)
+                })
+            }
+        })
+}
+</script>
+<style lang="less" scoped>
+@media print {
+    @page {
+    /* 横向 */
+    size: landscape;
+    /* 去除浏览器默认页眉页脚 */
+    margin: 0;
+  }
+   .noprint {
+    display: none;
+  }
+  /deep/.ant-input{
+      border: none !important;
+  }
+  /deep/ .ant-modal-header{
+       display: none !important;
+  }
+   /deep/ .ant-modal-content{
+      box-shadow:none !important
+  }
+}
+ /deep/ .anticon-question-circle-o {
+    display: none !important;
+}
+</style>

+ 0 - 199
src/views/activiti/form/personnelFilesModallJn.vue

@@ -1,199 +0,0 @@
-<template>
-<!-- 技能博物馆人员档案 -->
-  <div id="personnelFilesModallJn" ref="personnelFilesModallJn">
-    <a-modal
-      title="人员档案"
-      v-model="personnelFilesModallJn"
-       :getContainer ='()=>$refs.personnelFilesModallJn'
-      @cancel="handleCancel"
-      width="80%"
-      style="top:330px;left:100px;"
-    >
-
-      <!-- 増行 子表 -->
-      <a-card :bordered="false" style="margin:10px 0">
-        <!-- 子表 -->
-          <a-form-model ref="formRef">
-            <a-table
-              v-if="personnelFilesModallJnData"
-              bordered
-              rowKey="id"
-              :columns="personnelFilesModallJnColumns"
-              :data-source="personnelFilesModallJnData"
-              :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
-              :pagination="pagination"
-               :scroll="{y:300,x:1200}"
-                @change="handleTableChange"
-            >
-              
-            </a-table>
-          </a-form-model>
-      </a-card>
-
-      <!-- 页面底部保存取消 -->
-      <div
-        :style="{
-          position: 'absolute',
-          right: 0,
-          bottom: 0,
-          width: '100%',
-          borderTop: '1px solid #e9e9e9',
-          padding: '10px 16px',
-          background: '#fff',
-          textAlign: 'right',
-          zIndex: 1
-        }"
-      >
-        <a-popconfirm title="确定放弃?" @confirm="handleCancel" okText="确定" cancelText="取消">
-          <a-button :style="{ marginRight: '8px' }">返回</a-button>
-        </a-popconfirm>
-        <a-button type="primary" @click="addSave">
-          确认
-        </a-button>
-      </div>
-    </a-modal>
-  </div>
-</template>
-
-<script>
-import { JeecgListMixin } from '@/mixins/JeecgListMixin'
-import JEllipsis from '@/components/jeecg/JEllipsis'
-import moment from 'moment'
-import {pesonListJn} from '@api/oa/cd-personnel-files'
-
-export default {
-  name: 'personnelFilesModallJn', // 报关要素
-  mixins: [JeecgListMixin],
-  components: { JEllipsis, moment },
-
-  data() {
-    let ellipsis = (v, l = 20) => <j-ellipsis value={v} length={l} /> // 省略
-
-    return {
-      loading: false, // 表格加载
-      pushState: false, //是否推送
-      // 子表表头
-      personnelFilesModallJnColumns: [ 
-           {
-          title: '员工姓名',
-          dataIndex: 'realname',
-          width:'20%',
-          className: 'replacecolor',
-        },
-         {
-          title: '岗位',
-          dataIndex: 'post',
-          width:'20%',
-          className: 'replacecolor',
-        },
-        {
-          title: '员工编号',
-          dataIndex: 'workNo',
-          width:'20%',
-          className: 'replacecolor',
-        },
-        {
-          title: '入职日期',
-          dataIndex: 'nInductionTime',
-          width:'20%',
-          className: 'replacecolor',
-        },
-      ],
-      personnelFilesModallJnData: [
-          
-      ], // 子表信息
-      pagination:{},
-      personnelFilesModallJn: false,
-      selectedRowKeys:[],
-      selectedRows:[],
-      queryParam:{
-        pageSize:10
-      }
-    }
-  },
-  // 接收父组件 方法
-  props: {},
-
-  created() {  
-  },
-
-  methods: {
-    personLists(){
-      pesonListJn(this.queryParam).then(res => {
-                    if (res.success) {
-                      this.personnelFilesModallJnData = res.result.records
-                      this.pagination = {
-                        pageSize:10,
-                       total: res.result.total,
-                       current: res.result.current,
-                       }
-                      //  this.dataSource =res.result.records
-                    }else{
-                       this.$message.error(res.message);
-                    }
-                })
-    },
-    // // 分页、排序、筛选变化时触发
-    handleTableChange(pagination, filters, sorter) {
-      this.queryParam.pageNo = pagination.current
-      this.personLists()
-    },
-    handleCancel() {
-     this.personnelFilesModallJn = false
-     this.personnelFilesModallJnData = []
-     this.selectedRowKeys = []
-    },
-    onSelectChange(keys,rows){
-      this.selectedRowKeys = keys;
-      this.selectedRows = rows;
-    },
-    addSave(){
-       if(this.selectedRows.length >1){
-         this.$message.error('一次只可勾选一行数据');
-       }else if(this.selectedRows.length == 0){
-         this.$message.error('请勾选数据');
-       }else{
-         var data ={
-            name : this.selectedRows[0].realname,
-            employee_number:this.selectedRows[0].workNo,
-            post:this.selectedRows[0].post,
-            rz_date:this.selectedRows[0].nInductionTime,
-          }
-          this.$emit('close',data)
-          this.handleCancel()
-       }
-          
-    }
-  },
-
-  computed: {}
-}
-</script>
-<style lang="less" scoped>
-/deep/ .ant-table-thead > tr > th {
-  text-align: center;
-  // font-weight: 700;
-}
-/deep/ .ant-table-tbody {
-  text-align: center;
-}
-// th.replacecolor {
-// background-color:  #ccc;
-// }
-// 对话框里的card样式
-/deep/ .ant-modal-content {
-  background-color: #f0f2f5;
-}
-/deep/ .ant-modal-body {
-  // padding: 10px;
-  margin:0 !important;
-  margin-left: 0px !important;
-}
-/deep/.ant-form-item{
-  margin-bottom: 0px !important;
-}
- /deep/.ant-modal{
-      top: 106px !important;
-    left: 10px !important;
-}
-</style>