@@ -1,6 +1,7 @@ | |||
<script setup name="App"> | |||
// import store from '@/store' | |||
// console.log(store.menuStore.menuArr) | |||
// import Updater from '@/utils/updater' | |||
// import { ElMessageBox } from 'element-plus' | |||
// | |||
@@ -275,7 +275,12 @@ const | |||
declareAmount: data.declareAmount, | |||
annualPlanAmount: data.annualPlanAmount | |||
} | |||
const baseProjBasis = formData.value.baseProjBasis ? JSON.parse(JSON.stringify(formData.value.baseProjBasis)) : [] | |||
let baseProjBasis = [] | |||
try { | |||
baseProjBasis = formData.value.baseProjBasis ? JSON.parse(JSON.stringify(formData.value.baseProjBasis)) : [] | |||
} catch (e) { | |||
baseProjBasis = [] | |||
} | |||
if (data?.baseProjBasis?.split(';')?.length) { | |||
const dataIds = data?.baseProjBasis?.split(';') | |||
buildBasisTableData.value && buildBasisTableData.value.forEach(item => { | |||
@@ -655,7 +655,7 @@ async function reuseItem (data) { | |||
nextTick(() => { | |||
setData() | |||
}) | |||
}, 200) | |||
}, 300) | |||
} | |||
function changeProjectTypeResetForm () { | |||
// nextTick(() => { | |||
@@ -6,10 +6,12 @@ | |||
destroy-on-close | |||
@close="visible= false" | |||
> | |||
<rule-form-com ref="ruleFormComRef" v-model="rules" /> | |||
<avoid-com ref="avoidConRef" /> | |||
<el-form ref="ruleFormRef" :model="rules"> | |||
<rule-form-com ref="ruleFormComRef" v-model="rules" /> | |||
<avoid-com ref="avoidConRef" /> | |||
</el-form> | |||
<template #footer> | |||
<el-button type="primary" size="small" @click="confirm"> | |||
<el-button type="primary" size="small" @click="checkForm"> | |||
确定 | |||
</el-button> | |||
<el-button size="small" @click="visible=false"> | |||
@@ -22,15 +24,18 @@ | |||
<script setup> | |||
import RuleFormCom from '@/pages/expertManage/reviewMeeting/addMeeting/components/ruleFormCom.vue' | |||
import { ref, defineModel, watch, nextTick } from 'vue' | |||
import { continueInviteDisposable } from '@/http/apis/expertManage/reviewMeeting' | |||
import { continueInviteDisposable, randomInviteExpect } from '@/http/apis/expertManage/reviewMeeting' | |||
import { useRoute } from 'vue-router' | |||
import AvoidCom from '@/pages/expertManage/reviewMeeting/addMeeting/components/avoidCom.vue' | |||
const { detailData } = defineProps({ | |||
detailData: Object | |||
import { ElMessageBox } from 'element-plus' | |||
// import { ElMessageBox } from 'element-plus' | |||
const { detailData, mettingDetail } = defineProps({ | |||
detailData: Object, | |||
mettingDetail: Object | |||
}) | |||
const ruleFormComRef = ref() | |||
const avoidConRef = ref() | |||
const ruleFormRef = ref() | |||
const rules = ref([{}]) | |||
const visible = defineModel({ | |||
@@ -38,25 +43,70 @@ const visible = defineModel({ | |||
default: false | |||
}) | |||
const route = useRoute() | |||
function confirm () { | |||
async function checkForm () { | |||
// await continueInviteDisposable(postData) | |||
// visible.value = false | |||
// emits('refresh') | |||
ruleFormRef.value.validate(async (valid, fields) => { | |||
console.log(valid) | |||
if (valid) { | |||
console.log('sad') | |||
await confirm() | |||
} | |||
}) | |||
} | |||
async function confirm () { | |||
ruleFormComRef.value.handleParmas() | |||
const postData = { | |||
meetingId: route.query.id, | |||
avoidRule: avoidConRef.value.getAvoidRule(), | |||
randomRules: ruleFormComRef.value.handleParmas() | |||
} | |||
continueInviteDisposable(postData) | |||
visible.value = false | |||
emits('refresh') | |||
const res = await randomInviteExpect({ | |||
meetingBasicInfo: { | |||
name: mettingDetail.meetingName, | |||
startTime: mettingDetail.startTime, | |||
endTime: mettingDetail.endTime | |||
}, | |||
expertInviteRule: postData | |||
}) | |||
const total = postData.randomRules.reduce((accumulator, currentItem) => { | |||
return accumulator + currentItem.count | |||
}, 0) | |||
console.log(total) | |||
if (res.data.canInvite < total) { | |||
ElMessageBox.confirm('当前可邀请专家数量不足,是否继续邀请?', '提示', { | |||
confirmButtonText: '确定', | |||
cancelButtonText: '取消', | |||
type: 'warning' | |||
}).then(async () => { | |||
// 继续邀请 | |||
console.log('继续') | |||
await continueInviteDisposable(postData) | |||
visible.value = false | |||
emits('refresh') | |||
}) | |||
} else { | |||
await continueInviteDisposable(postData) | |||
visible.value = false | |||
emits('refresh') | |||
} | |||
// console.log(mettingDetail) | |||
// await continueInviteDisposable(postData) | |||
// visible.value = false | |||
// emits('refresh') | |||
} | |||
const emits = defineEmits(['refresh']) | |||
watch( | |||
() => detailData, | |||
() => visible.value, | |||
(newVal, oldVal) => { | |||
if (newVal && visible) { | |||
if (newVal) { | |||
const list = [] | |||
newVal.randomRules.forEach(item => { | |||
detailData.randomRules.forEach(item => { | |||
let json = {} | |||
if (item.formEditJson)json = JSON.parse(item.formEditJson) | |||
list.push({ | |||
@@ -66,7 +116,8 @@ watch( | |||
}) | |||
nextTick(() => { | |||
rules.value = list | |||
avoidConRef.value.setNewData(newVal) | |||
console.log(rules) | |||
avoidConRef.value.setNewData(detailData) | |||
}) | |||
} | |||
} | |||
@@ -1,10 +1,7 @@ | |||
<script setup> | |||
import { reactive, ref } from 'vue' | |||
import { storeToRefs } from 'pinia' | |||
import store from '@/store' | |||
import AddExpertDialog from '@/pages/expertManage/reviewMeeting/addMeeting/components/addExpertDialog.vue' | |||
import OrgTree from '@/components/orgTree/index.vue' | |||
const userInfo = storeToRefs(store.userStore).userInfo || {} | |||
const ruleForm = reactive({ | |||
expertInviteRule: { | |||
@@ -15,7 +12,7 @@ const ruleForm = reactive({ | |||
avoidUnitIdList: [{ 'organizationCode': 'GO_ff70e47bae684fdba0d64f4acab85661', 'name': '杭州宁达科技有限公司' }, { 'organizationCode': 'GO_13e5ef6615ae4b1293c4811b58e52955', 'name': '发改委' }, { 'organizationCode': 'GO_c50ee049114146dd80a8e1bb82812cd9', 'name': '委领导' }], | |||
avoidOrgIdList: [], | |||
expertIds: [], | |||
avoidType: userInfo.value.regionName === '市本级' ? 2 : 1 | |||
avoidType: 3 | |||
} | |||
}, | |||
meetingBasicInfo: { | |||
@@ -23,8 +20,6 @@ const ruleForm = reactive({ | |||
} | |||
}) | |||
const setNewData = (data) => { | |||
console.log('11111111111111') | |||
console.log(data) | |||
ruleForm.expertInviteRule.avoidRule.avoidType = data.avoidInfo.avoidType | |||
if (data.avoidInfo.expert && Array.isArray(data.avoidInfo.experts)) { | |||
@@ -46,7 +41,9 @@ const setNewData = (data) => { | |||
ruleForm.expertInviteRule.avoidRule.avoidUnitIdList = list | |||
} | |||
ruleForm.expertInviteRule.avoidRule.weekInviteCount = data.avoidInfo.weekInviteCount | |||
if (data.avoidInfo.weekInviteCount) { | |||
ruleForm.expertInviteRule.avoidRule.weekInviteCount = data.avoidInfo.weekInviteCount | |||
} | |||
} | |||
defineExpose({ | |||
getAvoidRule, setNewData | |||
@@ -284,7 +281,7 @@ const closeTag3 = (index) => { | |||
</div> | |||
</el-form-item> | |||
<el-form-item label="回避条线"> | |||
<el-form-item v-if="false" label="回避条线"> | |||
<el-select v-model="ruleForm.expertInviteRule.avoidRule.avoidOrgIdList" multiple> | |||
<el-option | |||
v-for="(item,index) in lineListData" | |||
@@ -36,13 +36,12 @@ | |||
<el-form-item | |||
label="邀请数量" | |||
:label-width="100" | |||
:prop="`randomRules${index}.count`" | |||
:rules="getRule(index)" | |||
> | |||
<!-- :prop="`randomRules[${index}].count`"--> | |||
<!-- :rules=" [--> | |||
<!-- { required: true, message: ' ', trigger: 'blur' }--> | |||
<!-- ]"--> | |||
<el-input-number | |||
v-model="rulesItem.count" | |||
v-model="randomRules[index].count" | |||
placeholder="请输入" | |||
:min="1" | |||
:controls="false" | |||
@@ -56,7 +55,7 @@ | |||
<el-col :span="8"> | |||
<el-form-item label="其他标签" :label-width="100"> | |||
<el-select | |||
v-model="rulesItem.otherTag" | |||
v-model="randomRules[index].otherTag" | |||
class="w-full" | |||
clearable | |||
placeholder="请选择" | |||
@@ -237,6 +236,7 @@ const randomRules = defineModel({ | |||
} | |||
] | |||
}) | |||
// const randomRules = ref([ | |||
// { | |||
// // other##信息安全##5200000 | |||
@@ -358,7 +358,8 @@ function getExpertRegionList (item) { | |||
if (item.expertRegionList && Array.isArray(item.expertRegionList) && item.expertRegionList.length > 0) { | |||
return item.expertRegionList.map(i => { | |||
return { | |||
expertRegionCode: i[1].split('##')[0], expertRegionLevel: i[1].split('##')[2] | |||
regionCode: i[1].split('##')[0], regionLevel: i[1].split('##')[2] | |||
// expertRegionCode: i[1].split('##')[0], expertRegionLevel: i[1].split('##')[2] | |||
} | |||
}) | |||
} | |||
@@ -447,7 +448,21 @@ function getExpertDicts (item) { | |||
} | |||
return list | |||
} | |||
function getRule (index) { | |||
// if (randomRules.value[index].count){ | |||
// return | |||
// } | |||
return [ | |||
{ required: true, message: ``, trigger: 'blur', | |||
validator (rule, value, callback) { | |||
if (randomRules.value[index].count) { | |||
callback() | |||
} else { | |||
callback(new Error('')) | |||
} | |||
} } | |||
] | |||
} | |||
</script> | |||
<style scoped lang="less"> | |||
@@ -6,7 +6,6 @@ import AddProjectDialog from './components/addProjectDialog.vue' | |||
import ruleFormCom from './components/ruleFormCom.vue' | |||
import { createMeeting, randomInviteExpect } from '@/http/apis/expertManage/reviewMeeting' | |||
import { getBusinessstripLine } from '@/http/apis/commonApi' | |||
import { storeToRefs } from 'pinia' | |||
import store from '@/store' | |||
import { useRouter } from 'vue-router' | |||
import getTimeDiffer from '@/utils/getTimeDiffer.js' | |||
@@ -14,7 +13,6 @@ import { ElMessageBox } from 'element-plus' | |||
// import AvoidCom from '@/pages/expertManage/reviewMeeting/addMeeting/components/avoidCom.vue' | |||
const { meetingTypeOptions, projectTypeOptions } = store.dictStore.globalDicts || {} | |||
const { proxy } = getCurrentInstance(), | |||
userInfo = storeToRefs(store.userStore).userInfo || {}, | |||
router = useRouter(), | |||
ruleFormRef = ref(), | |||
ruleFormComRef = ref(), | |||
@@ -27,7 +25,7 @@ const { proxy } = getCurrentInstance(), | |||
avoidUnitIdList: [], | |||
avoidOrgIdList: [], | |||
expertIds: [], | |||
avoidType: userInfo.value.regionName === '市本级' ? 2 : 1 | |||
avoidType: 3 | |||
} | |||
}, | |||
@@ -35,6 +33,7 @@ const { proxy } = getCurrentInstance(), | |||
isInnerProject: true | |||
} | |||
}), | |||
randomRules = ref([{}]), | |||
// 列表数据 | |||
column = reactive([ | |||
{ | |||
@@ -610,7 +609,7 @@ onMounted(async () => { | |||
v-if="ruleForm.expertInviteRule.inviteType == 1" | |||
:gutter="20" | |||
> | |||
<rule-form-com ref="ruleFormComRef" /> | |||
<rule-form-com ref="ruleFormComRef" v-model="randomRules" /> | |||
</el-row> | |||
<el-row | |||
v-else | |||
@@ -674,7 +673,7 @@ onMounted(async () => { | |||
<el-col> | |||
<el-form-item label="部门、条线回避规则" prop="expertInviteRule.avoidRule.avoidType"> | |||
<el-select v-model="ruleForm.expertInviteRule.avoidRule.avoidType"> | |||
<el-option :value="1" label="回避单位" /> | |||
<!-- <el-option :value="1" label="回避单位" />--> | |||
<el-option :value="2" label="回避条线" /> | |||
<el-option :value="3" label="不回避" /> | |||
</el-select> | |||
@@ -772,7 +771,7 @@ onMounted(async () => { | |||
</div> | |||
</el-form-item> | |||
<el-form-item label="回避条线"> | |||
<el-form-item v-if="false" label="回避条线"> | |||
<el-select v-model="ruleForm.expertInviteRule.avoidRule.avoidOrgIdList" multiple> | |||
<el-option | |||
v-for="(item,index) in lineListData" | |||
@@ -463,10 +463,44 @@ function refresh () { | |||
getInviteExpertList() | |||
}, 1000) | |||
} | |||
function getLzyx () { | |||
if (ruleDialogData.data?.intentionRegions && Array.isArray(ruleDialogData.data?.intentionRegions)) { | |||
return ruleDialogData.data?.intentionRegions?.map(i => { | |||
if (i && i.regionName) { | |||
return i.regionName | |||
} else { | |||
return '' | |||
} | |||
}).join('-') | |||
} else { | |||
return '-' | |||
} | |||
} | |||
function getZjjb () { | |||
if (ruleDialogData.data?.expertRegions && Array.isArray(ruleDialogData.data?.expertRegions)) { | |||
return ruleDialogData.data?.expertRegions?.map(i => { | |||
if (i && i.regionName) { | |||
return i.regionName | |||
} else { | |||
return '' | |||
} | |||
}).join('-') | |||
} else { | |||
return '-' | |||
} | |||
} | |||
// ruleDialogData.data?.expertRegions?.map(i=>i.regionName).join('-') | |||
</script> | |||
<template> | |||
<refill-dialog v-model="refillDialogData.refillDialogVisible" :detail-data="refillDialogData.inviteRuleDetail" @refresh="refresh" /> | |||
<refill-dialog | |||
v-model="refillDialogData.refillDialogVisible" | |||
:metting-detail="basicInfo" | |||
:detail-data="refillDialogData.inviteRuleDetail" | |||
@refresh="refresh" | |||
/> | |||
<el-card class="box-card"> | |||
<template #header> | |||
<div class="card-header"> | |||
@@ -565,7 +599,7 @@ function refresh () { | |||
<span>抽取情况</span> | |||
<div> | |||
<el-button | |||
v-if="basicInfo.invitedStopped||basicInfo.inviteStatus" | |||
v-if="(basicInfo.invitedStopped||basicInfo.inviteStatus)&&basicInfo.status===1" | |||
class="button" | |||
type="primary" | |||
plain | |||
@@ -751,7 +785,9 @@ function refresh () { | |||
type="primary" | |||
@click="reText(1)" | |||
>重发短信</el-button> | |||
<el-dropdown v-if="basicInfo.status===1&&basicInfo.confirmedRoster" class="ml-12" @command="handleCommand"> | |||
<!-- v-if="basicInfo.status===1&&basicInfo.confirmedRoster"--> | |||
<!-- 还没对接好先隐藏--> | |||
<el-dropdown v-if="false" class="ml-12" @command="handleCommand"> | |||
<el-button type="primary" plain> | |||
导出<el-icon class="el-icon--right"><arrow-down /></el-icon> | |||
</el-button> | |||
@@ -811,7 +847,7 @@ function refresh () { | |||
{{ ruleDialogData.data?.expertDicts?.find(i=>i.expertDict==='expert_type')?.dictCodes.join('、')||'-' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="履职意向:"> | |||
{{ ruleDialogData.data?.intentionRegions?.map(i=>i?.regionName).join('-') }} | |||
{{ getLzyx() }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="专家来源:"> | |||
{{ ruleDialogData.data?.expertTags?.find(i=>i.expertTag==='expert_source')?.tagCodes.join('、')||'-' }} | |||
@@ -832,7 +868,7 @@ function refresh () { | |||
{{ ruleDialogData.data?.expertTags?.find(i=>i.expertTag==='other')?.tagCodes.join('、')||'-' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="专家级别:"> | |||
{{ ruleDialogData.data?.expertRegions?.map(i=>i.regionName).join('-') }} | |||
{{ getZjjb() }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="邀请数量:"> | |||
{{ ruleDialogData.data.count }} | |||