|  | @@ -1,8 +1,6 @@
 | 
	
		
			
				|  |  |  <template>
 | 
	
		
			
				|  |  |    <div class="px-5 pt-1 py-15" style="position: relative;">
 | 
	
		
			
				|  |  | -    <h3 class="my-3" style="color: var(--v-primary-base);">条件筛选</h3>
 | 
	
		
			
				|  |  | -    <!-- <v-divider class="my-3"></v-divider>
 | 
	
		
			
				|  |  | -    <div class="text-right reset-text cursor-pointer" @click="handleReset">重置筛选</div> -->
 | 
	
		
			
				|  |  | +    <h3 class="my-3 color-primary">条件筛选</h3>
 | 
	
		
			
				|  |  |      <CtForm ref="CtFormRef" :items="formItems" style="width: 100%;">
 | 
	
		
			
				|  |  |        <!-- 期望岗位 -->
 | 
	
		
			
				|  |  |        <template #positionId="{ item }">
 | 
	
	
		
			
				|  | @@ -35,13 +33,14 @@
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  <script setup>
 | 
	
		
			
				|  |  |  defineOptions({ name: 'talent-pool-filter'})
 | 
	
		
			
				|  |  | -import { getRocketLabelList } from '@/api/recruit/enterprise/resumeManagement/talentMap'
 | 
	
		
			
				|  |  | +// import { getRocketLabelList } from '@/api/recruit/enterprise/resumeManagement/talentMap'
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import jobTypeCard from '@/components/jobTypeCard'
 | 
	
		
			
				|  |  |  import textUI from '@/components/FormUI/TextInput'
 | 
	
		
			
				|  |  |  import { getDict } from '@/hooks/web/useDictionaries'
 | 
	
		
			
				|  |  |  import Snackbar from '@/plugins/snackbar'
 | 
	
		
			
				|  |  |  import { ref } from 'vue'
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  const emit = defineEmits(['cancel', 'confirm'])
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  const CtFormRef = ref()
 | 
	
	
		
			
				|  | @@ -51,8 +50,7 @@ const formItems = ref({
 | 
	
		
			
				|  |  |        type: 'text',
 | 
	
		
			
				|  |  |        key: 'name',
 | 
	
		
			
				|  |  |        value: '',
 | 
	
		
			
				|  |  | -      label: '姓名 ',
 | 
	
		
			
				|  |  | -      col: 12
 | 
	
		
			
				|  |  | +      label: '姓名 '
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |        type: 'autocomplete',
 | 
	
	
		
			
				|  | @@ -66,35 +64,6 @@ const formItems = ref({
 | 
	
		
			
				|  |  |        dictTypeName: 'menduner_sex',
 | 
	
		
			
				|  |  |        items: []
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | -    // {
 | 
	
		
			
				|  |  | -    //   type: 'ifRadio',
 | 
	
		
			
				|  |  | -    //   key: 'sex',
 | 
	
		
			
				|  |  | -    //   value: '0',
 | 
	
		
			
				|  |  | -    //   default: 0,
 | 
	
		
			
				|  |  | -    //   label: '人才分类',
 | 
	
		
			
				|  |  | -    //   width: 90,
 | 
	
		
			
				|  |  | -    //   items: [
 | 
	
		
			
				|  |  | -    //     { label: '不限', value: '0' },
 | 
	
		
			
				|  |  | -    //     { label: '默认分类', value: '1' }
 | 
	
		
			
				|  |  | -    //   ]
 | 
	
		
			
				|  |  | -    // },
 | 
	
		
			
				|  |  | -    // {
 | 
	
		
			
				|  |  | -    //   type: 'ifRadio',
 | 
	
		
			
				|  |  | -    //   key: 'type',
 | 
	
		
			
				|  |  | -    //   value: '0',
 | 
	
		
			
				|  |  | -    //   default: 0,
 | 
	
		
			
				|  |  | -    //   label: '简历状态',
 | 
	
		
			
				|  |  | -    //   width: 120,
 | 
	
		
			
				|  |  | -    //   items: [
 | 
	
		
			
				|  |  | -    //     { label: '不限', value: '0' },
 | 
	
		
			
				|  |  | -    //     { label: '已查看', value: '1' },
 | 
	
		
			
				|  |  | -    //     { label: '未查看', value: '2' },
 | 
	
		
			
				|  |  | -    //     { label: '已导出', value: '3' },
 | 
	
		
			
				|  |  | -    //     { label: '已邀请', value: '4' },
 | 
	
		
			
				|  |  | -    //     { label: '已回复', value: '5' },
 | 
	
		
			
				|  |  | -    //     { label: '有评语', value: '6' }
 | 
	
		
			
				|  |  | -    //   ],
 | 
	
		
			
				|  |  | -    // },
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |        type: 'text',
 | 
	
		
			
				|  |  |        key: 'email',
 | 
	
	
		
			
				|  | @@ -107,75 +76,6 @@ const formItems = ref({
 | 
	
		
			
				|  |  |        value: '',
 | 
	
		
			
				|  |  |        label: '联系手机号 ',
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | -      type: 'text',
 | 
	
		
			
				|  |  | -      key: 'wxCode',
 | 
	
		
			
				|  |  | -      value: '',
 | 
	
		
			
				|  |  | -      label: '微信号 ',
 | 
	
		
			
				|  |  | -    },
 | 
	
		
			
				|  |  | -    // {
 | 
	
		
			
				|  |  | -    //   type: 'text',
 | 
	
		
			
				|  |  | -    //   key: 'birthday',
 | 
	
		
			
				|  |  | -    //   value: '',
 | 
	
		
			
				|  |  | -    //   label: '出生日期 ',
 | 
	
		
			
				|  |  | -    // },
 | 
	
		
			
				|  |  | -    // {
 | 
	
		
			
				|  |  | -    //   type: 'autocomplete',
 | 
	
		
			
				|  |  | -    //   key: 'labels',
 | 
	
		
			
				|  |  | -    //   value: null,
 | 
	
		
			
				|  |  | -    //   label: '人员标签 ',
 | 
	
		
			
				|  |  | -    //   multiple: true,
 | 
	
		
			
				|  |  | -    //   outlined: true,
 | 
	
		
			
				|  |  | -    //   itemText: 'label',
 | 
	
		
			
				|  |  | -    //   itemValue: 'value',
 | 
	
		
			
				|  |  | -    //   items: [
 | 
	
		
			
				|  |  | -    //     { label: '标签', value: '0' },
 | 
	
		
			
				|  |  | -    //   ]
 | 
	
		
			
				|  |  | -    // },
 | 
	
		
			
				|  |  | -    // {
 | 
	
		
			
				|  |  | -    //   type: 'number',
 | 
	
		
			
				|  |  | -    //   key: 'age1',
 | 
	
		
			
				|  |  | -    //   value: null,
 | 
	
		
			
				|  |  | -    //   label: '年龄区间:起始',
 | 
	
		
			
				|  |  | -    // },
 | 
	
		
			
				|  |  | -    // {
 | 
	
		
			
				|  |  | -    //   type: 'number',
 | 
	
		
			
				|  |  | -    //   key: 'age2',
 | 
	
		
			
				|  |  | -    //   value: null,
 | 
	
		
			
				|  |  | -    //   label: '年龄区间:结束',
 | 
	
		
			
				|  |  | -    // },
 | 
	
		
			
				|  |  | -    // {
 | 
	
		
			
				|  |  | -    //   type: 'number',
 | 
	
		
			
				|  |  | -    //   key: 'pay1',
 | 
	
		
			
				|  |  | -    //   value: null,
 | 
	
		
			
				|  |  | -    //   suffix: '元',
 | 
	
		
			
				|  |  | -    //   label: '期望薪资:起始',
 | 
	
		
			
				|  |  | -    // },
 | 
	
		
			
				|  |  | -    // {
 | 
	
		
			
				|  |  | -    //   type: 'number',
 | 
	
		
			
				|  |  | -    //   key: 'pay2',
 | 
	
		
			
				|  |  | -    //   value: null,
 | 
	
		
			
				|  |  | -    //   suffix: '元',
 | 
	
		
			
				|  |  | -    //   label: '期望薪资:结束',
 | 
	
		
			
				|  |  | -    // },
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | -      type: 'areaSelect',
 | 
	
		
			
				|  |  | -      key: 'areaIds',
 | 
	
		
			
				|  |  | -      value: '',
 | 
	
		
			
				|  |  | -      // label: ' ',
 | 
	
		
			
				|  |  | -      placeholder: '所在城市', // 暂时只能使用placeholder
 | 
	
		
			
				|  |  | -      readonly: true,
 | 
	
		
			
				|  |  | -      limit: 1,
 | 
	
		
			
				|  |  | -    },
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | -      type: 'areaSelect',
 | 
	
		
			
				|  |  | -      key: 'regIds',
 | 
	
		
			
				|  |  | -      value: '',
 | 
	
		
			
				|  |  | -      // label: ' ',
 | 
	
		
			
				|  |  | -      placeholder: '户籍所在地', // 暂时只能使用placeholder
 | 
	
		
			
				|  |  | -      readonly: true,
 | 
	
		
			
				|  |  | -      limit: 1,
 | 
	
		
			
				|  |  | -    },
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |        type: 'autocomplete',
 | 
	
		
			
				|  |  |        key: 'eduType',
 | 
	
	
		
			
				|  | @@ -249,6 +149,30 @@ const formItems = ref({
 | 
	
		
			
				|  |  |        dictTypeName: 'menduner_marital_status',
 | 
	
		
			
				|  |  |        items: []
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +      type: 'cascade',
 | 
	
		
			
				|  |  | +      key: 'areaIds',
 | 
	
		
			
				|  |  | +      value: null,
 | 
	
		
			
				|  |  | +      default: null,
 | 
	
		
			
				|  |  | +      label: '所在城市',
 | 
	
		
			
				|  |  | +      itemText: 'name',
 | 
	
		
			
				|  |  | +      itemValue: 'id',
 | 
	
		
			
				|  |  | +      checkStrictly: true,
 | 
	
		
			
				|  |  | +      clearable: true,
 | 
	
		
			
				|  |  | +      items: [],
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +      type: 'cascade',
 | 
	
		
			
				|  |  | +      key: 'regIds',
 | 
	
		
			
				|  |  | +      value: null,
 | 
	
		
			
				|  |  | +      default: null,
 | 
	
		
			
				|  |  | +      label: '户籍所在地',
 | 
	
		
			
				|  |  | +      itemText: 'name',
 | 
	
		
			
				|  |  | +      itemValue: 'id',
 | 
	
		
			
				|  |  | +      checkStrictly: true,
 | 
	
		
			
				|  |  | +      clearable: true,
 | 
	
		
			
				|  |  | +      items: [],
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  |    ]
 | 
	
		
			
				|  |  |  })
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -260,15 +184,22 @@ const getDictData = async (item) => {
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -const getLabelData = async () => {
 | 
	
		
			
				|  |  | -  const res = await getRocketLabelList({ current: 1, size:9999, type: 'person' }) //type: job  enterprise person
 | 
	
		
			
				|  |  | -  const labels = res?.records || []
 | 
	
		
			
				|  |  | -  const labelsItem = formItems.value.options.find(f => f.key === 'labels')
 | 
	
		
			
				|  |  | -  if (labelsItem) {
 | 
	
		
			
				|  |  | -    labelsItem.items = labels.map(e => ({ label: e, value: e }))
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -getLabelData()
 | 
	
		
			
				|  |  | +getDict('areaTreeData', null, 'areaTreeData').then(({ data }) => {
 | 
	
		
			
				|  |  | +  data = data?.length && data || []
 | 
	
		
			
				|  |  | +  if (!data?.length) return console.error('areaTreeData获取失败!')
 | 
	
		
			
				|  |  | +  formItems.value.options.find(e => e.key === 'areaIds').items = data ?? []
 | 
	
		
			
				|  |  | +  formItems.value.options.find(e => e.key === 'regIds').items = data ?? []
 | 
	
		
			
				|  |  | +})
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// const getLabelData = async () => {
 | 
	
		
			
				|  |  | +//   const res = await getRocketLabelList({ current: 1, size:9999, type: 'person' }) //type: job  enterprise person
 | 
	
		
			
				|  |  | +//   const labels = res?.records || []
 | 
	
		
			
				|  |  | +//   const labelsItem = formItems.value.options.find(f => f.key === 'labels')
 | 
	
		
			
				|  |  | +//   if (labelsItem) {
 | 
	
		
			
				|  |  | +//     labelsItem.items = labels.map(e => ({ label: e, value: e }))
 | 
	
		
			
				|  |  | +//   }
 | 
	
		
			
				|  |  | +// }
 | 
	
		
			
				|  |  | +// getLabelData()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  let flexStyle = false
 | 
	
		
			
				|  |  |  formItems.value.options.forEach(e => {
 | 
	
	
		
			
				|  | @@ -316,13 +247,13 @@ const confirm = () => {
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      } else if (e.value !== null && e.value !== '' && e.value !== undefined) obj[e.key] = e.value
 | 
	
		
			
				|  |  |    })
 | 
	
		
			
				|  |  | -  if (obj.age1 > obj.age2) return Snackbar.warning('年龄区间异常,前者不能大于后者!')
 | 
	
		
			
				|  |  | -  if (obj.pay2 > obj.pay1) return Snackbar.warning('期望薪资异常,前者不能大于后者!')
 | 
	
		
			
				|  |  | +  // if (obj.age1 > obj.age2) return Snackbar.warning('年龄区间异常,前者不能大于后者!')
 | 
	
		
			
				|  |  | +  // if (obj.pay2 > obj.pay1) return Snackbar.warning('期望薪资异常,前者不能大于后者!')
 | 
	
		
			
				|  |  |    //
 | 
	
		
			
				|  |  | -  if (obj.age1 || obj.age2) obj.age = [obj.age1 || null, obj.age2 || null].filter(Boolean)
 | 
	
		
			
				|  |  | -  if (obj.pay1 || obj.pay2) obj.pay = [obj.pay1 || null, obj.pay2 || null].filter(Boolean)
 | 
	
		
			
				|  |  | +  // if (obj.age1 || obj.age2) obj.age = [obj.age1 || null, obj.age2 || null].filter(Boolean)
 | 
	
		
			
				|  |  | +  // if (obj.pay1 || obj.pay2) obj.pay = [obj.pay1 || null, obj.pay2 || null].filter(Boolean)
 | 
	
		
			
				|  |  |    //
 | 
	
		
			
				|  |  | -  if (!obj.labels?.length) delete obj.labels
 | 
	
		
			
				|  |  | +  // if (!obj.labels?.length) delete obj.labels
 | 
	
		
			
				|  |  |    emit('confirm', obj)
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 |