65ae1614 by lihua

匿名化报告添加不符合文件规则的清单

1 parent 8308acdc
......@@ -393,3 +393,8 @@ export const downDicomPath = (taskExecGuid) => request({
method: 'get',
responseType: 'blob'
})
export const getNoComplianceList = (taskGuid) => request({
url: `${import.meta.env.VITE_APP_DIGITAL_CONTRACT_URL}/anon-task/get-no-compliance?taskGuid=${taskGuid}`,
method: 'get'
})
\ No newline at end of file
......
......@@ -10,6 +10,7 @@ import {
getAnonTaskDetail,
htmlToWord,
sendAnonReport,
getNoComplianceList,
} from '@/api/modules/dataAnonymization';
import { changeNum, download } from '@/utils/common';
import { ElMessage } from 'element-plus';
......@@ -42,6 +43,7 @@ const taskExecGuid = ref(route.query.execGuid);
const oldAnonTaskValueInfo: any = ref({});
/** 执行结果信息 */
const analysisResultInfo: any = ref({});
const noComplianceList: any = ref([]);
const containerRef = ref();
......@@ -273,6 +275,15 @@ onBeforeMount(() => {
analysisResultTableFields.value = res.data?.column || [];
pageInfo.value.curr = 1;
getAnalysisResultPageData(true);
if (taskGuid.value) {
getNoComplianceList(taskGuid.value).then((res: any) => {
if (res?.code == proxy.$passCode) {
noComplianceList.value = res.data || [];
} else {
res?.msg && proxy.$ElMessage.error(res.msg);
}
});
}
} else {
res?.msg && proxy.$ElMessage.error(res.msg);
}
......@@ -310,7 +321,8 @@ onBeforeMount(() => {
} : null" :analysis-result-loading="analysisResultLoading"
:analysis-result-table-fields="analysisResultTableFields" :old-anon-task-value-info="oldAnonTaskValueInfo"
:container-width="containerWidth" :origin-result-table-field-column="originResultTableFieldColumn"
:page-info="pageInfo" :result-data="resultData" :fullResultData="fullResultData" @page-change="pageChange">
:page-info="pageInfo" :result-data="resultData" :fullResultData="fullResultData"
:no-compliance-list="noComplianceList" @page-change="pageChange">
</anonResultAnalysis>
</div>
</template>
......
......@@ -164,7 +164,8 @@
:element-loading-text="loadingText" :analysis-result-loading="analysisResultLoading"
:analysis-result-table-fields="analysisResultTableFields" :old-anon-task-value-info="oldAnonTaskValueInfo"
:container-width="containerWidth" :origin-result-table-field-column="originResultTableFieldColumn"
:page-info="pageInfo" :result-data="resultData" :fullResultData="fullResultData" @page-change="pageChange">
:page-info="pageInfo" :result-data="resultData" :fullResultData="fullResultData"
:no-compliance-list="noComplianceList" @page-change="pageChange">
</anonResultAnalysis>
<!-- 连接器只能查看报告 -->
<template v-if="!isDataProvider" #header>
......@@ -238,7 +239,8 @@ import {
getDicomStatistics,
retryDicom,
downloadAnonReport,
sendAnonReport
sendAnonReport,
getNoComplianceList
} from '@/api/modules/dataAnonymization';
import {
parseAndDecodeUrl,
......@@ -2015,6 +2017,7 @@ const refreshTimer = ref()
/** 执行结果信息 */
const analysisResultInfo: any = ref({});
const noComplianceList: any = ref([]);
const getResultPromise: any = ref(null);
......@@ -2048,6 +2051,15 @@ const processStepThreeResultView = (isRefresh = false) => {
analysisResultTableFields.value = res.data?.column || [];
pageInfo.value.curr = 1;
getAnalysisResultPageData(true);
if (taskGuid.value) {
getNoComplianceList(taskGuid.value).then((res: any) => {
if (res?.code == proxy.$passCode) {
noComplianceList.value = res.data || [];
} else {
res?.msg && proxy.$ElMessage.error(res.msg);
}
});
}
} else if (analysisResultInfo.value.status == 'E') {
isExecEnd.value = true
refreshTimer.value && clearInterval(refreshTimer.value);
......
......@@ -354,10 +354,29 @@
<h1 v-if="analysisResultInfo.rating <= 2" style="text-align: left;margin-top: 10px;margin-bottom: 10px;">六、建议与改进</h1>
<p v-if="analysisResultInfo.rating <= 2" style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ `需要对准标识符${analysisResultInfo.qualifiedIdentifier?.map(f => f.chName)?.join('、')}做有效的泛化和抑制,满足k-匿名要求(设定k10),从而使得该数据集适用于受控环境下进行跨机构流通。` }}</p>
<br clear="all" style="page-break-before:always;mso-break-type:section-break">
<!-- 附录:不符合规则的文件清单 -->
<h1 v-if="noComplianceList.length" style="text-align: left;margin-top: 10px;margin-bottom: 10px;">附录:不符合规则的文件清单</h1>
<table v-if="noComplianceList.length" border="0" cellspacing="0"
style="width:100%;word-break: break-all;margin: 0 auto;text-align: left;border-collapse: collapse;color: #212121">
<thead>
<tr>
<th style="border: 0.5px solid #d9d9d9;text-align: left;padding: 4px 8px;">文件路径</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in noComplianceList" :key="index">
<td style="border: 0.5px solid #d9d9d9;text-align: left;padding: 4px 8px;">
<span style="word-break: break-all;">{{ item.filePath || item.path || item }}</span>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</template>
<script lang="ts" setup name="anonResultAnalysis">
import { ref, computed } from 'vue';
import { TableColumnWidth } from '@/utils/enum';
import { QuestionFilled, CircleCloseFilled } from "@element-plus/icons-vue";
import Moment from 'moment';
......@@ -412,6 +431,10 @@ const props = defineProps({
type: Number,
default: 1200,
},
noComplianceList: {
type: Array,
default: () => [],
},
})
const report = ref();
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!