lifanagju_citu 1 ماه پیش
والد
کامیت
30188ea8a2
2فایلهای تغییر یافته به همراه47 افزوده شده و 28 حذف شده
  1. 35 25
      components/positionItem/components/requirement.vue
  2. 12 3
      utils/position.js

+ 35 - 25
components/positionItem/components/requirement.vue

@@ -1,30 +1,30 @@
 <!--  -->
 <template>
 	<view class="f-straight wrapper">
-		<uni-forms ref="form" :modelValue="formData" :rules="rules" validateTrigger="bind" label-width="90px" label-align="right">
+		<uni-forms ref="form" :modelValue="formData" :rules="salaryDisabled ? rules : {...rules, ...salaryRules}" validateTrigger="bind" label-width="90px" label-align="right">
 			<uni-forms-item label="招聘类型" name="type" required>
 				<uni-data-picker popup-title="请选择招聘类型" v-model="formData.type" :localdata="jobType" :clear-icon="false" :map="{ text: 'key', value: 'value'}" @change="typeChange"></uni-data-picker>
 			</uni-forms-item>
 			<uni-forms-item label="学历要求" name="eduType" required>
-				<uni-data-picker popup-title="请选择学历要求" v-model="formData.eduType" :localdata="dictObj?.edu || []" :clear-icon="false" :map="{ text: 'label', value: 'value'}"></uni-data-picker>
+				<uni-data-picker popup-title="请选择学历要求" v-model="formData.eduType" :localdata="dictObj?.edu_extend || []" :clear-icon="false" :map="{ text: 'label', value: 'value'}"></uni-data-picker>
 			</uni-forms-item>
 			<uni-forms-item label="工作经验" name="expType" required>
-				<uni-data-picker popup-title="请选择工作经验" v-model="formData.expType" :localdata="dictObj?.exp || []" :clear-icon="false" :map="{ text: 'label', value: 'value'}"></uni-data-picker>
+				<uni-data-picker popup-title="请选择工作经验" v-model="formData.expType" :localdata="dictObj?.exp_extend || []" :clear-icon="false" :map="{ text: 'label', value: 'value'}"></uni-data-picker>
 			</uni-forms-item>
-      <uni-forms-item label="最低薪资" name="payFrom" :required="Boolean(!salary?.length)" label-width="90px">
+      <uni-forms-item label="最低薪资" name="payFrom" :required="!salaryDisabled" label-width="90px">
 				<view class="d-flex">
-          <uni-number-box v-model="formData.payFrom" :disabled="Boolean(salary?.length)" :min="1" :max="999999999" :step="salaryStep" :width="100" @change="payChange"></uni-number-box>
-          <uni-data-checkbox v-model="salary" multiple :localdata="[{ text: '薪资面议', value: 1 }]" selectedColor="#00B760" class="ss-m-l-20" ></uni-data-checkbox>
+          <uni-number-box v-model="formData.payFrom" :disabled="salaryDisabled" :min="1" :max="999999999" :step="salaryStep" :width="100" @change="payChange"></uni-number-box>
+          <uni-data-checkbox v-model="salary" multiple :localdata="[{ text: '薪资面议', value: 1 }]" selectedColor="#00B760" class="ss-m-l-20" @change="salaryCheckboxChange"></uni-data-checkbox>
         </view>
 			</uni-forms-item>
-      <uni-forms-item label="最高薪资" name="payTo" :required="Boolean(!salary?.length)" label-width="90px">
-        <uni-number-box v-model="formData.payTo" :disabled="Boolean(salary?.length)" :min="payToMin" :max="999999999" :step="salaryStep" :width="100"></uni-number-box>
+      <uni-forms-item label="最高薪资" name="payTo" :required="!salaryDisabled" label-width="90px">
+        <uni-number-box v-model="formData.payTo" :disabled="salaryDisabled" :min="payToMin" :max="999999999" :step="salaryStep" :width="100"></uni-number-box>
 			</uni-forms-item>
-			<uni-forms-item label="计薪时段" name="payUnit" :required="Boolean(!salary?.length)">
-				<uni-data-picker popup-title="请选择计薪时段" :placeholder="Boolean(salary?.length) ? '薪资面议' : '请选择'" v-model="formData.payUnit" :readonly="Boolean(salary?.length)" :localdata="dictObj?.payUnit || []" :clear-icon="false" :map="{ text: 'label', value: 'value'}"></uni-data-picker>
+			<uni-forms-item label="计薪时段" name="payUnit" :required="!salaryDisabled">
+				<uni-data-picker popup-title="请选择计薪时段" :placeholder="salaryDisabled ? '薪资面议' : '请选择'" v-model="formData.payUnit" :readonly="Boolean(salary?.length)" :localdata="dictObj?.payUnit || []" :clear-icon="false" :map="{ text: 'label', value: 'value'}"></uni-data-picker>
 			</uni-forms-item>
       <uni-forms-item label="工作城市" name="areaId" required label-width="90px">
-				<uni-data-picker popup-title="请选择工作城市" v-model="formData.areaId" :localdata="dictObj?.areaTreeData || []" :clear-icon="false" :map="{ text: 'name', value: 'id'}"></uni-data-picker>
+				<uni-data-picker popup-title="请选择工作城市" v-model="formData.areaId" :localdata="dictObj?.areaTreeData_extend || []" :clear-icon="false" :map="{ text: 'name', value: 'id'}"></uni-data-picker>
 			</uni-forms-item>
 			<uni-forms-item required label="详情地址" name="address">
         <uni-easyinput v-model="formData.address" placeholder="请填写详细地址"></uni-easyinput>
@@ -54,7 +54,7 @@
 	</view>
 </template>
 <script setup>
-import { ref, unref } from 'vue'
+import { ref, unref, computed } from 'vue'
 import { dictObj } from '@/utils/position.js'
 import { getEnterprisePubJobTypePermission } from '@/api/new/position'
 import portrait from './portrait.vue'
@@ -68,16 +68,24 @@ const props = defineProps({
 
 const formData = ref({
   type: props.data?.type || '',
-  eduType: props.data?.eduType || '',
-  expType: props.data?.expType || '',
+  eduType: props.data?.eduType ? props.data?.eduType : props.data ? -1 : '',
+  expType: props.data?.expType ? props.data?.expType : props.data ? -1 : '',
   payFrom: props.data?.payFrom || '',
   payTo: props.data?.payTo || '',
   payUnit: props.data?.payUnit || '',
-  areaId: props.data?.areaId || '',
+  areaId: props.data?.areaId ? props.data?.areaId : props.data ? -1 : '',
   address: props.data?.address || '',
 })
 const tagList = ref(props.data?.tagList?.length ? props.data.tagList : [])
 
+const salaryDisabled = computed(() => {
+  return Boolean(salary?.value.length)
+})
+
+const salaryCheckboxChange = (e) => {
+  // const bool = e.detail.value.length ? e.detail.value[0] : ''
+}
+
 const rules = {
 	type:{
 		rules: [{required: true, errorMessage: '请选择招聘类型' }]
@@ -88,7 +96,16 @@ const rules = {
 	expType:{
 		rules: [{required: true, errorMessage: '请选择工作经验' }]
 	},
-	payFrom:{
+	areaId:{
+		rules: [{required: true, errorMessage: '请选择工作城市' }]
+	},
+	address:{
+		rules: [{required: true, errorMessage: '请填写详细地址' }]
+	},
+}
+
+const salaryRules = {
+	payFrom: {
 		rules: [
       {
         required: true,
@@ -113,7 +130,7 @@ const rules = {
       }
     ]
 	},
-	payTo:{
+	payTo: {
 		rules: [
       {
         required: true,
@@ -140,13 +157,7 @@ const rules = {
 	},
 	payUnit: {
 		rules: [{required: true, errorMessage: '请选择计薪时段' }]
-	},
-	areaId:{
-		rules: [{required: true, errorMessage: '请选择工作城市' }]
-	},
-	address:{
-		rules: [{required: true, errorMessage: '请填写详细地址' }]
-	},
+	}
 }
 
 const jobType = ref([])
@@ -195,7 +206,6 @@ const getQuery = async () => {
     if (obj.salary && ['payFrom', 'payTo', 'payUnit'].includes(key)) obj[key] = null 
   })
 
-  console.log('岗位要求:', obj)
   return obj
 }
 

+ 12 - 3
utils/position.js

@@ -7,13 +7,16 @@ export const dictObj = reactive({
   scale: [], // 规模
   industry: [], // 行业
   edu: [], // 学历
+  edu_extend: [], // 扩展
   exp: [], // 工作经验
+  exp_extend: [], // 扩展
   area: [], // 地区
   jobStatus: [], // 求职状态
   marital: [], // 婚姻状态
   sex: [],
   jobType: [],
   areaTreeData: [],
+  areaTreeData_extend: [], // 扩展
   areaTreeDataExtend: [],
   positionSecondData: [],
   eduSystemType: []
@@ -42,11 +45,17 @@ const dictList = ref([
 const getDictList = async () => {
   dictList.value.forEach(async (val) => {
     const { data } = await getDict(val.type, val.params, val.apiType)
-    // if (val.type === 'menduner_pay_unit') {
-    //   debugger
-    // }
     dictObj[val.value] = data.data
+
+    // 字典扩展
+    let obj = null
+    if (['edu', 'exp'].indexOf(val.value) !== -1) obj = { label: '不限', value: -1 }
+    else if (['areaTreeData'].indexOf(val.value) !== -1) obj = { name: '全国', id: -1 }
+    else obj = null
+    // 
+    if (obj) dictObj[val.value + '_extend'] = [obj, ...data.data]
   })
+  // console.log('dictObj:', dictObj)
 }
 export const getDictListData = async () => {
   await getDictList()