jiangping
2024-06-20 49c7ea314c2070a2090fee2c77acbd21435f0455
company/src/components/enterprise/factoryChange.vue
@@ -166,357 +166,365 @@
        <!--    详单    -->
        <ApplyChangeUnitDetails1 ref="ApplyChangeUnitDetails1" @success="success" />
        <!-- 更新派遣单位详情 -->
        <OperaApplyChangeUnitDetailWindow ref="OperaApplyChangeUnitDetailWindow" />
<!--        <OperaApplyChangeUnitDetailWindow ref="OperaApplyChangeUnitDetailWindow" />-->
    </GlobalWindow>
</template>
<script>
    import BaseOpera from '@/components/base/BaseOpera'
    import GlobalWindow from '@/components/common/GlobalWindow'
    import selectEmployees from '@/components/enterprise/selectEmployees'
    import addEmployee from '@/components/enterprise/addEmployee'
    import importEmployees from '@/components/enterprise/importEmployees'
    import confirmJobType from '@/components/enterprise/confirmJobType'
    import ApplyChangeUnitDetails1 from '@/components/business/ApplyChangeUnitDetails1'
    import OperaApplyChangeUnitDetailWindow from '@/components/business/OperaApplyChangeUnitDetailWindow'
    import { all } from '@/api/business/solutions'
    import { getDetail, findList } from '@/api/business/insuranceApply'
    import { create } from '@/api/business/applyChange'
    import { getDate, compareDates, getTomorrow } from '@/utils/util'
    export default {
        name: 'factoryChange',
        extends: BaseOpera,
        components: { GlobalWindow, OperaApplyChangeUnitDetailWindow, selectEmployees, addEmployee, importEmployees, confirmJobType, ApplyChangeUnitDetails1 },
        data () {
            return {
                form: {
                    id: null,
                    solutionId: '',
                    solutionsName: '',
                    applyStartTime: '',
                    applyEndTime: '',
                    factory: []
                },
                newVersionSolutionId: '',
                pickerOptions: {},
                price: '',
                endTime: '',    //    实际保险生效止期
                company: [],
                seleData: [],
                item: null,
                // 验证规则
                rules: {
                    applyStartTime: [
                        { required: true, message: '请选择批单生效起期' }
                    ]
                },
                list: []
            }
        },
        created () {
            this.config({
                api: '/business/insuranceApply',
                'field.id': 'id'
            })
        },
        methods: {
            open (title, target) {
                this.title = title
                this.form.addDetailList = []
                this.form.delDetailList = []
                this.list = []
                this.form.factory = []
                this.form.id = null
                this.item = null
                this.form.solutionId = ''
                this.form.solutionsName = ''
                this.form.applyStartTime = ''
                this.form.applyEndTime = ''
                if (target && target.id) {
                    this.$nextTick(() => {
                        this.$refs.form.resetFields()
                        this.form.id = target.id
                        this.getDetails()
                    })
                } else {
                    this.$nextTick(() => {
                        this.$refs.form.resetFields()
                        this.form[this.configData['field.id']] = null
                    })
                }
                this.getCompany()
                this.visible = true
                // this.updatePickerOptions()
            },
            success() {
                this.form.factory.forEach(item => {
                    item.idcardNo = item.idCard
                })
                this.isWorking = true
                create({
                    applyId: this.form.id,
                    changeDetailList: this.form.factory,
                    validTime: this.form.applyStartTime,
                    type: 1
                }).then(res => {
                    this.visible = false
                    this.$refs.OperaApplyChangeUnitDetailWindow.open('更换派遣单位详情', { applyId: this.form.id, id: res })
                    this.$tip.apiSuccess('操作成功')
                    // this.$emit('success')
                }).catch(e => {
                    this.$tip.apiFailed(e)
                }).finally(() => {
                    this.isWorking = false
                })
            },
            // 获取投保详情
            getDetails() {
                findList({ applyId: this.form.id })
                    .then(res => {
                        res.forEach(item => {
                            item.idCard = item.idcardNo
                            item.fee = ''
                        })
                        res.forEach(item => {
                            item.oldDuId = item.duId
                            item.oldDuName = item.duName
                            item.oldWorkTypeName = item.workTypeName
                            item.oldWorktypeId = item.worktypeId
                            item.workTypeName = ''
                            item.worktypeId = ''
                            item.duId = ''
                            item.duName = ''
                        })
                        // this.form.factory = res
                    })
                getDetail(this.form.id)
                    .then(res => {
                        console.log(res)
                        this.list.push(res)
                        this.endTime = res.endTime
                        this.form.solutionId = res.solutionId
                        this.newVersionSolutionId = res.newVersionSolutionId
                        this.form.solutionsName = res.solutionsName
                        this.pickerOptions = {
                            disabledDate(time) {
                                // 当前日期大于等于生效日期并且最后一次操作时间等于空
                                if ([1,3].includes(compareDates(getDate(), res.startTime)) && !res.lastChangeDate) {
                                    return time.getTime() > new Date(res.endTime).getTime() || time.getTime() < new Date(getTomorrow()).getTime()
                                    // 当前日期小于生效日期并且最后一次操作时间等于空
                                } else if (compareDates(getDate(), res.startTime) === 2 && !res.lastChangeDate) {
                                    return time.getTime() > new Date(res.endTime).getTime() || time.getTime() < new Date(res.startTime).getTime()
                                    // 最后一次操作时间有值
                                } else if (res.lastChangeDate) {
                                    // 当前日期大于最后一次操作时间
                                    if ([1,3].includes(compareDates(getDate(), res.lastChangeDate))) {
                                        return time.getTime() > new Date(res.endTime).getTime() || time.getTime() < new Date(getTomorrow()).getTime()
                                        // 当前时间小于最后一次操作时间
                                    } else if (compareDates(getDate(), res.lastChangeDate) === 2) {
                                        return time.getTime() > new Date(res.endTime).getTime() || time.getTime() < new Date(res.lastChangeDate).getTime()
                                    }
                                }
                            }
                        };
                        this.changeSolution1(res.solutionId)
                    })
            },
            deleItem() {
                if (this.seleData.length === 0) {
                    this.$message.warning('至少选择一项内容')
                    return
                }
                this.seleData.forEach(item => {
                    this.form.factory.forEach((row, index) => {
                        if (item === row.memberName) {
                            this.form.factory.splice(index, 1)
                        }
                    })
                })
            },
            confirm() {
                this.$refs.form.validate((valid) => {
                    if (valid) {
                        // if (this.form.addDetailList.length === 0) {
                        //     this.$message.warning('至少添加一项员工')
                        //     return
                        // }
                        for (let i = 0; i < this.form.factory.length; i++) {
                            if (!this.form.factory[i].worktypeId || !this.form.factory[i].duId) {
                                this.$message.warning('请完善派遣单位和工种信息')
                                return
                            }
                        }
                        this.$refs.ApplyChangeUnitDetails1.open('更换派遣单位详单', this.form.factory, {...this.list[0], applyStartTime: this.form.applyStartTime})
                        // this.form.factory.forEach(item => {
                        //     item.idcardNo = item.idCard
                        // })
                        // let arr = JSON.parse(JSON.stringify(this.form.factory))
                        // arr.forEach(item => {
                        //     item.idcardNo = item.idCard
                        // })
                        // this.isWorking = true
                        // create({
                        //     applyId: this.form.id,
                        //     changeDetailList: this.form.factory,
                        //     validTime: this.form.applyStartTime,
                        //     type: 1
                        // }).then(() => {
                        //     this.visible = false
                        //     this.$tip.apiSuccess('操作成功')
                        //     this.$emit('success')
                        // }).catch(e => {
                        //     this.$tip.apiFailed(e)
                        // }).finally(() => {
                        //     this.isWorking = false
                        // })
                    }
                })
            },
            seleUser() {
                if (!this.form.solutionId) {
                    this.$message.warning('请先选择保险方案')
                    return
                }
                if (!this.form.applyStartTime) {
                    this.$message.warning('请先选择批单生效起期')
                    return
                }
                this.$refs.selectEmployees.open('选取员工', { arr: this.form.delDetailList, price: this.price, insuranceApplyId: this.form.id, validTime: this.form.applyStartTime })
            },
            addUser() {
                if (!this.form.solutionId) {
                    this.$message.warning('请先选择保险方案')
                    return
                }
                this.$refs.addEmployee.open('添加员工', { arr: this.form.factory, price: this.price })
            },
            uploadUser() {
                if (!this.form.solutionId) {
                    this.$message.warning('请先选择保险方案')
                    return
                }
                this.$refs.importEmployees.open('上传名单', { arr: this.form.factory, price: this.price })
            },
            // 切换方案
            changeSolution1(e) {
                this.company.forEach(item => {
                    if (item.id === e) {
                        this.item = item
                    }
                })
                // this.tableData.forEach(item => {
                //     item.fee = this.price
                // })
            },
            dele(index) {
                this.form.factory.splice(index, 1)
            },
            getUser(obj) {
                console.log(obj)
                this.seleData.forEach(item => {
                    this.form.factory.forEach(row => {
                        if (item === row.memberName) {
                            row.workTypeName = obj.workTypeName
                            row.worktypeId = obj.worktypeId
                            row.duName = obj.duName
                            row.duId = obj.duId
                        }
                    })
                })
                this.seleData = []
                this.$refs.multipleTable.clearSelection();
            },
            // 选择员工
            sele() {
                if (!this.form.solutionId) {
                    this.$message.warning('请选择保险方案')
                    return
                }
                if (this.seleData.length === 0) {
                    this.$message.warning('请选择员工')
                    return
                }
                this.$refs.confirmJobType.open('确认工种', { solutionId: this.newVersionSolutionId })
            },
            // 查询全部方案
            getCompany() {
                all({})
                    .then(res => {
                        this.company = res
                    })
            },
            getAgeByIdCard(idCard){
                const sexAndAge = {}
                //获取用户身份证号码
                const userCard = idCard
                //如果用户身份证号码为undefined则返回空
                if (!userCard) {
                    return sexAndAge
                }
                // 获取出生日期
                const yearBirth = userCard.substring(6, 10)
                const monthBirth = userCard.substring(10, 12)
                const dayBirth = userCard.substring(12, 14)
                // 获取当前年月日并计算年龄
                const myDate = new Date()
                const monthNow = myDate.getMonth() + 1
                const dayNow = myDate.getDate()
                let age = myDate.getFullYear() - yearBirth
                if (monthNow < monthBirth || (monthNow == monthBirth && dayNow < dayBirth)) {
                    age--
                }
                // 得到年龄
                sexAndAge.age = age
                return sexAndAge.age
            },
            handleSelectionChange (e) {
                this.seleData = e.map(item => item.memberName)
            },
            // 选取员工
            getValue1 (list) {
                let arr = JSON.parse(JSON.stringify(list))
                arr.forEach(item => {
                    item.oldDuId = item.duId
                    item.oldDuName = item.duName
                    item.oldWorkTypeName = item.workTypeName
                    item.oldWorktypeId = item.worktypeId
                    item.duId = ''
                    item.duName = ''
                    item.workTypeName = ''
                    item.worktypeId = ''
                })
                for (let a = 0; a < arr.length; a++) {
                    for (let b = 0; b < this.form.factory.length; b++) {
                        if (arr[a].id === this.form.factory[b].id) {
                            this.$message.warning(`${arr[a].companyName}员工重复!`)
                            return
                        }
                    }
                }
                this.form.factory.push(...arr)
            },
            getValue(list) {
                let arr = JSON.parse(JSON.stringify(list))
                arr.forEach(item => {
                    item.oldDuId = item.duId
                    item.oldDuName = item.duName
                    item.oldWorkTypeName = item.workTypeName
                    item.oldWorktypeId = item.worktypeId
                    item.duId = ''
                    item.duName = ''
                    item.workTypeName = ''
                    item.worktypeId = ''
                })
                this.form.factory.push(...arr)
            }
        }
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import selectEmployees from '@/components/enterprise/selectEmployees'
import addEmployee from '@/components/enterprise/addEmployee'
import importEmployees from '@/components/enterprise/importEmployees'
import confirmJobType from '@/components/enterprise/confirmJobType'
import ApplyChangeUnitDetails1 from '@/components/business/ApplyChangeUnitDetails1'
// import OperaApplyChangeUnitDetailWindow from '@/components/business/OperaApplyChangeUnitDetailWindow'
import { all } from '@/api/business/solutions'
import { getDetail, findList } from '@/api/business/insuranceApply'
import { create } from '@/api/business/applyChange'
import { getDate, compareDates, getTomorrow } from '@/utils/util'
export default {
  name: 'factoryChange',
  extends: BaseOpera,
  components: {
    GlobalWindow,
    // OperaApplyChangeUnitDetailWindow,
    selectEmployees,
    addEmployee,
    importEmployees,
    confirmJobType,
    ApplyChangeUnitDetails1
  },
  data () {
    return {
      form: {
        id: null,
        solutionId: '',
        solutionsName: '',
        applyStartTime: '',
        applyEndTime: '',
        factory: []
      },
      newVersionSolutionId: '',
      pickerOptions: {},
      price: '',
      endTime: '', //    实际保险生效止期
      company: [],
      seleData: [],
      item: null,
      // 验证规则
      rules: {
        applyStartTime: [
          { required: true, message: '请选择批单生效起期' }
        ]
      },
      list: []
    }
  },
  created () {
    this.config({
      api: '/business/insuranceApply',
      'field.id': 'id'
    })
  },
  methods: {
    open (title, target) {
      this.title = title
      this.form.addDetailList = []
      this.form.delDetailList = []
      this.list = []
      this.form.factory = []
      this.form.id = null
      this.item = null
      this.form.solutionId = ''
      this.form.solutionsName = ''
      this.form.applyStartTime = ''
      this.form.applyEndTime = ''
      if (target && target.id) {
        this.$nextTick(() => {
          this.$refs.form.resetFields()
          this.form.id = target.id
          this.getDetails()
        })
      } else {
        this.$nextTick(() => {
          this.$refs.form.resetFields()
          this.form[this.configData['field.id']] = null
        })
      }
      this.getCompany()
      this.visible = true
      // this.updatePickerOptions()
    },
    success () {
      this.form.factory.forEach(item => {
        item.idcardNo = item.idCard
      })
      this.isWorking = true
      create({
        applyId: this.form.id,
        changeDetailList: this.form.factory,
        validTime: this.form.applyStartTime,
        type: 1
      }).then(res => {
        this.visible = false
        // this.$refs.OperaApplyChangeUnitDetailWindow.open('更换派遣单位详情', { applyId: this.form.id, id: res })
        this.$tip.apiSuccess('操作成功')
        this.$emit('success',{ applyId: this.form.id, id: res })
      }).catch(e => {
        this.$tip.apiFailed(e)
      }).finally(() => {
        this.isWorking = false
      })
    },
    // 获取投保详情
    getDetails () {
      findList({ applyId: this.form.id })
        .then(res => {
          res.forEach(item => {
            item.idCard = item.idcardNo
            item.fee = ''
          })
          res.forEach(item => {
            item.oldDuId = item.duId
            item.oldDuName = item.duName
            item.oldWorkTypeName = item.workTypeName
            item.oldWorktypeId = item.worktypeId
            item.workTypeName = ''
            item.worktypeId = ''
            item.duId = ''
            item.duName = ''
          })
          // this.form.factory = res
        })
      getDetail(this.form.id)
        .then(res => {
          console.log(res)
          this.list.push(res)
          this.endTime = res.endTime
          this.form.solutionId = res.solutionId
          this.newVersionSolutionId = res.newVersionSolutionId
          this.form.solutionsName = res.solutionsName
          this.pickerOptions = {
            disabledDate (time) {
              // 当前日期大于等于生效日期并且最后一次操作时间等于空
              if ([1, 3].includes(compareDates(getDate(), res.startTime)) && !res.lastChangeDate) {
                return time.getTime() > new Date(res.endTime).getTime() || time.getTime() < new Date(getTomorrow()).getTime()
                // 当前日期小于生效日期并且最后一次操作时间等于空
              } else if (compareDates(getDate(), res.startTime) === 2 && !res.lastChangeDate) {
                return time.getTime() > new Date(res.endTime).getTime() || time.getTime() < new Date(res.startTime).getTime()
                // 最后一次操作时间有值
              } else if (res.lastChangeDate) {
                // 当前日期大于最后一次操作时间
                if ([1, 3].includes(compareDates(getDate(), res.lastChangeDate))) {
                  return time.getTime() > new Date(res.endTime).getTime() || time.getTime() < new Date(getTomorrow()).getTime()
                  // 当前时间小于最后一次操作时间
                } else if (compareDates(getDate(), res.lastChangeDate) === 2) {
                  return time.getTime() > new Date(res.endTime).getTime() || time.getTime() < new Date(res.lastChangeDate).getTime()
                }
              }
            }
          }
          this.changeSolution1(res.solutionId)
        })
    },
    deleItem () {
      if (this.seleData.length === 0) {
        this.$message.warning('至少选择一项内容')
        return
      }
      this.seleData.forEach(item => {
        this.form.factory.forEach((row, index) => {
          if (item === row.memberName) {
            this.form.factory.splice(index, 1)
          }
        })
      })
    },
    confirm () {
      this.$refs.form.validate((valid) => {
        if (valid) {
          // if (this.form.addDetailList.length === 0) {
          //     this.$message.warning('至少添加一项员工')
          //     return
          // }
          for (let i = 0; i < this.form.factory.length; i++) {
            if (!this.form.factory[i].worktypeId || !this.form.factory[i].duId) {
              this.$message.warning('请完善派遣单位和工种信息')
              return
            }
          }
          this.$refs.ApplyChangeUnitDetails1.open('更换派遣单位详单', this.form.factory, { ...this.list[0], applyStartTime: this.form.applyStartTime })
          // this.form.factory.forEach(item => {
          //     item.idcardNo = item.idCard
          // })
          // let arr = JSON.parse(JSON.stringify(this.form.factory))
          // arr.forEach(item => {
          //     item.idcardNo = item.idCard
          // })
          // this.isWorking = true
          // create({
          //     applyId: this.form.id,
          //     changeDetailList: this.form.factory,
          //     validTime: this.form.applyStartTime,
          //     type: 1
          // }).then(() => {
          //     this.visible = false
          //     this.$tip.apiSuccess('操作成功')
          //     this.$emit('success')
          // }).catch(e => {
          //     this.$tip.apiFailed(e)
          // }).finally(() => {
          //     this.isWorking = false
          // })
        }
      })
    },
    seleUser () {
      if (!this.form.solutionId) {
        this.$message.warning('请先选择保险方案')
        return
      }
      if (!this.form.applyStartTime) {
        this.$message.warning('请先选择批单生效起期')
        return
      }
      this.$refs.selectEmployees.open('选取员工', { arr: this.form.delDetailList, price: this.price, insuranceApplyId: this.form.id, validTime: this.form.applyStartTime })
    },
    addUser () {
      if (!this.form.solutionId) {
        this.$message.warning('请先选择保险方案')
        return
      }
      this.$refs.addEmployee.open('添加员工', { arr: this.form.factory, price: this.price })
    },
    uploadUser () {
      if (!this.form.solutionId) {
        this.$message.warning('请先选择保险方案')
        return
      }
      this.$refs.importEmployees.open('上传名单', { arr: this.form.factory, price: this.price })
    },
    // 切换方案
    changeSolution1 (e) {
      this.company.forEach(item => {
        if (item.id === e) {
          this.item = item
        }
      })
      // this.tableData.forEach(item => {
      //     item.fee = this.price
      // })
    },
    dele (index) {
      this.form.factory.splice(index, 1)
    },
    getUser (obj) {
      console.log(obj)
      this.seleData.forEach(item => {
        this.form.factory.forEach(row => {
          if (item === row.memberName) {
            row.workTypeName = obj.workTypeName
            row.worktypeId = obj.worktypeId
            row.duName = obj.duName
            row.duId = obj.duId
          }
        })
      })
      this.seleData = []
      this.$refs.multipleTable.clearSelection()
    },
    // 选择员工
    sele () {
      if (!this.form.solutionId) {
        this.$message.warning('请选择保险方案')
        return
      }
      if (this.seleData.length === 0) {
        this.$message.warning('请选择员工')
        return
      }
      this.$refs.confirmJobType.open('确认工种', { solutionId: this.newVersionSolutionId })
    },
    // 查询全部方案
    getCompany () {
      all({})
        .then(res => {
          this.company = res
        })
    },
    getAgeByIdCard (idCard) {
      const sexAndAge = {}
      // 获取用户身份证号码
      const userCard = idCard
      // 如果用户身份证号码为undefined则返回空
      if (!userCard) {
        return sexAndAge
      }
      // 获取出生日期
      const yearBirth = userCard.substring(6, 10)
      const monthBirth = userCard.substring(10, 12)
      const dayBirth = userCard.substring(12, 14)
      // 获取当前年月日并计算年龄
      const myDate = new Date()
      const monthNow = myDate.getMonth() + 1
      const dayNow = myDate.getDate()
      let age = myDate.getFullYear() - yearBirth
      if (monthNow < monthBirth || (monthNow == monthBirth && dayNow < dayBirth)) {
        age--
      }
      // 得到年龄
      sexAndAge.age = age
      return sexAndAge.age
    },
    handleSelectionChange (e) {
      this.seleData = e.map(item => item.memberName)
    },
    // 选取员工
    getValue1 (list) {
      const arr = JSON.parse(JSON.stringify(list))
      arr.forEach(item => {
        item.oldDuId = item.duId
        item.oldDuName = item.duName
        item.oldWorkTypeName = item.workTypeName
        item.oldWorktypeId = item.worktypeId
        item.duId = ''
        item.duName = ''
        item.workTypeName = ''
        item.worktypeId = ''
      })
      for (let a = 0; a < arr.length; a++) {
        for (let b = 0; b < this.form.factory.length; b++) {
          if (arr[a].id === this.form.factory[b].id) {
            this.$message.warning(`${arr[a].companyName}员工重复!`)
            return
          }
        }
      }
      this.form.factory.push(...arr)
    },
    getValue (list) {
      const arr = JSON.parse(JSON.stringify(list))
      arr.forEach(item => {
        item.oldDuId = item.duId
        item.oldDuName = item.duName
        item.oldWorkTypeName = item.workTypeName
        item.oldWorktypeId = item.worktypeId
        item.duId = ''
        item.duName = ''
        item.workTypeName = ''
        item.worktypeId = ''
      })
      this.form.factory.push(...arr)
    }
  }
}
</script>
<style lang="scss" scoped>