Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
csbr-daop
/
fe-data-trusted-space
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
06460e78
authored
2025-02-25 15:00:12 +0800
by
lihua
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
fix产品上架
1 parent
22056987
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
742 additions
and
495 deletions
src/components/ApprovalProcess/src/ApprovalProcess.vue
src/components/Form/index.vue
src/views/data_asset/registerCatalogDetail.vue
src/views/data_asset/registerDetail.vue
src/views/data_product/productListing.vue
src/views/data_product/productListingDetail.vue
src/components/ApprovalProcess/src/ApprovalProcess.vue
View file @
06460e7
<
script
setup
lang=
"tsx
"
>
<
script
lang=
"ts"
setup
name=
"ApprovalProcess
"
>
import
LookBpmn
from
"./components/LookBpmn.vue"
;
import
useProcessStore
from
'@/store/modules/process'
import
{
cloneDeep
}
from
'lodash-es'
;
...
...
@@ -14,6 +14,9 @@ const props = defineProps({
default
:
''
},
});
const
fullscreenLoading
=
ref
(
false
);
const
tableData
=
ref
<
any
>
([])
const
lookBpmnRef
=
ref
()
// const contentRef = ref();
...
...
@@ -23,7 +26,9 @@ const renderProcessNodes = () => {
deploymentId
:
props
.
deploymentId
||
null
,
processInstanceId
:
props
.
processInstanceId
||
null
,
};
fullscreenLoading
.
value
=
true
;
getProcessNodesPromise
(
param
).
then
((
res
:
any
)
=>
{
fullscreenLoading
.
value
=
false
;
if
(
res
.
code
===
"00000"
)
{
let
data
=
res
.
data
;
if
(
data
)
{
...
...
@@ -151,19 +156,26 @@ const getSpecialEventUserTaskList = () => {
lookBpmnRef
.
value
.
getDetailData
(
props
.
deploymentId
)
};
watch
(()
=>
props
.
processInstanceId
,
()
=>
{
if
(
!
props
.
processInstanceId
)
{
return
;
}
renderProcessNodes
();
},
{
immediate
:
true
})
onBeforeRouteLeave
((
to
,
from
)
=>
{
processStore
.
clearStore
()
})
onMounted
(()
=>
{
renderProcessNodes
()
});
defineExpose
({
renderProcessNodes
})
</
script
>
<
template
>
<div>
<div
v-loading=
"fullscreenLoading"
>
<!--
<Table
:columns=
"columns"
:data=
"tableData"
:border=
"false"
></Table>
-->
<el-table
tooltip-effect=
"light"
:data=
"tableData"
:border=
"false"
>
<el-table-column
type=
"index"
label=
"节点"
:width=
"140"
align=
"left"
>
...
...
src/components/Form/index.vue
View file @
06460e7
...
...
@@ -1401,40 +1401,6 @@ const panelChange = (scope, row) => {
</
template
>
<
template
#
file=
"{ file }"
>
<div
class=
"file-operate"
>
<!--
<template
v-if=
"file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'xls' || file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'xlsx'"
>
<img
class=
"file-img"
src=
"../../assets/images/excel.png"
/>
</
template
>
<
template
v-else-if=
"file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'doc' || file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'docx'"
>
<img
class=
"file-img"
src=
"../../assets/images/word.png"
/>
</
template
>
<
template
v-else-if=
"file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'zip'"
>
<img
class=
"file-img"
src=
"../../assets/images/zip.png"
/>
</
template
>
<
template
v-else-if=
"file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'rar'"
>
<img
class=
"file-img"
src=
"../../assets/images/RAR.png"
/>
</
template
>
<
template
v-else-if=
"file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'pdf'"
>
<img
class=
"file-img"
src=
"../../assets/images/PDF.png"
/>
</
template
>
<
template
v-else-if=
"file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'png'"
>
<img
class=
"file-img"
src=
"../../assets/images/png.png"
/>
</
template
>
<
template
v-else-if=
"file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'jpg' || file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'jpeg'"
>
<img
class=
"file-img"
src=
"../../assets/images/jpg.png"
/>
</
template
>
<div
class=
"file-name"
>
<ellipsis-tooltip
:content=
"file.name"
class-name=
"w100f"
:refName=
"'tooltipOver' + file.name"
></ellipsis-tooltip>
</div>
<div
:style=
"{ right: '72px' }"
class=
"file-preview"
v-if=
"file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'pdf' || file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'png' || file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'jpg' || file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'jpeg'"
@
click=
"onUploadFilePreview(file, item)"
>
查看
</div>
<div
:style=
"{ right: '36px' }"
class=
"file-preview"
@
click=
"onUploadFileDownload(file, item)"
>
下载
</div>
<div
v-if=
"!item.disabled"
:style=
"{ right: 0 }"
class=
"file-preview"
@
click=
"handleUploadFileRemove(file, item)"
>
删除
</div>
-->
<template
v-if=
"file?.name?.substring(file.name.lastIndexOf('.') + 1).toLowerCase() === 'xls' || file?.name?.substring(file.name.lastIndexOf('.') + 1).toLowerCase() === 'xlsx'"
>
<img
class=
"file-img"
src=
"../../assets/images/excel.png"
/>
...
...
src/views/data_asset/registerCatalogDetail.vue
View file @
06460e7
...
...
@@ -282,6 +282,7 @@ const btnClick = (btn) => {
if (res.data) {
ElMessage.success('该审批流程撤销成功!');
getDetailInfo();
approvalProcessRef.value?.renderProcessNodes();
} else {
ElMessage.error('该审批流程撤销失败!');
}
...
...
@@ -617,6 +618,7 @@ const passDialogInputChange = (val, item, inlineValue) => {
}
}
const
approvalProcessRef
=
ref
();
const
submitPromise
:
any
=
ref
(
null
);
...
...
@@ -641,6 +643,7 @@ const passDialogBtnClick = (btn, info) => {
ElMessage
.
success
(
'审批成功'
);
passDialogInfo
.
value
.
visible
=
false
;
getDetailInfo
();
approvalProcessRef
.
value
?.
renderProcessNodes
();
}
else
{
ElMessage
.
error
(
'审批失败'
);
}
...
...
@@ -676,6 +679,7 @@ const passDialogBtnClick = (btn, info) => {
ElMessage
.
success
(
'审批成功'
);
passDialogInfo
.
value
.
visible
=
false
;
getDetailInfo
();
approvalProcessRef
.
value
?.
renderProcessNodes
();
}
else
{
ElMessage
.
error
(
'审批失败'
);
}
...
...
@@ -708,6 +712,7 @@ const passDialogBtnClick = (btn, info) => {
ElMessage
.
success
(
'审批成功'
);
passDialogInfo
.
value
.
visible
=
false
;
getDetailInfo
();
approvalProcessRef
.
value
?.
renderProcessNodes
();
}
else
{
ElMessage
.
error
(
'审批失败'
);
}
...
...
@@ -778,6 +783,7 @@ const rejectDialogBtnClick = (btn, info) => {
ElMessage
.
success
(
'驳回成功'
);
rejectDialogInfo
.
value
.
visible
=
false
;
getDetailInfo
();
approvalProcessRef
.
value
?.
renderProcessNodes
();
}
else
{
ElMessage
.
error
(
'驳回失败'
);
}
...
...
@@ -843,6 +849,7 @@ const passCommonDialogBtnClick = (btn, info) => {
ElMessage
.
success
(
'驳回成功'
);
passCommonDialogInfo
.
value
.
visible
=
false
;
getDetailInfo
();
approvalProcessRef
.
value
?.
renderProcessNodes
();
}
else
{
ElMessage
.
error
(
'驳回失败'
);
}
...
...
@@ -1148,7 +1155,7 @@ const handleClick = () => {
<ContentWrap
v-if=
"route.query.type == 'qualityEvaluate' || route.query.type == 'costAssess'"
id=
"id-approveInfo"
title=
"审批信息"
description=
""
style=
"margin: 16px 16px 16px"
>
<ApprovalProcess
v-if=
"deploymentId"
:deploymentId=
"deploymentId"
:processInstanceId=
"processInstanceId"
>
<ApprovalProcess
ref=
"approvalProcessRef"
v-if=
"deploymentId"
:deploymentId=
"deploymentId"
:processInstanceId=
"processInstanceId"
>
</ApprovalProcess>
</ContentWrap>
</div>
...
...
src/views/data_asset/registerDetail.vue
View file @
06460e7
...
...
@@ -496,6 +496,7 @@ const approveTableInfo: any = ref({
show
:
false
}
});
const
approvalProcessRef
=
ref
();
const
deploymentId
=
ref
(
''
);
const
processInstanceId
=
ref
(
''
);
const
tenantDetail
:
any
=
ref
({});
...
...
@@ -987,6 +988,7 @@ const passDialogBtnClick = (btn, info) => {
ElMessage
.
success
(
'审批成功'
);
passDialogInfo
.
value
.
visible
=
false
;
getDetailInfo
();
approvalProcessRef
.
value
?.
renderProcessNodes
();
}
else
{
ElMessage
.
error
(
'审批失败'
);
}
...
...
@@ -1020,6 +1022,7 @@ const passDialogBtnClick = (btn, info) => {
ElMessage
.
success
(
'审批成功'
);
passDialogInfo
.
value
.
visible
=
false
;
getDetailInfo
();
approvalProcessRef
.
value
?.
renderProcessNodes
();
}
else
{
ElMessage
.
error
(
'审批失败'
);
}
...
...
@@ -1052,6 +1055,7 @@ const passDialogBtnClick = (btn, info) => {
ElMessage
.
success
(
'审批成功'
);
passDialogInfo
.
value
.
visible
=
false
;
getDetailInfo
();
approvalProcessRef
.
value
?.
renderProcessNodes
();
}
else
{
ElMessage
.
error
(
'审批失败'
);
}
...
...
@@ -1075,6 +1079,7 @@ const passDialogBtnClick = (btn, info) => {
ElMessage
.
success
(
'该资产发证确认成功'
);
passDialogInfo
.
value
.
visible
=
false
;
getDetailInfo
();
approvalProcessRef
.
value
?.
renderProcessNodes
();
}
else
{
ElMessage
.
error
(
res
.
msg
);
}
...
...
@@ -1142,6 +1147,7 @@ const rejectDialogBtnClick = (btn, info) => {
ElMessage
.
success
(
'驳回成功'
);
rejectDialogInfo
.
value
.
visible
=
false
;
getDetailInfo
();
approvalProcessRef
.
value
?.
renderProcessNodes
();
}
else
{
ElMessage
.
error
(
'驳回失败'
);
}
...
...
@@ -1225,6 +1231,7 @@ const passCommonDialogBtnClick = (btn, info) => {
ElMessage
.
success
(
'驳回成功'
);
passCommonDialogInfo
.
value
.
visible
=
false
;
getDetailInfo
();
approvalProcessRef
.
value
?.
renderProcessNodes
();
}
else
{
ElMessage
.
error
(
'驳回失败'
);
}
...
...
@@ -1909,7 +1916,7 @@ const passCommonDialogBtnClick = (btn, info) => {
<ContentWrap id="
id
-
approveInfo
" title="
审批信息
" expandSwicth style="
margin
-
top
:
15
px
"
:isExpand="
approveInfoExpand
" @expand="
(
v
)
=>
approveInfoExpand
=
v
" v-if="
route
.
query
.
type
!=
'certificate'
">
<!-- <Table :tableInfo="
approveTableInfo
" /> -->
<ApprovalProcess v-if="
deploymentId
" :deploymentId="
deploymentId
" :processInstanceId="
processInstanceId
">
<ApprovalProcess
ref="
approvalProcessRef
"
v-if="
deploymentId
" :deploymentId="
deploymentId
" :processInstanceId="
processInstanceId
">
</ApprovalProcess>
</ContentWrap>
<ContentWrap id="
id
-
certificate
" v-if="
tabsInfo
.
tabs
.
find
(
t
=>
t
.
name
==
'certificate'
)
" title="
证件信息
"
...
...
src/views/data_product/productListing.vue
View file @
06460e7
...
...
@@ -9,7 +9,7 @@ import useUserStore from "@/store/modules/user";
import
{
ElMessage
,
ElMessageBox
}
from
"element-plus"
;
import
useDataAssetStore
from
"@/store/modules/dataAsset"
;
import
{
getListingList
,
listingDelete
,
listingUpdateStatus
,
filterVal
,
getParamsDataList
,
getListingCount
,
productRejectFlowData
,
listingUpdateGateway
,
listingSave
,
listingUpdate
}
from
"@/api/modules/dataProduct"
;
import
{
getListingList
,
listingDelete
,
listingUpdateStatus
,
getListingCount
,
productRejectFlowData
}
from
"@/api/modules/dataProduct"
;
import
{
TableColumnWidth
}
from
'@/utils/enum'
;
import
TableTools
from
"@/components/Tools/table_tools.vue"
;
...
...
@@ -20,7 +20,7 @@ import {
changeNum
,
}
from
"@/utils/common"
;
import
{
chunk
}
from
"@/api/modules/common"
;
import
{
passFlowData
,
rejectFlowData
,
revokeFlowData
}
from
"@/api/modules/workFlowService"
;
import
{
passFlowData
,
rejectFlowData
,
revokeFlowData
,
isMyFirstNode
}
from
"@/api/modules/workFlowService"
;
const
{
proxy
}
=
getCurrentInstance
()
as
any
;
const
router
=
useRouter
();
...
...
@@ -165,7 +165,7 @@ const tableInfo = ref({
if
(
approveVO
&&
approveVO
.
approveState
==
'A'
&&
staffGuid
==
currentStaffGuid
)
{
isShowCancel
=
true
;
}
if
(
bizApproveState
===
'Y'
)
{
if
(
bizApproveState
===
'Y'
&&
staffGuid
==
currentStaffGuid
)
{
if
(
row
.
listingStatus
===
'Y'
)
{
list
.
push
({
label
:
"下架"
,
value
:
"down"
});
}
...
...
@@ -305,9 +305,14 @@ const tableSwitchChange = (val, scope, field) => {
})
})
}
let
getFirstNodePromise
:
any
=
ref
({});
let
getFirstNodePromise1
:
any
=
ref
({});
const
approveSuggest
=
ref
();
const
dialogTitle
=
ref
(
'通过流程'
);
const
dialogVisible
=
ref
(
false
);
const
dialogBtnLoading
=
ref
(
false
);
//弹窗类型
const
approveType
=
ref
();
const
tableBtnClick
=
(
scope
,
btn
)
=>
{
...
...
@@ -380,9 +385,8 @@ const tableBtnClick = (scope, btn) => {
revokeFlowData
({
guid
:
row
.
approveVO
.
approveGuid
,
flowType
:
row
.
approveVO
.
flowType
,
approveStaffGuid
:
userData
.
staffGuid
,
serviceTenantGuid
:
row
.
tenantGuid
}).
then
((
res
:
any
)
=>
{
approveStaffGuid
:
userData
.
staffGuid
},
row
.
tenantGuid
).
then
((
res
:
any
)
=>
{
if
(
res
.
code
==
'00000'
)
{
ElMessage
.
success
(
'撤销成功!'
)
getTableData
();
...
...
@@ -395,118 +399,67 @@ const tableBtnClick = (scope, btn) => {
}
if
(
type
==
'pass'
)
{
approveSuggest
.
value
=
''
;
dynamicPlaceholder
.
value
=
'请填写通过理由'
;
if
(
listingFormRef
.
value
)
{
clearFormValues
(
listingFormRef
.
value
.
formInline
);
listingFormRef
.
value
.
ruleFormRef
.
clearValidate
(
formInfo
.
value
.
items
.
map
(
item
=>
item
.
field
))
listingFormRef
.
value
.
ruleFormRef
.
resetFields
(
formInfo
.
value
.
items
.
map
(
item
=>
item
.
field
))
if
(
getFirstNodePromise
.
value
[
row
.
guid
])
{
return
;
}
getFirstNodePromise
.
value
[
row
.
guid
]
=
isMyFirstNode
({
deploymentId
:
row
.
approveVO
.
camundaDeploymentId
,
processInstanceId
:
row
.
approveVO
.
camundaInstanceId
,
staffGuid
:
userData
.
staffGuid
}).
then
((
res
:
any
)
=>
{
getFirstNodePromise
.
value
[
row
.
guid
]
=
null
;
if
(
res
?.
code
==
proxy
.
$passCode
)
{
if
(
res
.
data
)
{
approveSuggest
.
value
=
''
;
dynamicPlaceholder
.
value
=
'请填写通过理由(选填)'
;
if
(
listingFormRef
.
value
)
{
clearFormValues
(
listingFormRef
.
value
.
formInline
);
listingFormRef
.
value
.
ruleFormRef
.
clearValidate
(
formInfo
.
value
.
items
.
map
(
item
=>
item
.
field
))
listingFormRef
.
value
.
ruleFormRef
.
resetFields
(
formInfo
.
value
.
items
.
map
(
item
=>
item
.
field
))
}
approveType
.
value
=
'pass'
;
dialogTitle
.
value
=
'通过流程'
dialogVisible
.
value
=
true
;
approveType
.
value
=
'pass'
;
dialogTitle
.
value
=
'通过流程'
dialogVisible
.
value
=
true
;
}
else
{
passCommonDialogInfo
.
value
.
visible
=
true
;
}
}
else
{
proxy
.
$ElMessage
.
error
(
res
.
msg
);
}
})
}
if
(
type
==
'reject'
)
{
approveSuggest
.
value
=
''
;
dynamicPlaceholder
.
value
=
'请填写驳回理由(必填)'
;
if
(
listingFormRef
.
value
)
{
clearFormValues
(
listingFormRef
.
value
.
formInline
);
listingFormRef
.
value
.
ruleFormRef
.
clearValidate
(
formInfo
.
value
.
items
.
map
(
item
=>
item
.
field
))
listingFormRef
.
value
.
ruleFormRef
.
resetFields
(
formInfo
.
value
.
items
.
map
(
item
=>
item
.
field
))
if
(
getFirstNodePromise1
.
value
[
row
.
guid
])
{
return
;
}
approveType
.
value
=
'reject'
;
dialogTitle
.
value
=
'驳回流程'
dialogVisible
.
value
=
true
;
getFirstNodePromise1
.
value
[
row
.
guid
]
=
isMyFirstNode
({
deploymentId
:
row
.
approveVO
.
camundaDeploymentId
,
processInstanceId
:
row
.
approveVO
.
camundaInstanceId
,
staffGuid
:
userData
.
staffGuid
}).
then
((
res
:
any
)
=>
{
getFirstNodePromise1
.
value
[
row
.
guid
]
=
null
;
if
(
res
?.
code
==
proxy
.
$passCode
)
{
if
(
res
.
data
)
{
approveSuggest
.
value
=
''
;
dynamicPlaceholder
.
value
=
'请填写驳回理由(必填)'
;
if
(
listingFormRef
.
value
)
{
clearFormValues
(
listingFormRef
.
value
.
formInline
);
listingFormRef
.
value
.
ruleFormRef
.
clearValidate
(
formInfo
.
value
.
items
.
map
(
item
=>
item
.
field
))
listingFormRef
.
value
.
ruleFormRef
.
resetFields
(
formInfo
.
value
.
items
.
map
(
item
=>
item
.
field
))
}
approveType
.
value
=
'reject'
;
dialogTitle
.
value
=
'驳回流程'
dialogVisible
.
value
=
true
;
}
else
{
rejectDialogInfo
.
value
.
visible
=
true
;
}
}
else
{
proxy
.
$ElMessage
.
error
(
res
.
msg
);
}
})
}
if
(
type
==
'up'
)
{
// tableSwitchChange('Y', scope, 'listingStatus')
// console.log('上架', scope)
// let params: any = {}
// if (scope.row.exchangeGuid) {
// // 数交所上架 [params.commitmentLetterInfo[0].url]
// params = {
// guid: scope.row.guid,
// accreditFile: scope.row.accreditFile,
// caseNumber: scope.row.caseNumber,
// commitmentLetter: scope.row.commitmentLetter,
// content: scope.row.productDesc,
// costAssessmentInstitution: scope.row.costAssessmentInstitution,
// costAssessmentInstitutionGuid: scope.row.costAssessmentInstitutionGuid,
// coverageArea: scope.row.coverageArea,
// damCode: scope.row.damCode,
// damGuid: scope.row.damGuid,
// damName: scope.row.damName,
// damType: scope.row.damType,
// dataScale: scope.row.dataScale,
// deliveryWay: scope.row.deliveryWay,
// evaluationFile: scope.row.evaluationFile,
// exchangeGuid: scope.row.exchangeGuid,
// feeDesc: scope.row.feeDesc,
// immediateApprove: true,
// priceUnit: scope.row.priceUnit,
// pricingWay: scope.row.pricingWay,
// productPic: scope.row.productPic,
// productPrice: scope.row.productPrice,
// qualityEvaluationInstitution: scope.row.qualityEvaluationInstitution,
// qualityEvaluationInstitutionGuid: scope.row.qualityEvaluationInstitutionGuid,
// timeAreaStart: scope.row.timeAreaStart,
// timeAreaEnd: scope.row.timeAreaEnd,
// registrationCertificate: scope.row.registrationCertificate,
// productDetail: scope.row.productDetail,
// assessmentFile: scope.row.assessmentFile,
// }
// listingUpdate(params).then((res: any) => {
// if (res.code == proxy.$passCode) {
// ElMessage({
// type: "success",
// message: '提交成功',
// });
// getTableData();
// } else {
// ElMessage({
// type: "error",
// message: res.msg,
// });
// }
// })
// } else {
// // 门户数据专区上架
// params = {
// guid: scope.row.guid,
// caseNumber: scope.row.caseNumber,
// content: scope.row.productDesc,
// coverageArea: scope.row.coverageArea,
// damGuid: scope.row.damGuid,
// damName: scope.row.damName,
// damType: scope.row.damType,
// dataScale: scope.row.dataScale,
// deliveryWay: scope.row.deliveryWay,
// feeDesc: scope.row.feeDesc,
// immediateApprove: true,
// priceUnit: scope.row.priceUnit,
// pricingWay: scope.row.pricingWay,
// productPic: scope.row.productPic,
// productPrice: scope.row.productPrice,
// timeAreaStart: scope.row.timeAreaStart,
// timeAreaEnd: scope.row.timeAreaEnd,
// }
// listingUpdateGateway(params).then((res: any) => {
// if (res.code == proxy.$passCode) {
// ElMessage({
// type: "success",
// message: '提交成功',
// });
// getTableData();
// } else {
// ElMessage({
// type: "error",
// message: res.msg,
// });
// }
// })
// console.log('上架', scope)
// }
if
(
row
.
exchangeGuid
)
{
router
.
push
({
name
:
'productListingDetail'
,
...
...
@@ -559,8 +512,7 @@ const clearFormValues = (formInline) => {
formInline
[
key
]
=
''
;
});
};
const
fullscreenLoading
=
ref
(
false
);
const
dynamicPlaceholder
=
ref
(
'请填写通过理由'
);
const
dynamicPlaceholder
=
ref
(
'请填写通过理由(选填)'
);
const
passSubmit
=
()
=>
{
let
row
=
currTableData
.
value
listingFormRef
.
value
.
ruleFormRef
.
validate
().
then
((
valid
)
=>
{
...
...
@@ -573,6 +525,7 @@ const passSubmit = () => {
}
})
})
dialogBtnLoading
.
value
=
true
;
productRejectFlowData
({
guid
:
row
.
approveVO
.
approveGuid
,
flowType
:
row
.
approveVO
.
flowType
,
...
...
@@ -582,8 +535,8 @@ const passSubmit = () => {
approveState
:
'Y'
,
bizGuid
:
row
.
approveVO
.
bizGuid
},
row
.
tenantGuid
).
then
((
res
:
any
)
=>
{
dialogBtnLoading
.
value
=
false
;
if
(
res
.
code
==
'00000'
)
{
fullscreenLoading
.
value
=
false
;
ElMessage
.
success
(
'审批通过!'
)
dialogVisible
.
value
=
false
;
getTableData
();
...
...
@@ -594,20 +547,6 @@ const passSubmit = () => {
})
}
})
// passFlowData({
// guid: row.approveVO.approveGuid,
// flowType: row.approveVO.flowType,
// approveSuggest: approveSuggest.value,
// approveStaffGuid: userData.staffGuid,
// }).then((res: any) => {
// fullscreenLoading.value = false;
// if (res.code == '00000') {
// ElMessage.success('审批通过!')
// getTableData();
// } else {
// ElMessage.error(res.msg)
// }
// })
}
const
listingFormRef
=
ref
<
any
>
();
...
...
@@ -625,6 +564,7 @@ const rejectSubmit = async () => {
}
})
})
dialogBtnLoading
.
value
=
true
;
productRejectFlowData
({
guid
:
row
.
approveVO
.
approveGuid
,
flowType
:
row
.
approveVO
.
flowType
,
...
...
@@ -634,8 +574,8 @@ const rejectSubmit = async () => {
bizGuid
:
row
.
approveVO
.
bizGuid
,
approveState
:
'R'
},
row
.
tenantGuid
).
then
((
res
:
any
)
=>
{
dialogBtnLoading
.
value
=
false
;
if
(
res
.
code
==
'00000'
)
{
fullscreenLoading
.
value
=
false
;
ElMessage
.
success
(
'驳回成功!'
)
dialogVisible
.
value
=
false
;
getTableData
();
...
...
@@ -646,65 +586,6 @@ const rejectSubmit = async () => {
})
}
})
// rejectFlowData({
// guid: row.approveVO.approveGuid,
// flowType: row.approveVO.flowType,
// approveSuggest: approveSuggest.value,
// approveStaffGuid: userData.staffGuid,
// }).then((res: any) => {
// if (res.code == '00000') {
// fullscreenLoading.value = false;
// ElMessage.success('驳回成功!')
// getTableData();
// } else {
// ElMessage.error(res.msg)
// }
// })
}
// const tableBtnClick = (scope, btn) => {
// const type = btn.value;
// const row = scope.row;
// currTableData.value = row;
// if (type == "detail" || type === "edit") {
// toPatn(type);
// } else if (type === "delete") {
// open("此操作将永久删除,是否继续?", "warning");
// }
// };
const
toPatn
=
(
type
)
=>
{
if
(
type
==
'add'
)
{
router
.
push
({
name
:
"productListingDetail"
,
query
:
{
type
,
groundingPick
:
'门户数据专区'
,
case
:
'2'
,
},
});
}
else
{
router
.
push
({
name
:
"productListingDetail"
,
query
:
{
guid
:
currTableData
.
value
.
guid
,
name
:
currTableData
.
value
.
damName
,
type
},
});
}
}
const
toPatn1
=
(
type
,
type1
)
=>
{
if
(
type
==
'add'
)
{
router
.
push
({
name
:
"productListingDetail"
,
query
:
{
type
,
type1
},
});
}
}
const
tablePageChange
=
(
info
)
=>
{
...
...
@@ -715,31 +596,6 @@ const tablePageChange = (info) => {
getTableData
();
};
const
open
=
(
msg
,
type
,
isBatch
=
false
)
=>
{
ElMessageBox
.
confirm
(
msg
,
"提示"
,
{
confirmButtonText
:
"确定"
,
cancelButtonText
:
"取消"
,
type
:
type
,
}).
then
(()
=>
{
const
guids
=
[
currTableData
.
value
.
guid
];
listingDelete
(
guids
).
then
((
res
:
any
)
=>
{
if
(
res
.
code
==
proxy
.
$passCode
)
{
getFirstPageData
();
ElMessage
({
type
:
"success"
,
message
:
"删除成功"
,
});
}
else
{
ElMessage
({
type
:
"error"
,
message
:
res
.
msg
,
});
}
}).
catch
((
res
)
=>
{
tableInfo
.
value
.
loading
=
false
;
});
});
};
const
getFirstPageData
=
()
=>
{
page
.
value
.
curr
=
1
...
...
@@ -755,15 +611,6 @@ onActivated(() => {
})
onBeforeMount
(()
=>
{
// getParamsDataList({ paramCode: 'DAM-TYPE' }).then((res: any) => {
// if (res.code == proxy.$passCode) {
// damTypes.value = res.data || [];
// let item = searchItemList.value.find(item => item.field == 'damType');
// item && (item.options = damTypes.value);
// } else {
// proxy.$ElMessage.error(res.msg);
// }
// })
getParamsList
({
dictType
:
"资产类型"
,
}).
then
((
res
:
any
)
=>
{
...
...
@@ -934,6 +781,141 @@ const formInfo = ref<any>({
isPublicData8
:
[{
required
:
true
,
message
:
'请选择数据内容是否合规'
,
trigger
:
'change'
}],
}
})
const
passCommonDialogInfo
=
ref
({
visible
:
false
,
size
:
460
,
direction
:
"column"
,
header
:
{
title
:
"通过"
,
},
type
:
''
,
contents
:
[
{
type
:
'form'
,
title
:
''
,
formInfo
:
{
id
:
'batch-pass-form'
,
items
:
[
{
label
:
''
,
type
:
"textarea"
,
placeholder
:
"请填写通过理由(选填)"
,
field
:
"approveSuggest"
,
clearable
:
true
,
maxlength
:
400
,
block
:
true
,
col
:
'margin_b_0'
,
}
]
}
}
],
footer
:
{
btns
:
[
{
type
:
"default"
,
label
:
"取消"
,
value
:
"cancel"
},
{
type
:
"primary"
,
label
:
"确定"
,
value
:
"submit"
,
loading
:
false
},
],
},
});
const
passCommonDialogBtnClick
=
(
btn
,
info
)
=>
{
if
(
btn
.
value
==
'submit'
)
{
passCommonDialogInfo
.
value
.
footer
.
btns
[
1
].
loading
=
true
;
let
params
=
{
guid
:
currTableData
.
value
.
approveVO
.
approveGuid
,
flowType
:
currTableData
.
value
.
approveVO
.
flowType
,
approveSuggest
:
info
.
approveSuggest
,
approveStaffGuid
:
userData
.
staffGuid
}
passFlowData
(
params
,
currTableData
.
value
.
tenantGuid
).
then
((
res
:
any
)
=>
{
passCommonDialogInfo
.
value
.
footer
.
btns
[
1
].
loading
=
false
;
if
(
res
?.
code
==
proxy
.
$passCode
)
{
if
(
res
.
data
)
{
ElMessage
.
success
(
'审批成功'
);
passCommonDialogInfo
.
value
.
visible
=
false
;
getTableData
();
}
else
{
ElMessage
.
error
(
'审批失败'
);
}
}
else
{
ElMessage
.
error
(
res
.
msg
);
}
})
}
else
if
(
btn
.
value
==
'cancel'
)
{
passCommonDialogInfo
.
value
.
visible
=
false
;
}
}
const
rejectDialogInfo
=
ref
({
visible
:
false
,
size
:
460
,
direction
:
"column"
,
header
:
{
title
:
"驳回"
,
},
type
:
''
,
contents
:
[
{
type
:
'form'
,
title
:
''
,
formInfo
:
{
id
:
'batch-reject-form'
,
items
:
[
{
label
:
''
,
type
:
"textarea"
,
placeholder
:
"请填写驳回理由(必填)"
,
field
:
"approveSuggest"
,
clearable
:
true
,
block
:
true
,
col
:
'margin_b_0'
,
}
]
}
}
],
footer
:
{
btns
:
[
{
type
:
"default"
,
label
:
"取消"
,
value
:
"cancel"
},
{
type
:
"primary"
,
label
:
"确定"
,
value
:
"submit"
,
loading
:
false
},
],
},
});
const
rejectDialogBtnClick
=
(
btn
,
info
)
=>
{
if
(
btn
.
value
==
'submit'
)
{
if
(
info
.
approveSuggest
==
''
)
{
ElMessage
.
error
(
'请填写驳回理由'
);
return
}
let
row
=
currTableData
.
value
;
rejectDialogInfo
.
value
.
footer
.
btns
[
1
].
loading
=
true
;
let
params
=
{
guid
:
row
.
approveVO
.
approveGuid
,
flowType
:
row
.
approveVO
.
flowType
,
approveStaffGuid
:
userData
.
staffGuid
,
approveSuggest
:
info
.
approveSuggest
}
rejectFlowData
(
params
,
currTableData
.
value
.
tenantGuid
).
then
((
res
:
any
)
=>
{
rejectDialogInfo
.
value
.
footer
.
btns
[
1
].
loading
=
false
;
if
(
res
?.
code
==
proxy
.
$passCode
)
{
if
(
res
.
data
)
{
ElMessage
.
success
(
'驳回成功'
);
getTableData
();
rejectDialogInfo
.
value
.
visible
=
false
;
}
else
{
ElMessage
.
error
(
'驳回失败'
);
}
}
else
{
ElMessage
.
error
(
res
.
msg
);
}
});
}
else
if
(
btn
.
value
==
'cancel'
)
{
rejectDialogInfo
.
value
.
visible
=
false
;
}
};
</
script
>
<
template
>
...
...
@@ -989,23 +971,27 @@ const formInfo = ref<any>({
</div>
</div>
<div
class=
"table_panel_wrap"
:style=
"{
height: demandListData.length > 0 ? 'calc(100% - 2
30
px)' : 'calc(100% - 54px)'
height: demandListData.length > 0 ? 'calc(100% - 2
91
px)' : 'calc(100% - 54px)'
}"
>
<Table
:tableInfo=
"tableInfo"
@
tableBtnClick=
"tableBtnClick"
@
tablePageChange=
"tablePageChange"
@
tableSwitchBeforeChange=
"tableSwitchBeforeChange"
/>
</div>
<el-dialog
v-model=
"dialogVisible"
:title=
"dialogTitle"
width=
"5
10px
"
>
<el-dialog
v-model=
"dialogVisible"
:title=
"dialogTitle"
width=
"5
50px"
:close-on-click-modal=
"false
"
>
<Form
ref=
"listingFormRef"
:itemList=
"formInfo.items"
:rules=
"formInfo.rules"
/>
<el-input
type=
"textarea"
:rows=
"3"
maxlength=
"100"
v-model=
"approveSuggest"
resize=
"none"
:placeholder=
"dynamicPlaceholder"
/>
<
template
#
footer
>
<div
class=
"dialog-footer"
>
<el-button
@
click=
"dialogVisible = false"
>
取消
</el-button>
<el-button
v-if=
"approveType == 'pass'"
type=
"primary"
@
click=
"passSubmit"
>
通过
</el-button>
<el-button
v-if=
"approveType == 'reject'"
type=
"primary"
@
click=
"rejectSubmit"
>
驳回
</el-button>
<el-button
v-if=
"approveType == 'pass'"
type=
"primary"
v-loading=
"dialogBtnLoading"
@
click=
"passSubmit"
>
通过
</el-button>
<el-button
v-if=
"approveType == 'reject'"
type=
"primary"
v-loading=
"dialogBtnLoading"
@
click=
"rejectSubmit"
>
驳回
</el-button>
</div>
</
template
>
</el-dialog>
<Dialog
:dialogInfo=
"passCommonDialogInfo"
@
btnClick=
"passCommonDialogBtnClick"
/>
<Dialog
:dialogInfo=
"rejectDialogInfo"
@
btnClick=
"rejectDialogBtnClick"
/>
</div>
</template>
...
...
@@ -1032,7 +1018,7 @@ const formInfo = ref<any>({
}
:deep
(
.el-carousel
)
{
margin
:
0
-
16
px
16px
;
margin
:
0
-
8
px
16px
;
padding
:
0
16px
;
.card-content
{
...
...
@@ -1160,7 +1146,7 @@ const formInfo = ref<any>({
background
:
#FFFBF2
;
border
:
1px
solid
rgba
(
255
,
241
,
212
,
1
);
border-radius
:
4px
;
margin
:
5px
8px
1
7
px
8px
;
margin
:
5px
8px
1
2
px
8px
;
.tip-icon
{
width
:
16px
;
...
...
src/views/data_product/productListingDetail.vue
View file @
06460e7
...
...
@@ -14,11 +14,14 @@ import useDataAssetStore from "@/store/modules/dataAsset";
import
{
changeNum
}
from
'@/utils/common'
;
import
{
onUploadFilePreview
,
onUploadFileDownload
}
from
'@/api/modules/common'
;
import
{
getAreaData
,
getServiceTenants
,
getSingleList
}
from
"@/api/modules/queryService"
;
import
{
getApproveList
,
getTenantApprove
,
registerApproveAllow
,
registerApproveBackup
,
getParamsList
,
getServiceDetail
}
from
"@/api/modules/dataAsset"
;
import
{
getProductList
,
getFileByDamGuid
,
getAddedProductList
,
getListingDetail
,
listingSave
,
listingUpdate
,
listingSavePortal
,
getParamsDataList
,
listingUpdateGateway
,
getDataExchangeProductList
,
getTemplateFile
,
getListingList
}
from
"@/api/modules/dataProduct"
;
import
{
getApproveList
,
getTenantApprove
,
getParamsList
,
getServiceDetail
}
from
"@/api/modules/dataAsset"
;
import
{
getProductList
,
getFileByDamGuid
,
productRejectFlowData
,
getListingDetail
,
listingSave
,
listingUpdate
,
listingSavePortal
,
getParamsDataList
,
listingUpdateGateway
,
getDataExchangeProductList
,
getTemplateFile
,
getListingList
}
from
"@/api/modules/dataProduct"
;
import
{
getMatchDetail
}
from
"@/api/modules/dataFinance"
;
import
{
useValidator
}
from
'@/hooks/useValidator'
;
import
{
getCamundaDeploymentId
}
from
"@/api/modules/workFlowService"
;
import
{
getCamundaDeploymentId
,
rejectFlowData
,
passFlowData
,
isMyFirstNode
,
revokeFlowData
}
from
"@/api/modules/workFlowService"
;
const
{
required
}
=
useValidator
();
...
...
@@ -134,11 +137,6 @@ const approveTableInfo: any = ref({
show
:
false
}
});
const
exchangeName
=
computed
(()
=>
{
return
route
.
query
.
exchangeName
;
})
const
listingFormRef
=
ref
();
const
subForm
=
ref
({});
const
formInfo
=
ref
<
any
>
({
...
...
@@ -684,24 +682,6 @@ const contents = ref({
],
});
const
listingDialogRef
=
ref
();
const
dialogInfo
=
ref
({
visible
:
false
,
size
:
460
,
direction
:
"column"
,
header
:
{
title
:
""
,
},
type
:
''
,
contents
:
[],
footer
:
{
btns
:
[
{
type
:
"default"
,
label
:
"取消"
,
value
:
"cancel"
},
{
type
:
"primary"
,
label
:
"确定"
,
value
:
"submit"
},
],
},
});
const
getProducts
=
()
=>
{
getProductList
({}).
then
((
res
:
any
)
=>
{
if
(
res
.
code
==
proxy
.
$passCode
)
{
...
...
@@ -1077,11 +1057,86 @@ const btnClick = (btn) => {
const
form
=
checkForm
.
formInline
;
subForm
.
value
=
{
...
form
};
submitForm
(
btn
,
formEl
,
true
);
}
else
if
(
btn
.
value
==
'pass'
||
btn
.
value
==
'reject'
)
{
dialogInfo
.
value
.
type
=
btn
.
value
dialogInfo
.
value
.
header
.
title
=
btn
.
value
==
'pass'
?
'通过'
:
'驳回'
dialogInfo
.
value
.
contents
=
contents
.
value
[
btn
.
value
]
dialogInfo
.
value
.
visible
=
true
}
else
if
(
btn
.
value
==
'pass'
)
{
if
(
getFirstNodePromise
.
value
)
{
return
;
}
getFirstNodePromise
.
value
=
isMyFirstNode
({
deploymentId
:
flowDetail
.
value
.
approveVO
.
camundaDeploymentId
,
processInstanceId
:
flowDetail
.
value
.
approveVO
.
camundaInstanceId
,
staffGuid
:
userData
.
staffGuid
}).
then
((
res
:
any
)
=>
{
getFirstNodePromise
.
value
=
null
;
if
(
res
?.
code
==
proxy
.
$passCode
)
{
if
(
res
.
data
)
{
approveSuggest
.
value
=
''
;
dynamicPlaceholder
.
value
=
'请填写通过理由(选填)'
;
if
(
passListingFormRef
.
value
)
{
clearFormValues
(
passListingFormRef
.
value
.
formInline
);
passListingFormRef
.
value
.
ruleFormRef
.
clearValidate
(
formInfo
.
value
.
items
.
map
(
item
=>
item
.
field
))
passListingFormRef
.
value
.
ruleFormRef
.
resetFields
(
formInfo
.
value
.
items
.
map
(
item
=>
item
.
field
))
}
approveType
.
value
=
'pass'
;
dialogTitle
.
value
=
'通过流程'
dialogVisible
.
value
=
true
;
}
else
{
passCommonDialogInfo
.
value
.
visible
=
true
;
}
}
else
{
proxy
.
$ElMessage
.
error
(
res
.
msg
);
}
})
}
else
if
(
btn
.
value
==
'reject'
)
{
if
(
getFirstNodePromise1
.
value
)
{
return
;
}
getFirstNodePromise1
.
value
=
isMyFirstNode
({
deploymentId
:
flowDetail
.
value
.
approveVO
.
camundaDeploymentId
,
processInstanceId
:
flowDetail
.
value
.
approveVO
.
camundaInstanceId
,
staffGuid
:
userData
.
staffGuid
}).
then
((
res
:
any
)
=>
{
getFirstNodePromise1
.
value
=
null
;
if
(
res
?.
code
==
proxy
.
$passCode
)
{
if
(
res
.
data
)
{
approveSuggest
.
value
=
''
;
dynamicPlaceholder
.
value
=
'请填写驳回理由(必填)'
;
if
(
passListingFormRef
.
value
)
{
clearFormValues
(
passListingFormRef
.
value
.
formInline
);
passListingFormRef
.
value
.
ruleFormRef
.
clearValidate
(
formInfo
.
value
.
items
.
map
(
item
=>
item
.
field
))
passListingFormRef
.
value
.
ruleFormRef
.
resetFields
(
formInfo
.
value
.
items
.
map
(
item
=>
item
.
field
))
}
approveType
.
value
=
'reject'
;
dialogTitle
.
value
=
'驳回流程'
dialogVisible
.
value
=
true
;
}
else
{
rejectDialogInfo
.
value
.
visible
=
true
;
}
}
else
{
proxy
.
$ElMessage
.
error
(
res
.
msg
);
}
})
}
else
if
(
btn
.
value
==
'revoke'
)
{
ElMessageBox
.
confirm
(
`撤销后,该流程将不再进行审核,确定这样操作吗?`
,
"提示"
,
{
confirmButtonText
:
"确定"
,
cancelButtonText
:
"取消"
,
type
:
'warning'
,
}).
then
(()
=>
{
revokeFlowData
({
guid
:
flowDetail
.
value
.
approveVO
.
approveGuid
,
flowType
:
flowDetail
.
value
.
approveVO
.
flowType
,
approveStaffGuid
:
userData
.
staffGuid
},
flowDetail
.
value
.
tenantGuid
).
then
((
res
:
any
)
=>
{
if
(
res
.
code
==
'00000'
)
{
ElMessage
.
success
(
'撤销成功!'
)
getProductDetail
();
approvalProcessRef
.
value
?.
renderProcessNodes
();
}
else
{
ElMessage
.
error
(
res
.
msg
)
}
})
});
}
else
{
if
(
detailType
==
'add'
||
detailType
==
'edit'
||
detailType
==
'redit'
)
{
ElMessageBox
.
confirm
(
...
...
@@ -1288,67 +1343,6 @@ const switchChange = async (val, info, row) => {
}
}
const
dialogBtnClick
=
(
btn
,
info
)
=>
{
if
(
btn
.
value
==
'submit'
)
{
let
params
=
{
...
info
}
params
.
bizGuid
=
guid
params
.
funcCode
=
flowDetail
.
value
.
funcCode
;
if
(
dialogInfo
.
value
.
type
==
'pass'
)
{
dialogInfo
.
value
.
visible
=
false
;
registerApproveAllow
(
params
).
then
((
res
:
any
)
=>
{
if
(
res
.
code
==
proxy
.
$passCode
)
{
ElMessage
({
type
:
'success'
,
message
:
'审批成功'
})
userStore
.
setTabbar
(
userStore
.
tabbar
.
filter
((
tab
:
any
)
=>
tab
.
fullPath
!==
fullPath
));
assetStore
.
set
(
true
);
router
.
push
({
name
:
"productListingCheck"
,
query
:
{},
});
}
else
{
ElMessage
({
type
:
'error'
,
message
:
res
.
msg
,
})
}
}).
catch
(()
=>
{
})
}
else
if
(
dialogInfo
.
value
.
type
==
'reject'
)
{
if
(
info
.
approveSuggest
==
''
)
{
ElMessage
.
error
(
'请填写驳回原因'
)
return
}
dialogInfo
.
value
.
visible
=
false
;
registerApproveBackup
(
params
).
then
((
res
:
any
)
=>
{
if
(
res
.
code
==
proxy
.
$passCode
)
{
ElMessage
({
type
:
'success'
,
message
:
'驳回成功'
})
userStore
.
setTabbar
(
userStore
.
tabbar
.
filter
((
tab
:
any
)
=>
tab
.
fullPath
!==
fullPath
));
assetStore
.
set
(
true
);
router
.
push
({
name
:
"productListingCheck"
,
query
:
{},
});
}
else
{
ElMessage
({
type
:
'error'
,
message
:
res
.
msg
,
})
}
}).
catch
(()
=>
{
})
}
}
else
if
(
btn
.
value
==
'cancel'
)
{
nextTick
(()
=>
{
dialogInfo
.
value
.
visible
=
false
;
})
}
};
onActivated
(()
=>
{
let
tab
:
any
=
userStore
.
tabbar
.
find
((
tab
:
any
)
=>
tab
.
fullPath
===
router
.
currentRoute
.
value
.
fullPath
);
...
...
@@ -1376,9 +1370,11 @@ onActivated(() => {
// };
})
const
approvalProcessRef
=
ref
();
const
deploymentId
=
ref
(
''
);
const
qualityEvaluationData
=
ref
<
any
>
(
''
);
const
costAssessmentData
=
ref
<
any
>
(
''
);
const
assetsSafeInfo
:
any
=
ref
([]);
onBeforeMount
(
async
()
=>
{
// case 1: 数交易所 case 2: 门户
if
(
route
.
query
.
case
==
'2'
)
{
...
...
@@ -1388,6 +1384,18 @@ onBeforeMount(async () => {
}
})
}
if
(
detailType
&&
detailType
!=
'add'
)
{
getParamsList
({
dictType
:
"数据产品上架审批合规信息"
,
}).
then
((
res
:
any
)
=>
{
if
(
res
.
code
==
proxy
.
$passCode
)
{
assetsSafeInfo
.
value
=
res
.
data
||
[];
}
else
{
proxy
.
$ElMessage
.
error
(
res
.
msg
);
}
})
getProductDetail
();
}
await
getTableData
();
if
(
route
.
query
.
exchangeGuid
)
{
getTableInfo
();
...
...
@@ -1400,12 +1408,6 @@ onBeforeMount(async () => {
return
parentAreaData
.
value
;
}
})
if
(
detailType
&&
detailType
!=
'add'
)
{
getProductDetail
();
// if (detailType == 'detail' && dGuid !== undefined) {
// getApplyDeatil();
// }
}
// getApproveData();
getParamsDataList
({
dictType
:
'资产类型'
}).
then
((
res
:
any
)
=>
{
if
(
res
.
code
==
proxy
.
$passCode
)
{
...
...
@@ -1565,6 +1567,364 @@ const prcieInfo = computed(() => {
return
flowDetail
.
value
.
productPrice
?
`
${
flowDetail
.
value
.
productPrice
}
${
priceUnitList
.
value
.
find
(
item
=>
item
.
value
==
flowDetail
.
value
.
priceUnit
)?.
label
}
` : '--';
})
const toolBtns: any = computed(() => {
let btnsArr: any = [{
label: "关闭", value: "cancel", plain: true
}];
let approveVO = flowDetail.value.approveVO;
let staffGuid = userData.staffGuid;
if (approveVO && approveVO.approveState == 'A' && approveVO.approveStaffGuids && approveVO.approveStaffGuids.indexOf(staffGuid) > -1) {
btnsArr.push(...[{ label: "通过", value: "pass", type: 'primary' }, { label: "驳回", value: "reject", type: 'danger', plain: true }]);
}
if (approveVO && approveVO.approveState == 'A' && approveVO.staffGuid == staffGuid) {
btnsArr.push({ label: "撤销", value: "revoke" });
}
return btnsArr;
});
/** ------------------ 通过驳回对话框 ----------------------- */
let getFirstNodePromise: any = ref(null);
let getFirstNodePromise1: any = ref(null);
const approveSuggest = ref();
const dialogTitle = ref('通过流程');
const dialogVisible = ref(false);
const dialogBtnLoading = ref(false);
//弹窗类型
const approveType = ref();
const dynamicPlaceholder = ref('请填写通过理由(选填)');
const passFormInfo = ref<any>({
id: 'check-form',
col: 'col2',
items: [
// radio 单选框
{
type: 'radio-group',
label: '是否遵守隐私法律和数据保护法规',
field: 'isPublicData1',
default: '',
required: true,
options: [
{ label: '是', value: 'Y' },
{ label: '否', value: 'N' },
],
},
// radio 单选框
{
type: 'radio-group',
label: '不存在侵犯他人版权的信息',
field: 'isPublicData2',
default: '',
required: true,
options: [
{ label: '是', value: 'Y' },
{ label: '否', value: 'N' },
],
},
// 是否符合研究伦理
{
type: 'radio-group',
label: '是否符合研究伦理',
field: 'isPublicData3',
default: '',
required: true,
options: [
{ label: '是', value: 'Y' },
{ label: '否', value: 'N' },
],
},
//是否遵守道德标准
{
type: 'radio-group',
label: '是否遵守道德标准',
field: 'isPublicData4',
default: '',
required: true,
options: [
{ label: '是', value: 'Y' },
{ label: '否', value: 'N' },
],
},
//数据来源是否合规
{
type: 'radio-group',
label: '数据来源是否合规',
field: 'isPublicData5',
default: '',
required: true,
options: [
{ label: '是', value: 'Y' },
{ label: '否', value: 'N' },
],
},
//相关文档审查是否合规
{
type: 'radio-group',
label: '相关文档审查是否合规',
field: 'isPublicData6',
default: '',
required: true,
options: [
{ label: '是', value: 'Y' },
{ label: '否', value: 'N' },
],
},
//是否符合国家标准及要求
{
type: 'radio-group',
label: '是否符合国家标准及要求',
field: 'isPublicData7',
default: '',
required: true,
options: [
{ label: '是', value: 'Y' },
{ label: '否', value: 'N' },
],
},
//数据内容是否合规
{
type: 'radio-group',
label: '数据内容是否合规',
field: 'isPublicData8',
default: '',
required: true,
options: [
{ label: '是', value: 'Y' },
{ label: '否', value: 'N' },
],
},
],
rules: {
isPublicData1: [{ required: true, message: '请选择是否遵守隐私法律和数据保护法规', trigger: 'change' }],
isPublicData2: [{ required: true, message: '请选择是否存在侵犯他人版权的信息', trigger: 'change' }],
isPublicData3: [{ required: true, message: '请选择是否符合研究伦理', trigger: 'change' }],
isPublicData4: [{ required: true, message: '请选择是否遵守道德标准', trigger: 'change' }],
isPublicData5: [{ required: true, message: '请选择数据来源是否合规', trigger: 'change' }],
isPublicData6: [{ required: true, message: '请选择相关文档审查是否合规', trigger: 'change' }],
isPublicData7: [{ required: true, message: '请选择是否符合国家标准及要求', trigger: 'change' }],
isPublicData8: [{ required: true, message: '请选择数据内容是否合规', trigger: 'change' }],
}
})
const passListingFormRef = ref<any>();
const clearFormValues = (formInline) => {
Object.keys(formInline).forEach(key => {
formInline[key] = '';
});
};
const passSubmit = () => {
passListingFormRef.value.ruleFormRef.validate().then((valid) => {
if (valid) {
let complianceInfoMap = {}
passFormInfo.value.items.forEach((item) => {
assetsSafeInfo.value.forEach((item1) => {
if (item.label == item1.label) {
complianceInfoMap[item1.value] = passListingFormRef.value.formInline[item.field];
}
})
})
dialogBtnLoading.value = true;
productRejectFlowData({
guid: flowDetail.value.approveVO.approveGuid,
flowType: flowDetail.value.approveVO.flowType,
approveSuggest: approveSuggest.value,
approveStaffGuid: userData.staffGuid,
complianceInfoMap: complianceInfoMap,
approveState: 'Y',
bizGuid: flowDetail.value.approveVO.bizGuid
}, flowDetail.value.tenantGuid).then((res: any) => {
dialogBtnLoading.value = false;
if (res.code == '00000') {
ElMessage.success('审批通过!')
dialogVisible.value = false;
getProductDetail();
approvalProcessRef.value?.renderProcessNodes()
} else {
ElMessage.error(res.msg)
}
})
}
})
}
const rejectSubmit = async () => {
if (!approveSuggest.value) return ElMessage.error('请填写驳回理由!')
passListingFormRef.value.ruleFormRef.validate().then((valid) => {
if (valid) {
let complianceInfoMap = {}
passFormInfo.value.items.forEach((item) => {
assetsSafeInfo.value.forEach((item1) => {
if (item.label == item1.label) {
complianceInfoMap[item1.value] = passListingFormRef.value.formInline[item.field];
}
})
})
dialogBtnLoading.value = true;
productRejectFlowData({
guid: flowDetail.value.approveVO.approveGuid,
flowType: flowDetail.value.approveVO.flowType,
approveSuggest: approveSuggest.value,
approveStaffGuid: userData.staffGuid,
complianceInfoMap: complianceInfoMap,
bizGuid: flowDetail.value.approveVO.bizGuid,
approveState: 'R'
}, flowDetail.value.tenantGuid).then((res: any) => {
dialogBtnLoading.value = false;
if (res.code == '00000') {
ElMessage.success('驳回成功!')
dialogVisible.value = false;
//getDetail
getProductDetail();
approvalProcessRef.value?.renderProcessNodes();
} else {
ElMessage.error(res.msg)
}
})
}
})
}
const passCommonDialogInfo = ref({
visible: false,
size: 460,
direction: "column",
header: {
title: "通过",
},
type: '',
contents: [
{
type: 'form',
title: '',
formInfo: {
id: 'batch-pass-form',
items: [
{
label: '',
type: "textarea",
placeholder: "请填写通过理由(选填)",
field: "approveSuggest",
clearable: true,
maxlength: 400,
block: true,
col: 'margin_b_0',
}
]
}
}
],
footer: {
btns: [
{ type: "default", label: "取消", value: "cancel" },
{ type: "primary", label: "确定", value: "submit", loading: false },
],
},
});
const passCommonDialogBtnClick = (btn, info) => {
if (btn.value == 'submit') {
passCommonDialogInfo.value.footer.btns[1].loading = true;
let params = {
guid: flowDetail.value.approveVO.approveGuid,
flowType: flowDetail.value.approveVO.flowType,
approveSuggest: info.approveSuggest,
approveStaffGuid: userData.staffGuid
}
passFlowData(params, flowDetail.value.tenantGuid).then((res: any) => {
passCommonDialogInfo.value.footer.btns[1].loading = false;
if (res?.code == proxy.$passCode) {
if (res.data) {
ElMessage.success('审批成功');
passCommonDialogInfo.value.visible = false;
getProductDetail();
approvalProcessRef.value?.renderProcessNodes();
} else {
ElMessage.error('审批失败');
}
} else {
ElMessage.error(res.msg);
}
})
} else if (btn.value == 'cancel') {
passCommonDialogInfo.value.visible = false;
}
}
const rejectDialogInfo = ref({
visible: false,
size: 460,
direction: "column",
header: {
title: "驳回",
},
type: '',
contents: [
{
type: 'form',
title: '',
formInfo: {
id: 'batch-reject-form',
items: [
{
label: '',
type: "textarea",
placeholder: "请填写驳回理由(必填)",
field: "approveSuggest",
clearable: true,
block: true,
col: 'margin_b_0',
}
]
}
}
],
footer: {
btns: [
{ type: "default", label: "取消", value: "cancel" },
{ type: "primary", label: "确定", value: "submit", loading: false },
],
},
});
const rejectDialogBtnClick = (btn, info) => {
if (btn.value == 'submit') {
if (info.approveSuggest == '') {
ElMessage.error('请填写驳回理由');
return
}
let row = flowDetail.value;
rejectDialogInfo.value.footer.btns[1].loading = true;
let params = {
guid: row.approveVO.approveGuid,
flowType: row.approveVO.flowType,
approveStaffGuid: userData.staffGuid,
approveSuggest: info.approveSuggest
}
rejectFlowData(params, flowDetail.value.tenantGuid).then((res: any) => {
rejectDialogInfo.value.footer.btns[1].loading = false;
if (res?.code == proxy.$passCode) {
if (res.data) {
ElMessage.success('驳回成功');
//getTableData();
rejectDialogInfo.value.visible = false;
getProductDetail();
approvalProcessRef.value?.renderProcessNodes();
} else {
ElMessage.error('驳回失败');
}
} else {
ElMessage.error(res.msg);
}
});
} else if (btn.value == 'cancel') {
rejectDialogInfo.value.visible = false;
}
};
</
script
>
...
...
@@ -1661,40 +2021,20 @@ const prcieInfo = computed(() => {
<span
class=
"item_label"
>
定价金额:
</span>
<span
class=
"item_value"
>
{{
prcieInfo
||
'--'
}}
</span>
</div>
<!--
<div
class=
"list_item"
>
<span
class=
"item_label"
>
所属主题:
</span>
<span
class=
"item_value"
>
{{
flowDetail
.
subjectDomainName
||
'--'
}}
</span>
</div>
-->
<div
class=
"list_item"
>
<span
class=
"item_label"
>
数据规模(条):
</span>
<span
class=
"item_value"
>
{{
flowDetail
.
dataScale
!=
null
?
changeNum
(
flowDetail
.
dataScale
,
0
)
:
'--'
}}
</span>
}}
</span>
</div>
<div
class=
"list_item"
>
<span
class=
"item_label"
>
病例总数(例):
</span>
<span
class=
"item_value"
>
{{
flowDetail
.
caseNumber
!=
null
?
changeNum
(
flowDetail
.
caseNumber
,
0
)
:
'--'
}}
</span>
}}
</span>
</div>
<!--
<div
class=
"list_item"
>
<span
class=
"item_label"
>
交易方式:
</span>
<span
class=
"item_value"
>
{{
flowDetail
.
deliveryWayName
||
'--'
}}
</span>
</div>
-->
<!--
<div
class=
"list_item"
>
<span
class=
"item_label"
>
产品价格:
</span>
<span
class=
"item_value"
>
{{
flowDetail
.
isDiscussPersonally
==
'Y'
?
'面议'
:
(
flowDetail
.
productPrice
||
'--'
)
}}
</span>
</div>
-->
<div
class=
"list_item"
v-if=
"route.query.exchangeGuid"
>
<span
class=
"item_label"
>
登记数交所:
</span>
<span
class=
"item_value"
>
{{
flowDetail
.
exchangeName
||
'--'
}}
</span>
</div>
<!--
<div
class=
"list_item is_block"
>
<span
class=
"item_label"
>
上架交易所:
</span>
<span
class=
"item_value"
>
{{
!
flowDetail
.
exchangeGuids
?.
length
?
'--'
:
flowDetail
.
exchangeNames
.
join
(
','
)
}}
</span>
</div>
-->
<div
class=
"list_item is_block"
>
<span
class=
"item_label"
>
数据覆盖地域:
</span>
<span
class=
"item_value"
...
...
@@ -1703,7 +2043,7 @@ const prcieInfo = computed(() => {
</span>
<span
class=
"item_value"
v-else
>
<span
v-for=
"(cor, c) in flowDetail.coverageAreaName"
:key=
"c"
class=
"area_text"
>
{{
cor
.
join
(
'/'
)
}}
</span>
}}
</span>
</span>
</div>
<div
class=
"list_item is_block"
>
...
...
@@ -1743,7 +2083,8 @@ const prcieInfo = computed(() => {
v-else-if=
"flowDetail.productPic.name.substring(flowDetail.productPic.name.lastIndexOf('.') + 1).toLowerCase() == 'jpg' || flowDetail.productPic.name.substring(flowDetail.productPic.name.lastIndexOf('.') + 1).toLowerCase() == 'jpeg'"
>
<img
class=
"file-img"
src=
"../../assets/images/jpg.png"
/>
</
template
>
<div
class=
"file-name"
>
{{ flowDetail.productPic.name }}
</div>
<div
class=
"file-name"
><ellipsis-tooltip
:content=
"flowDetail.productPic.name ?? ''"
class-name=
"w100f"
refName=
"tooltipOver"
></ellipsis-tooltip></div>
<div
:style=
"{ right: '36px' }"
v-if=
"flowDetail.productPic.name.substring(flowDetail.productPic.name.lastIndexOf('.') + 1).toLowerCase() == 'pdf' || flowDetail.productPic.name.substring(flowDetail.productPic.name.lastIndexOf('.') + 1).toLowerCase() == 'png' || flowDetail.productPic.name.substring(flowDetail.productPic.name.lastIndexOf('.') + 1).toLowerCase() == 'jpg' || flowDetail.productPic.name.substring(flowDetail.productPic.name.lastIndexOf('.') + 1).toLowerCase() == 'jpeg'"
class=
"file-preview"
@
click=
"onUploadFilePreview(flowDetail.productPic)"
>
查看
</div>
...
...
@@ -1791,7 +2132,8 @@ const prcieInfo = computed(() => {
v-else-if=
"flowDetail.registrationCertificate.name.substring(flowDetail.registrationCertificate.name.lastIndexOf('.') + 1).toLowerCase() == 'jpg' || flowDetail.registrationCertificate.name.substring(flowDetail.registrationCertificate.name.lastIndexOf('.') + 1).toLowerCase() == 'jpeg'"
>
<img
class=
"file-img"
src=
"../../assets/images/jpg.png"
/>
</
template
>
<div
class=
"file-name"
>
{{ flowDetail.registrationCertificate.name }}
</div>
<div
class=
"file-name"
><ellipsis-tooltip
:content=
"flowDetail.registrationCertificate.name ?? ''"
class-name=
"w100f"
refName=
"tooltipOver"
></ellipsis-tooltip></div>
<div
:style=
"{ right: '36px' }"
v-if=
"flowDetail.registrationCertificate.name.substring(flowDetail.registrationCertificate.name.lastIndexOf('.') + 1).toLowerCase() == 'pdf' || flowDetail.registrationCertificate.name.substring(flowDetail.registrationCertificate.name.lastIndexOf('.') + 1).toLowerCase() == 'png' || flowDetail.registrationCertificate.name.substring(flowDetail.registrationCertificate.name.lastIndexOf('.') + 1).toLowerCase() == 'jpg' || flowDetail.registrationCertificate.name.substring(flowDetail.registrationCertificate.name.lastIndexOf('.') + 1).toLowerCase() == 'jpeg'"
class=
"file-preview"
@
click=
"onUploadFilePreview(flowDetail.registrationCertificate)"
>
查看
</div>
...
...
@@ -1804,48 +2146,6 @@ const prcieInfo = computed(() => {
</div>
</div>
<div
class=
"list_item1 is_block1"
>
<!-- <div class="file_item"
v-if="flowDetail.registrationCertificate && flowDetail.registrationCertificate.name">
<span class="item_label">质量评估报告:</span>
<span class="item_value">
<div class="file-operate">
<template
v-if="flowDetail.qualityEvaluationFile[0].name.substring(flowDetail.qualityEvaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'xls' || flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'xlsx' || flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'csv'">
<img class="file-img" src="../../assets/images/excel.png" />
</template>
<template
v-else-if="flowDetail.qualityEvaluationFile[0].name.substring(flowDetail.qualityEvaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'doc' || flowDetail.qualityEvaluationFile[0].name.substring(flowDetail.qualityEvaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'docx'">
<img class="file-img" src="../../assets/images/word.png" />
</template>
<template
v-else-if="flowDetail.qualityEvaluationFile[0].name.substring(flowDetail.qualityEvaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'zip'">
<img class="file-img" src="../../assets/images/zip.png" />
</template>
<template
v-else-if="flowDetail.qualityEvaluationFile[0].name.substring(flowDetail.qualityEvaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'rar'">
<img class="file-img" src="../../assets/images/RAR.png" />
</template>
<template
v-else-if="flowDetail.qualityEvaluationFile[0].name.substring(flowDetail.qualityEvaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'pdf'">
<img class="file-img" src="../../assets/images/PDF.png" />
</template>
<template
v-else-if="flowDetail.qualityEvaluationFile[0].name.substring(flowDetail.qualityEvaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'png'">
<img class="file-img" src="../../assets/images/png.png" />
</template>
<template
v-else-if="flowDetail.qualityEvaluationFile[0].name.substring(flowDetail.qualityEvaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'jpg' || flowDetail.qualityEvaluationFile[0].name.substring(flowDetail.qualityEvaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'jpeg'">
<img class="file-img" src="../../assets/images/jpg.png" />
</template>
<div class="file-name">{{ flowDetail.qualityEvaluationFile[0].name }}</div>
<div :style="{ right: '36px' }"
v-if="flowDetail.qualityEvaluationFile[0].name.substring(flowDetail.qualityEvaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'pdf' || flowDetail.qualityEvaluationFile[0].name.substring(flowDetail.qualityEvaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'png' || flowDetail.qualityEvaluationFile[0].name.substring(flowDetail.qualityEvaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'jpg' || flowDetail.qualityEvaluationFile[0].name.substring(flowDetail.qualityEvaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'jpeg'"
class="file-preview" @click="onUploadFilePreview(flowDetail.qualityEvaluationFile[0])">查看</div>
<div :style="{ right: '0px' }" class="file-preview"
@click="onUploadFileDownload(flowDetail.qualityEvaluationFile[0])">下载</div>
</div>
</span>
</div> -->
<div
class=
"file_item"
v-if=
"route.query.exchangeGuid"
>
<span
class=
"item_label"
>
质量评估报告:
</span>
<span
class=
"item_value"
>
...
...
@@ -1863,7 +2163,8 @@ const prcieInfo = computed(() => {
v-else-if=
"['jpg', 'jpeg'].includes(flowDetail.evaluationFile[0].name?.substring(flowDetail.evaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase())"
>
<img
class=
"file-img"
src=
"../../assets/images/jpg.png"
/>
</
template
>
<div
class=
"file-name"
>
{{ flowDetail.evaluationFile[0].name }}
</div>
<div
class=
"file-name"
><ellipsis-tooltip
:content=
"flowDetail.evaluationFile[0].name ?? ''"
class-name=
"w100f"
refName=
"tooltipOver"
></ellipsis-tooltip></div>
<div
v-if=
"['pdf', 'png', 'jpg', 'jpeg'].includes(flowDetail.evaluationFile[0].name?.substring(flowDetail.evaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase())"
:style=
"{ right: '36px' }"
class=
"file-preview"
...
...
@@ -1891,48 +2192,6 @@ const prcieInfo = computed(() => {
</div>
</div>
<div
class=
"list_item1 is_block1"
>
<!-- <div class="file_item"
v-if="flowDetail.registrationCertificate && flowDetail.registrationCertificate.name">
<span class="item_label">价值评估报告:</span>
<span class="item_value">
<div class="file-operate">
<template
v-if="flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'xls' || flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'xlsx' || flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'csv'">
<img class="file-img" src="../../assets/images/excel.png" />
</template>
<template
v-else-if="flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'doc' || flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'docx'">
<img class="file-img" src="../../assets/images/word.png" />
</template>
<template
v-else-if="flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'zip'">
<img class="file-img" src="../../assets/images/zip.png" />
</template>
<template
v-else-if="flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'rar'">
<img class="file-img" src="../../assets/images/RAR.png" />
</template>
<template
v-else-if="flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'pdf'">
<img class="file-img" src="../../assets/images/PDF.png" />
</template>
<template
v-else-if="flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'png'">
<img class="file-img" src="../../assets/images/png.png" />
</template>
<template
v-else-if="flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'jpg' || flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'jpeg'">
<img class="file-img" src="../../assets/images/jpg.png" />
</template>
<div class="file-name">{{ flowDetail.costAssessmentFile[0].name }}</div>
<div :style="{ right: '36px' }"
v-if="flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'pdf' || flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'png' || flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'jpg' || flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'jpeg'"
class="file-preview" @click="onUploadFilePreview(flowDetail.costAssessmentFile[0])">查看</div>
<div :style="{ right: '0px' }" class="file-preview"
@click="onUploadFileDownload(flowDetail.costAssessmentFile[0])">下载</div>
</div>
</span>
</div> -->
<div
class=
"file_item"
v-if=
"route.query.exchangeGuid"
>
<span
class=
"item_label"
>
价值评估报告:
</span>
<span
class=
"item_value"
>
...
...
@@ -1950,7 +2209,8 @@ const prcieInfo = computed(() => {
v-else-if=
"['jpg', 'jpeg'].includes(flowDetail.assessmentFile[0].name?.substring(flowDetail.assessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase())"
>
<img
class=
"file-img"
src=
"../../assets/images/jpg.png"
/>
</
template
>
<div
class=
"file-name"
>
{{ flowDetail.assessmentFile[0].name }}
</div>
<div
class=
"file-name"
><ellipsis-tooltip
:content=
"flowDetail.assessmentFile[0].name ?? ''"
class-name=
"w100f"
refName=
"tooltipOver"
></ellipsis-tooltip></div>
<div
v-if=
"['pdf', 'png', 'jpg', 'jpeg'].includes(flowDetail.assessmentFile[0].name?.substring(flowDetail.assessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase())"
:style=
"{ right: '36px' }"
class=
"file-preview"
...
...
@@ -1996,7 +2256,8 @@ const prcieInfo = computed(() => {
v-else-if=
"['jpg', 'jpeg'].includes(flowDetail.commitmentLetter[0].name?.substring(flowDetail.commitmentLetter[0].name.lastIndexOf('.') + 1).toLowerCase())"
>
<img
class=
"file-img"
src=
"../../assets/images/jpg.png"
/>
</
template
>
<div
class=
"file-name"
>
{{ flowDetail.commitmentLetter[0].name }}
</div>
<div
class=
"file-name"
><ellipsis-tooltip
:content=
"flowDetail.commitmentLetter[0].name ?? ''"
class-name=
"w100f"
refName=
"tooltipOver"
></ellipsis-tooltip></div>
<div
v-if=
"['pdf', 'png', 'jpg', 'jpeg'].includes(flowDetail.commitmentLetter[0].name?.substring(flowDetail.commitmentLetter[0].name.lastIndexOf('.') + 1).toLowerCase())"
:style=
"{ right: '36px' }"
class=
"file-preview"
...
...
@@ -2033,7 +2294,8 @@ const prcieInfo = computed(() => {
v-else-if=
"['jpg', 'jpeg'].includes(flowDetail.accreditFile[0].name?.substring(flowDetail.accreditFile[0].name.lastIndexOf('.') + 1).toLowerCase())"
>
<img
class=
"file-img"
src=
"../../assets/images/jpg.png"
/>
</
template
>
<div
class=
"file-name"
>
{{ flowDetail.accreditFile[0].name }}
</div>
<div
class=
"file-name"
><ellipsis-tooltip
:content=
"flowDetail.accreditFile[0].name ?? ''"
class-name=
"w100f"
refName=
"tooltipOver"
></ellipsis-tooltip></div>
<div
v-if=
"['pdf', 'png', 'jpg', 'jpeg'].includes(flowDetail.accreditFile[0].name?.substring(flowDetail.accreditFile[0].name.lastIndexOf('.') + 1).toLowerCase())"
:style=
"{ right: '36px' }"
class=
"file-preview"
...
...
@@ -2070,7 +2332,8 @@ const prcieInfo = computed(() => {
v-else-if=
"['jpg', 'jpeg'].includes(flowDetail.productDetail[0].name?.substring(flowDetail.productDetail[0].name.lastIndexOf('.') + 1).toLowerCase())"
>
<img
class=
"file-img"
src=
"../../assets/images/jpg.png"
/>
</
template
>
<div
class=
"file-name"
>
{{ flowDetail.productDetail[0].name }}
</div>
<div
class=
"file-name"
><ellipsis-tooltip
:content=
"flowDetail.productDetail[0].name ?? ''"
class-name=
"w100f"
refName=
"tooltipOver"
></ellipsis-tooltip></div>
<div
v-if=
"['pdf', 'png', 'jpg', 'jpeg'].includes(flowDetail.productDetail[0].name?.substring(flowDetail.productDetail[0].name.lastIndexOf('.') + 1).toLowerCase())"
:style=
"{ right: '36px' }"
class=
"file-preview"
...
...
@@ -2123,7 +2386,7 @@ const prcieInfo = computed(() => {
<div
class=
"list_panel"
>
<div
class=
"table_panel_wrap"
>
<!-- <Table :tableInfo="approveTableInfo" /> -->
<ApprovalProcess
v-if=
"deploymentId"
:deploymentId=
"deploymentId"
:processInstanceId=
"processInstanceId"
>
<ApprovalProcess
ref=
"approvalProcessRef"
v-if=
"deploymentId"
:deploymentId=
"deploymentId"
:processInstanceId=
"processInstanceId"
>
</ApprovalProcess>
</div>
</div>
...
...
@@ -2173,21 +2436,26 @@ const prcieInfo = computed(() => {
</div>
<div
class=
"tool_btns"
v-else-if=
"detailType == 'detail'"
>
<div
class=
"btns"
>
<el-button
@
click=
"btnClick({ value: 'cancel' })"
>
关闭
</el-button>
<el-button
v-for=
"btn in toolBtns"
:type=
"btn.type"
:plain=
"btn.plain"
@
click=
"btnClick(btn)"
>
{{ btn.label
}}
</el-button>
</div>
</div>
<div
class=
" tool_btns"
v-else-if=
"detailType == 'check'"
>
<div
class=
"btns"
>
<el-button
plain
@
click=
"btnClick({ value: 'cancel' })"
>
关闭
</el-button>
<el-button
type=
"primary"
@
click=
"btnClick({ value: 'pass' })"
v-if=
"flowDetail.approveState == 'A' && flowDetail.approveTenantGuids?.includes(userData.tenantGuid)"
>
通过
</el-button>
<el-button
plain
type=
"danger"
@
click=
"btnClick({ value: 'reject' })"
v-if=
"flowDetail.approveState == 'A' && flowDetail.approveTenantGuids?.includes(userData.tenantGuid)"
>
驳回
</el-button>
</div>
</div>
<!-- 审核对话框 -->
<Dialog
ref=
"listingDialogRef"
:dialogInfo=
"dialogInfo"
@
btnClick=
"dialogBtnClick"
/>
<el-dialog
v-model=
"dialogVisible"
:title=
"dialogTitle"
width=
"550px"
:close-on-click-modal=
"false"
>
<Form
ref=
"passListingFormRef"
:itemList=
"passFormInfo.items"
:rules=
"passFormInfo.rules"
/>
<el-input
type=
"textarea"
:rows=
"3"
maxlength=
"100"
v-model=
"approveSuggest"
resize=
"none"
:placeholder=
"dynamicPlaceholder"
/>
<
template
#
footer
>
<div
class=
"dialog-footer"
>
<el-button
@
click=
"dialogVisible = false"
>
取消
</el-button>
<el-button
v-if=
"approveType == 'pass'"
type=
"primary"
v-loading=
"dialogBtnLoading"
@
click=
"passSubmit"
>
通过
</el-button>
<el-button
v-if=
"approveType == 'reject'"
type=
"primary"
v-loading=
"dialogBtnLoading"
@
click=
"rejectSubmit"
>
驳回
</el-button>
</div>
</
template
>
</el-dialog>
<Dialog
:dialogInfo=
"rejectDialogInfo"
@
btnClick=
"rejectDialogBtnClick"
/>
<Dialog
:dialogInfo=
"passCommonDialogInfo"
@
btnClick=
"passCommonDialogBtnClick"
/>
</div>
</template>
...
...
@@ -2292,6 +2560,7 @@ const prcieInfo = computed(() => {
.file-name
{
color
:
var
(
--el-color-regular
);
margin-left
:
4px
;
width
:
calc
(
100%
-
120px
);
}
.file-preview
{
...
...
Write
Preview
Styling with
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment