|
|
|
|
@ -69,7 +69,10 @@
|
|
|
|
|
style="height: 100%; padding: 0 20px 0 40px" |
|
|
|
|
ref="leftContainerRef" |
|
|
|
|
> |
|
|
|
|
<div class="timer flex center" v-if="flowNode.key !== 'completion'"> |
|
|
|
|
<div |
|
|
|
|
class="timer flex center" |
|
|
|
|
v-if="flowNode.key !== 'completion'" |
|
|
|
|
> |
|
|
|
|
<div |
|
|
|
|
v-if="mail.flowRemainingTime > 0" |
|
|
|
|
style="height: 210px" |
|
|
|
|
@ -135,8 +138,9 @@
|
|
|
|
|
> |
|
|
|
|
<span> |
|
|
|
|
<span class="second mr-8">总耗时</span> |
|
|
|
|
<span style="color: var(--primary-color)">{{ getTotalTime() }}</span> |
|
|
|
|
|
|
|
|
|
<span style="color: var(--primary-color)">{{ |
|
|
|
|
getTotalTime() |
|
|
|
|
}}</span> |
|
|
|
|
</span> |
|
|
|
|
<el-button |
|
|
|
|
type="primary" |
|
|
|
|
@ -156,13 +160,26 @@
|
|
|
|
|
<span class="mr-8">{{ |
|
|
|
|
getFlowHandler(item) |
|
|
|
|
}}</span> |
|
|
|
|
<span class="primary">{{ |
|
|
|
|
<span class="primary mr-16">{{ |
|
|
|
|
item.flowAfterName |
|
|
|
|
}}</span> |
|
|
|
|
<el-tooltip |
|
|
|
|
effect="dark" |
|
|
|
|
:content="item.remark" |
|
|
|
|
placement="top-start" |
|
|
|
|
v-if="item.remark" |
|
|
|
|
> |
|
|
|
|
<span class="primary" |
|
|
|
|
>详情</span |
|
|
|
|
> |
|
|
|
|
</el-tooltip> |
|
|
|
|
</div> |
|
|
|
|
<div |
|
|
|
|
v-if="item.flowKey !== 'first_sign'" |
|
|
|
|
class="flow-time" |
|
|
|
|
:danger=" |
|
|
|
|
item.consumingTime > |
|
|
|
|
item.limitedTime |
|
|
|
|
" |
|
|
|
|
> |
|
|
|
|
<span class="second mr-8" |
|
|
|
|
>用时</span |
|
|
|
|
@ -189,7 +206,9 @@
|
|
|
|
|
<el-col :span="19" style="height: 100%"> |
|
|
|
|
<el-scrollbar max-height="100%" class="main-container"> |
|
|
|
|
<MailReturnDetail |
|
|
|
|
v-if="mailReturns.length && workType === 'processing'" |
|
|
|
|
v-if=" |
|
|
|
|
mailReturns.length && workType === 'processing' |
|
|
|
|
" |
|
|
|
|
:mailReturns="mailReturns" |
|
|
|
|
/> |
|
|
|
|
<template v-if="webComponents.indexOf('Comments') > -1"> |
|
|
|
|
@ -200,8 +219,12 @@
|
|
|
|
|
> |
|
|
|
|
<MainContactInfo :mail="mail" /> |
|
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
<template |
|
|
|
|
v-if="webComponents.indexOf('MailTypeForm') > -1 && !disabled" |
|
|
|
|
v-if=" |
|
|
|
|
webComponents.indexOf('MailTypeForm') > -1 && |
|
|
|
|
!disabled |
|
|
|
|
" |
|
|
|
|
> |
|
|
|
|
<MailTypeForm |
|
|
|
|
ref="mailTypeFormRef" |
|
|
|
|
@ -209,8 +232,39 @@
|
|
|
|
|
:mailId="mailId" |
|
|
|
|
/> |
|
|
|
|
</template> |
|
|
|
|
<div class="card-info flex mb-4" v-if="mail.firstDistributeInfo?.mainDept?.name"> |
|
|
|
|
<div class="col" style="width: 33%"> |
|
|
|
|
<label>主责单位</label> |
|
|
|
|
<span>{{ mail.firstDistributeInfo?.mainDept?.name }}</span> |
|
|
|
|
</div> |
|
|
|
|
<div class="col" style="width: 33%" v-if="mail.firstDistributeInfo?.secondDept1?.name"> |
|
|
|
|
<label>次责单位1</label> |
|
|
|
|
<span>{{ mail.firstDistributeInfo?.secondDept1?.name }}</span> |
|
|
|
|
</div> |
|
|
|
|
<div class="col" style="width: 33%" v-if="mail.firstDistributeInfo?.secondDept2?.name"> |
|
|
|
|
<label>次责单位2</label> |
|
|
|
|
<span>{{ mail.firstDistributeInfo?.secondDept2?.name }}</span> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
<div class="card-info flex" v-if="mail.secondDistributeInfo?.mainDept?.name"> |
|
|
|
|
<div class="col" style="width: 33%"> |
|
|
|
|
<label>主责单位</label> |
|
|
|
|
<span>{{ mail.secondDistributeInfo?.mainDept?.name }}</span> |
|
|
|
|
</div> |
|
|
|
|
<div class="col" style="width: 33%" v-if="mail.secondDistributeInfo?.secondDept1?.name"> |
|
|
|
|
<label>次责单位1</label> |
|
|
|
|
<span>{{ mail.secondDistributeInfo?.secondDept1?.name }}</span> |
|
|
|
|
</div> |
|
|
|
|
<div class="col" style="width: 33%" v-if="mail.secondDistributeInfo?.secondDept2?.name"> |
|
|
|
|
<label>次责单位2</label> |
|
|
|
|
<span>{{ mail.secondDistributeInfo?.secondDept2?.name }}</span> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
<template |
|
|
|
|
v-if="webComponents.indexOf('DeptSelectForm') > -1 && !disabled" |
|
|
|
|
v-if=" |
|
|
|
|
webComponents.indexOf('DeptSelectForm') > -1 && |
|
|
|
|
!disabled |
|
|
|
|
" |
|
|
|
|
> |
|
|
|
|
<DeptSelectForm |
|
|
|
|
ref="deptSelectFormRef" |
|
|
|
|
@ -220,6 +274,7 @@
|
|
|
|
|
" |
|
|
|
|
:flowKey="flowNode.key" |
|
|
|
|
:mail="mail" |
|
|
|
|
:workType="workType" |
|
|
|
|
/> |
|
|
|
|
</template> |
|
|
|
|
<ExtensionDetail |
|
|
|
|
@ -230,21 +285,22 @@
|
|
|
|
|
" |
|
|
|
|
/> |
|
|
|
|
<template |
|
|
|
|
v-if=" |
|
|
|
|
webComponents.indexOf('ThreeHandling') > -1" |
|
|
|
|
v-if="webComponents.indexOf('ThreeHandling') > -1" |
|
|
|
|
> |
|
|
|
|
<ThreeHandling |
|
|
|
|
v-model:data="requestData" |
|
|
|
|
@update:data="(data) => requestData = data" |
|
|
|
|
@update:data="(data) => (requestData = data)" |
|
|
|
|
@update="getDetail" |
|
|
|
|
:mail="mail" |
|
|
|
|
:limitedTime="flowNode.limitedTime" |
|
|
|
|
ref="threeHandlingRef" |
|
|
|
|
v-if="!disabled && (workType === 'processing' || workType === 'co_handling')" |
|
|
|
|
/> |
|
|
|
|
<ThreeHandlingDetail |
|
|
|
|
v-else |
|
|
|
|
:mail="mail" |
|
|
|
|
v-if=" |
|
|
|
|
!disabled && |
|
|
|
|
(workType === 'processing' || |
|
|
|
|
workType === 'co_handling') |
|
|
|
|
" |
|
|
|
|
/> |
|
|
|
|
<ThreeHandlingDetail v-else :mail="mail" /> |
|
|
|
|
</template> |
|
|
|
|
<template |
|
|
|
|
v-if=" |
|
|
|
|
@ -287,11 +343,11 @@
|
|
|
|
|
/> |
|
|
|
|
</template> |
|
|
|
|
<template |
|
|
|
|
v-if="webComponents.indexOf('CompletionDetail') > -1" |
|
|
|
|
v-if=" |
|
|
|
|
webComponents.indexOf('CompletionDetail') > -1 |
|
|
|
|
" |
|
|
|
|
> |
|
|
|
|
<CompletionDetail |
|
|
|
|
:mail="mail" |
|
|
|
|
/> |
|
|
|
|
<CompletionDetail :mail="mail" /> |
|
|
|
|
</template> |
|
|
|
|
<div style="height: 20px"></div> |
|
|
|
|
</el-scrollbar> |
|
|
|
|
@ -301,7 +357,13 @@
|
|
|
|
|
<footer class="flex between"> |
|
|
|
|
<div></div> |
|
|
|
|
<div v-if="!disabled && !completionBtnFlag"> |
|
|
|
|
<template v-if="workType === 'processing' || workType === 'co_handling'"> |
|
|
|
|
<template |
|
|
|
|
v-if=" |
|
|
|
|
workType === 'processing' || |
|
|
|
|
workType === 'co_handling' || |
|
|
|
|
workType === 'secondary' |
|
|
|
|
" |
|
|
|
|
> |
|
|
|
|
<template v-for="action in actions" :key="action.key"> |
|
|
|
|
<el-button |
|
|
|
|
:type="action.btnType" |
|
|
|
|
@ -313,7 +375,8 @@
|
|
|
|
|
(mail.extensionState !== 'applying' && |
|
|
|
|
mail.extensionState !== 'completion') |
|
|
|
|
" |
|
|
|
|
:disabled="loading || |
|
|
|
|
:disabled=" |
|
|
|
|
loading || |
|
|
|
|
(mail.extensionState === 'applying' && |
|
|
|
|
action.key === 'applicationCompleted') |
|
|
|
|
" |
|
|
|
|
@ -357,7 +420,11 @@
|
|
|
|
|
> |
|
|
|
|
</template> |
|
|
|
|
</div> |
|
|
|
|
<el-button type="primary" size="large" v-if="completionBtnFlag" @click="handleAction('confirmedCompletion')" |
|
|
|
|
<el-button |
|
|
|
|
type="primary" |
|
|
|
|
size="large" |
|
|
|
|
v-if="completionBtnFlag" |
|
|
|
|
@click="handleAction('confirmedCompletion')" |
|
|
|
|
>办结处理</el-button |
|
|
|
|
> |
|
|
|
|
</footer> |
|
|
|
|
@ -370,7 +437,8 @@
|
|
|
|
|
v-model:data="requestData" |
|
|
|
|
:mail="mail" |
|
|
|
|
@submit="(key) => handleAction(key)" |
|
|
|
|
@close="completeShow = false"/> |
|
|
|
|
@close="completeShow = false" |
|
|
|
|
/> |
|
|
|
|
|
|
|
|
|
<ReviewComments |
|
|
|
|
v-model="approvedShow" |
|
|
|
|
@ -568,7 +636,7 @@ watch(
|
|
|
|
|
() => props.mailId, |
|
|
|
|
(val) => { |
|
|
|
|
getDetail(); |
|
|
|
|
requestData.value = {} |
|
|
|
|
requestData.value = {}; |
|
|
|
|
} |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
@ -606,7 +674,7 @@ const countersignFormRef = ref();
|
|
|
|
|
const coHandlingRef = ref(); |
|
|
|
|
|
|
|
|
|
async function handleAction(key) { |
|
|
|
|
console.log('key', key) |
|
|
|
|
console.log("key", key); |
|
|
|
|
if (!key) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
@ -648,12 +716,11 @@ async function handleAction(key) {
|
|
|
|
|
} |
|
|
|
|
if (key !== "applyExtensionSubmit") { |
|
|
|
|
if (threeHandlingRef.value) { |
|
|
|
|
if (key == 'save') { |
|
|
|
|
if (key == "save") { |
|
|
|
|
await threeHandlingRef.value.getData(); |
|
|
|
|
} else { |
|
|
|
|
await threeHandlingRef.value.validate(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
@ -672,13 +739,18 @@ async function handleAction(key) {
|
|
|
|
|
data: requestData.value, |
|
|
|
|
}; |
|
|
|
|
loading.value = true; |
|
|
|
|
flowNext(requestBody).then(() => { |
|
|
|
|
flowNext(requestBody) |
|
|
|
|
.then(() => { |
|
|
|
|
loading.value = false; |
|
|
|
|
// 办结 会签 |
|
|
|
|
if (completionBtnFlag.value || props.workType === 'dept_countersign') { |
|
|
|
|
if ( |
|
|
|
|
completionBtnFlag.value || |
|
|
|
|
props.workType === "dept_countersign" |
|
|
|
|
) { |
|
|
|
|
emits("update"); |
|
|
|
|
feedback.msgSuccess("操作成功"); |
|
|
|
|
visible.value = false; |
|
|
|
|
return |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
if (key === "applyExtensionSubmit") { |
|
|
|
|
emits("update"); |
|
|
|
|
@ -687,7 +759,6 @@ async function handleAction(key) {
|
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
if (key === "save") { |
|
|
|
|
loading.value = false; |
|
|
|
|
messageRef.value.showMessage("保存成功"); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
@ -712,7 +783,8 @@ async function handleAction(key) {
|
|
|
|
|
feedback.msgSuccess("操作成功"); |
|
|
|
|
visible.value = false; |
|
|
|
|
} |
|
|
|
|
}).catch(() => { |
|
|
|
|
}) |
|
|
|
|
.catch(() => { |
|
|
|
|
loading.value = false; |
|
|
|
|
emits("update"); |
|
|
|
|
}); |
|
|
|
|
@ -722,10 +794,10 @@ async function handleAction(key) {
|
|
|
|
|
function handleFav() { |
|
|
|
|
if (!isFav.value) { |
|
|
|
|
isFav.value = true; |
|
|
|
|
addFav(props.mailId) |
|
|
|
|
addFav(props.mailId); |
|
|
|
|
} else { |
|
|
|
|
isFav.value = false; |
|
|
|
|
delFav(props.mailId) |
|
|
|
|
delFav(props.mailId); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -773,23 +845,29 @@ function handleExtensionApproval(returnFlag) {
|
|
|
|
|
|
|
|
|
|
function getTotalTime() { |
|
|
|
|
if (!flows.value.length) { |
|
|
|
|
return '' |
|
|
|
|
return ""; |
|
|
|
|
} |
|
|
|
|
const sum = flows.value.map(item => item.consumingTime).reduce((a, b) => a + b) |
|
|
|
|
const sum = flows.value |
|
|
|
|
.map((item) => item.consumingTime) |
|
|
|
|
.reduce((a, b) => a + b); |
|
|
|
|
return formatTimeText(sum); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function handleExtensionApprovalSubmit() { |
|
|
|
|
feedback.confirm('申请延期审批通过').then(() => { |
|
|
|
|
handleExtensionApproval(false) |
|
|
|
|
}) |
|
|
|
|
feedback.confirm("申请延期审批通过").then(() => { |
|
|
|
|
handleExtensionApproval(false); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function getFlowHandler(item) { |
|
|
|
|
if (item.handlerRoleId === 1 || item.handlerRoleId === 2 || item.handlerRoleId === 3) { |
|
|
|
|
return `${item.handlerDeptName}专班 ${item.handlerName}` |
|
|
|
|
if ( |
|
|
|
|
item.handlerRoleId === 1 || |
|
|
|
|
item.handlerRoleId === 2 || |
|
|
|
|
item.handlerRoleId === 3 |
|
|
|
|
) { |
|
|
|
|
return `${item.handlerDeptName}专班 ${item.handlerName}`; |
|
|
|
|
} |
|
|
|
|
return `${item.handlerDeptName} ${item.handlerName}` |
|
|
|
|
return `${item.handlerDeptName} ${item.handlerName}`; |
|
|
|
|
} |
|
|
|
|
</script> |
|
|
|
|
<style lang="scss" scoped> |
|
|
|
|
@ -894,6 +972,12 @@ function getFlowHandler(item) {
|
|
|
|
|
background-color: #f5f6ff; |
|
|
|
|
border-left: 2px solid #00d050; |
|
|
|
|
padding-left: 20px; |
|
|
|
|
&[danger="true"] { |
|
|
|
|
border-color: #ff0000; |
|
|
|
|
span { |
|
|
|
|
color: #ff0000; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
.flow-info { |
|
|
|
|
position: relative; |
|
|
|
|
@ -958,5 +1042,10 @@ footer {
|
|
|
|
|
--el-button-disabled-border-color: #b0b0b0; |
|
|
|
|
--el-button-disabled-text-color: #fff; |
|
|
|
|
} |
|
|
|
|
.card-info { |
|
|
|
|
background: #f4f5ff; |
|
|
|
|
border: 1px solid rgba(195, 202, 245, 1); |
|
|
|
|
padding: 12px 20px; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
</style> |