yubo
2026-04-11 11ab4edc4f3c59643ffbd73ef2bf05bbb3e793aa
src/views/user/inemployees.vue
@@ -259,7 +259,7 @@
            show-overflow-tooltip
            prop="empNumb"
            label="编号"
            width="80"
            width="100"
            sortable="custom"
            :sort-orders="['ascending', 'descending']"
          />
@@ -364,7 +364,7 @@
          <el-form
            ref="empBaseInfoForm"
            :model="empBaseInfoForm"
            :rules="rules"
            :rules="isAdd ? addRules : rules"
            label-position="right"
            label-width="120px"
          >
@@ -1207,11 +1207,7 @@
      depts: [],
      fileList: [],
      rules: {
        archivesNumb: [{ required: true, message: '请输入档案号', trigger: 'blur' }, {
          max: 20,
          message: this.$t('rules.noMoreThan20'),
          trigger: 'blur'
        }],
        archivesNumb: [{ max: 20, message: this.$t('rules.noMoreThan20'), trigger: 'blur' }],
        empName: [{ required: true, message: '请输入姓名', trigger: 'blur' },
          { min: 2, max: 50, message: this.$t('rules.noMoreThan50'), trigger: 'blur' }],
        empNumb: [{ required: true, message: '请输入员工编号', trigger: 'blur' },
@@ -1247,6 +1243,14 @@
        family: [{ max: 128, message: '长度不超过128个字符', trigger: 'blur' }],
        certificateValidity: [{ required: true, message: '请选择身份证有效期', trigger: 'change' }],
        urgencyPhone: [{ max: 30, message: '长度不超过30个字符', trigger: 'blur' }]
      },
      // 新增模式的简化验证规则(仅验证核心字段)
      addRules: {
        empName: [{ required: true, message: '请输入姓名', trigger: 'blur' },
          { min: 2, max: 50, message: this.$t('rules.noMoreThan50'), trigger: 'blur' }],
        empNumb: [{ required: true, message: '请输入员工编号', trigger: 'blur' },
          { min: 2, max: 20, message: this.$t('rules.noMoreThan20'), trigger: 'blur' }],
        certificateNumb: [{ required: true, message: '请输入身份证号', trigger: 'blur' }]
      },
      gbdaRules: {
        dimissionType: [{ required: true, message: '请选择离职类型', trigger: 'change' }],
@@ -1345,31 +1349,81 @@
  },
  computed: {
    // 字典选项计算属性
    statusOptions() { return this.getDictOptions('PLITICAL') },
    empTypeOptions() { return this.getDictOptions('EMPTYPE') },
    nationOptions() { return this.getDictOptions('NATION') },
    marriageOptions() { return this.getDictOptions('MARRIAGE') },
    educationOptions() { return this.getDictOptions('EDUCATION') },
    nativePlaceOptions() { return this.getDictOptions('NATIVEPLACE') },
    archivesStatusOptions() { return this.getDictOptions('archivesStatus') },
    insuranceTypeOptions() { return this.getDictOptions('INSURANCETYPE') },
    empCardStatusOptions() { return this.getDictOptions('empCardStatus') },
    handbookStatusOptions() { return this.getDictOptions('handbookStatus') },
    certificateListOptions() { return this.getDictOptions('certificateList') },
    physicalExamTypeOptions() { return this.getDictOptions('PHYSICALEXAMTYPE') },
    ecgOptions() { return this.getDictOptions('ECG') },
    contractStatusOptions() { return this.getDictOptions('CONTRACTSTATUS') },
    leaveTypeOptions() { return this.getDictOptions('LEAVETYPE') },
    insuranceGaersOptions() { return this.getDictOptions('INSURANCETYPE') },
    applayStatusOptions() { return this.getDictOptions('applayStatus') },
    reportStatusOptions() { return this.getDictOptions('reportStatus') },
    hospitalizatioFlagOptions() { return this.getDictOptions('hospitalizatioFlag') },
    settleStatusOptions() { return this.getDictOptions('settleStatus') },
    arbitrationTypeOptions() { return this.getDictOptions('ZCTYPE') },
    changeTypeOptions() { return this.getDictOptions('changeType') },
    dimissionTypeOptions() { return this.getDictOptions('LZTYPE') },
    ageStrOptions() { return this.getDictOptions('ageStr') },
    sexOptions() { return this.getDictOptions('sex') }
    statusOptions() {
      return this.getDictOptions('PLITICAL')
    },
    empTypeOptions() {
      return this.getDictOptions('EMPTYPE')
    },
    nationOptions() {
      return this.getDictOptions('NATION')
    },
    marriageOptions() {
      return this.getDictOptions('MARRIAGE')
    },
    educationOptions() {
      return this.getDictOptions('EDUCATION')
    },
    nativePlaceOptions() {
      return this.getDictOptions('NATIVEPLACE')
    },
    archivesStatusOptions() {
      return this.getDictOptions('archivesStatus')
    },
    insuranceTypeOptions() {
      return this.getDictOptions('INSURANCETYPE')
    },
    empCardStatusOptions() {
      return this.getDictOptions('empCardStatus')
    },
    handbookStatusOptions() {
      return this.getDictOptions('handbookStatus')
    },
    certificateListOptions() {
      return this.getDictOptions('certificateList')
    },
    physicalExamTypeOptions() {
      return this.getDictOptions('PHYSICALEXAMTYPE')
    },
    ecgOptions() {
      return this.getDictOptions('ECG')
    },
    contractStatusOptions() {
      return this.getDictOptions('CONTRACTSTATUS')
    },
    leaveTypeOptions() {
      return this.getDictOptions('LEAVETYPE')
    },
    insuranceGaersOptions() {
      return this.getDictOptions('INSURANCETYPE')
    },
    applayStatusOptions() {
      return this.getDictOptions('applayStatus')
    },
    reportStatusOptions() {
      return this.getDictOptions('reportStatus')
    },
    hospitalizatioFlagOptions() {
      return this.getDictOptions('hospitalizatioFlag')
    },
    settleStatusOptions() {
      return this.getDictOptions('settleStatus')
    },
    arbitrationTypeOptions() {
      return this.getDictOptions('ZCTYPE')
    },
    changeTypeOptions() {
      return this.getDictOptions('changeType')
    },
    dimissionTypeOptions() {
      return this.getDictOptions('LZTYPE')
    },
    ageStrOptions() {
      return this.getDictOptions('ageStr')
    },
    sexOptions() {
      return this.getDictOptions('sex')
    }
  },
  mounted() {
    this.fetch()
@@ -1864,29 +1918,24 @@
      this.showXzyg(1)
    },
    putEmpBase(formName) {
      // 根据新增/编辑模式使用不同的验证规则
      const validateRules = this.isAdd ? this.addRules : this.rules
      this.$refs[formName].validate((valid) => {
        if (valid) {
          this.submitEmpInfo()
          this.fetch({
            ...this.queryParams,
            ...this.sort
          })
          this.cleanEmpBase()
          this.showXzyg()
          // 刷新、清空、关闭操作已移至 submitEmpInfo 的成功回调中
        }
      })
      }, validateRules)
    },
    putEmpBaseContinue(formName) {
      // 根据新增/编辑模式使用不同的验证规则
      const validateRules = this.isAdd ? this.addRules : this.rules
      this.$refs[formName].validate((valid) => {
        if (valid) {
          this.submitEmpInfo()
          this.cleanEmpBase()
          this.fetch({
            ...this.queryParams,
            ...this.sort
          })
          // 传入 true 表示保存并继续新增,不关闭对话框
          this.submitEmpInfo(true)
        }
      })
      }, validateRules)
    },
    delEmp() {
      var selection = this.$refs.multipleTable.store.states.selection
@@ -2297,9 +2346,25 @@
    getDateString() {
      return dateToString(new Date())
    },
    submitEmpInfo() {
    submitEmpInfo(continueAdd = false) {
      if (this.isAdd) {
        this.$post('hr/empBaseInfo/addInEmp', { ...this.empBaseInfoForm }).then((r) => {
          this.$message({
            message: this.$t('tips.addSuccess'),
            type: 'success'
          })
          // 刷新列表
          this.fetch({
            ...this.queryParams,
            ...this.sort
          })
          // 清空表单
          this.cleanEmpBase()
          // 如果不是继续新增,则关闭对话框
          if (!continueAdd) {
            this.showXzyg()
          }
          // 处理员工已存在的情况
          if (r.data != null) {
            if (r.data.data.empStatus === '0') {
              this.$confirm('该员工已存在,是否修改?', '提示', {
@@ -2348,12 +2413,6 @@
                  remark: ''
                }
                this.dialogShowDkda = true
                // this.$post('hr/empOpenArchives', { ...this.openArchivesForm }).then(() => {
                //   this.$message({
                //     message: this.$t('员工档案打开成功'),
                //     type: 'success'
                //   })
                // })
              })
            }
          }
@@ -2366,6 +2425,11 @@
          })
          this.$emit('success')
          this.cleanEmpBase()
          this.fetch({
            ...this.queryParams,
            ...this.sort
          })
          this.showXzyg()
        })
      }
    },