011e127b by lihua

fix

1 parent 4862fc17
...@@ -197,4 +197,20 @@ export const getSensitiveDataTaskExecLog = (params) => request({ ...@@ -197,4 +197,20 @@ export const getSensitiveDataTaskExecLog = (params) => request({
197 url: `${import.meta.env.VITE_APP_ANONYMIZATION_BASEURL}/sensitive-data-task/get-exec-sensitive-exec-log`, 197 url: `${import.meta.env.VITE_APP_ANONYMIZATION_BASEURL}/sensitive-data-task/get-exec-sensitive-exec-log`,
198 method: 'post', 198 method: 'post',
199 data: params 199 data: params
200 })
201
202 /** ---------- 匿名化处理 ------------------ */
203
204 /** 获取匿名化任务列表 */
205 export const getAnonTaskList = (params) => request({
206 url: `${import.meta.env.VITE_APP_ANONYMIZATION_BASEURL}/anon-task/page-list`,
207 method: 'post',
208 data: params
209 })
210
211 /** 删除匿名化任务 */
212 export const deleteAnonTask = (data) => request({
213 url: `${import.meta.env.VITE_APP_ANONYMIZATION_BASEURL}/anon-task/delete`,
214 method: 'delete',
215 data
200 }) 216 })
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -1415,6 +1415,10 @@ const panelChange = (scope, row) => { ...@@ -1415,6 +1415,10 @@ const panelChange = (scope, row) => {
1415 <img class="file-img" src="../../assets/images/excel.png" /> 1415 <img class="file-img" src="../../assets/images/excel.png" />
1416 </template> 1416 </template>
1417 <template 1417 <template
1418 v-if="file?.name?.substring(file.name.lastIndexOf('.') + 1).toLowerCase() === 'csv'">
1419 <img class="file-img" src="../../assets/images/csv.png" />
1420 </template>
1421 <template
1418 v-else-if="file?.name?.substring(file.name.lastIndexOf('.') + 1).toLowerCase() === 'doc' || file?.name?.substring(file.name.lastIndexOf('.') + 1).toLowerCase() === 'docx'"> 1422 v-else-if="file?.name?.substring(file.name.lastIndexOf('.') + 1).toLowerCase() === 'doc' || file?.name?.substring(file.name.lastIndexOf('.') + 1).toLowerCase() === 'docx'">
1419 <img class="file-img" src="../../assets/images/word.png" /> 1423 <img class="file-img" src="../../assets/images/word.png" />
1420 </template> 1424 </template>
......
...@@ -3,7 +3,165 @@ ...@@ -3,7 +3,165 @@
3 </route> 3 </route>
4 4
5 <script lang="ts" setup name="resultProcess"> 5 <script lang="ts" setup name="resultProcess">
6 import TableTools from "@/components/Tools/table_tools.vue";
7 import { commonPageConfig } from '@/components/PageNav/index';
8 import { TableColumnWidth } from "@/utils/enum";
9 import {
10 dataSourceTypeList,
11 getAnonTaskList,
12 deleteAnonTask,
13 } from '@/api/modules/dataAnonymization';
14 import { useValidator } from '@/hooks/useValidator';
6 15
16 const router = useRouter()
17 const { proxy } = getCurrentInstance() as any;
18 const { required } = useValidator();
19
20 const searchItemList = ref([{
21 type: "input",
22 label: "",
23 field: "taskName",
24 default: "",
25 placeholder: "任务名称",
26 clearable: true,
27 }, {
28 type: "select",
29 label: "",
30 field: "dataSource",
31 default: null,
32 options: dataSourceTypeList,
33 placeholder: "数据来源",
34 clearable: true,
35 filterable: true,
36 }])
37
38 /** 分页及搜索传参信息配置。 */
39 const page = ref({
40 ...commonPageConfig,
41 taskName: '',
42 dataSource: null
43 });
44
45 const tableInfo = ref({
46 id: 'data-file-table',
47 fields: [
48 { label: "序号", type: "index", width: TableColumnWidth.INDEX, align: "center" },
49 { label: "任务名称", field: "taskName", width: 160 },
50 {
51 label: "数据来源", field: "dataSource", width: 100, getName: (scope) => {
52 return scope.row.dataSource && dataSourceTypeList.find(f => f.value == scope.row.dataSource)?.label || '--';
53 }
54 },
55 { label: "任务状态", field: "sensitiveIdentifyTaskStatus", width: TableColumnWidth.STATE, align: 'center', type: "tag" },
56 { label: "导出时间", field: "exportTime", width: TableColumnWidth.DATETIME },
57 { label: "修改人", field: "updateUserName", width: TableColumnWidth.USERNAME },
58 { label: "修改时间", field: "updateTime", width: TableColumnWidth.DATETIME },
59 ],
60 data: [],
61 page: {
62 type: "normal",
63 rows: 0,
64 ...page.value,
65 },
66 loading: false,
67 actionInfo: {
68 label: "操作",
69 type: "btn",
70 width: 180,
71 fixed: 'right',
72 btns: (scope) => {
73 return [ {
74 label: "编辑", value: "edit", disabled: scope.row.status == 'R', click: (scope) => {
75
76 }
77 }, {
78 label: '查看数据', value: 'view', disabled: scope.row.status != 'Y', click: (scope) => {
79 // router.push({
80 // name: 'sensitiveIdentifyConfig',
81 // query: {
82 // guid: scope.row.guid,
83 // execGuid: scope.row.execGuid,
84 // taskName: scope.row.taskName
85 // }
86 // });
87 }
88 }, {
89 label: "删除", value: "delete", disabled: scope.row.status == 'R', click: (scope) => {
90 proxy.$openMessageBox("此操作将永久删除, 是否继续?", () => {
91 let guids = [scope.row.guid];
92 deleteAnonTask(guids).then((res: any) => {
93 if (res?.code == proxy.$passCode) {
94 getTableData();
95 proxy.$ElMessage({
96 type: "success",
97 message: "删除成功",
98 });
99 } else {
100 proxy.$ElMessage({
101 type: "error",
102 message: res.msg,
103 });
104 }
105 });
106 })
107 }
108 }]
109 }
110 }
111 })
112
113 const toSearch = (val: any, clear: boolean = false) => {
114 if (clear) {
115 searchItemList.value.map((item) => (item.default = ""));
116 page.value.taskName = '';
117 page.value.dataSource = null;
118 } else {
119 page.value.taskName = val.taskName;
120 page.value.dataSource = val.dataSource;
121 }
122 getTableData();
123 };
124
125 const getTableData = () => {
126 tableInfo.value.loading = true
127 getAnonTaskList({
128 pageIndex: page.value.curr,
129 pageSize: page.value.limit,
130 taskName: page.value.taskName,
131 dataSource: page.value.dataSource
132 }).then((res: any) => {
133 if (res?.code == proxy.$passCode) {
134 const data = res.data || {};
135 tableInfo.value.data = data.records?.map(d => {
136 d.sensitiveIdentifyTaskStatus = d.status;
137 return d;
138 }) || []
139 tableInfo.value.page.limit = data.pageSize
140 tableInfo.value.page.curr = data.pageIndex
141 tableInfo.value.page.rows = data.totalRows
142 } else {
143 proxy.$ElMessage({
144 type: 'error',
145 message: res.msg,
146 })
147 }
148 tableInfo.value.loading = false
149 })
150 };
151
152 const tablePageChange = (info) => {
153 page.value.curr = Number(info.curr);
154 page.value.limit = Number(info.limit);
155 getTableData();
156 };
157
158 const handleCreate = () => {
159
160 }
161
162 onBeforeMount(() => {
163 toSearch({});
164 })
7 165
8 </script> 166 </script>
9 167
......
...@@ -52,17 +52,17 @@ const tableInfo = ref({ ...@@ -52,17 +52,17 @@ const tableInfo = ref({
52 id: 'data-file-table', 52 id: 'data-file-table',
53 fields: [ 53 fields: [
54 { label: "序号", type: "index", width: TableColumnWidth.INDEX, align: "center" }, 54 { label: "序号", type: "index", width: TableColumnWidth.INDEX, align: "center" },
55 { label: "任务名称", field: "taskName", width: 160 }, 55 { label: "任务名称", field: "taskName", width: 170 },
56 { 56 {
57 label: "数据来源", field: "dataSource", width: 120, getName: (scope) => { 57 label: "数据来源", field: "dataSource", width: 100, getName: (scope) => {
58 return scope.row.dataSource && dataSourceTypeList.find(f => f.value == scope.row.dataSource)?.label || '--'; 58 return scope.row.dataSource && dataSourceTypeList.find(f => f.value == scope.row.dataSource)?.label || '--';
59 } 59 }
60 }, 60 },
61 { label: "任务状态", field: "sensitiveIdentifyTaskStatus", width: TableColumnWidth.STATE, align: 'center', type: "tag" }, 61 { label: "任务状态", field: "sensitiveIdentifyTaskStatus", width: TableColumnWidth.STATE, align: 'center', type: "tag" },
62 { label: "执行人", field: "execUserName", width: TableColumnWidth.USERNAME }, 62 { label: "执行人", field: "execUserName", width: 100 },
63 { label: "执行时间", field: "execTime", width: TableColumnWidth.DATETIME }, 63 { label: "执行时间", field: "execTime", width: 170 },
64 { label: "修改人", field: "updateUserName", width: TableColumnWidth.USERNAME }, 64 { label: "修改人", field: "updateUserName", width: 100 },
65 { label: "修改时间", field: "updateTime", width: TableColumnWidth.DATETIME }, 65 { label: "修改时间", field: "updateTime", width: 170 },
66 ], 66 ],
67 data: [], 67 data: [],
68 page: { 68 page: {
......
...@@ -66,6 +66,7 @@ const nodeClick = (data, node) => { ...@@ -66,6 +66,7 @@ const nodeClick = (data, node) => {
66 pageInfo.value.databaseName = data.databaseName; 66 pageInfo.value.databaseName = data.databaseName;
67 pageInfo.value.tableName = ''; 67 pageInfo.value.tableName = '';
68 } 68 }
69 pageInfo.value.curr = 1;
69 getSensitiveTableFieldData(); 70 getSensitiveTableFieldData();
70 getCntSumInfo(); 71 getCntSumInfo();
71 getSensitiveFieldLabelData(); 72 getSensitiveFieldLabelData();
...@@ -151,7 +152,7 @@ const getExecSensitiveTableData = () => { ...@@ -151,7 +152,7 @@ const getExecSensitiveTableData = () => {
151 d.value = `${d.databaseName}-ds`; //解决文件名称和文件的sheet名称一样的树形选中问题 152 d.value = `${d.databaseName}-ds`; //解决文件名称和文件的sheet名称一样的树形选中问题
152 d.label = d.databaseChName; 153 d.label = d.databaseChName;
153 d.tableList = d.tableList?.map(t => { 154 d.tableList = d.tableList?.map(t => {
154 t.value = t.tableName; 155 t.value = `${d.databaseName}-${t.tableName}`;
155 t.label = t.tableChName; 156 t.label = t.tableChName;
156 t.parent = d.databaseName; 157 t.parent = d.databaseName;
157 return t; 158 return t;
...@@ -546,16 +547,16 @@ const cntLabelMap = ref({ ...@@ -546,16 +547,16 @@ const cntLabelMap = ref({
546 </div> 547 </div>
547 <div class="main_wrap" :style="{ height: isLook ? '100%' : 'calc(100% - 40px)' }"> 548 <div class="main_wrap" :style="{ height: isLook ? '100%' : 'calc(100% - 40px)' }">
548 <div class="table_tool_wrap"> 549 <div class="table_tool_wrap">
550 <div class="cnt-desc">{{'表总数:' + changeNum(cntSumInfo.tableNum || 0, 0) +
551 '张 字段总数:'
552 + changeNum(cntSumInfo.fieldNum || 0, 0) + '个 敏感表总数:' +
553 changeNum(cntSumInfo.sensitiveTableNum || 0, 0) + '张 敏感字段总数:' + changeNum(cntSumInfo.sensitiveFieldNum || 0,
554 0) +
555 '个,其中' + labelTypeList?.map(l => `${l.label}${changeNum(cntSumInfo[cntLabelMap[l.value]] || 0,
556 0)}个`).join(',') + ',非敏感' + changeNum(cntSumInfo['nonSensitiveNum'] || 0, 0) + '个'
557 }}</div>
549 <div class="tools_btns"> 558 <div class="tools_btns">
550 <el-button v-if="!isLook" type="primary" @click="batchConfirm">批量确认</el-button> 559 <el-button v-if="!isLook" type="primary" @click="batchConfirm">批量确认</el-button>
551 <div v-show="!sensitiveTableDataLoading" class="cnt-desc">{{'表总数:' + changeNum(cntSumInfo.tableNum || 0, 0) +
552 '张 字段总数:'
553 + changeNum(cntSumInfo.fieldNum || 0, 0) + '个 敏感表总数:' +
554 changeNum(cntSumInfo.sensitiveTableNum || 0, 0) + '张 敏感字段总数:' + changeNum(cntSumInfo.sensitiveFieldNum || 0,
555 0) +
556 '个,其中' + labelTypeList?.map(l => `${l.label}${changeNum(cntSumInfo[cntLabelMap[l.value]] || 0,
557 0)}个`).join(',') + ',非敏感' + changeNum(cntSumInfo['nonSensitiveNum'] || 0, 0) + '个'
558 }}</div>
559 </div> 560 </div>
560 </div> 561 </div>
561 <div class="table_panel_wrap"> 562 <div class="table_panel_wrap">
...@@ -570,6 +571,13 @@ const cntLabelMap = ref({ ...@@ -570,6 +571,13 @@ const cntLabelMap = ref({
570 <el-table-column type="selection" v-if="!isLook" :selectable="sensitiveTableSelectable" :width="32" 571 <el-table-column type="selection" v-if="!isLook" :selectable="sensitiveTableSelectable" :width="32"
571 align="center" /> 572 align="center" />
572 <el-table-column label="序号" type="index" width="56px" align="center" show-overflow-tooltip> 573 <el-table-column label="序号" type="index" width="56px" align="center" show-overflow-tooltip>
574 <template #default="scope">
575 <span>{{
576 pageInfo.curr !== undefined
577 ? (pageInfo.curr - 1) * pageInfo.limit + scope.$index + 1
578 : scope.$index + 1
579 }}</span>
580 </template>
573 </el-table-column> 581 </el-table-column>
574 <el-table-column label="字段中文名" prop="fieldChName" width="160" align="left" show-overflow-tooltip> 582 <el-table-column label="字段中文名" prop="fieldChName" width="160" align="left" show-overflow-tooltip>
575 <template #default="scope"> 583 <template #default="scope">
...@@ -589,12 +597,12 @@ const cntLabelMap = ref({ ...@@ -589,12 +597,12 @@ const cntLabelMap = ref({
589 @popverBtnClick="handleLabelPopoverClick" /> 597 @popverBtnClick="handleLabelPopoverClick" />
590 </template> 598 </template>
591 <template #default="scope"> 599 <template #default="scope">
592 <el-select-v2 v-if="scope.row['isEdit']" v-model="scope.row['labelGuid']" filterable popper-class="el-select-v2-popper" 600 <el-select-v2 v-if="scope.row['isEdit']" v-model="scope.row['labelGuid']" filterable
593 :options="allDataLabelList" placeholder="请选择" clearable :props="{ value: 'guid', label: 'labelName' }" 601 popper-class="el-select-v2-popper" :options="allDataLabelList" placeholder="请选择" clearable
594 @change="(val) => handleSelectChange(val, scope)"> 602 :props="{ value: 'guid', label: 'labelName' }" @change="(val) => handleSelectChange(val, scope)">
595 <template #default="{ item }"> 603 <template #default="{ item }">
596 <ellipsis-tooltip :content="item.labelName ?? ''" class-name="w100f" 604 <ellipsis-tooltip :content="item.labelName ?? ''" class-name="w100f"
597 :refName="'tooltipOver' + item.guid"></ellipsis-tooltip> 605 :refName="'tooltipOver' + item.guid"></ellipsis-tooltip>
598 </template> 606 </template>
599 </el-select-v2> 607 </el-select-v2>
600 <span v-else>{{ scope.row["labelName"] || '--' }}</span> 608 <span v-else>{{ scope.row["labelName"] || '--' }}</span>
...@@ -656,15 +664,21 @@ const cntLabelMap = ref({ ...@@ -656,15 +664,21 @@ const cntLabelMap = ref({
656 664
657 .table_tool_wrap { 665 .table_tool_wrap {
658 display: flex; 666 display: flex;
667 flex-direction: column;
659 668
660 .cnt-desc { 669 .cnt-desc {
661 line-height: 21px; 670 line-height: 24px;
662 white-space: break-spaces; 671 white-space: break-spaces;
672 margin-top: 4px;
663 } 673 }
664 } 674 }
665 675
676 .tools_btns {
677 padding-top: 0px;
678 }
679
666 .table_panel_wrap { 680 .table_panel_wrap {
667 height: calc(100% - 70px); 681 height: calc(100% - 91px);
668 } 682 }
669 683
670 .bottom_tool_wrap { 684 .bottom_tool_wrap {
...@@ -700,15 +714,6 @@ const cntLabelMap = ref({ ...@@ -700,15 +714,6 @@ const cntLabelMap = ref({
700 } 714 }
701 } 715 }
702 716
703 .tools_btns {
704 display: flex;
705 align-items: center;
706
707 .el-button {
708 margin-right: 8px;
709 }
710 }
711
712 :deep(.filter-cell) { 717 :deep(.filter-cell) {
713 .cell { 718 .cell {
714 position: relative; 719 position: relative;
......
...@@ -46,6 +46,10 @@ ...@@ -46,6 +46,10 @@
46 v-if="file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'xls' || file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'xlsx'"> 46 v-if="file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'xls' || file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'xlsx'">
47 <img class="file-img" src="../../../assets/images/excel.png" /> 47 <img class="file-img" src="../../../assets/images/excel.png" />
48 </template> 48 </template>
49 <template
50 v-if="file?.name?.substring(file.name.lastIndexOf('.') + 1).toLowerCase() === 'csv'">
51 <img class="file-img" src="../../assets/images/csv.png" />
52 </template>
49 <template 53 <template
50 v-else-if="file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'doc' || file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'docx'"> 54 v-else-if="file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'doc' || file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'docx'">
51 <img class="file-img" src="../../../assets/images/word.png" /> 55 <img class="file-img" src="../../../assets/images/word.png" />
......
...@@ -2025,6 +2025,10 @@ const rejectDialogBtnClick = (btn, info) => { ...@@ -2025,6 +2025,10 @@ const rejectDialogBtnClick = (btn, info) => {
2025 v-if="flowDetail.productPic.name.substring(flowDetail.productPic.name.lastIndexOf('.') + 1).toLowerCase() == 'xls' || flowDetail.productPic.name.substring(flowDetail.productPic.name.lastIndexOf('.') + 1).toLowerCase() == 'xlsx' || flowDetail.productPic.name.substring(flowDetail.productPic.name.lastIndexOf('.') + 1).toLowerCase() == 'csv'"> 2025 v-if="flowDetail.productPic.name.substring(flowDetail.productPic.name.lastIndexOf('.') + 1).toLowerCase() == 'xls' || flowDetail.productPic.name.substring(flowDetail.productPic.name.lastIndexOf('.') + 1).toLowerCase() == 'xlsx' || flowDetail.productPic.name.substring(flowDetail.productPic.name.lastIndexOf('.') + 1).toLowerCase() == 'csv'">
2026 <img class="file-img" src="../../assets/images/excel.png" /> 2026 <img class="file-img" src="../../assets/images/excel.png" />
2027 </template> 2027 </template>
2028 <template
2029 v-if="flowDetail.productPic.name.substring(flowDetail.productPic.name.lastIndexOf('.') + 1).toLowerCase() === 'csv'">
2030 <img class="file-img" src="../../assets/images/csv.png" />
2031 </template>
2028 <template 2032 <template
2029 v-else-if="flowDetail.productPic.name.substring(flowDetail.productPic.name.lastIndexOf('.') + 1).toLowerCase() == 'doc' || flowDetail.productPic.name.substring(flowDetail.productPic.name.lastIndexOf('.') + 1).toLowerCase() == 'docx'"> 2033 v-else-if="flowDetail.productPic.name.substring(flowDetail.productPic.name.lastIndexOf('.') + 1).toLowerCase() == 'doc' || flowDetail.productPic.name.substring(flowDetail.productPic.name.lastIndexOf('.') + 1).toLowerCase() == 'docx'">
2030 <img class="file-img" src="../../assets/images/word.png" /> 2034 <img class="file-img" src="../../assets/images/word.png" />
...@@ -2074,6 +2078,10 @@ const rejectDialogBtnClick = (btn, info) => { ...@@ -2074,6 +2078,10 @@ const rejectDialogBtnClick = (btn, info) => {
2074 v-if="flowDetail.registrationCertificate.name.substring(flowDetail.registrationCertificate.name.lastIndexOf('.') + 1).toLowerCase() == 'xls' || flowDetail.registrationCertificate.name.substring(flowDetail.registrationCertificate.name.lastIndexOf('.') + 1).toLowerCase() == 'xlsx' || flowDetail.registrationCertificate.name.substring(flowDetail.registrationCertificate.name.lastIndexOf('.') + 1).toLowerCase() == 'csv'"> 2078 v-if="flowDetail.registrationCertificate.name.substring(flowDetail.registrationCertificate.name.lastIndexOf('.') + 1).toLowerCase() == 'xls' || flowDetail.registrationCertificate.name.substring(flowDetail.registrationCertificate.name.lastIndexOf('.') + 1).toLowerCase() == 'xlsx' || flowDetail.registrationCertificate.name.substring(flowDetail.registrationCertificate.name.lastIndexOf('.') + 1).toLowerCase() == 'csv'">
2075 <img class="file-img" src="../../assets/images/excel.png" /> 2079 <img class="file-img" src="../../assets/images/excel.png" />
2076 </template> 2080 </template>
2081 <template
2082 v-if="flowDetail.registrationCertificate.name.substring(flowDetail.registrationCertificate.name.lastIndexOf('.') + 1).toLowerCase() === 'csv'">
2083 <img class="file-img" src="../../assets/images/csv.png" />
2084 </template>
2077 <template 2085 <template
2078 v-else-if="flowDetail.registrationCertificate.name.substring(flowDetail.registrationCertificate.name.lastIndexOf('.') + 1).toLowerCase() == 'doc' || flowDetail.registrationCertificate.name.substring(flowDetail.registrationCertificate.name.lastIndexOf('.') + 1).toLowerCase() == 'docx'"> 2086 v-else-if="flowDetail.registrationCertificate.name.substring(flowDetail.registrationCertificate.name.lastIndexOf('.') + 1).toLowerCase() == 'doc' || flowDetail.registrationCertificate.name.substring(flowDetail.registrationCertificate.name.lastIndexOf('.') + 1).toLowerCase() == 'docx'">
2079 <img class="file-img" src="../../assets/images/word.png" /> 2087 <img class="file-img" src="../../assets/images/word.png" />
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!