Merge branch 'dev_20241202_xukangle' into develop
Showing
3 changed files
with
78 additions
and
72 deletions
| ... | @@ -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(); | ... | ... |
-
Please register or sign in to post a comment