|
@@ -6,32 +6,39 @@
|
|
|
|
|
|
<script setup>
|
|
|
import { getDict } from '@/hooks/web/useDictionaries'
|
|
|
-defineOptions({name: 'shareJob-form-baseInfo'})
|
|
|
+defineOptions({name: 'necessaryInfo-InfoForm'})
|
|
|
import { reactive, ref } from 'vue'
|
|
|
import { checkEmail } from '@/utils/validate'
|
|
|
+import { enterpriseSearchByName } from '@/api/recruit/personal/resume'
|
|
|
|
|
|
+const props = defineProps({
|
|
|
+ option: {
|
|
|
+ type: Object,
|
|
|
+ default: () => {}
|
|
|
+ }
|
|
|
+})
|
|
|
+const setInfo = ref(props.option?.setInfo ? props.option.setInfo : {})
|
|
|
+// console.log(1, 'setInfo', setInfo)
|
|
|
const formPageRef = ref()
|
|
|
let query = reactive({})
|
|
|
|
|
|
// 企业名称下拉列表
|
|
|
-const enterpriseNameInput = ref('')
|
|
|
+let enterpriseName = ''
|
|
|
+// const enterpriseNameInput = ref('')
|
|
|
const getEnterpriseData = async (name) => {
|
|
|
- const item = formItems.value.options.find(e => e.key === 'enterpriseId')
|
|
|
+ const item = items.value.options.find(e => e.key === 'enterpriseId')
|
|
|
if (!item) return
|
|
|
- if (item.items?.length && (enterpriseNameInput.value === name)) return // 防抖
|
|
|
- item[item.itemTextName] = enterpriseNameInput.value = name
|
|
|
+ if (item.items?.length && (enterpriseName === name)) return // 防抖
|
|
|
+ // item[item.itemTextName] =
|
|
|
+ enterpriseName = name
|
|
|
if (name === null || name === '') { item.items = [] }
|
|
|
else {
|
|
|
const data = await enterpriseSearchByName({ name })
|
|
|
item.items = data
|
|
|
}
|
|
|
}
|
|
|
-const positionSearch = (name) => {
|
|
|
- const item = formItems.value.options.find(e => e.key === 'positionId')
|
|
|
- if (!item) return
|
|
|
- item[item.itemTextName] = name
|
|
|
-}
|
|
|
|
|
|
+let positionName = ''
|
|
|
const items = ref({
|
|
|
options: [
|
|
|
{
|
|
@@ -70,6 +77,10 @@ const items = ref({
|
|
|
label: '常用邮箱',
|
|
|
outlined: true,
|
|
|
rules: [
|
|
|
+ value => {
|
|
|
+ if (value) return true
|
|
|
+ return '请输入联系邮箱'
|
|
|
+ },
|
|
|
value => {
|
|
|
if (value && !checkEmail(value)) return '请输入正确的电子邮箱'
|
|
|
return true
|
|
@@ -79,13 +90,14 @@ const items = ref({
|
|
|
{
|
|
|
type: 'datePicker',
|
|
|
mode: 'date',
|
|
|
- labelWidth: 110,
|
|
|
+ labelWidth: 80,
|
|
|
key: 'birthday',
|
|
|
value: '1990-01-01',
|
|
|
defaultValue: new Date(1990, 1, 1),
|
|
|
label: '出生日期 *',
|
|
|
disabledFutureDates: true,
|
|
|
format: 'YYYY/MM/DD',
|
|
|
+ flexStyle: 'mb-7',
|
|
|
outlined: true,
|
|
|
rules: [v => !!v || '请选择出生日期']
|
|
|
},
|
|
@@ -94,14 +106,14 @@ const items = ref({
|
|
|
key: 'enterpriseId',
|
|
|
value: null,
|
|
|
default: null,
|
|
|
- label: '任职企业名称(没有可填“暂无”) *',
|
|
|
+ label: '任职企业名称(可填暂无)',
|
|
|
outlined: true,
|
|
|
clearable: true,
|
|
|
canBeInputted: true, //
|
|
|
itemTextName: 'enterpriseName',
|
|
|
itemText: 'value',
|
|
|
itemValue: 'key',
|
|
|
- rules: [v => !!v || '任职企业名称(没有可填“暂无”)'],
|
|
|
+ // rules: [v => !!v || '任职企业名称(可填“暂无”)'],
|
|
|
search: getEnterpriseData,
|
|
|
items: []
|
|
|
},
|
|
@@ -110,33 +122,32 @@ const items = ref({
|
|
|
key: 'positionId',
|
|
|
value: null,
|
|
|
default: null,
|
|
|
- label: '任职职位名称(没有可填“暂无”) *',
|
|
|
+ label: '任职职位名称(可填暂无)',
|
|
|
outlined: true,
|
|
|
clearable: true,
|
|
|
canBeInputted: true, //
|
|
|
itemTextName: 'positionName',
|
|
|
itemText: 'nameCn',
|
|
|
itemValue: 'id',
|
|
|
- rules: [v => !!v || '任职职位名称(没有可填“暂无”)'],
|
|
|
- search: val => positionSearch(val),
|
|
|
+ dictTypeName: 'positionSecondData',
|
|
|
+ // rules: [v => !!v || '任职职位名称(没有可填“暂无”)'],
|
|
|
+ search: val => positionName = val,
|
|
|
+ items: []
|
|
|
+ },
|
|
|
+ {
|
|
|
+ type: 'autocomplete',
|
|
|
+ key: 'interestedPositionList',
|
|
|
+ value: null,
|
|
|
+ default: null,
|
|
|
+ label: '意向职位 *',
|
|
|
+ outlined: true,
|
|
|
+ itemText: 'nameCn',
|
|
|
+ itemValue: 'id',
|
|
|
+ multiple: true,
|
|
|
+ dictTypeName: 'positionSecondData',
|
|
|
+ rules: [v => !!v || '请选择意向职位'],
|
|
|
items: []
|
|
|
},
|
|
|
- // {
|
|
|
- // type: 'autocomplete',
|
|
|
- // key: 'interestedPositionList',
|
|
|
- // value: null,
|
|
|
- // default: null,
|
|
|
- // label: '意向职位 *',
|
|
|
- // outlined: true,
|
|
|
- // clearable: true,
|
|
|
- // multiple: true,
|
|
|
- // canBeInputted: true, //
|
|
|
- // itemText: 'nameCn',
|
|
|
- // itemValue: 'id',
|
|
|
- // dictTypeName: 'positionData',
|
|
|
- // rules: [v => !!v || '意向职位'],
|
|
|
- // items: []
|
|
|
- // },
|
|
|
{
|
|
|
type: 'autocomplete',
|
|
|
key: 'jobStatus',
|
|
@@ -176,14 +187,16 @@ const items = ref({
|
|
|
rules: [v => !!v || '请选择最高学历'],
|
|
|
items: []
|
|
|
},
|
|
|
+ // label: '学制类型 *', menduner_education_system_type
|
|
|
]
|
|
|
})
|
|
|
|
|
|
// 获取字典内容
|
|
|
-const getDictData = async (dictTypeName) => {
|
|
|
- const item = items.value.options.find(e => e.dictTypeName === dictTypeName)
|
|
|
+const getDictData = async (dictTypeName, key) => {
|
|
|
+ const item = items.value.options.find(e => e.key === key)
|
|
|
if (item) {
|
|
|
- const { data } = await getDict(dictTypeName)
|
|
|
+ const apiFn = dictTypeName === 'positionSecondData' ? 'positionSecondData' : null
|
|
|
+ const { data } = await getDict(dictTypeName, {}, apiFn)
|
|
|
item.items = data
|
|
|
// console.log(dictTypeName, '字典内容', data)
|
|
|
}
|
|
@@ -192,12 +205,39 @@ const getDictData = async (dictTypeName) => {
|
|
|
const userInfo = ref(localStorage.getItem('userInfo') ? JSON.parse(localStorage.getItem('userInfo')) : {})
|
|
|
const baseInfo = ref(localStorage.getItem('baseInfo') ? JSON.parse(localStorage.getItem('baseInfo')) : {})
|
|
|
items.value.options.forEach((e) => {
|
|
|
- if (e.dictTypeName) getDictData(e.dictTypeName) // 查字典set options
|
|
|
+ if (e.dictTypeName) getDictData(e.dictTypeName, e.key) // 查字典set options
|
|
|
if (baseInfo.value && baseInfo.value[e.key]) e.value = baseInfo.value[e.key] // 人才信息回显
|
|
|
if (userInfo.value && userInfo.value[e.key]) e.value = userInfo.value[e.key] // 人才信息回显
|
|
|
if (e.key === 'sex' && e.value === '0') e.value = e.default
|
|
|
+ if (setInfo.value[e.key]) e.value = setInfo.value[e.key]
|
|
|
})
|
|
|
|
|
|
+// const getName = (obj, key) => {
|
|
|
+// const item = items.value.options.find(e => e.key === key)
|
|
|
+// if (!item && !item.value) return
|
|
|
+// const select = item.items.find(e => item.value === e[item.itemValue || 'value'])
|
|
|
+// if (select) {
|
|
|
+// obj[item.itemTextName] = select[item.itemText || 'label']
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+const dealQuery = () => {
|
|
|
+ query.positionName = positionName
|
|
|
+ if (query.positionId === positionName) delete query.positionId // 有选中id传id和name,否者只传name
|
|
|
+ query.enterpriseName = enterpriseName
|
|
|
+ if (query.enterpriseId === enterpriseName) delete query.enterpriseId // 有选中id传id和name,否者只传name
|
|
|
+ //
|
|
|
+ if (query.interestedPositionList?.length) {
|
|
|
+ query.interestedList = query.interestedPositionList.map(e => { return {positionId: e} })
|
|
|
+ }
|
|
|
+ query.workExpList = [{
|
|
|
+ enterpriseId: query.enterpriseId,
|
|
|
+ enterpriseName: query.enterpriseName,
|
|
|
+ positionId: query.positionId,
|
|
|
+ positionName: query.positionName,
|
|
|
+ }]
|
|
|
+}
|
|
|
+
|
|
|
const getQuery = async () => {
|
|
|
const { valid } = await formPageRef.value.formRef.validate()
|
|
|
if (!valid) return false
|
|
@@ -207,6 +247,7 @@ const getQuery = async () => {
|
|
|
obj[e.key] = e.value
|
|
|
})
|
|
|
query = Object.assign(query, obj)
|
|
|
+ dealQuery()
|
|
|
return query
|
|
|
}
|
|
|
|