ソースを参照

Merge branch 'dev' of https://git.citupro.com/zhengnaiwen_citu/menduner into dev

lifanagju_citu 6 ヶ月 前
コミット
462f3f5136

+ 87 - 45
src/views/recruit/enterprise/hirePosition/components/jobRequirements.vue

@@ -12,6 +12,20 @@
           </v-chip>
         </div>
       </template>
+      <template #salary>
+        <div>
+          <v-checkbox-btn
+            v-model="salary"
+            color="primary"
+            label="薪资面议"
+            class="ml-2"
+            :disabled="false"
+            style="width: 110px;"
+            hide-details
+            @update:modelValue="handleChangeSalary"
+          ></v-checkbox-btn>
+        </div>
+      </template>
     </CtForm>
   </div>
 
@@ -63,6 +77,41 @@ const props = defineProps({
   itemData: Object
 })
 
+// 薪酬
+const rules = {
+  payFrom: [
+    value => {
+      if (value) return true
+      return '请填写最低薪资'
+    },
+    value => {
+      if (value >= 1) return true
+      return '数额不得小于1'
+    },
+    value => {
+      const payTo = items.value.options.find(e => e.key === 'payTo').value
+      if (!payTo || (Number(value) < payTo ? Number(payTo) : 0)) return true
+      return '应低于最高薪资'
+    }
+  ],
+  payTo: [
+    value => {
+      if (value) return true
+      return '请填写最高薪资'
+    },
+    value => {
+      if (value >= 1) return true
+      return '数额不得小于1'
+    },
+    value => {
+      const payFrom = items.value.options.find(e => e.key === 'payFrom').value
+      if (!payFrom || (Number(value) > payFrom ? Number(payFrom) : 0)) return true
+      return '应高于最低薪资'
+    }
+  ],
+  payUnit: [v => !!v || '请选择计薪时段']
+}
+
 const formPageRef = ref()
 let query = reactive({})
 const items = ref({
@@ -75,7 +124,6 @@ const items = ref({
       itemText: 'key',
       itemValue: 'value',
       col: 4,
-      // dictTypeName: 'menduner_job_type',
       rules: [v => !!v || '招聘类型'],
       items: []
     },
@@ -108,61 +156,44 @@ const items = ref({
       type: 'number',
       key: 'payFrom',
       value: '',
-      col: 4,
+      col: 3,
+      disabled: false,
       label: '最低薪资 *',
+      defaultLabel: '最低薪资',
       suffix: '元',
-      rules: [
-        value => {
-          if (value) return true
-          return '请填写最低薪资'
-        },
-        value => {
-          if (value >= 1) return true
-          return '数额不得小于1'
-        },
-        value => {
-          const payTo = items.value.options.find(e => e.key === 'payTo').value
-          if (!payTo || (Number(value) < payTo ? Number(payTo) : 0)) return true
-          return '应低于最高薪资'
-        }
-      ]
+      rules: rules.payFrom
     },
     {
       type: 'number',
       key: 'payTo',
       value: '',
-      col: 4,
+      col: 3,
+      disabled: false,
       label: '最高薪资 *',
+      defaultLabel: '最高薪资',
       flexStyle: 'mx-3',
       suffix: '元',
-      rules: [
-        value => {
-          if (value) return true
-          return '请填写最高薪资'
-        },
-        value => {
-          if (value >= 1) return true
-          return '数额不得小于1'
-        },
-        value => {
-          const payFrom = items.value.options.find(e => e.key === 'payFrom').value
-          if (!payFrom || (Number(value) > payFrom ? Number(payFrom) : 0)) return true
-          return '应高于最低薪资'
-        }
-      ]
+      rules: rules.payTo
     },
     {
       type: 'autocomplete',
       key: 'payUnit',
       value: null,
+      disabled: false,
       label: '计薪时段 *',
+      defaultLabel: '计薪时段',
       itemText: 'label',
       itemValue: 'value',
-      col: 4,
+      col: 3,
       dictTypeName: 'menduner_pay_unit',
-      rules: [v => !!v || '请选择计薪时段'],
+      rules: rules.payUnit,
       items: []
     },
+    {
+      slotName: 'salary',
+      col: 3,
+      noParam: true
+    },
     {
       type: 'cascade',
       key: 'areaId',
@@ -190,6 +221,23 @@ const items = ref({
   ]
 })
 
+const getItem = (key) => {
+  return items.value.options.find(e => e.key === key)
+}
+
+// 薪资面议
+const salary = ref(false)
+const arr = ['payFrom', 'payTo', 'payUnit']
+const handleChangeSalary = (bool) => {
+  arr.forEach(e => {
+    const obj = getItem(e)
+    obj.disabled = bool ? true : false
+    obj.value = bool ? null : obj.value
+    obj.label = bool ? obj.defaultLabel :  `${obj.defaultLabel} *`
+    obj.rules = bool ? [] : rules[e]
+  })
+}
+
 const getJobTypeList = async () => {
   const data = await getEnterprisePubJobTypePermission()
   if (!data || !data.length) return
@@ -249,16 +297,15 @@ watch(
     if (!Object.keys(val).length) return
     // 编辑
     items.value.options.forEach(e => {
-      if (e.labelKey) {
-        query[e.key] = val[e.key]
-        e.value = val[e.labelKey]
-        return
-      }
       if (e.noParam) return
       e.value = val[e.key]
       if (e.key === 'tagList' && val[e.key] && val[e.key].length) {
         tag.value = val[e.key] && val[e.key].length ? val[e.key] : []
       }
+      if (!val.payFrom && !val.payTo) {
+        salary.value = true
+        handleChangeSalary(salary.value)
+      }
     })
   },
   { immediate: true },
@@ -295,9 +342,4 @@ defineExpose({
 </script>
 
 <style scoped lang="scss">
-.jobTypeCardBox {
-  position: absolute;
-  top: -22px;
-  left: 0;
-}
 </style>

+ 1 - 10
src/views/recruit/enterprise/positionManagement/components/item.vue

@@ -36,14 +36,6 @@
             <span>{{ val.positionName }}</span>
           </div>
         </div>
-        <!-- <div class="d-flex align-center">
-          <v-btn v-if="tab === 1" class="ml-3" color="primary" @click="handleAction(2, '', val)">
-            <span>{{ $t('common.refresh') + $t('common.position') }}</span>
-            <v-icon class="ml-2">mdi-help-circle-outline</v-icon>
-            <v-tooltip activator="parent" location="top">刷新职位后,发布时间为最新的</v-tooltip>
-          </v-btn>
-          <v-btn v-if="tab === 2" color="primary" @click="handleAction(1, '', val)">{{ $t('common.activatePosition') }}</v-btn>
-        </div> -->
       </div>
       <div class="bottom pa-5 d-flex justify-space-between align-center">
         <div>
@@ -63,7 +55,7 @@
             </div>
             <div v-if="tab === 1" class="cursor-pointer actions" @click="handleEdit(val)">{{ $t('common.edit') }}</div>
             <div v-if="tab === 3" class="cursor-pointer actions" @click="handleUpdateExpireTime(val)">修改到期时间</div>
-            <span class="lines"></span>
+            <span class="lines" v-if="tab !== 2"></span>
             <span class="cursor-pointer actions" @click="handleDetail(val)">详情</span>  
           </div>
         </div>
@@ -217,7 +209,6 @@ const handleEdit = async (val) => {
 const handleDetail = async (val) => {
   if (!val.id) return
   window.open(`/recruit/enterprise/position/details?id=${val.id}`)
-  // window.open(`/recruit/personal/position/details/${val.id}`)
 }
 </script>
 

+ 87 - 46
src/views/recruit/enterprise/positionManagement/components/jobRequirements.vue

@@ -12,6 +12,20 @@
           </v-chip>
         </div>
       </template>
+      <template #salary>
+        <div>
+          <v-checkbox-btn
+            v-model="salary"
+            color="primary"
+            label="薪资面议"
+            class="ml-2"
+            :disabled="false"
+            style="width: 110px;"
+            hide-details
+            @update:modelValue="handleChangeSalary"
+          ></v-checkbox-btn>
+        </div>
+      </template>
     </CtForm>
   </div>
 
@@ -63,6 +77,41 @@ const props = defineProps({
   itemData: Object
 })
 
+// 薪酬
+const rules = {
+  payFrom: [
+    value => {
+      if (value) return true
+      return '请填写最低薪资'
+    },
+    value => {
+      if (value >= 1) return true
+      return '数额不得小于1'
+    },
+    value => {
+      const payTo = items.value.options.find(e => e.key === 'payTo').value
+      if (!payTo || (Number(value) < payTo ? Number(payTo) : 0)) return true
+      return '应低于最高薪资'
+    }
+  ],
+  payTo: [
+    value => {
+      if (value) return true
+      return '请填写最高薪资'
+    },
+    value => {
+      if (value >= 1) return true
+      return '数额不得小于1'
+    },
+    value => {
+      const payFrom = items.value.options.find(e => e.key === 'payFrom').value
+      if (!payFrom || (Number(value) > payFrom ? Number(payFrom) : 0)) return true
+      return '应高于最低薪资'
+    }
+  ],
+  payUnit: [v => !!v || '请选择计薪时段'],
+}
+
 const formPageRef = ref()
 let query = reactive({})
 const items = ref({
@@ -75,7 +124,6 @@ const items = ref({
       itemText: 'key',
       itemValue: 'value',
       col: 4,
-      // dictTypeName: 'menduner_job_type',
       rules: [v => !!v || '招聘类型'],
       items: []
     },
@@ -108,61 +156,44 @@ const items = ref({
       type: 'number',
       key: 'payFrom',
       value: '',
-      col: 4,
+      col: 3,
       label: '最低薪资 *',
+      defaultLabel: '最低薪资',
+      disabled: false,
       suffix: '元',
-      rules: [
-        value => {
-          if (value) return true
-          return '请填写最低薪资'
-        },
-        value => {
-          if (value >= 1) return true
-          return '数额不得小于1'
-        },
-        value => {
-          const payTo = items.value.options.find(e => e.key === 'payTo').value
-          if (!payTo || (Number(value) < payTo ? Number(payTo) : 0)) return true
-          return '应低于最高薪资'
-        }
-      ]
+      rules: rules.payFrom
     },
     {
       type: 'number',
       key: 'payTo',
       value: '',
-      col: 4,
+      col: 3,
       label: '最高薪资 *',
+      defaultLabel: '最高薪资',
       flexStyle: 'mx-3',
+      disabled: false,
       suffix: '元',
-      rules: [
-        value => {
-          if (value) return true
-          return '请填写最高薪资'
-        },
-        value => {
-          if (value >= 1) return true
-          return '数额不得小于1'
-        },
-        value => {
-          const payFrom = items.value.options.find(e => e.key === 'payFrom').value
-          if (!payFrom || (Number(value) > payFrom ? Number(payFrom) : 0)) return true
-          return '应高于最低薪资'
-        }
-      ]
+      rules: rules.payTo
     },
     {
       type: 'autocomplete',
       key: 'payUnit',
       value: null,
       label: '计薪时段 *',
+      defaultLabel: '计薪时段',
       itemText: 'label',
       itemValue: 'value',
-      col: 4,
+      disabled: false,
+      col: 3,
       dictTypeName: 'menduner_pay_unit',
-      rules: [v => !!v || '请选择计薪时段'],
+      rules: rules.payUnit,
       items: []
     },
+    {
+      slotName: 'salary',
+      col: 3,
+      noParam: true
+    },
     {
       type: 'cascade',
       key: 'areaId',
@@ -190,12 +221,28 @@ const items = ref({
   ]
 })
 
+const getItem = (key) => {
+  return items.value.options.find(e => e.key === key)
+}
+
+// 薪资面议
+const salary = ref(false)
+const arr = ['payFrom', 'payTo', 'payUnit']
+const handleChangeSalary = (bool) => {
+  arr.forEach(e => {
+    const obj = getItem(e)
+    obj.disabled = bool ? true : false
+    obj.value = bool ? null : obj.value
+    obj.label = bool ? obj.defaultLabel :  `${obj.defaultLabel} *`
+    obj.rules = bool ? [] : rules[e]
+  })
+}
+
 const getJobTypeList = async () => {
   const data = await getEnterprisePubJobTypePermission()
   if (!data || !data.length) return
   const jobTypeItem = items.value.options.find(e => e.key === 'type')
   if (jobTypeItem) jobTypeItem.items = data
-  //  Snackbar.warning('没有该操作权限,请联系平台管理员升级后再试')
 }
 getJobTypeList()
 
@@ -249,16 +296,15 @@ watch(
     if (!Object.keys(val).length) return
     // 编辑
     items.value.options.forEach(e => {
-      if (e.labelKey) {
-        query[e.key] = val[e.key]
-        e.value = val[e.labelKey]
-        return
-      }
       if (e.noParam) return
       e.value = val[e.key]
       if (e.key === 'tagList' && val[e.key] && val[e.key].length) {
         tag.value = val[e.key] && val[e.key].length ? val[e.key] : []
       }
+      if (!val.payFrom && !val.payTo) {
+        salary.value = true
+        handleChangeSalary(salary.value)
+      }
     })
   },
   { immediate: true },
@@ -295,9 +341,4 @@ defineExpose({
 </script>
 
 <style scoped lang="scss">
-.jobTypeCardBox {
-  position: absolute;
-  top: -22px;
-  left: 0;
-}
 </style>