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
b35fe61c
authored
2025-01-17 18:08:17 +0800
by
xukangle
Browse Files
Options
Browse Files
Tag
Download
Plain Diff
Merge branch 'dev_20241202_xukangle' into develop
2 parents
18c28b7f
e2402a3a
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
178 additions
and
55 deletions
src/router/modules/dataAssetRegistry.ts
src/views/data_asset/registerCatalogDetail.vue
src/views/data_asset/registerDetail.vue
src/views/data_asset/valueEvaluate.vue
src/views/data_product/productListingDetail.vue
src/router/modules/dataAssetRegistry.ts
View file @
b35fe61
...
...
@@ -131,7 +131,19 @@ const routes: RouteRecordRaw[] = [
cache
:
true
,
reuse
:
true
}
},
{
path
:
'register-catalog-detail'
,
name
:
'costAssessDetail'
,
component
:
()
=>
import
(
'@/views/data_asset/registerCatalogDetail.vue'
),
meta
:
{
title
:
'详情-'
,
sidebar
:
false
,
breadcrumb
:
false
,
cache
:
true
,
reuse
:
true
}
},
],
},
{
...
...
src/views/data_asset/registerCatalogDetail.vue
View file @
b35fe61
This diff is collapsed.
Click to expand it.
src/views/data_asset/registerDetail.vue
View file @
b35fe61
...
...
@@ -128,6 +128,8 @@ const getDetailInfo = () => {
const
data
=
res
.
data
||
{};
costAssessDetailInfo
.
value
=
data
;
detailInfo
.
value
=
data
;
deploymentId
.
value
=
data
.
approveVO
.
camundaDeploymentId
;
processInstanceId
.
value
=
data
.
approveVO
?.
camundaInstanceId
;
// 需要显示价值评估信息
if
(
data
.
assessmentMoney
!=
null
)
{
if
(
tabsInfo
.
value
.
tabs
.
length
==
4
)
{
...
...
@@ -246,29 +248,29 @@ const getDetailInfo = () => {
}).
catch
(()
=>
{
fullscreenLoading
.
value
=
false
;
}));
ps
.
push
(
getTenantDetailInfo
(
userData
.
tenantGuid
).
then
((
res
:
any
)
=>
{
if
(
res
.
code
==
proxy
.
$passCode
)
{
const
data
=
res
.
data
??
{};
tentData
=
{
...
tentData
,
...
data
};
}
else
{
ElMessage
.
error
(
res
.
msg
);
}
}));
ps
.
push
(
getTenantInfo
({
tenantName
:
userData
.
tenantName
}).
then
((
res
:
any
)
=>
{
if
(
res
.
code
==
proxy
.
$passCode
)
{
const
data
=
res
.
data
??
{};
tentData
=
{
...
tentData
,
...
data
};
}
else
{
ElMessage
.
error
(
res
.
msg
);
}
}))
//
ps.push(getTenantDetailInfo(userData.tenantGuid).then((res: any) => {
//
if (res.code == proxy.$passCode) {
//
const data = res.data ?? {};
//
tentData = { ...tentData, ...data };
//
} else {
//
ElMessage.error(res.msg);
//
}
//
}));
//
ps.push(getTenantInfo({ tenantName: userData.tenantName }).then((res: any) => {
//
if (res.code == proxy.$passCode) {
//
const data = res.data ?? {};
//
tentData = { ...tentData, ...data };
//
} else {
//
ElMessage.error(res.msg);
//
}
//
}))
Promise
.
all
(
ps
).
then
(()
=>
{
fullscreenLoading
.
value
=
false
;
tenantDetail
.
value
=
tentData
;
//
tenantDetail.value = tentData;
isTextTruncated
();
})
}
else
{
let
ps
:
any
=
[]
,
tentData
=
{};
let
ps
:
any
=
[]
ps
.
push
(
getRegiaterDetail
({
guid
:
assetGuid
}).
then
((
res
:
any
)
=>
{
if
(
res
.
code
==
proxy
.
$passCode
)
{
const
data
=
res
.
data
||
{};
...
...
@@ -282,26 +284,25 @@ const getDetailInfo = () => {
ElMessage
.
error
(
res
.
msg
);
}
}));
ps
.
push
(
getTenantDetailInfo
(
userData
.
tenantGuid
).
then
((
res
:
any
)
=>
{
if
(
res
.
code
==
proxy
.
$passCode
)
{
const
data
=
res
.
data
??
{};
tentData
=
{
...
tentData
,
...
data
};
}
else
{
ElMessage
.
error
(
res
.
msg
);
}
}));
ps
.
push
(
getTenantInfo
({
tenantName
:
userData
.
tenantName
}).
then
((
res
:
any
)
=>
{
if
(
res
.
code
==
proxy
.
$passCode
)
{
const
data
=
res
.
data
??
{};
tentData
=
{
...
tentData
,
...
data
};
}
else
{
ElMessage
.
error
(
res
.
msg
);
}
}))
//
ps.push(getTenantDetailInfo(userData.tenantGuid).then((res: any) => {
//
if (res.code == proxy.$passCode) {
//
const data = res.data ?? {};
//
tentData = { ...tentData, ...data };
//
} else {
//
ElMessage.error(res.msg);
//
}
//
}));
//
ps.push(getTenantInfo({ tenantName: userData.tenantName }).then((res: any) => {
//
if (res.code == proxy.$passCode) {
//
const data = res.data ?? {};
//
tentData = { ...tentData, ...data };
//
} else {
//
ElMessage.error(res.msg);
//
}
//
}))
Promise
.
all
(
ps
).
then
(()
=>
{
fullscreenLoading
.
value
=
false
;
tenantDetail
.
value
=
tentData
;
}).
catch
(()
=>
{
fullscreenLoading
.
value
=
false
;
});
...
...
@@ -322,9 +323,39 @@ const handleExpand = () => {
isExpanded
.
value
=
!
isExpanded
.
value
;
}
// 提取到 onBeforeMount 中的请求
const
tentData
=
ref
<
any
>
({});
const
getTenantInformation
=
()
=>
{
const
ps
:
any
=
[];
ps
.
push
(
getTenantDetailInfo
(
userData
.
tenantGuid
).
then
((
res
:
any
)
=>
{
if
(
res
.
code
===
proxy
.
$passCode
)
{
const
data
=
res
.
data
??
{};
tentData
.
value
=
{
...
tentData
.
value
,
...
data
};
}
else
{
ElMessage
.
error
(
res
.
msg
);
}
}));
ps
.
push
(
getTenantInfo
({
tenantName
:
userData
.
tenantName
}).
then
((
res
:
any
)
=>
{
if
(
res
.
code
===
proxy
.
$passCode
)
{
const
data
=
res
.
data
??
{};
tentData
.
value
=
{
...
tentData
.
value
,
...
data
};
}
else
{
ElMessage
.
error
(
res
.
msg
);
}
}));
// 这里返回 Promise.all 来等待所有请求完成
return
Promise
.
all
(
ps
);
};
onBeforeMount
(()
=>
{
getDetailInfo
();
// getTenantDetail();
getTenantInformation
().
then
(()
=>
{
tenantDetail
.
value
=
{
...
tentData
.
value
};
// 将最终的数据赋值给 tenantDetail
}).
catch
(()
=>
{
console
.
log
(
'请求失败'
);
});
});
onActivated
(()
=>
{
...
...
@@ -593,7 +624,7 @@ const passDialogTitle = computed(() => {
}
});
const
qualityEvaluateFormItems
=
ref
([
const
qualityEvaluateFormItems
=
ref
<
any
>
([
{
label
:
'质量得分'
,
type
:
'input'
,
...
...
@@ -953,11 +984,19 @@ const passDialogBtnClick = (btn, info) => {
return
;
}
submitPromise
.
value
=
costAssessAllow
({
guid
:
detailInfo
.
value
.
guid
,
bizGuid
:
detailInfo
.
value
.
guid
,
flowType
:
detailInfo
.
value
.
approveVO
.
flowType
,
approveStaffGuid
:
userData
.
staffGuid
,
guid
:
detailInfo
.
value
.
approveVO
.
approveGuid
,
assessmentMoney
:
info
.
assessmentMoney
,
assessmentDate
:
info
.
assessmentDate
,
assessmentNote
:
info
.
assessmentNote
,
assessmentFile
:
info
.
assessmentFile
.
map
(
f
=>
f
.
url
),
assessmentFile
:
info
.
assessmentFile
.
map
(
file
=>
{
return
{
name
:
file
.
name
,
url
:
file
.
url
}
})
||
[],
}).
then
((
res
:
any
)
=>
{
submitPromise
.
value
=
null
;
if
(
res
?.
code
==
proxy
.
$passCode
)
{
...
...
@@ -1303,7 +1342,8 @@ const formattedDate = (dateVal) => {
<div class="
list_item
is_block
isFile
" :style="
{
width
:
'40%'
}
"
v-if="
((
detailType
!=
'asset'
||
assetDetailInfo
.
isEvaluationAssessment
==
'Y'
)
&&
assetDetailInfo
.
registerAttachment
?.
qualityEvaluationFile
?.
length
)
||
(
evaDetailInfo
?.
qualityEvaluationFile
?.
length
>
0
)
">
<span class="
item_label
" :style="
{
width
:
'auto'
,
'text-align'
:
'left'
}
">数据质量评价收集</span>
<span v-for="
(
item
)
in
(
evaDetailInfo
?.
qualityEvaluationFile
||
assetDetailInfo
.
registerAttachment
?.
qualityEvaluationFile
||
[])
"
<span
v-for="
(
item
)
in
(
evaDetailInfo
?.
qualityEvaluationFile
||
assetDetailInfo
.
registerAttachment
?.
qualityEvaluationFile
||
[])
"
class="
item_value
" :style="
{
'padding-left'
:
'0px'
}
">
<div class="
file
-
operate
">
<template
...
...
@@ -1453,6 +1493,44 @@ const formattedDate = (dateVal) => {
</div>
</span>
</div>
<div class="
list_item
is_block
isFile
" :style="
{
width
:
'40%'
,
'margin-right'
:
'28px'
}
"
v-if="
(
detailType
==
'costAssess'
&&
costAssessDetailInfo
.
costAssessmentFile
?.
length
)
">
<span class="
item_label
" :style="
{
width
:
'auto'
,
'text-align'
:
'left'
}
">价值评估收集附件</span>
<span v-for="
(
item
)
in
(
costAssessDetailInfo
.
costAssessmentFile
||
[])
" class="
item_value
"
:style="
{
'padding-left'
:
'0px'
}
">
<div class="
file
-
operate
">
<template
v-if="
item
.
name
.
substring
(
item
.
name
.
lastIndexOf
(
'.'
)
+
1
)
==
'xls'
||
item
.
name
.
substring
(
item
.
name
.
lastIndexOf
(
'.'
)
+
1
)
==
'xlsx'
||
item
.
name
.
substring
(
item
.
name
.
lastIndexOf
(
'.'
)
+
1
)
==
'csv'
">
<img class="
file
-
img
" src="
..
/
..
/
assets
/
images
/
excel
.
png
" />
</template>
<template
v-else-if="
item
.
name
.
substring
(
item
.
name
.
lastIndexOf
(
'.'
)
+
1
)
==
'doc'
||
item
.
name
.
substring
(
item
.
name
.
lastIndexOf
(
'.'
)
+
1
)
==
'docx'
">
<img class="
file
-
img
" src="
..
/
..
/
assets
/
images
/
word
.
png
" />
</template>
<template v-else-if="
item
.
name
.
substring
(
item
.
name
.
lastIndexOf
(
'.'
)
+
1
)
==
'zip'
">
<img class="
file
-
img
" src="
..
/
..
/
assets
/
images
/
zip
.
png
" />
</template>
<template v-else-if="
item
.
name
.
substring
(
item
.
name
.
lastIndexOf
(
'.'
)
+
1
)
==
'rar'
">
<img class="
file
-
img
" src="
..
/
..
/
assets
/
images
/
RAR
.
png
" />
</template>
<template v-else-if="
item
.
name
.
substring
(
item
.
name
.
lastIndexOf
(
'.'
)
+
1
)
==
'pdf'
">
<img class="
file
-
img
" src="
..
/
..
/
assets
/
images
/
PDF
.
png
" />
</template>
<template v-else-if="
item
.
name
.
substring
(
item
.
name
.
lastIndexOf
(
'.'
)
+
1
)
==
'png'
">
<img class="
file
-
img
" src="
..
/
..
/
assets
/
images
/
png
.
png
" />
</template>
<template
v-else-if="
item
.
name
.
substring
(
item
.
name
.
lastIndexOf
(
'.'
)
+
1
)
==
'jpg'
||
item
.
name
.
substring
(
item
.
name
.
lastIndexOf
(
'.'
)
+
1
)
==
'jpeg'
">
<img class="
file
-
img
" src="
..
/
..
/
assets
/
images
/
jpg
.
png
" />
</template>
<div class="
file
-
name
"
>
{{
item
.
name
}}
<
/div
>
<
div
:
style
=
"
{
right
:
'36px'
}
"
v-if="
item
.
name
.
substring
(
item
.
name
.
lastIndexOf
(
'.'
)
+
1
)
==
'pdf'
||
item
.
name
.
substring
(
item
.
name
.
lastIndexOf
(
'.'
)
+
1
)
==
'png'
||
item
.
name
.
substring
(
item
.
name
.
lastIndexOf
(
'.'
)
+
1
)
==
'jpg'
||
item
.
name
.
substring
(
item
.
name
.
lastIndexOf
(
'.'
)
+
1
)
==
'jpeg'
"
class="
file
-
preview
" @click="
onUploadFilePreview
(
item
)
">查看</div>
<div :style="
{
right
:
'0px'
}
" class="
file
-
preview
" @click="
onUploadFileDownload
(
item
)
">下载</div>
</div>
</span>
</div>
<!-- <span
v-if="
tenantDetail
.
businessLicense
?.
length
||
assetDetailInfo
.
registerAttachment
?.
commitmentLetter
?.
length
"
class="
small
-
title
" :style="
{
marginTop
:
'10px'
}
">公司信息</span> -->
...
...
src/views/data_asset/valueEvaluate.vue
View file @
b35fe61
...
...
@@ -41,7 +41,7 @@ const attachDataInfo: any = ref({});
const
tableFields
=
ref
([
{
label
:
"序号"
,
type
:
"index"
,
width
:
56
,
align
:
"center"
},
{
label
:
"资产名称"
,
field
:
"daName"
,
width
:
160
,
align
:
"left"
},
{
label
:
"资产名称"
,
field
:
"daName"
,
width
:
160
,
align
:
"left"
,
type
:
'text_btn'
,
value
:
'productDetail'
,
columClass
:
'text_btn'
},
{
label
:
"登记时间"
,
field
:
"registerTime"
,
width
:
120
},
// { label: "企业名称", field: "tenantName", width: 240, align: "left" },
{
label
:
"评估机构"
,
field
:
"issuingEntityName"
,
width
:
250
,
align
:
"left"
},
...
...
@@ -184,6 +184,7 @@ const handleCreate = () => {
ElMessage
.
warning
(
'当前没有可发起价值评估的资产!'
);
return
;
}
formItems
.
value
[
4
].
placeholder
=
`本次评估数据资产总体质量得分为**分\n准确性:\n一致性:\n可访问性:\n规范性:\n完整性:`
;
formItems
.
value
[
0
].
visible
=
true
;
formItems
.
value
[
0
].
default
=
''
;
formItems
.
value
[
1
].
visible
=
true
;
...
...
@@ -313,20 +314,20 @@ const tableBtnClick = (scope, btn) => {
currTableData
.
value
=
row
;
if
(
type
==
"redit"
)
{
if
(
!
row
.
registerGuid
)
{
formItems
.
value
[
2
].
visible
=
fals
e
;
formItems
.
value
[
3
].
visible
=
fals
e
;
formItems
.
value
[
4
].
visible
=
fals
e
;
formItems
.
value
[
5
].
visible
=
fals
e
;
formItems
.
value
[
2
].
visible
=
tru
e
;
formItems
.
value
[
3
].
visible
=
tru
e
;
formItems
.
value
[
4
].
visible
=
tru
e
;
formItems
.
value
[
5
].
visible
=
tru
e
;
formItems
.
value
[
0
].
visible
=
false
;
formItems
.
value
[
0
].
default
=
row
.
damGuid
;
formItems
.
value
[
1
].
default
=
row
.
costAssessmentFile
||
[];
dialogInfo
.
value
.
type
=
'reSubmit'
;
dialogInfo
.
value
.
visible
=
true
;
}
else
{
formItems
.
value
[
2
].
visible
=
tru
e
;
formItems
.
value
[
3
].
visible
=
tru
e
;
formItems
.
value
[
4
].
visible
=
tru
e
;
formItems
.
value
[
5
].
visible
=
tru
e
;
formItems
.
value
[
2
].
visible
=
fals
e
;
formItems
.
value
[
3
].
visible
=
fals
e
;
formItems
.
value
[
4
].
visible
=
fals
e
;
formItems
.
value
[
5
].
visible
=
fals
e
;
formItems
.
value
[
0
].
visible
=
false
;
formItems
.
value
[
0
].
default
=
row
.
damGuid
;
formItems
.
value
[
1
].
default
=
row
.
costAssessmentFile
||
[];
...
...
@@ -371,12 +372,12 @@ const tableBtnClick = (scope, btn) => {
}
else
if
(
type
===
'detail'
)
{
// 详情
if
(
row
.
registerApproveState
==
'Y'
)
{
router
.
push
({
name
:
'registerDetail'
,
name
:
'register
Value
Detail'
,
query
:
{
guid
:
row
.
registerGuid
,
costAssessGuid
:
row
.
guid
,
type
:
'costAssess'
,
daTenantGuid
:
row
.
tenantGuid
}
});
}
else
{
router
.
push
({
name
:
'
evaCatalog
Detail'
,
name
:
'
costAssess
Detail'
,
query
:
{
guid
:
row
.
damGuid
,
costAssessGuid
:
row
.
guid
,
type
:
'costAssess'
}
});
}
...
...
@@ -560,7 +561,9 @@ const formItems = ref<any>([
{
label
:
'质量评估结果'
,
type
:
'textarea'
,
placeholder
:
'请输入质量评估结果'
,
focusValue
:
true
,
example
:
'示例:本次评估数据资产总体质量得分为99.80分。从评价维度分析,准确性、一致性和可访问性均为 100 分;规范性 99.42 分、完整性 99.50分。'
,
placeholder
:
`本次评估数据资产总体质量得分为**分\n准确性:\n一致性:\n可访问性:\n规范性:\n完整性:`
,
field
:
'evaluationNote'
,
default
:
''
,
maxlength
:
250
,
...
...
@@ -595,12 +598,41 @@ const formRules = ref({
callback
();
}
},
trigger
:
'change'
}]
}],
qualityScore
:
[
{
required
:
true
,
trigger
:
'change'
,
message
:
"请填写质量评分"
}
],
evaluationRange
:
[
{
required
:
true
,
trigger
:
'change'
,
message
:
"请填写数据时间范围"
}
],
evaluationNote
:
[{
validator
:
(
rule
:
any
,
value
:
any
,
callback
:
any
)
=>
{
if
(
!
value
)
{
callback
(
new
Error
(
'请填写质量评价说明'
));
return
;
}
if
(
value
&&
value
.
length
>
500
)
{
callback
(
new
Error
(
'请填写小于500个字的质量评价说明'
));
return
;
}
callback
();
},
trigger
:
"blur"
,
}],
evaluationFile
:
[{
validator
:
(
rule
:
any
,
value
:
any
,
callback
:
any
)
=>
{
if
(
!
value
?.
length
)
{
callback
(
new
Error
(
'请上传质量报告'
))
}
else
{
callback
();
}
},
trigger
:
'change'
}],
});
const
dialogInfo
=
ref
({
visible
:
false
,
size
:
5
10
,
size
:
6
10
,
direction
:
"column"
,
header
:
{
title
:
"价值评估发起"
,
...
...
@@ -717,6 +749,7 @@ const dialogBtnClick = (btn, info) => {
dialogInfo
.
value
.
visible
=
false
;
page
.
value
.
curr
=
1
;
getTableData
();
formItems
.
value
[
4
].
placeholder
=
`本次评估数据资产总体质量得分为**分\n准确性:\n一致性:\n可访问性:\n规范性:\n完整性:`
;
}
else
{
ElMessage
.
error
(
res
.
msg
);
}
...
...
src/views/data_product/productListingDetail.vue
View file @
b35fe61
...
...
@@ -1492,7 +1492,7 @@ const timeRangeInfo = computed(() => {
if
(
flowDetail
.
value
.
timeAreaStart
&&
flowDetail
.
value
.
timeAreaEnd
)
{
const
startDate
=
flowDetail
.
value
.
timeAreaStart
.
split
(
'T'
)[
0
];
const
endDate
=
flowDetail
.
value
.
timeAreaEnd
.
split
(
'T'
)[
0
];
return
`
${
startDate
}
-
${
endDate
}
`
;
return
`
${
startDate
}
至
${
endDate
}
`
;
}
return
'--'
;
});
...
...
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