f6b63f6f by xukangle

Merge branch 'dev_20241202_xukangle' into develop

2 parents 1b9d92d9 289bbea2
...@@ -8,6 +8,7 @@ import * as XLSX from 'xlsx'; ...@@ -8,6 +8,7 @@ import * as XLSX from 'xlsx';
8 import { 8 import {
9 getImageContent 9 getImageContent
10 } from '@/api/modules/queryService'; 10 } from '@/api/modules/queryService';
11 import { getDownFileSignByUrl, obsDownloadRequest, parseAndDecodeUrl } from "@/api/modules/obsService";
11 12
12 const props = defineProps({ 13 const props = defineProps({
13 noUpload: { 14 noUpload: {
...@@ -266,7 +267,7 @@ const formatterPreviewDate = (row, info) => { ...@@ -266,7 +267,7 @@ const formatterPreviewDate = (row, info) => {
266 return v; 267 return v;
267 }; 268 };
268 269
269 const setFormValue = (v) => { 270 const setFormValue = async (v) => {
270 fileFormItems.value[1].default = v.sheetName || ""; 271 fileFormItems.value[1].default = v.sheetName || "";
271 let url = v.file?.[0]?.url; 272 let url = v.file?.[0]?.url;
272 if (fileFormItems.value[0].default?.[0]?.url !== url) { 273 if (fileFormItems.value[0].default?.[0]?.url !== url) {
...@@ -275,72 +276,78 @@ const setFormValue = (v) => { ...@@ -275,72 +276,78 @@ const setFormValue = (v) => {
275 fileFieldLoading.value = true; 276 fileFieldLoading.value = true;
276 fileTableFields.value = []; 277 fileTableFields.value = [];
277 fileTableData.value = []; 278 fileTableData.value = [];
278 getImageContent(url).then((res: any) => { 279 const refSignInfo: any = await getDownFileSignByUrl(parseAndDecodeUrl(url).fileName);
279 if (res && !res.msg) { 280 if (!refSignInfo?.data) {
280 let urlNames = url.split('/'); 281 refSignInfo?.msg && ElMessage.error(refSignInfo?.msg);
281 let name = urlNames.at(-1); 282 return;
282 let reader = new FileReader(); 283 }
283 reader.onload = function (e) { 284 const res: any = await obsDownloadRequest(refSignInfo?.data);
284 if (!e?.target) { 285 // getImageContent(url).then((res: any) => {
285 fileFieldLoading.value = false; 286 if (res && !res.msg) {
286 return; 287 let urlNames = url.split('/');
288 let name = urlNames.at(-1);
289 let reader = new FileReader();
290 reader.onload = function (e) {
291 if (!e?.target) {
292 fileFieldLoading.value = false;
293 return;
294 }
295 let data = new Uint8Array(<any>e.target.result);
296
297 const wb = XLSX.read(data, { type: 'array', raw: false, cellDates: true });
298 fileWb.value = wb;
299 console.log(wb);
300 sheetList.value = wb.SheetNames?.map(s => {
301 return {
302 value: s,
303 label: s
287 } 304 }
288 let data = new Uint8Array(<any>e.target.result); 305 }) || [];
289 306 fileFormItems.value[1].options = sheetList.value;
290 const wb = XLSX.read(data, { type: 'array', raw: false, cellDates: true }); 307 fileFormItems.value[1].default = v.sheetName || "";
291 fileWb.value = wb; 308 const sheet = wb.Sheets[v.sheetName];
292 console.log(wb); 309 const json: any[] = XLSX.utils.sheet_to_json(sheet, { header: 1 });
293 sheetList.value = wb.SheetNames?.map(s => { 310 if (json.length == 0) {
311 fileTableFields.value = [];
312 fileTableData.value = [];
313 } else {
314 fileTableFields.value = json[0]?.map((j, index) => {
294 return { 315 return {
295 value: s, 316 index: index,
296 label: s 317 enName: j + '',
318 chName: j + '',
319 dataType: 'varchar'
297 } 320 }
298 }) || []; 321 }) || [];
299 fileFormItems.value[1].options = sheetList.value; 322 if (json.length > 1) {
300 fileFormItems.value[1].default = v.sheetName || ""; 323 fileTableData.value = json.slice(1, 51).map((info, row) => {
301 const sheet = wb.Sheets[v.sheetName]; 324 let object = {};
302 const json: any[] = XLSX.utils.sheet_to_json(sheet, { header: 1 }); 325 json[0].forEach((name, col) => {
303 if (json.length == 0) { 326 if (info[col] === "" || info[col] == null) {
304 fileTableFields.value = []; 327 object[name] = info[col];
305 fileTableData.value = []; 328 } else {
306 } else { 329 var cellRef = XLSX.utils.encode_cell({ r: row + 1, c: col });
307 fileTableFields.value = json[0]?.map((j, index) => { 330 var cell = sheet[cellRef];
308 return { 331 object[name] = cell.w || info[col];
309 index: index, 332 let isNum = cell.t == 'n';
310 enName: j + '', 333 if (isNum && fileTableFields.value[col].dataType != 'int') {
311 chName: j + '', 334 fileTableFields.value[col].dataType = 'int';
312 dataType: 'varchar'
313 }
314 }) || [];
315 if (json.length > 1) {
316 fileTableData.value = json.slice(1, 51).map((info, row) => {
317 let object = {};
318 json[0].forEach((name, col) => {
319 if (info[col] === "" || info[col] == null) {
320 object[name] = info[col];
321 } else {
322 var cellRef = XLSX.utils.encode_cell({ r: row + 1, c: col });
323 var cell = sheet[cellRef];
324 object[name] = cell.w || info[col];
325 let isNum = cell.t == 'n';
326 if (isNum && fileTableFields.value[col].dataType != 'int') {
327 fileTableFields.value[col].dataType = 'int';
328 }
329 } 335 }
330 }); 336 }
331 return object;
332 }); 337 });
333 } else { 338 return object;
334 fileTableData.value = []; 339 });
335 } 340 } else {
341 fileTableData.value = [];
336 } 342 }
337 fileFieldLoading.value = false; 343 }
338 }; 344 fileFieldLoading.value = false;
339 reader.readAsArrayBuffer(res); 345 };
340 } else { 346 reader.readAsArrayBuffer(res);
341 res?.msg && ElMessage.error(res?.msg); 347 } else {
342 } 348 res?.msg && ElMessage.error(res?.msg);
343 }) 349 }
350 // })
344 } 351 }
345 } 352 }
346 353
...@@ -371,11 +378,11 @@ defineExpose({ ...@@ -371,11 +378,11 @@ defineExpose({
371 :style="{ width: '100%', height: '100%' }"> 378 :style="{ width: '100%', height: '100%' }">
372 <template v-for="(item, index) in (fileTableFields || [])"> 379 <template v-for="(item, index) in (fileTableFields || [])">
373 <el-table-column :label="item.chName" :width="item.dataType === 'datetime' 380 <el-table-column :label="item.chName" :width="item.dataType === 'datetime'
374 ? TableColumnWidth.DATETIME 381 ? TableColumnWidth.DATETIME
375 : item.dataType === 'date' 382 : item.dataType === 'date'
376 ? TableColumnWidth.DATE 383 ? TableColumnWidth.DATE
377 : originTableFieldColumn[item.enName] 384 : originTableFieldColumn[item.enName]
378 " :align="getTextAlign(item)" :header-align="getTextAlign(item)" 385 " :align="getTextAlign(item)" :header-align="getTextAlign(item)"
379 :formatter="(row) => formatterPreviewDate(row, item)" :show-overflow-tooltip="true"> 386 :formatter="(row) => formatterPreviewDate(row, item)" :show-overflow-tooltip="true">
380 </el-table-column> 387 </el-table-column>
381 </template> 388 </template>
...@@ -472,4 +479,4 @@ defineExpose({ ...@@ -472,4 +479,4 @@ defineExpose({
472 display: none 479 display: none
473 } 480 }
474 } 481 }
475 </style>
...\ No newline at end of file ...\ No newline at end of file
482 </style>
......
...@@ -10,7 +10,6 @@ import { ...@@ -10,7 +10,6 @@ import {
10 import { pinyin } from 'pinyin-pro'; 10 import { pinyin } from 'pinyin-pro';
11 import useUserStore from "@/store/modules/user"; 11 import useUserStore from "@/store/modules/user";
12 import { getDictionaryTree } from '@/api/modules/dataInventory'; 12 import { getDictionaryTree } from '@/api/modules/dataInventory';
13 import { pa } from 'element-plus/es/locale';
14 13
15 const emits = defineEmits([ 14 const emits = defineEmits([
16 "cancelImport", 15 "cancelImport",
......
...@@ -95,7 +95,7 @@ const searchItemList = ref([ ...@@ -95,7 +95,7 @@ const searchItemList = ref([
95 { 95 {
96 type: "select", 96 type: "select",
97 label: "", 97 label: "",
98 field: "registerState", 98 field: "isRegister",
99 default: "", 99 default: "",
100 placeholder: "登记状态", 100 placeholder: "登记状态",
101 clearable: true, 101 clearable: true,
...@@ -118,7 +118,7 @@ const pageInfo = ref({ ...@@ -118,7 +118,7 @@ const pageInfo = ref({
118 damType: "", 118 damType: "",
119 tenantGuid: "", 119 tenantGuid: "",
120 dataSources: "", 120 dataSources: "",
121 registerState: "", 121 isRegister: "",
122 subjectDomain: [], 122 subjectDomain: [],
123 }); 123 });
124 124
...@@ -193,7 +193,7 @@ const getTableData = () => { ...@@ -193,7 +193,7 @@ const getTableData = () => {
193 subjectDomain: pageInfo.value.subjectDomain, 193 subjectDomain: pageInfo.value.subjectDomain,
194 tenantGuid: pageInfo.value.tenantGuid, 194 tenantGuid: pageInfo.value.tenantGuid,
195 dataSources: pageInfo.value.dataSources, 195 dataSources: pageInfo.value.dataSources,
196 registerState: pageInfo.value.registerState, 196 isRegister: pageInfo.value.isRegister,
197 }).then((res: any) => { 197 }).then((res: any) => {
198 listDataLoading.value = false; 198 listDataLoading.value = false;
199 if (res.code == proxy.$passCode) { 199 if (res.code == proxy.$passCode) {
...@@ -216,14 +216,14 @@ const toSearch = (val: any, clear: boolean = false) => { ...@@ -216,14 +216,14 @@ const toSearch = (val: any, clear: boolean = false) => {
216 pageInfo.value.damType = ""; 216 pageInfo.value.damType = "";
217 pageInfo.value.subjectDomain = []; 217 pageInfo.value.subjectDomain = [];
218 pageInfo.value.tenantGuid = ""; 218 pageInfo.value.tenantGuid = "";
219 pageInfo.value.registerState = ""; 219 pageInfo.value.isRegister = "";
220 pageInfo.value.dataSources = ""; 220 pageInfo.value.dataSources = "";
221 } else { 221 } else {
222 pageInfo.value.damName = val.damName; 222 pageInfo.value.damName = val.damName;
223 pageInfo.value.damType = val.damType; 223 pageInfo.value.damType = val.damType;
224 pageInfo.value.subjectDomain = val.subjectDomain; 224 pageInfo.value.subjectDomain = val.subjectDomain;
225 pageInfo.value.tenantGuid = val.tenantGuid; 225 pageInfo.value.tenantGuid = val.tenantGuid;
226 pageInfo.value.registerState = val.registerState; 226 pageInfo.value.isRegister = val.isRegister;
227 pageInfo.value.dataSources = val.dataSources; 227 pageInfo.value.dataSources = val.dataSources;
228 } 228 }
229 getTableData(); 229 getTableData();
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!