@ -9,7 +9,7 @@
< el -scrollbar max -height = " 76vh " >
< el -scrollbar max -height = " 76vh " >
< el -form
< el -form
ref = "formRef"
ref = "formRef"
: model = "model "
: model = "formData "
: label - width = "150"
: label - width = "150"
class = "form-layout"
class = "form-layout"
style = "min-height: 66vh"
style = "min-height: 66vh"
@ -23,7 +23,7 @@
< el -col :span ="12" >
< el -col :span ="12" >
< el -form -item label = "来源" prop = "sourcePath" >
< el -form -item label = "来源" prop = "sourcePath" >
< el -cascader
< el -cascader
v - model = "model .sourcePath"
v - model = "formData .sourcePath"
: options = "dict.sourceTableAndLevel"
: options = "dict.sourceTableAndLevel"
: props = "{ emitPath: true, checkStrictly: false }"
: props = "{ emitPath: true, checkStrictly: false }"
clearable
clearable
@ -38,7 +38,7 @@
< el -col :span ="12" >
< el -col :span ="12" >
< el -form -item label = "业务类别" prop = "handleMethod" >
< el -form -item label = "业务类别" prop = "handleMethod" >
< el -select
< el -select
v - model = "model .businessTypeCode"
v - model = "formData .businessTypeCode"
placeholder = "业务类别"
placeholder = "业务类别"
clearable
clearable
>
>
@ -59,14 +59,14 @@
< el -col :span ="12" >
< el -col :span ="12" >
< el -form -item label = "编号" prop = "originId" >
< el -form -item label = "编号" prop = "originId" >
< el -input
< el -input
v - model = "model .originId"
v - model = "formData .originId"
: placeholder = "model .originIdSkip ? '无' : '请输入编号'"
: placeholder = "formData .originIdSkip ? '无' : '请输入编号'"
: disabled = "mode === 'edit' || model .originIdSkip"
: disabled = "mode === 'edit' || formData .originIdSkip"
>
>
< template # append >
< template # append >
< el -checkbox
< el -checkbox
v - model = "model .originIdSkip"
v - model = "formData .originIdSkip"
@ change = "(v) => v && (model .originId = '')"
@ change = "(v) => v && (formData .originId = '')"
: disabled = "mode=== 'edit'"
: disabled = "mode=== 'edit'"
>
>
无
无
@ -79,7 +79,7 @@
< el -col :span ="12" >
< el -col :span ="12" >
< el -form -item label = "登记/受理时间" prop = "discoveryTime" >
< el -form -item label = "登记/受理时间" prop = "discoveryTime" >
< el -date -picker
< el -date -picker
v - model = "model .discoveryTime"
v - model = "formData .discoveryTime"
type = "datetime"
type = "datetime"
placeholder = "请选择"
placeholder = "请选择"
value - format = "YYYY-MM-DDTHH:mm:ss"
value - format = "YYYY-MM-DDTHH:mm:ss"
@ -95,15 +95,15 @@
< el -col :span ="12" >
< el -col :span ="12" >
< el -form -item label = "来件人姓名" prop = "responderName" >
< el -form -item label = "来件人姓名" prop = "responderName" >
< el -input
< el -input
v - model = "model .responderName"
v - model = "formData .responderName"
: placeholder = "model .responderNameSkip ? '无' : '请输入来件人姓名'"
: placeholder = "formData .responderNameSkip ? '无' : '请输入来件人姓名'"
: disabled = "model .responderNameSkip"
: disabled = "formData .responderNameSkip"
@ blur = "onAutoCheckDuplicate"
@ blur = "onAutoCheckDuplicate"
>
>
< template # append >
< template # append >
< el -checkbox
< el -checkbox
v - model = "model .responderNameSkip"
v - model = "formData .responderNameSkip"
@ change = "(v) => v && (model .responderName = '')"
@ change = "(v) => v && (formData .responderName = '')"
>
>
无
无
< / e l - c h e c k b o x >
< / e l - c h e c k b o x >
@ -116,15 +116,15 @@
< div style = "display: flex; align-items: flex-start; gap: 8px;" >
< div style = "display: flex; align-items: flex-start; gap: 8px;" >
< el -form -item label = "身份证号码" prop = "responderIdCode" style = "flex: 1; margin-bottom: 0;" >
< el -form -item label = "身份证号码" prop = "responderIdCode" style = "flex: 1; margin-bottom: 0;" >
< el -input
< el -input
v - model = "model .responderIdCode"
v - model = "formData .responderIdCode"
: placeholder = "model .responderIdCodeSkip ? '无' : '请输入身份证号码'"
: placeholder = "formData .responderIdCodeSkip ? '无' : '请输入身份证号码'"
: disabled = "model .responderIdCodeSkip"
: disabled = "formData .responderIdCodeSkip"
@ blur = "onAutoCheckDuplicate"
@ blur = "onAutoCheckDuplicate"
>
>
< template # append >
< template # append >
< el -checkbox
< el -checkbox
v - model = "model .responderIdCodeSkip"
v - model = "formData .responderIdCodeSkip"
@ change = "(v) => v && (model .responderIdCode = '')"
@ change = "(v) => v && (formData .responderIdCode = '')"
>
>
无
无
< / e l - c h e c k b o x >
< / e l - c h e c k b o x >
@ -159,15 +159,15 @@
< el -col :span ="12" >
< el -col :span ="12" >
< el -form -item label = "联系电话" prop = "responderPhone" >
< el -form -item label = "联系电话" prop = "responderPhone" >
< el -input
< el -input
v - model = "model .responderPhone"
v - model = "formData .responderPhone"
: placeholder = "model .responderPhoneSkip ? '无' : '请输入联系电话'"
: placeholder = "formData .responderPhoneSkip ? '无' : '请输入联系电话'"
: disabled = "model .responderPhoneSkip"
: disabled = "formData .responderPhoneSkip"
@ blur = "onAutoCheckDuplicate"
@ blur = "onAutoCheckDuplicate"
>
>
< template # append >
< template # append >
< el -checkbox
< el -checkbox
v - model = "model .responderPhoneSkip"
v - model = "formData .responderPhoneSkip"
@ change = "(v) => v && (model .responderPhone = '')"
@ change = "(v) => v && (formData .responderPhone = '')"
>
>
无
无
< / e l - c h e c k b o x >
< / e l - c h e c k b o x >
@ -179,9 +179,9 @@
< el -col :span ="12" >
< el -col :span ="12" >
< el -form -item label = "被投诉二级机构" prop = "secondDepartId" >
< el -form -item label = "被投诉二级机构" prop = "secondDepartId" >
< depart -tree -select
< depart -tree -select
v - model = "model .secondDepartId"
v - model = "formData .secondDepartId"
: check - strictly = "true"
: check - strictly = "true"
@ node - click = "(row) => (model .secondDepartName = row.shortName)"
@ node - click = "(row) => (formData .secondDepartName = row.shortName)"
/ >
/ >
< / e l - f o r m - i t e m >
< / e l - f o r m - i t e m >
< / e l - c o l >
< / e l - c o l >
@ -191,7 +191,7 @@
< el -row >
< el -row >
< el -col :span ="24" >
< el -col :span ="24" >
< el -form -item label = "来件内容" prop = "thingDesc" >
< el -form -item label = "来件内容" prop = "thingDesc" >
< el -input v -model = " model .thingDesc" type = "textarea" : autosize = "{ minRows: 4 }" / >
< el -input v -model = " formData .thingDesc" type = "textarea" : autosize = "{ minRows: 4 }" / >
< / e l - f o r m - i t e m >
< / e l - f o r m - i t e m >
< / e l - c o l >
< / e l - c o l >
< / e l - r o w >
< / e l - r o w >
@ -200,7 +200,7 @@
< el -row >
< el -row >
< el -col :span ="12" >
< el -col :span ="12" >
< el -form -item label = "涉嫌问题" prop = "involveProblemIdList" >
< el -form -item label = "涉嫌问题" prop = "involveProblemIdList" >
< el -select v-model ="model .involveProblemIdList" multiple clearable style="width: 100%" >
< el -select v-model ="formData .involveProblemIdList" multiple clearable style="width: 100%" >
< el -option
< el -option
v - for = "item in dict.suspectProblem"
v - for = "item in dict.suspectProblem"
: key = "item.dictValue"
: key = "item.dictValue"
@ -208,7 +208,7 @@
: label = "item.dictLabel"
: label = "item.dictLabel"
>
>
<!-- 复选框展示 -- >
<!-- 复选框展示 -- >
< el -checkbox : model -value = " ( model .involveProblemIdList | | [ ] ) .includes ( item.dictValue ) " >
< el -checkbox : model -value = " ( formData .involveProblemIdList | | [ ] ) .includes ( item.dictValue ) " >
{ { item . dictLabel } }
{ { item . dictLabel } }
< / e l - c h e c k b o x >
< / e l - c h e c k b o x >
< / e l - o p t i o n >
< / e l - o p t i o n >
@ -218,7 +218,7 @@
< el -col :span ="12" >
< el -col :span ="12" >
< el -form -item label = "是否重复件" prop = "repeatt" >
< el -form -item label = "是否重复件" prop = "repeatt" >
< el -radio -group v -model = " model .repeatt" clearable >
< el -radio -group v -model = " formData .repeatt" clearable >
< el -radio v-for ="item in dict.yesNo" :key="item.id" :label="item.dictValue" >
< el -radio v-for ="item in dict.yesNo" :key="item.id" :label="item.dictValue" >
{ { item . dictLabel } }
{ { item . dictLabel } }
< / e l - r a d i o >
< / e l - r a d i o >
@ -231,7 +231,7 @@
< el -row >
< el -row >
< el -col :span ="18" >
< el -col :span ="18" >
< el -form -item label = "标签" prop = "tags" >
< el -form -item label = "标签" prop = "tags" >
< el -checkbox -group v-model ="model .tags" >
< el -checkbox -group v-model ="formData .tags" >
< el -checkbox v-for ="item in dict.sfssTags" :key="item.id" :label="item.dictValue" >
< el -checkbox v-for ="item in dict.sfssTags" :key="item.id" :label="item.dictValue" >
{ { item . dictLabel } }
{ { item . dictLabel } }
< / e l - c h e c k b o x >
< / e l - c h e c k b o x >
@ -244,7 +244,7 @@
< el -row >
< el -row >
< el -col :span ="12" >
< el -col :span ="12" >
< el -form -item label = "办理方式" prop = "handleMethod" >
< el -form -item label = "办理方式" prop = "handleMethod" >
< el -radio -group v -model = " model .handleMethod" clearable >
< el -radio -group v -model = " formData .handleMethod" clearable >
< el -radio v-for ="item in dict.handleMethodType" :key="item.id" :label="item.dictValue" >
< el -radio v-for ="item in dict.handleMethodType" :key="item.id" :label="item.dictValue" >
{ { item . dictLabel } }
{ { item . dictLabel } }
< / e l - r a d i o >
< / e l - r a d i o >
@ -255,7 +255,7 @@
< el -form -item v-if ="mode === 'add'" label="附件" prop="thingFiles" >
< el -form -item v-if ="mode === 'add'" label="附件" prop="thingFiles" >
< file -upload
< file -upload
v - model : files = "model .thingFiles"
v - model : files = "formData .thingFiles"
tips = "为便于“办理单位”更全面了解问题详情,请上传相关附件,如现场督察、数字督察等相关照片、视频及其他佐证材料。"
tips = "为便于“办理单位”更全面了解问题详情,请上传相关附件,如现场督察、数字督察等相关照片、视频及其他佐证材料。"
/ >
/ >
< / e l - f o r m - i t e m >
< / e l - f o r m - i t e m >
@ -266,24 +266,24 @@
< h2 v-if ="mode === 'add'" > 办理单位 < / h2 >
< h2 v-if ="mode === 'add'" > 办理单位 < / h2 >
< div v-if ="mode === 'add'" class="add-negation-container" >
< div v-if ="mode === 'add'" class="add-negation-container" >
< el -form -item label = "主办层级" prop = "hostLevel" : rules = "{ required: true, message: '请选择主办层级', trigger: ['blur'] }" >
< el -form -item label = "主办层级" prop = "hostLevel" : rules = "{ required: true, message: '请选择主办层级', trigger: ['blur'] }" >
< el -select style = "width: 280px" v-model ="model .hostLevel" @change="handleChangeHostLevel" >
< el -select style = "width: 280px" v-model ="formData .hostLevel" @change="handleChangeHostLevel" >
< el -option v -for = " item in dict.hostLevel " :key ="item.id" :label ="item.dictLabel" :value ="item.dictValue" / >
< el -option v -for = " item in dict.hostLevel " :key ="item.id" :label ="item.dictLabel" :value ="item.dictValue" / >
< / e l - s e l e c t >
< / e l - s e l e c t >
< div class = "tips mt-10" >
< div class = "tips mt-10" >
< p > 如主办层级 为 市局主办 , 则由 < span : data -active = " model .hostLevel = = = HostLevel.FIRST " > 督察支队 < / span > 办理 ; < / p >
< p > 如主办层级 为 市局主办 , 则由 < span : data -active = " formData .hostLevel = = = HostLevel.FIRST " > 督察支队 < / span > 办理 ; < / p >
< p > 如主办层级为 二级机构主办 , 则由 < span : data -active = " model .hostLevel = = = HostLevel.SECOND " > 督察部门 < / span > 办理 , 可进一步下发 ; < / p >
< p > 如主办层级为 二级机构主办 , 则由 < span : data -active = " formData .hostLevel = = = HostLevel.SECOND " > 督察部门 < / span > 办理 , 可进一步下发 ; < / p >
< p > 如主办层级为 三级机构主办 , 则由 < span : data -active = " model .hostLevel = = = HostLevel.THREE " > 所队 < / span > 办理 。 < / p >
< p > 如主办层级为 三级机构主办 , 则由 < span : data -active = " formData .hostLevel = = = HostLevel.THREE " > 所队 < / span > 办理 。 < / p >
< / div >
< / div >
< / e l - f o r m - i t e m >
< / e l - f o r m - i t e m >
< el -form -item label = "指定办理单位" prop = "departId" : rules = "{ required: true, message: '请选择办理单位', trigger: ['blur'] }" >
< el -form -item label = "指定办理单位" prop = "departId" : rules = "{ required: true, message: '请选择办理单位', trigger: ['blur'] }" >
< div class = "flex gap" >
< div class = "flex gap" >
< div style = "width: 280px" >
< div style = "width: 280px" >
< template v-if ="model .hostLevel === HostLevel.THREE" >
< template v-if ="formData .hostLevel === HostLevel.THREE" >
< depart -tree -select v -model = " model .departId" v -loading = " departLoading " / >
< depart -tree -select v -model = " formData .departId" v -loading = " departLoading " / >
< / template >
< / template >
< el -tree -select v -else :data ="departs" : props = "{ label: 'shortName', value: 'id' }" node -key = " id " clearable filterable v -model = " model .departId" @node-click ="handleSelectDepart" check -strictly style = "width: 280px" v -loading = " departLoading " / >
< el -tree -select v -else :data ="departs" : props = "{ label: 'shortName', value: 'id' }" node -key = " id " clearable filterable v -model = " formData .departId" @node-click ="handleSelectDepart" check -strictly style = "width: 280px" v -loading = " departLoading " / >
< / div >
< / div >
< el -button type = "primary" @click ="handleLinkDepart" text v-if ="model .hostLevel !== HostLevel.FIRST" > 关联问题涉及单位 < / el -button >
< el -button type = "primary" @click ="handleLinkDepart" text v-if ="formData .hostLevel !== HostLevel.FIRST" > 关联问题涉及单位 < / el -button >
< / div >
< / div >
< div class = "tips mt-10" >
< div class = "tips mt-10" >
< p > 问题涉及单位 指与该问题相关的单位 ; < / p >
< p > 问题涉及单位 指与该问题相关的单位 ; < / p >
@ -302,7 +302,7 @@
< h2 v-if ="mode === 'add'" > 办理时限 < / h2 >
< h2 v-if ="mode === 'add'" > 办理时限 < / h2 >
< div v-if ="mode === 'add'" class="add-negation-container" >
< div v-if ="mode === 'add'" class="add-negation-container" >
< el -form -item label = "办理时限" prop = "timeLimit" : rules = "{ required: true, message: '请选择办理时限', trigger: ['blur'] }" >
< el -form -item label = "办理时限" prop = "timeLimit" : rules = "{ required: true, message: '请选择办理时限', trigger: ['blur'] }" >
< time -limit -select v -model = " model .timeLimit" v -model :maxSignDuration ="model .maxSignDuration" v -model :maxHandleDuration ="model .maxHandleDuration" v -model :maxExtensionDuration ="model .maxExtensionDuration" / >
< time -limit -select v -model = " formData .timeLimit" v -model :maxSignDuration ="formData .maxSignDuration" v -model :maxHandleDuration ="formData .maxHandleDuration" v -model :maxExtensionDuration ="formData .maxExtensionDuration" / >
< / e l - f o r m - i t e m >
< / e l - f o r m - i t e m >
< / div >
< / div >
@ -310,10 +310,10 @@
< h2 v-if ="mode === 'add'" > 审批流程 < / h2 >
< h2 v-if ="mode === 'add'" > 审批流程 < / h2 >
< div v-if ="mode === 'add'" class="add-negation-container" >
< div v-if ="mode === 'add'" class="add-negation-container" >
< el -form -item label = "审批流程" prop = "approvalFlow" : rules = "{ required: true, message: '请选择审批流程', trigger: ['blur'] }" >
< el -form -item label = "审批流程" prop = "approvalFlow" : rules = "{ required: true, message: '请选择审批流程', trigger: ['blur'] }" >
< el -radio -group v-model ="model .approvalFlow" v-if="userStore.user.roleCodes.includes('admin_1')" >
< el -radio -group v-model ="formData .approvalFlow" v-if="userStore.user.roleCodes.includes('admin_1')" >
< el -radio v-for ="item in dict.approvalFlow" :key="item.dictCode" :value="item.dictValue" > {{ item.dictLabel }}{{ item.remark ? ` ( $ { item.remark } ) ` : " " }} < / el -radio >
< el -radio v-for ="item in dict.approvalFlow" :key="item.dictCode" :value="item.dictValue" > {{ item.dictLabel }}{{ item.remark ? ` ( $ { item.remark } ) ` : " " }} < / el -radio >
< / e l - r a d i o - g r o u p >
< / e l - r a d i o - g r o u p >
< el -radio -group v -model = " model .approvalFlow" v-else >
< el -radio -group v -model = " formData .approvalFlow" v-else >
< el -radio value = "2" > 二级审批 ( 所队一 > 二级机构 ) < / e l - r a d i o >
< el -radio value = "2" > 二级审批 ( 所队一 > 二级机构 ) < / e l - r a d i o >
< / e l - r a d i o - g r o u p >
< / e l - r a d i o - g r o u p >
< div class = "tips mt-10" >
< div class = "tips mt-10" >
@ -339,20 +339,19 @@
v - model = "duplicateDrawerVisible"
v - model = "duplicateDrawerVisible"
: dict = "dict"
: dict = "dict"
: query = " {
: query = " {
responderIdCode : model . responderIdCode ,
responderIdCode : formData . responderIdCode ,
responderName : model . responderName ,
responderName : formData . responderName ,
responderPhone : model . responderPhone
responderPhone : formData . responderPhone
} "
} "
: requestFn = "maileRepeatt"
: requestFn = "maileRepeatt"
detailIdKey = "complaintId"
detailIdKey = "complaintId"
/ >
/ >
< / template >
< / template >
< script setup >
< script setup >
import { computed , ref , watch } from "vue" ;
import { computed , ref , watch } from "vue" ;
import { maileRepeatt , getComplaintCollectionDetail , updateComplaintCollection } from "@/api/data/complaintCollection.ts" ;
import { maileRepeatt , getComplaintCollectionDetail , updateComplaintCollection , addComplaintCollection } from "@/api/data/complaintCollection.ts" ;
import dayjs from "dayjs" ;
import dayjs from "dayjs" ;
import feedback from "@/utils/feedback.ts" ;
import feedback from "@/utils/feedback.ts" ;
import DuplicateDrawerWithDetail from "@/views/data/DuplicateDrawerWithDetail.vue" ;
import DuplicateDrawerWithDetail from "@/views/data/DuplicateDrawerWithDetail.vue" ;
@ -361,6 +360,71 @@ import {secondList, listByFirstHost} from "@/api/system/depart";
import useCatchStore from "@/stores/modules/catch" ;
import useCatchStore from "@/stores/modules/catch" ;
const catchStore = useCatchStore ( ) ;
const catchStore = useCatchStore ( ) ;
/ / 内 部 表 单 数 据
const formData = ref ( createEmptyForm ( ) ) ;
function createEmptyForm ( ) {
return {
/ / 来 源
sourcePath : [ ] ,
sourceTable : '' ,
sourceTableSubOne : '' ,
/ / 编 号
originId : '' ,
originIdSkip : false ,
/ / 受 理 时 间
discoveryTime : '' ,
/ / 来 件 人
responderName : '' ,
responderNameSkip : false ,
responderIdCode : '' ,
responderIdCodeSkip : false ,
responderPhone : '' ,
responderPhoneSkip : false ,
/ / 被 投 诉 机 构
secondDepartId : '' ,
secondDepartName : '' ,
/ / 内 容
thingDesc : '' ,
involveProblemIdList : [ ] ,
repeatt : '' ,
handleMethod : '' ,
/ / 标 签
tags : [ ] ,
businessTypeCode : '' ,
businessTypeName : '' ,
/ / 附 件
thingFiles : [ ] ,
/ / 办 理 信 息
hostLevel : '3' ,
departId : '' ,
departName : '' ,
timeLimit : '' ,
maxSignDuration : null ,
maxHandleDuration : null ,
maxExtensionDuration : null ,
approvalFlow : '' ,
/ / 编 辑 时 需 要 的 i d
id : '' ,
negativeId : '' ,
} ;
}
/ / 内 部 校 验 规 则
const rules = {
sourcePath : [
{ required : true , message : "请选择来源(一级/二级)" , trigger : "change" } ,
] ,
discoveryTime : [ { required : true , message : '请选择受理时间' , trigger : 'change' } ] ,
secondDepartId : [ { required : true , message : '请选择被投诉二级机构' , trigger : 'change' } ] ,
thingDesc : [ { required : true , message : '请输入来件内容' , trigger : 'blur' } ] ,
involveProblemIdList : [ { required : true , message : '请选择涉嫌问题' , trigger : 'change' } ] ,
repeatt : [ { required : true , message : '请选择是否重复件' , trigger : 'change' } ] ,
hostLevel : [ { required : true , message : '请选择主办层级' , trigger : 'change' } ] ,
departId : [ { required : true , message : '请选择办理单位' , trigger : 'change' } ] ,
timeLimit : [ { required : true , message : '请选择办理时限' , trigger : 'change' } ] ,
approvalFlow : [ { required : true , message : '请选择审批流程' , trigger : 'change' } ] ,
} ;
/ / 1 . 用 c o m p u t e d 包 装 s t o r e D i c t
/ / 1 . 用 c o m p u t e d 包 装 s t o r e D i c t
const storeDict = computed ( ( ) =>
const storeDict = computed ( ( ) =>
@ -427,14 +491,12 @@ const userStore = useUserStore();
const props = defineProps ( {
const props = defineProps ( {
modelValue : Boolean ,
modelValue : Boolean ,
mode : { type : String , default : "add" } ,
mode : { type : String , default : "add" } ,
model : { type : Object , required : true } ,
rules : { type : Object , required : true } ,
id : { type : String , default : "" } ,
id : { type : String , default : "" } ,
loading : { type : Boolean , default : false } ,
negativeId : { type : String , default : "" } ,
negativeId : { type : String , default : "" } ,
loading : { type : Boolean , default : false } ,
} ) ;
} ) ;
const emit = defineEmits ( [ "update:modelValue" , "submit" , " updateSuccess" ] ) ;
const emit = defineEmits ( [ "update:modelValue" , "updateSuccess" ] ) ;
const formRef = ref ( ) ;
const formRef = ref ( ) ;
const submitLoading = ref ( false ) ;
const submitLoading = ref ( false ) ;
@ -448,10 +510,8 @@ watch(
( ) => visibleProxy . value ,
( ) => visibleProxy . value ,
async ( v ) => {
async ( v ) => {
if ( v ) {
if ( v ) {
props . model . originIdSkip = false
/ / 重 置 表 单
props . model . responderNameSkip = false
formData . value = createEmptyForm ( ) ;
props . model . responderIdCodeSkip = false
props . model . responderPhoneSkip = false
duplicateDrawerVisible . value = false
duplicateDrawerVisible . value = false
duplicateLoading . value = false
duplicateLoading . value = false
@ -468,35 +528,34 @@ watch(
const res = await getComplaintCollectionDetail ( { id : props . id , negativeId : props . negativeId } ) ;
const res = await getComplaintCollectionDetail ( { id : props . id , negativeId : props . negativeId } ) ;
const r = res ? . data ? ? res ? ? { } ;
const r = res ? . data ? ? res ? ? { } ;
props . model . id = r . id ? ? '' ;
formData . value . id = r . id ? ? '' ;
props . model . sourceTable = r . sourceTable ? ? '' ;
formData . value . sourceTable = r . sourceTable ? ? '' ;
props . model . sourceTableSubOne = r . sourceTableSubOne ? ? '' ;
formData . value . sourceTableSubOne = r . sourceTableSubOne ? ? '' ;
props . model . sourcePath = [ r . sourceTable , r . sourceTableSubOne ] . filter ( Boolean ) ;
formData . value . sourcePath = [ r . sourceTable , r . sourceTableSubOne ] . filter ( Boolean ) ;
props . model . originId = r . originId ? ? '' ;
formData . value . originId = r . originId ? ? '' ;
props . model . discoveryTime = r . discoveryTime ? ? '' ;
formData . value . discoveryTime = r . discoveryTime ? ? '' ;
props . model . responderName = r . responderName ? ? '' ;
formData . value . responderName = r . responderName ? ? '' ;
props . model . responderIdCode = r . responderIdCode ? ? '' ;
formData . value . responderIdCode = r . responderIdCode ? ? '' ;
props . model . responderPhone = r . responderPhone ? ? '' ;
formData . value . responderPhone = r . responderPhone ? ? '' ;
props . model . secondDepartId = r . secondDepartId ? ? '' ;
formData . value . secondDepartId = r . secondDepartId ? ? '' ;
props . model . secondDepartName = r . secondDepartName ? ? '' ;
formData . value . secondDepartName = r . secondDepartName ? ? '' ;
props . model . thingDesc = r . thingDesc ? ? '' ;
formData . value . thingDesc = r . thingDesc ? ? '' ;
props . model . repeatt = r . repeatt ? ? '' ;
formData . value . repeatt = r . repeatt ? ? '' ;
props . model . leadApproval = r . leadApproval ? ? '' ;
formData . value . handleMethod = r . handleMethod ? ? '' ;
props . model . handleMethod = r . handleMethod ? ? '' ;
formData . value . involveProblemIdList = splitToArray ( r . involveProblemIdList ? ? r . involveProblem ) ;
props . model . involveProblemIdList = splitToArray ( r . involveProblemIdList ? ? r . involveProblem ) ;
formData . value . tags = splitToArray ( r . tags ? ? r . tag ) ;
props . model . tags = splitToArray ( r . tags ? ? r . tag ) ;
formData . value . businessTypeName = r . businessTypeName ? ? '' ;
props . model . businessTypeName = r . businessTypeName ? ? '' ;
formData . value . businessTypeCode = r . businessTypeCode ? ? '' ;
props . model . businessTypeCode = r . businessTypeCode ? ? '' ;
formData . value . thingFiles = normalizeThingFiles ( r . thingFiles ) ;
props . model . thingFiles = normalizeThingFiles ( r . thingFiles ) ;
formData . value . hostLevel = r . hostLevel ? ? '3' ;
props . model . hostLevel = r . hostLevel ? ? '3' ;
formData . value . departId = r . departId ? ? '' ;
props . model . departId = r . departId ? ? '' ;
formData . value . departName = r . departName ? ? '' ;
props . model . departName = r . departName ? ? '' ;
formData . value . timeLimit = r . timeLimit ? ? '' ;
props . model . timeLimit = r . timeLimit ? ? '' ;
formData . value . maxSignDuration = r . maxSignDuration ? ? null ;
props . model . maxSignDuration = r . maxSignDuration ? ? null ;
formData . value . maxHandleDuration = r . maxHandleDuration ? ? null ;
props . model . maxHandleDuration = r . maxHandleDuration ? ? null ;
formData . value . maxExtensionDuration = r . maxExtensionDuration ? ? null ;
props . model . maxExtensionDuration = r . maxExtensionDuration ? ? null ;
formData . value . approvalFlow = r . approvalFlow ? ? '' ;
props . model . approvalFlow = r . approvalFlow ? ? '' ;
formData . value . negativeId = r . negativeId ? ? '' ;
props . model . negativeId = r . negativeId ? ? '' ;
} catch ( e ) {
} catch ( e ) {
console . error ( "获取详情失败" , e ) ;
console . error ( "获取详情失败" , e ) ;
feedback . notifyError ( "获取数据失败,请重试" ) ;
feedback . notifyError ( "获取数据失败,请重试" ) ;
@ -508,7 +567,7 @@ watch(
) ;
) ;
watch (
watch (
( ) => props . model . hostLevel ,
( ) => formData . value . hostLevel ,
( ) => {
( ) => {
getDeparts ( ) ;
getDeparts ( ) ;
}
}
@ -517,12 +576,12 @@ watch(
const departs = ref ( [ ] ) ;
const departs = ref ( [ ] ) ;
const departLoading = ref ( false ) ;
const departLoading = ref ( false ) ;
async function getDeparts ( ) {
async function getDeparts ( ) {
if ( ! props . model . hostLevel ) return ;
if ( ! formData . value . hostLevel ) return ;
departLoading . value = true ;
departLoading . value = true ;
try {
try {
if ( props . model . hostLevel === HostLevel . FIRST ) {
if ( formData . value . hostLevel === HostLevel . FIRST ) {
departs . value = await listByFirstHost ( ) ;
departs . value = await listByFirstHost ( ) ;
} else if ( props . model . hostLevel === HostLevel . SECOND ) {
} else if ( formData . value . hostLevel === HostLevel . SECOND ) {
departs . value = await secondList ( ) ;
departs . value = await secondList ( ) ;
} else {
} else {
departs . value = [ ] ;
departs . value = [ ] ;
@ -535,44 +594,44 @@ async function getDeparts() {
}
}
function handleSelectDepart ( row ) {
function handleSelectDepart ( row ) {
props . model . departName = row . shortName ;
formData . value . departName = row . shortName ;
}
}
function handleLinkDepart ( ) {
function handleLinkDepart ( ) {
if ( props . model . hostLevel === HostLevel . SECOND ) {
if ( formData . value . hostLevel === HostLevel . SECOND ) {
feedback . msgWarning ( "当前选择二级机构主办,指定办理单位请选择二级机构!" ) ;
feedback . msgWarning ( "当前选择二级机构主办,指定办理单位请选择二级机构!" ) ;
return ;
return ;
}
}
props . model . departId = props . model . secondDepartId ;
formData . value . departId = formData . value . secondDepartId ;
props . model . departName = props . model . secondDepartName ;
formData . value . departName = formData . value . secondDepartName ;
}
}
function handleChangeHostLevel ( val ) {
function handleChangeHostLevel ( val ) {
if ( val === HostLevel . FIRST ) {
if ( val === HostLevel . FIRST ) {
props . model . departId = "" ;
formData . value . departId = "" ;
}
}
if ( val === HostLevel . SECOND ) {
if ( val === HostLevel . SECOND ) {
props . model . approvalFlow = "3" ;
formData . value . approvalFlow = "3" ;
}
}
}
}
watch (
watch (
( ) => props . model . sourcePath ,
( ) => formData . value . sourcePath ,
( path ) => {
( path ) => {
if ( ! path || path . length === 0 ) return ;
if ( ! path || path . length === 0 ) return ;
props . model . sourceTable = ( path && path [ 0 ] ) || "" ;
formData . value . sourceTable = ( path && path [ 0 ] ) || "" ;
props . model . sourceTableSubOne = ( path && path [ 1 ] ) || "" ;
formData . value . sourceTableSubOne = ( path && path [ 1 ] ) || "" ;
} ,
} ,
{ deep : true }
{ deep : true }
) ;
) ;
function fillFiledName ( ) {
function fillFiledName ( ) {
const code = props . model . businessTypeCode ;
const code = formData . value . businessTypeCode ;
const hit = dict . value ? . businessType ? . find ( / / 添 加 可 选 链
const hit = dict . value ? . businessType ? . find (
( d ) => String ( d . dictValue ) === String ( code )
( d ) => String ( d . dictValue ) === String ( code )
) ;
) ;
props . model . businessTypeName = hit ? . dictLabel || "" ;
formData . value . businessTypeName = hit ? . dictLabel || "" ;
}
}
function splitToArray ( val ) {
function splitToArray ( val ) {
@ -606,41 +665,26 @@ function normalizeThingFiles(val) {
async function onSubmit ( ) {
async function onSubmit ( ) {
fillFiledName ( ) ;
fillFiledName ( ) ;
/ / 添 加 模 式 : 保 持 原 样 , e m i t 事 件 让 父 组 件 处 理
/ / 添 加 模 式 : 内 部 调 用 A P I
if ( props . mode === 'add' ) {
if ( props . mode === 'add' ) {
emit ( "submit" ) ;
submitLoading . value = true ;
try {
await addComplaintCollection ( { ... formData . value } ) ;
feedback . msgSuccess ( "添加成功" ) ;
visibleProxy . value = false ;
emit ( "updateSuccess" ) ;
} catch ( e ) {
console . error ( "添加失败" , e ) ;
} finally {
submitLoading . value = false ;
}
return ;
return ;
}
}
/ / 修 改 模 式 : 内 部 处 理 A P I 调 用
/ / 修 改 模 式 : 内 部 处 理 A P I 调 用
submitLoading . value = true ;
submitLoading . value = true ;
try {
try {
const body = {
await updateComplaintCollection ( { ... formData . value } ) ;
id : props . model . id ,
sourceTable : props . model . sourceTable ,
sourceTableSubOne : props . model . sourceTableSubOne ,
originId : props . model . originId ,
originIdSkip : props . model . originIdSkip ,
discoveryTime : props . model . discoveryTime ,
responderName : props . model . responderName ,
responderNameSkip : props . model . responderNameSkip ,
responderIdCode : props . model . responderIdCode ,
responderIdCodeSkip : props . model . responderIdCodeSkip ,
responderPhone : props . model . responderPhone ,
responderPhoneSkip : props . model . responderPhoneSkip ,
secondDepartId : props . model . secondDepartId ,
secondDepartName : props . model . secondDepartName ,
thingDesc : props . model . thingDesc ,
repeatt : props . model . repeatt ,
handleMethod : props . model . handleMethod ,
involveProblemIdList : props . model . involveProblemIdList || [ ] ,
tags : props . model . tags || [ ] ,
businessTypeCode : props . model . businessTypeCode ,
businessTypeName : props . model . businessTypeName ,
negativeId : props . model . negativeId
} ;
await updateComplaintCollection ( body ) ;
feedback . msgSuccess ( "修改成功" ) ;
feedback . msgSuccess ( "修改成功" ) ;
visibleProxy . value = false ;
visibleProxy . value = false ;
emit ( "updateSuccess" ) ;
emit ( "updateSuccess" ) ;
@ -667,9 +711,9 @@ const duplicateHintVisible = ref(false)
const fetchDuplicate = async ( ) => {
const fetchDuplicate = async ( ) => {
const body = {
const body = {
responderIdCode : props . model . responderIdCode ,
responderIdCode : formData . value . responderIdCode ,
responderName : props . model . responderName ,
responderName : formData . value . responderName ,
responderPhone : props . model . responderPhone ,
responderPhone : formData . value . responderPhone ,
}
}
const res = await maileRepeatt ( body )
const res = await maileRepeatt ( body )
@ -677,7 +721,7 @@ const fetchDuplicate = async () => {
}
}
const onAutoCheckDuplicate = async ( ) => {
const onAutoCheckDuplicate = async ( ) => {
const { responderIdCode , responderName , responderPhone } = props . model
const { responderIdCode , responderName , responderPhone } = formData . value
if ( ! responderIdCode && ! responderName && ! responderPhone ) {
if ( ! responderIdCode && ! responderName && ! responderPhone ) {
duplicateCount . value = 0
duplicateCount . value = 0