befe0e9c by lihua

修复数据产品上架详情

1 parent 751c707e
......@@ -25,6 +25,7 @@ import { passFlowData, rejectFlowData, revokeFlowData, isMyFirstNode } from "@/a
import { onUploadFilePreview, onUploadFileDownload } from '@/api/modules/common';
import { CircleCloseFilled } from '@element-plus/icons-vue'
import useDataAssetStore from "@/store/modules/dataAsset";
import { TableColumnWidth } from '@/utils/enum';
const router = useRouter();
const route = useRoute();
......@@ -47,6 +48,13 @@ const fullscreenLoading = ref(false);
const isTruncated = ref(false);
const isExpanded = ref(false);
/** 数据产品登记的产品信息详情 */
const publicDataProductsMainRSVO: any = ref({});
const isJSZQ = computed(() => {
return !!detailInfo.value.publicDataProductsMainRSVO?.guid;
})
/** 交付物结果数据 */
const deliveryDetailInfo: any = ref([]);
......@@ -100,9 +108,9 @@ const registerDetailTableInfo = ref({
rowKey: 'guid',
height: 220,
loading: false,
fields: [ { label: "序号", type: "index", width: 56, align: "center" },
{ label: "事项", field: "title", width: 160, align: "left" },
{ label: "对接主体", field: "institutionName", width: 240, align: "left" },
fields: [{ label: "序号", type: "index", width: 56, align: "center" },
{ label: "事项", field: "title", width: 160, align: "left" },
{ label: "对接主体", field: "institutionName", width: 240, align: "left" },
],
data: <any>[],
showPage: false,
......@@ -114,16 +122,19 @@ const registerDetailTableInfo = ref({
label: "查看详情", value: "detail", click: (scope) => {
let row = scope.row;
if (row.type == 'asset') {
router.push({
isJSZQ.value ? router.push({
name: 'registerInfoJSZQDetail',
query: { guid: row.guid, name: detailInfo.value.damName, tenantGuid: row.tenantGuid, tenantName: row.tenantName, type: 'asset' }
}) : router.push({
name: 'registerInfoDetail',
query: { guid: row.guid, name: detailInfo.value.damName, tenantGuid: row.tenantGuid, tenantName: row.tenantName, type: 'asset' }
});
} else if (row.type == 'qualityEvaluate') {
if (row.registerApproveState == 'Y') {
row.dataSource == '1' ? router.push({
isJSZQ.value ? router.push({
name: 'registerJSZQDetail',
query: { guid: row.registerGuid, evaGuid: row.guid, type: 'qualityEvaluate', tenantGuid: row.tenantGuid, tenantName: row.tenantName }
}) : router.push({
}) : router.push({
name: 'registerDetail',
query: { guid: row.registerGuid, evaGuid: row.guid, type: 'qualityEvaluate', tenantGuid: row.tenantGuid, tenantName: row.tenantName }
});
......@@ -135,10 +146,10 @@ const registerDetailTableInfo = ref({
}
} else if (row.type == 'costAssess') {
if (row.registerApproveState == 'Y') {
row.dataSource == '1' ? router.push({
isJSZQ.value ? router.push({
name: 'registerValueJSZQDetail',
query: { guid: row.registerGuid, costAssessGuid: row.guid, type: 'costAssess', tenantGuid: row.tenantGuid, tenantName: row.tenantName }
}) : router.push({
}) : router.push({
name: 'registerValueDetail',
query: { guid: row.registerGuid, costAssessGuid: row.guid, type: 'costAssess', tenantGuid: row.tenantGuid, tenantName: row.tenantName }
});
......@@ -180,11 +191,16 @@ const getDetailInfo = () => {
if (res.code == proxy.$passCode) {
const data = res.data || {};
detailInfo.value = data;
publicDataProductsMainRSVO.value = detailInfo.value.publicDataProductsMainRSVO || {};
// detailInfo.value.damTypeName = damTypes.find(d => d.value == detailInfo.value.damType)?.label;
detailInfo.value.dataSourcesName = dataSourcesList.find(d => d.value == detailInfo.value.dataSources)?.label;
baseInfoFormItems.value.forEach(item => {
item.default = detailInfo.value[item.field]
});
if (!isJSZQ.value) {
baseInfoFormItems.value.forEach(item => {
item.default = detailInfo.value[item.field]
});
}
inputParamsTableInfo.value.data = publicDataProductsMainRSVO.value?.reqParamListRSVOS || [];
respParamsTableInfo.value.data = publicDataProductsMainRSVO.value?.respParamListRSVOS || [];
if (fullPath === route.fullPath) {
document.title = `详情-${data.damName}`;
}
......@@ -275,7 +291,7 @@ const getDetailInfo = () => {
if (data.qualityEvaluationRSVO) {
registerDetailTableInfo.value.data.push(Object.assign({}, data.qualityEvaluationRSVO, {
title: "质量评估",
type: 'qualityEvaluate'
type: 'qualityEvaluate'
}));
}
if (data.costAssessmentRSVO) {
......@@ -373,7 +389,7 @@ const handleTableExpandChange = (row: any, expandedRows: any[]) => {
const handleTableViewData = (scope) => {
let row = scope.row;
router.push({
// name: 'damTableDataView',
// name: 'damTableDataView',
path: route.query.dataSources == '1' ? '/data-asset/authordata-catalog/damTableDataView' : '/data-asset/register-catalog/damTableDataView',
query: {
guid: row.guid,
......@@ -1106,6 +1122,58 @@ const viewDeliveryFile = (file) => {
onUploadFileDownload(file);
}
const activeTabName = ref('reqParamList');
/** 入参表格信息 */
const inputParamsTableInfo = ref({
id: "input-params-table",
height: '214px',
fields: [
{ label: "序号", type: "index", width: TableColumnWidth.INDEX, align: "center" },
{ label: "参数英文", field: "fieldEnName", width: 140, },
{ label: "参数中文", field: "fieldCnName", width: 140, },
{ label: "参数类型", field: "fieldValueTypeName", width: 140, },
{
label: "是否必填", field: "fieldMandatory", width: 100, getName: (scope) => {
return scope.row.fieldMandatory == 'Y' ? '是' : '否';
}
},
{ label: "参数描述", field: "fieldComment", width: 140, },
{ label: "展示层级顺序", field: "levelCode", width: 120, align: 'right', type: 'chnum' },
],
data: [],
showPage: false,
actionInfo: {
show: false,
},
loading: false
});
/** 出参表格信息 */
const respParamsTableInfo = ref({
id: "resp-params-table",
height: '214px',
fields: [
{ label: "序号", type: "index", width: TableColumnWidth.INDEX, align: "center" },
{ label: "参数英文", field: "fieldEnName", width: 140, },
{ label: "参数中文", field: "fieldCnName", width: 140, },
{ label: "参数类型", field: "fieldValueTypeName", width: 140, },
{
label: "是否必填", field: "fieldMandatory", width: 100, getName: (scope) => {
return scope.row.fieldMandatory == 'Y' ? '是' : '否';
}
},
{ label: "参数描述", field: "fieldComment", width: 140, },
{ label: "展示层级顺序", field: "levelCode", width: 120, align: 'right', type: 'chnum' },
],
data: [],
showPage: false,
actionInfo: {
show: false,
},
loading: false
});
</script>
<template>
......@@ -1134,16 +1202,18 @@ const viewDeliveryFile = (file) => {
<div class="left-img"></div>
<div class="right-main">
<div class="asset-title">
<div style="display: flex;align-items: center;">
<div @click="handleClick" :class="{ 'foundMode': detailInfo.foundMode == '2', 'title1': true }">{{
detailInfo.damName ?? '--' }}</div>
<div style="display: flex;align-items: center;width: 100%">
<div @click="handleClick" :class="{ 'foundMode': detailInfo.foundMode == '2', 'title1': true }"><ellipsis-tooltip :content="detailInfo.damName ?? '--'"
class-name="w100f" :refName="'tooltipOver' + 'damName'"></ellipsis-tooltip></div>
<div class="dataLabel">{{ detailInfo.damTypeName }}</div>
<div class="dataLabel">{{ detailInfo.subjectDomainName || detailInfo.subjectDomain }}</div>
<div class="dataLabel" v-show="detailInfo.subjectDomain">{{ detailInfo.subjectDomainName ||
detailInfo.subjectDomain }}</div>
<div class="dataLabel dataLabel1" v-if="detailInfo.databaseType">{{ detailInfo.databaseType }}</div>
<div class="dataLabel dataLabel1">{{ detailInfo.dataSourcesName }}</div>
</div>
</div>
<div class="applicationScenarios">{{ '权利主体:' + detailInfo.rightMainName }}</div>
<div v-show="detailInfo.rightMainName" class="applicationScenarios">{{ '权利主体:' + detailInfo.rightMainName }}
</div>
<div class="applicationScenarios"
:style="{ 'margin-right': (isTruncated && !isExpanded) ? '30px' : '0px', WebkitLineClamp: (!isTruncated ? 'inherit' : (isExpanded ? 'inherit' : 1)), WebkitBoxOrient: 'vertical' }">
{{'覆盖地域:' + (detailInfo.coverageArea?.[0]?.[0] == 'all' ? '全国' : (detailInfo.coverageAreaName?.map(c =>
......@@ -1156,7 +1226,97 @@ const viewDeliveryFile = (file) => {
</div>
</div>
<ContentWrap id="id-assetContent" title="基础信息" description="" style="margin: 0 16px">
<Form ref="baseInfoFormRef" :itemList="baseInfoFormItems" formId="base-info-form" />
<Form v-if="!isJSZQ" ref="baseInfoFormRef" :itemList="baseInfoFormItems" formId="base-info-form" />
<div v-else class="list_panel">
<div class="list_item">
<span class="item_label">产品编码:</span>
<span class="item_value"><ellipsis-tooltip :content="publicDataProductsMainRSVO?.productCode || '--'"
class-name="w100f mr8-i" :refName="'tooltipOver' + 'productCode'"></ellipsis-tooltip></span>
</div>
<div class="list_item">
<span class="item_label">产品类型:</span>
<span class="item_value">{{ publicDataProductsMainRSVO?.productTypeName }}</span>
</div>
<div class="list_item">
<span class="item_label">是否需要信息主体授权:</span>
<span class="item_value">{{ publicDataProductsMainRSVO?.authLevel == 'Y' ? '是' : '否' }}</span>
</div>
<div class="list_item">
<span class="item_label">更新频率:</span>
<span class="item_value">{{ publicDataProductsMainRSVO?.updateFrequencyName || '--' }}</span>
</div>
<div class="list_item">
<span class="item_label">产品发布机构:</span>
<span class="item_value"><ellipsis-tooltip :content="publicDataProductsMainRSVO?.productPublisherName || '--'"
class-name="w100f mr8-i" :refName="'tooltipOver' + 'productPublisherName'"></ellipsis-tooltip></span>
</div>
<div class="list_item">
<span class="item_label">领域:</span>
<span class="item_value">{{ publicDataProductsMainRSVO?.domainName || '--' }}</span>
</div>
<div class="list_item">
<span class="item_label">应用场景:</span>
<span class="item_value"><ellipsis-tooltip :content="publicDataProductsMainRSVO?.scenarioName || '--'"
class-name="w100f mr8-i" :refName="'tooltipOver' + 'scenarioName'"></ellipsis-tooltip></span>
</div>
<div class="list_item" v-show="publicDataProductsMainRSVO?.domain == '003'">
<span class="item_label">所属科室:</span>
<span class="item_value">{{ publicDataProductsMainRSVO?.medDepartmentCodeName || '--' }}</span>
</div>
<div class="list_item" v-show="publicDataProductsMainRSVO?.domain == '003'">
<span class="item_label">所属疾病:</span>
<span class="item_value">{{ publicDataProductsMainRSVO?.diseaseName || '--' }}</span>
</div>
<div class="list_item" v-show="publicDataProductsMainRSVO?.domain == '003'">
<span class="item_label">数据规模(条):</span>
<span class="item_value">{{ changeNum(publicDataProductsMainRSVO?.dataScale || 0, 0) }}</span>
</div>
<div class="list_item" v-show="publicDataProductsMainRSVO?.domain == '003'">
<span class="item_label">病例总数(例):</span>
<span class="item_value">{{ changeNum(publicDataProductsMainRSVO?.caseNumber || 0, 0) }}</span>
</div>
<div class="list_item" v-show="publicDataProductsMainRSVO?.domain == '004'">
<span class="item_label">所属主题:</span>
<span class="item_value">{{ publicDataProductsMainRSVO?.subjectDomainName || '--' }}</span>
</div>
<div class="list_item">
<span class="item_label">数据来源:</span>
<span class="item_value">{{ publicDataProductsMainRSVO?.dataSourcesName || '--' }}</span>
</div>
<div class="list_item">
<span class="item_label">数据覆盖范围:</span>
<span class="item_value"><ellipsis-tooltip :content="!publicDataProductsMainRSVO?.dataCoverage?.length ? '--' : (publicDataProductsMainRSVO?.dataCoverage[0] == '1' ?
'全国' : publicDataProductsMainRSVO?.dataCoverageName.join(',')
)" class-name="w100f mr8-i" :refName="'tooltipOver' + 'dataCoverage'"></ellipsis-tooltip></span>
</div>
<div class="list_item">
<span class="item_label">产品应用方向:</span>
<span class="item_value">{{ publicDataProductsMainRSVO?.productDirectionName || '--' }}</span>
</div>
<div class="list_item">
<span class="item_label">版本名称:</span>
<span class="item_value"><ellipsis-tooltip :content="publicDataProductsMainRSVO?.versionName || '--'"
class-name="w100f mr8-i" :refName="'tooltipOver' + 'versionName'"></ellipsis-tooltip></span>
</div>
<div class="list_item is_block">
<span class="item_label">产品关键词:</span>
<span class="item_value">{{ publicDataProductsMainRSVO.productKeywords?.join(',') || '--' }}</span>
</div>
<div class="list_item is_block">
<span class="item_label">产品描述:</span>
<span class="item_value">{{ publicDataProductsMainRSVO?.productDesc || '--' }}</span>
</div>
</div>
</ContentWrap>
<ContentWrap v-if="isJSZQ" id="id-paramsInfo" title="入参出参信息" description="" style="margin: 16px 16px 16px">
<el-tabs v-model="activeTabName" class="param-tabs">
<el-tab-pane label="入参信息" name="reqParamList">
<Table ref="inputParamsTableRef" :tableInfo="inputParamsTableInfo" class="fiveRow-table" />
</el-tab-pane>
<el-tab-pane label="出参信息" name="respParamList">
<Table ref="respParamsTableRef" :tableInfo="respParamsTableInfo" class="fiveRow-table" />
</el-tab-pane>
</el-tabs>
</ContentWrap>
<ContentWrap id="id-table" title="资源表" v-if="detailInfo.damCatalogTableInfo?.length" description=""
style="margin: 16px 16px 16px">
......@@ -1342,7 +1502,7 @@ const viewDeliveryFile = (file) => {
<div class="list_item" :style="{ width: '60%' }">
<span class="item_label">评价对象范围:</span>
<span class="item_value">{{ evaDetailInfo.evaluationRangeStart + '~' + evaDetailInfo.evaluationRangeEnd
}}</span>
}}</span>
</div>
<div class="list_item is_block">
<span class="item_label">质量评价结果:</span>
......@@ -1472,7 +1632,8 @@ const viewDeliveryFile = (file) => {
</div>
</ContentWrap>
<ContentWrap v-if="route.query.type == 'asset' && registerDetailTableInfo.data.length > 0" id="id-registerDetail" title="登记评估上架交易" description="" style="margin: 16px 16px 16px">
<ContentWrap v-if="route.query.type == 'asset' && registerDetailTableInfo.data.length > 0" id="id-registerDetail"
title="登记评估上架交易" description="" style="margin: 16px 16px 16px">
<Table :table-info="registerDetailTableInfo"></Table>
</ContentWrap>
......@@ -1517,7 +1678,7 @@ const viewDeliveryFile = (file) => {
v-if="toolBtns.length && (route.query.type == 'qualityEvaluate' || route.query.type == 'costAssess' || route.query.type == 'asset')">
<div class="btns">
<el-button v-for="btn in toolBtns" :type="btn.type" :plain="btn.plain" @click="btnClick(btn)">{{ btn.label
}}</el-button>
}}</el-button>
</div>
</div>
<Dialog :dialogInfo="passDialogInfo" @btnClick="passDialogBtnClick" @inputChange=passDialogInputChange />
......@@ -1691,6 +1852,7 @@ const viewDeliveryFile = (file) => {
letter-spacing: 0;
line-height: 30px;
font-weight: 600;
max-width: calc(100% - 250px);
}
.dataLabel {
......@@ -1856,4 +2018,21 @@ const viewDeliveryFile = (file) => {
flex-direction: column;
}
}
:deep(.param-tabs.el-tabs) {
margin-top: -8px;
.el-tabs__header {
margin-bottom: 8px;
}
.el-tabs__item {
height: 32px;
&:nth-child(2) {
padding-left: 16px;
}
}
}
</style>
......
......@@ -2200,6 +2200,9 @@ const saveDraft = () => {
}
fullscreenLoading.value = true;
if (guid) {
if (!params.damGuid) {
params.damGuid = detailInfo.value.damGuid;
}
params.guid = guid;
registerUpdate(params).then((res: any) => {
fullscreenLoading.value = false;
......@@ -2400,6 +2403,9 @@ const save = () => {
}
fullscreenLoading.value = true;
if (guid) {
if (!params.damGuid) {
params.damGuid = detailInfo.value.damGuid;
}
params.guid = guid;
registerUpdate(params).then((res: any) => {
fullscreenLoading.value = false;
......
......@@ -1939,7 +1939,7 @@ const rejectDialogBtnClick = (btn, info) => {
<span class="item_label">数据时间范围:</span>
<span class="item_value">{{ timeRangeInfo || '--' }}</span>
</div>
<div class="list_item">
<div v-show="flowDetail.dataSource != '1'" class="list_item">
<span class="item_label">交付方式:</span>
<span class="item_value">{{ flowDetail.deliveryWayName || '--' }}</span>
</div>
......@@ -1947,7 +1947,7 @@ const rejectDialogBtnClick = (btn, info) => {
<span class="item_label">定价方式:</span>
<span class="item_value">{{ priceWayInfo || '--' }}</span>
</div>
<div class="list_item">
<div v-show="flowDetail.dataSource != '1'" class="list_item">
<span class="item_label">定价金额:</span>
<span class="item_value">{{ prcieInfo || '--' }}</span>
</div>
......@@ -1976,11 +1976,11 @@ const rejectDialogBtnClick = (btn, info) => {
}}</span>
</span>
</div>
<div class="list_item is_block">
<div v-show="flowDetail.dataSource != '1'" class="list_item is_block">
<span class="item_label">收费说明:</span>
<span class="item_value">{{ flowDetail.feeDesc || '--' }}</span>
</div>
<div class="list_item1 is_block1">
<div v-show="flowDetail.dataSource != '1'" class="list_item1 is_block1">
<div class="file_item" v-if="flowDetail.productPic && flowDetail.productPic.name">
<span class="item_label">产品图片:</span>
<span class="item_value">
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!