|
@@ -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>
|