@@ -27,7 +27,7 @@ const { proxy } = getCurrentInstance(), | |||
Cookie.remove('token') | |||
localStorage.clear() | |||
router.push('/login') | |||
window.location.reload() | |||
// window.location.reload() | |||
}, | |||
// 申请权限 | |||
apply = () => { | |||
@@ -6,6 +6,8 @@ export const createMeeting = data => http.post('/api/v1/meeting/create', data) / | |||
export const randomInviteExpect = data => http.post('/api/v1/meeting/random-invite-expect', data) // 新建会议java | |||
export const continueInviteDisposable = data => http.post('/api/v1/meeting/continueInvite-disposable', data) // 一次性续抽专家 | |||
export const meetingList = params => http.get('/api/v1/meeting/manager/meetingList', { params }) // 评审会议列表 | |||
export const meetingBasicInfo = meetingId => http.get(`/api/v1/meeting/basicInfo/${meetingId}`) // 会议详情-基本信息 | |||
@@ -13,7 +13,7 @@ | |||
label="抽取规则" | |||
> | |||
<el-card | |||
v-for="(ele,index) in ExtractionRule" | |||
v-for="(ele,index) in ruleForm.expertInviteRule.randomRules" | |||
:key="index" | |||
class="box-card w-full mb-8" | |||
> | |||
@@ -24,7 +24,7 @@ | |||
type="danger" | |||
plain | |||
icon="Delete" | |||
:disabled="ExtractionRule.length === 1" | |||
:disabled="ruleForm.expertInviteRule.randomRules.length === 1" | |||
@click="delExtractionRule(index)" | |||
> | |||
删除规则 | |||
@@ -75,7 +75,7 @@ | |||
<el-col :span="8"> | |||
<el-form-item label="专家级别" :label-width="100"> | |||
<el-cascader | |||
v-model="ruleForm.expertInviteRule.randomRules[index].expertRegionLists" | |||
v-model="zjjb" | |||
clearable | |||
:options="regionTree" | |||
placeholder="请选择" | |||
@@ -111,10 +111,10 @@ | |||
<el-col :span="8"> | |||
<el-form-item label="履职意向" :label-width="100"> | |||
<el-cascader | |||
v-model="lzyx" | |||
:options="regionTree" | |||
class="w-full" | |||
clearable | |||
@change="handleExpertIntentionWorkRegions($event,index)" | |||
/> | |||
</el-form-item> | |||
</el-col> | |||
@@ -182,24 +182,24 @@ | |||
<el-col :span="8"> | |||
<el-form-item label="技术专长" :label-width="100"> | |||
<el-cascader | |||
v-model="textZc" | |||
:options="technicalExpertiseTree" | |||
placeholder="请选择" | |||
class="w-full" | |||
clearable | |||
@change="handleRandomRulesTags($event, index)" | |||
@visible-change="getDictionaryData('technical_expertise')" | |||
/> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="8"> | |||
<el-form-item label="行业领域" :label-width="100"> | |||
<el-cascader | |||
v-model="hyly" | |||
:options="industrySectorTree" | |||
placeholder="请选择" | |||
class="w-full" | |||
clearable | |||
@change="handleRandomRulesTags($event, index)" | |||
@visible-change="getDictionaryData('industry_sector')" | |||
/> | |||
</el-form-item> | |||
</el-col> | |||
@@ -215,10 +215,12 @@ | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-button @click="submit">测试</el-button> | |||
</el-card> | |||
</template> | |||
<script setup> | |||
import { getCurrentInstance, onMounted, reactive, ref } from 'vue' | |||
import { getCurrentInstance, onMounted, reactive, ref, watch } from 'vue' | |||
import { storeToRefs } from 'pinia' | |||
import store from '@/store' | |||
const { dictList } = storeToRefs(store.dictStore) | |||
@@ -226,8 +228,8 @@ const regionTree = ref([]) | |||
const regionProps = ref({ multiple: true }) | |||
import { getDictionaryTree } from '@/http/apis/expertManage/expertStore' | |||
import { districtList } from '@/http/apis/commonApi' | |||
import { continueInviteDisposable } from '@/http/apis/expertManage/reviewMeeting' | |||
const { proxy } = getCurrentInstance() | |||
const ExtractionRule = ref([0]) | |||
const userInfo = storeToRefs(store.userStore).userInfo || {} | |||
const ruleForm = reactive({ | |||
expertInviteRule: { | |||
@@ -252,6 +254,12 @@ onMounted(async () => { | |||
const regionRes = [] | |||
regionRes.push(res.data) | |||
regionTree.value = copeData(regionRes) | |||
const technicalExpertiseRes = await getDictionaryTree({ rootTagCodeList: ['technical_expertise'] }) | |||
technicalExpertiseTree.value = copeDictionaryData(technicalExpertiseRes)[0].children | |||
const industrySectorRes = await getDictionaryTree({ rootTagCodeList: ['industry_sector'] }) | |||
industrySectorTree.value = copeDictionaryData(industrySectorRes)[0].children | |||
}) | |||
const copeData = (val) => { | |||
const data = val.map((item) => { | |||
@@ -272,16 +280,15 @@ const addExtractionRule = () => { | |||
proxy.$message.warning('最多添加5个规则') | |||
return | |||
} | |||
ExtractionRule.value.push(ExtractionRule.value.length) | |||
ruleForm.expertInviteRule.randomRules.push({ expertDicts: [], expertTags: [] }) | |||
} | |||
const delExtractionRule = (index) => { | |||
ruleForm.expertInviteRule.randomRules.splice(index, 1) | |||
ExtractionRule.value.splice(index, 1) | |||
} | |||
// 处理抽取规则标签数据expertTags | |||
const handleRandomRulesTags = ($event, index) => { | |||
console.log($event, index) | |||
let tagGeneralType // 级联选择器标签总类型 | |||
let tagType // select选择器标签总类型 | |||
let dictObj | |||
@@ -293,10 +300,12 @@ const handleRandomRulesTags = ($event, index) => { | |||
tagGeneralType = $event[0].split('##')[0] | |||
tagType = $event[$event.length - 1].split('##')[0] | |||
dictObj = { tagGeneralType, tagCodes: [$event[$event.length - 1].split('##')[2]], expertTag: tagGeneralType } | |||
console.log(tagGeneralType, tagType, dictObj) | |||
} else { // 处理select选择器,字符串型数据 | |||
tagType = $event.split('##')[0] | |||
dictObj = { tagType, tagCodes: [$event.split('##')[2]], expertTag: tagType } | |||
} | |||
if (!ruleForm.expertInviteRule.randomRules[index].expertTags)ruleForm.expertInviteRule.randomRules[index].expertTags = [] | |||
if (ruleForm.expertInviteRule.randomRules[index].expertTags.length === 0) { | |||
ruleForm.expertInviteRule.randomRules[index].expertTags.push(dictObj) | |||
} else { | |||
@@ -324,6 +333,7 @@ const handleRandomRulesDictionary = ($event, index) => { | |||
} | |||
const dictType = $event.split('##')[1] | |||
const dictObj = { dictCodes: [$event.split('##')[0]], expertDict: dictType } | |||
if (!ruleForm.expertInviteRule.randomRules[index].expertDicts)ruleForm.expertInviteRule.randomRules[index].expertDicts = [] | |||
if (ruleForm.expertInviteRule.randomRules[index].expertDicts.length === 0) { | |||
ruleForm.expertInviteRule.randomRules[index].expertDicts.push(dictObj) | |||
} else { | |||
@@ -334,18 +344,19 @@ const handleRandomRulesDictionary = ($event, index) => { | |||
} | |||
} | |||
// 处理履职意向数据 | |||
const handleExpertIntentionWorkRegions = ($event, index) => { | |||
let regionArr = [] | |||
if (!$event) { | |||
regionArr = [] | |||
} else { | |||
regionArr = $event.pop().split('##') | |||
} | |||
const regionCode = regionArr?.[0] | |||
const regionLevel = regionArr?.[2] | |||
ruleForm.expertInviteRule.randomRules[index].intentionRegionCode = regionCode | |||
ruleForm.expertInviteRule.randomRules[index].intentionRegionLevel = regionLevel | |||
} | |||
// const handleExpertIntentionWorkRegions = ($event, index) => { | |||
// console.log($event) | |||
// let regionArr = [] | |||
// if (!$event) { | |||
// regionArr = [] | |||
// } else { | |||
// regionArr = $event.pop().split('##') | |||
// } | |||
// const regionCode = regionArr?.[0] | |||
// const regionLevel = regionArr?.[2] | |||
// ruleForm.expertInviteRule.randomRules[index].intentionRegionCode = regionCode | |||
// ruleForm.expertInviteRule.randomRules[index].intentionRegionLevel = regionLevel | |||
// } | |||
// 各种字典数据 | |||
const technicalExpertiseTree = ref([])// 技术专长 | |||
const industrySectorTree = ref([])// 行业领域 | |||
@@ -387,7 +398,6 @@ const copeDictionaryData = (val) => { // 处理字典数据的方法 | |||
}) | |||
return data | |||
} | |||
// 处理专家层级数据 | |||
const handleExpertRegion = ($event, index) => { | |||
console.log(ruleForm.expertInviteRule.randomRules[index].expertRegionLists) | |||
@@ -398,6 +408,107 @@ const handleExpertRegion = ($event, index) => { | |||
} | |||
}) || [] | |||
} | |||
// 假设组件有两个 props:title 和 content | |||
const { detailData } = defineProps({ | |||
detailData: Object | |||
}) | |||
console.log(detailData) | |||
// randomRules | |||
// 使用深度监听 | |||
watch( | |||
() => detailData, | |||
(newVal, oldVal) => { | |||
if (newVal && newVal.randomRules && newVal.randomRules) { | |||
// ruleForm.expertInviteRule.randomRules = newVal.randomRules | |||
// console.log(ruleForm.expertInviteRule.randomRules) | |||
ruleForm.expertInviteRule.randomRules = handleParmas(newVal.randomRules) | |||
console.log(ruleForm.expertInviteRule.randomRules) | |||
} | |||
}, | |||
{ deep: true } | |||
) | |||
function handleParmas (randomRules) { | |||
console.log(randomRules) | |||
return randomRules.map(item => { | |||
return { | |||
...item, | |||
count: item.count, | |||
// 其它标签 | |||
otherTag: item.expertTags.find(i => i.expertTag === 'other').tagCodes || undefined, | |||
// 擅长方向 | |||
goodAt: item.expertTags.find(i => i.expertTag === 'good_at').tagCodes || undefined, | |||
// 内外围 | |||
expertType: item.expertDicts.find(i => i.expertDict === 'expert_type').dictCodes || undefined, | |||
// 职称级别 | |||
professionalLevel: item.expertDicts.find(i => i.expertDict === 'title_level').dictCodes || undefined, | |||
// 专家来源 | |||
expertSource: item.expertTags.find(i => i.expertTag === 'expert_source').tagCodes || undefined, | |||
// 履职意向 | |||
intentionRegionCode: item.intentionRegionCode || undefined, | |||
intentionRegionLevel: item.intentionRegionLevel || undefined, | |||
// 专家级别 | |||
expertRegionLists: item.expertRegionList || [], | |||
// 技术专长 | |||
technical_expertise: item.expertTags.find(i => i.expertTag === 'technical_expertise').tagCodes || undefined, | |||
// 行业领域 | |||
industry_sector: item.expertTags.find(i => i.expertTag === 'industry_sector').tagCodes || undefined | |||
} | |||
}) | |||
} | |||
function submit () { | |||
console.log(ruleForm.expertInviteRule.randomRules) | |||
const ruleFormClone = JSON.parse(JSON.stringify(ruleForm)) | |||
ruleFormClone.expertInviteRule.randomRules.forEach(element => { | |||
element['inviteType'] = ruleFormClone.expertInviteRule.inviteType | |||
Object.keys(element).forEach(item => { | |||
switch (item) { | |||
case 'expertSource': | |||
delete element[item] | |||
break | |||
case 'expertType': | |||
delete element[item] | |||
break | |||
case 'goodAt': | |||
delete element[item] | |||
break | |||
case 'otherTag': | |||
delete element[item] | |||
break | |||
case 'professionalLevel': | |||
delete element[item] | |||
break | |||
case 'expertRegionLists': | |||
delete element[item] | |||
break | |||
default: | |||
break | |||
} | |||
}) | |||
}) | |||
console.log(detailData) | |||
const postData = { | |||
meetingId: 56, | |||
avoidRule: detailData.avoidInfo, | |||
randomRules: ruleFormClone.expertInviteRule.randomRules | |||
} | |||
console.log(postData) | |||
if (postData.xxx) { | |||
continueInviteDisposable(postData) | |||
} | |||
console.log(lzyx.value) | |||
} | |||
const textZc = ref(['technical_expertise##计算机科学技术##3020000', '3020000##人工智能##3020200', '3020200##机器翻译##3020203']) | |||
const zjjb = ref([['330500##湖州市##2', '330503##南浔区##3'], ['330500##湖州市##2', '330521##德清县##3']]) | |||
const lzyx = ref(['330500##湖州市##2', '330521##德清县##3']) | |||
const hyly = ref(['industry_sector##制造业##4030000', '4030000##酒、饮料及精制茶制造业##4030300']) | |||
</script> | |||
<style scoped lang="less"> | |||
@@ -0,0 +1,462 @@ | |||
<template> | |||
<el-card class="mb-16" shadow="never"> | |||
<template #header> | |||
<div class="card-header"> | |||
<span>抽取信息</span> | |||
</div> | |||
</template> | |||
<el-row | |||
:gutter="20" | |||
> | |||
<el-col :span="24"> | |||
<el-form-item | |||
label="抽取规则" | |||
> | |||
<el-card | |||
v-for="(rulesItem,index) in randomRules" | |||
:key="index" | |||
class="box-card w-full mb-8" | |||
> | |||
<template #header> | |||
<div class="card-header flex justify-between"> | |||
<span>规则{{ index + 1 }}</span> | |||
<el-button | |||
type="danger" | |||
plain | |||
icon="Delete" | |||
:disabled="randomRules.length === 1" | |||
@click="delExtractionRule(index)" | |||
> | |||
删除规则 | |||
</el-button> | |||
</div> | |||
</template> | |||
<el-row class="mt-8" :gutter="10"> | |||
<el-col :span="8"> | |||
<el-form-item | |||
label="邀请数量" | |||
:label-width="100" | |||
:prop="`expertInviteRule.randomRules[${index}].count`" | |||
:rules=" [ | |||
{ required: true, message: ' ', trigger: 'blur' } | |||
]" | |||
> | |||
<el-input-number | |||
v-model="rulesItem.count" | |||
placeholder="请输入" | |||
:min="1" | |||
:controls="false" | |||
:step="1" | |||
step-strictly | |||
/> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-row :gutter="10" class="mt-8"> | |||
<el-col :span="8"> | |||
<el-form-item label="其他标签" :label-width="100"> | |||
<el-select | |||
v-model="rulesItem.otherTag" | |||
class="w-full" | |||
clearable | |||
placeholder="请选择" | |||
> | |||
<el-option | |||
v-for="item in otherTree" | |||
:key="item.value" | |||
:label="item.label" | |||
:value="item.label" | |||
/> | |||
</el-select> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="8"> | |||
<el-form-item label="专家级别" :label-width="100"> | |||
<el-cascader | |||
v-model="rulesItem.expertRegionList" | |||
clearable | |||
:options="regionTree" | |||
placeholder="请选择" | |||
class="w-full" | |||
:props="regionProps" | |||
/> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="8"> | |||
<el-form-item label="内外围" :label-width="100"> | |||
<el-select | |||
v-model="rulesItem.expertType" | |||
placeholder="请选择" | |||
class="w-full" | |||
clearable | |||
> | |||
<el-option | |||
v-for="(item,order) in dictList && | |||
dictList.length && | |||
dictList.find(i => i.dictionaryName === 'expert_type') | |||
.dictionaryList" | |||
:key="order" | |||
:label="item.describe" | |||
:value="item.describe" | |||
/> | |||
</el-select> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-row :gutter="10" class="mt-8"> | |||
<el-col :span="8"> | |||
<el-form-item label="履职意向" :label-width="100"> | |||
<el-cascader | |||
v-model="rulesItem.intentionRegion" | |||
:options="regionTree" | |||
class="w-full" | |||
clearable | |||
/> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="8"> | |||
<el-form-item label="专家来源" :label-width="100"> | |||
<el-select | |||
v-model="rulesItem.expertSource" | |||
class="w-full" | |||
placeholder="请选择" | |||
clearable | |||
> | |||
<el-option | |||
v-for="(item,order) in expertSource" | |||
:key="order" | |||
:label="item.label" | |||
:value="item.label" | |||
/> | |||
</el-select> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="8"> | |||
<el-form-item label="职称级别" :label-width="100"> | |||
<el-select | |||
v-model="rulesItem.professionalLevel" | |||
class="w-full" | |||
placeholder="请选择" | |||
clearable | |||
> | |||
<el-option | |||
v-for="(item,order) in dictList && | |||
dictList.length && | |||
dictList.find(i => i.dictionaryName === 'title_level') | |||
.dictionaryList" | |||
:key="order" | |||
:label="item.describe" | |||
:value="item.describe" | |||
/> | |||
</el-select> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-row :gutter="10" class="mt-8"> | |||
<el-col :span="8"> | |||
<el-form-item label="擅长方向" :label-width="100"> | |||
<el-select | |||
v-model="rulesItem.goodAt" | |||
class="w-full" | |||
placeholder="请选择" | |||
clearable | |||
> | |||
<el-option | |||
v-for="(item,order) in goodAtTree" | |||
:key="order" | |||
:label="item.label" | |||
:value="item.label" | |||
/> | |||
</el-select> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="8"> | |||
<el-form-item label="技术专长" :label-width="100"> | |||
<el-cascader | |||
v-model="rulesItem.technicalExpertise" | |||
:options="technicalExpertiseTree" | |||
placeholder="请选择" | |||
class="w-full" | |||
clearable | |||
/> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="8"> | |||
<el-form-item label="行业领域" :label-width="100"> | |||
<el-cascader | |||
v-model="rulesItem.industrySector" | |||
:options="industrySectorTree" | |||
placeholder="请选择" | |||
class="w-full" | |||
clearable | |||
/> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
</el-card> | |||
<el-button | |||
class="w-full" | |||
type="primary" | |||
icon="plus" | |||
plain | |||
@click="addExtractionRule" | |||
>添加规则 | |||
</el-button> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-button @click="handleParmas">测试</el-button> | |||
</el-card> | |||
</template> | |||
<script setup> | |||
import { getCurrentInstance, onMounted, ref, watch } from 'vue' | |||
import { storeToRefs } from 'pinia' | |||
import store from '@/store' | |||
const { dictList } = storeToRefs(store.dictStore) | |||
const regionTree = ref([]) | |||
const regionProps = ref({ multiple: true }) | |||
import { getDictionaryTree } from '@/http/apis/expertManage/expertStore' | |||
import { districtList } from '@/http/apis/commonApi' | |||
// import { continueInviteDisposable } from '@/http/apis/expertManage/reviewMeeting' | |||
const { proxy } = getCurrentInstance() | |||
const randomRules = ref([ | |||
{ | |||
// other##信息安全##5200000 | |||
count: '', | |||
otherTag: '', | |||
expertRegionList: [], | |||
expertType: '', | |||
intentionRegion: {}, | |||
expertSource: '', | |||
professionalLevel: '', | |||
goodAt: '', | |||
technicalExpertise: '', | |||
industrySector: '' | |||
} | |||
]) | |||
onMounted(async () => { | |||
// 获取履职意向数据 | |||
const res = await districtList({ regionCode: 330500, regionLevel: 2 }) | |||
const regionRes = [] | |||
regionRes.push(res.data) | |||
regionTree.value = copeData(regionRes) | |||
const technicalExpertiseRes = await getDictionaryTree({ rootTagCodeList: ['technical_expertise'] }) | |||
technicalExpertiseTree.value = copeDictionaryData(technicalExpertiseRes)[0].children | |||
const industrySectorRes = await getDictionaryTree({ rootTagCodeList: ['industry_sector'] }) | |||
industrySectorTree.value = copeDictionaryData(industrySectorRes)[0].children | |||
getDictionaryData('technical_expertise') | |||
getDictionaryData('industry_sector') | |||
getDictionaryData('expert_source') | |||
getDictionaryData('good_at') | |||
getDictionaryData('other') | |||
}) | |||
const copeData = (val) => { | |||
const data = val.map((item) => { | |||
const deptData = {} | |||
deptData.value = item.unionCode | |||
deptData.label = item.name | |||
if (item.children && item.children.length) { | |||
deptData.children = item.children.map((v) => ({ value: v.unionCode, label: v.name })) | |||
const childrenData = copeData(item.children) | |||
deptData.children = [...childrenData] | |||
} | |||
return deptData | |||
}) | |||
return data | |||
} | |||
const addExtractionRule = () => { | |||
if (randomRules.value.length >= 5) { | |||
proxy.$message.warning('最多添加5个规则') | |||
return | |||
} | |||
randomRules.value.push({}) | |||
} | |||
const delExtractionRule = (index) => { | |||
randomRules.value.splice(index, 1) | |||
} | |||
// 各种字典数据 | |||
const technicalExpertiseTree = ref([])// 技术专长 | |||
const industrySectorTree = ref([])// 行业领域 | |||
const expertSource = ref([])// 专家来源 | |||
const goodAtTree = ref([])// 擅长 | |||
const otherTree = ref([])// 其他标签 | |||
// 获取各种字典数据 | |||
const getDictionaryData = async (params) => { | |||
if (params === 'technical_expertise' && technicalExpertiseTree.value.length === 0) { | |||
const technicalExpertiseRes = await getDictionaryTree({ rootTagCodeList: [params] }) | |||
technicalExpertiseTree.value = copeDictionaryData(technicalExpertiseRes)[0].children | |||
} else if (params === 'industry_sector' && industrySectorTree.value.length === 0) { | |||
const industrySectorRes = await getDictionaryTree({ rootTagCodeList: [params] }) | |||
industrySectorTree.value = copeDictionaryData(industrySectorRes)[0].children | |||
} else if (params === 'expert_source' && expertSource.value.length === 0) { | |||
const expertSourceRes = await getDictionaryTree({ rootTagCodeList: [params] }) | |||
expertSource.value = copeDictionaryData(expertSourceRes)[0].children | |||
} else if (params === 'good_at' && goodAtTree.value.length === 0) { | |||
const goodAtRes = await getDictionaryTree({ rootTagCodeList: [params] }) | |||
goodAtTree.value = copeDictionaryData(goodAtRes)[0].children | |||
} else if (params === 'other' && otherTree.value.length === 0) { | |||
const otherRes = await getDictionaryTree({ rootTagCodeList: [params] }) | |||
otherTree.value = copeDictionaryData(otherRes)[0].children | |||
} | |||
} | |||
const copeDictionaryData = (val) => { // 处理字典数据的方法 | |||
const data = val?.map((item) => { | |||
const deptData = {} | |||
deptData.value = item.parentCode + '##' + item.unionCode | |||
deptData.label = item.tagName | |||
// deptData.isLeaf = false | |||
if (item.children && item.children.length) { | |||
deptData.children = item.children.map((v) => ({ value: v.parentCode + '##' + v.unionCode, label: v.tagName })) | |||
const childrenData = copeDictionaryData(item.children) | |||
deptData.children = [...childrenData] | |||
} | |||
return deptData | |||
}) | |||
return data | |||
} | |||
const { detailData } = defineProps({ | |||
detailData: Object | |||
}) | |||
console.log(detailData) | |||
// randomRules | |||
// 使用深度监听 | |||
watch( | |||
() => detailData, | |||
(newVal, oldVal) => { | |||
if (newVal && newVal.randomRules && newVal.randomRules) { | |||
// ruleForm.expertInviteRule.randomRules = newVal.randomRules | |||
// console.log(ruleForm.expertInviteRule.randomRules) | |||
// ruleForm.expertInviteRule.randomRules = handleParmas(newVal.randomRules) | |||
showData() | |||
} | |||
}, | |||
{ deep: true } | |||
) | |||
function showData () { | |||
} | |||
function handleParmas () { | |||
const postdata = randomRules.value.map(item => { | |||
return { | |||
count: item.count, | |||
expertDicts: getExpertDicts(item), | |||
expertRegionList: getExpertRegionList(item), | |||
...getIntentionRegion(item), | |||
expertTags: getExpertTags(item), | |||
formEditJson: JSON.stringify(item) | |||
} | |||
}) | |||
console.log(postdata) | |||
} | |||
function getExpertRegionList (item) { | |||
if (item.expertRegionList && Array.isArray(item.expertRegionList) && item.expertRegionList.length > 0) { | |||
return item.expertRegionList.map(i => { | |||
return { | |||
regionCode: i[1].split('##')[0], regionLevel: i[1].split('##')[2] | |||
} | |||
}) | |||
} | |||
return [] | |||
} | |||
function getIntentionRegion (item) { | |||
// ["330500##湖州市##2","330503##南浔区##3"] | |||
if (item.intentionRegion && Array.isArray(item.intentionRegion) && item.intentionRegion.length > 1) { | |||
return { | |||
intentionRegionCode: item.intentionRegion[1].split('##')[0], | |||
intentionRegionLevel: item.intentionRegion[1].split('##')[2] | |||
} | |||
} else { | |||
return {} | |||
} | |||
} | |||
function getExpertTags (item) { | |||
const list = [] | |||
if (item.otherTag) { | |||
list.push({ | |||
expertTag: 'other', | |||
tagCodes: [item.otherTag] | |||
}) | |||
} | |||
if (item.expertSource) { | |||
list.push({ | |||
expertTag: 'expert_source', | |||
tagCodes: [item.expertSource] | |||
}) | |||
} | |||
if (item.goodAt) { | |||
list.push({ | |||
expertTag: 'good_at', | |||
tagCodes: [item.goodAt] | |||
}) | |||
} | |||
// expert_source | |||
// ["industry_sector##制造业##4030000","4030000##酒、饮料及精制茶制造业##4030300"] | |||
if (item.industrySector && Array.isArray(item.industrySector) && item.industrySector.length > 1) { | |||
list.push({ | |||
expertTag: 'industry_sector', | |||
tagCodes: [item.industrySector[1].split('##')[1]] | |||
}) | |||
} | |||
if (item.technicalExpertise && Array.isArray(item.technicalExpertise) && item.technicalExpertise.length > 1) { | |||
if (item.technicalExpertise.length === 2) { | |||
list.push({ | |||
expertTag: 'technical_expertise', | |||
tagCodes: [item.technicalExpertise[1].split('##')[1]] | |||
}) | |||
} else if (item.technicalExpertise.length === 3) { | |||
list.push({ | |||
expertTag: 'technical_expertise', | |||
tagCodes: [item.technicalExpertise[2].split('##')[1]] | |||
}) | |||
} | |||
} | |||
return list | |||
} | |||
function getExpertDicts (item) { | |||
const list = [] | |||
if (item.expertType) { | |||
list.push({ | |||
expertDict: 'expert_type', | |||
dictCodes: [item.expertType] | |||
}) | |||
} | |||
if (item.professionalLevel) { | |||
list.push({ | |||
expertDict: 'title_level', | |||
dictCodes: [item.professionalLevel] | |||
}) | |||
} | |||
return list | |||
} | |||
// const textZc = ref(['technical_expertise##计算机科学技术##3020000', '3020000##人工智能##3020200', '3020200##机器翻译##3020203']) | |||
// const zjjb = ref([['330500##湖州市##2', '330503##南浔区##3'], ['330500##湖州市##2', '330521##德清县##3']]) | |||
// const lzyx = ref(['330500##湖州市##2', '330521##德清县##3']) | |||
// const hyly = ref(['industry_sector##制造业##4030000', '4030000##酒、饮料及精制茶制造业##4030300']) | |||
</script> | |||
<style scoped lang="less"> | |||
</style> |
@@ -270,25 +270,24 @@ const { proxy } = getCurrentInstance(), | |||
ruleFormClone.meetingBasicInfo.times = undefined | |||
loading.value = true | |||
// const res = await randomInviteExpect(ruleFormClone) | |||
// const total = ruleFormClone.expertInviteRule.randomRules.reduce((accumulator, currentItem) => { | |||
// return accumulator + currentItem.count | |||
// }, 0) | |||
// console.log(total) | |||
// if (res.data.canInvite < total) { | |||
// ElMessageBox.confirm('当前可邀请专家数量不足,是否继续邀请?', '提示', { | |||
// confirmButtonText: '确定', | |||
// cancelButtonText: '取消', | |||
// type: 'warning' | |||
// }).then(() => { | |||
// // 继续邀请 | |||
// console.log('继续') | |||
// addMetting(ruleFormClone) | |||
// }) | |||
// } else { | |||
// await addMetting(ruleFormClone) | |||
// } | |||
await addMetting(ruleFormClone) | |||
const res = await randomInviteExpect(ruleFormClone) | |||
const total = ruleFormClone.expertInviteRule.randomRules.reduce((accumulator, currentItem) => { | |||
return accumulator + currentItem.count | |||
}, 0) | |||
console.log(total) | |||
if (res.data.canInvite < total) { | |||
ElMessageBox.confirm('当前可邀请专家数量不足,是否继续邀请?', '提示', { | |||
confirmButtonText: '确定', | |||
cancelButtonText: '取消', | |||
type: 'warning' | |||
}).then(() => { | |||
// 继续邀请 | |||
console.log('继续') | |||
addMetting(ruleFormClone) | |||
}) | |||
} else { | |||
await addMetting(ruleFormClone) | |||
} | |||
} else { | |||
console.log('error submit!', fields) | |||
} | |||
@@ -448,11 +448,11 @@ onMounted(async () => { | |||
const res = await districtList() | |||
regionTree.value.push(res.data) | |||
}) | |||
// import RefillDialog from '@/pages/expertManage/reviewMeeting/addMeeting/components/RefillDialog.vue' | |||
import RefillDialog from '@/pages/expertManage/reviewMeeting/addMeeting/components/RefillDialogCopy.vue' | |||
</script> | |||
<template> | |||
<!-- <refill-dialog />--> | |||
<refill-dialog :detail-data="inviteRuleDetail" /> | |||
<el-card class="box-card"> | |||
<template #header> | |||
<div class="card-header"> | |||