Browse Source

fix: 评审会议修改

master
yxhc 18 hours ago
parent
commit
286de52a4f
8 changed files with 148 additions and 44 deletions
  1. +1
    -0
      src/App.vue
  2. +6
    -1
      src/pages/declareManage/projectDeclare/declarePage/components/basicInfo.vue
  3. +1
    -1
      src/pages/declareManage/projectDeclare/declarePage/index.vue
  4. +66
    -15
      src/pages/expertManage/reviewMeeting/addMeeting/components/RefillDialogCopy.vue
  5. +5
    -8
      src/pages/expertManage/reviewMeeting/addMeeting/components/avoidCom.vue
  6. +23
    -8
      src/pages/expertManage/reviewMeeting/addMeeting/components/ruleFormCom.vue
  7. +5
    -6
      src/pages/expertManage/reviewMeeting/addMeeting/index.vue
  8. +41
    -5
      src/pages/expertManage/reviewMeeting/meetingDetail/index.vue

+ 1
- 0
src/App.vue View File

@@ -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'
//


+ 6
- 1
src/pages/declareManage/projectDeclare/declarePage/components/basicInfo.vue View File

@@ -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 => {


+ 1
- 1
src/pages/declareManage/projectDeclare/declarePage/index.vue View File

@@ -655,7 +655,7 @@ async function reuseItem (data) {
nextTick(() => {
setData()
})
}, 200)
}, 300)
}
function changeProjectTypeResetForm () {
// nextTick(() => {


+ 66
- 15
src/pages/expertManage/reviewMeeting/addMeeting/components/RefillDialogCopy.vue View File

@@ -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)
})
}
}


+ 5
- 8
src/pages/expertManage/reviewMeeting/addMeeting/components/avoidCom.vue View File

@@ -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"


+ 23
- 8
src/pages/expertManage/reviewMeeting/addMeeting/components/ruleFormCom.vue View File

@@ -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">



+ 5
- 6
src/pages/expertManage/reviewMeeting/addMeeting/index.vue View File

@@ -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"


+ 41
- 5
src/pages/expertManage/reviewMeeting/meetingDetail/index.vue View File

@@ -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 }}


Loading…
Cancel
Save