From 9ed95781a085ef32b9bc684d8cfbdb0e5db0f5ed Mon Sep 17 00:00:00 2001
From: mk <2403457699@qq.com>
Date: Mon, 7 Aug 2023 13:49:22 +0800
Subject: [PATCH] =?UTF-8?q?=E6=99=BA=E8=83=BD=E5=AF=BC=E5=85=A5=E6=8E=A5?=
=?UTF-8?q?=E5=8F=A3=E8=81=94=E8=B0=83?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/modules/base/smartImport.vue | 75 +++++++++++++++-----------
1 file changed, 45 insertions(+), 30 deletions(-)
diff --git a/src/views/modules/base/smartImport.vue b/src/views/modules/base/smartImport.vue
index 8b97f2655..e8f70b148 100644
--- a/src/views/modules/base/smartImport.vue
+++ b/src/views/modules/base/smartImport.vue
@@ -44,7 +44,6 @@
>下载模板
-
-
+
+ {{ scope.row.userTableHeader || "--" }}
+
+
-
请先导入表格
@@ -178,7 +179,7 @@ export default {
importLoading: false,
groupList: [],
- sHeight: 0,
+ sHeight: 100,
importCode: "",
importOption: { exist: {}, notExist: {} },
@@ -243,7 +244,9 @@ export default {
},
//选择人员信息第一列下拉框
- async handleSelGroup(index, item,change) {
+ async handleSelGroup(index, item, change) {
+ console.log(index, item, change);
+ console.log("让我看看返回的什么");
const url = "/oper/customize/icformitem/getItemListV2";
// const url = 'http://yapi.elinkservice.cn/mock/245/gov/org/isServiceProject/service/serviceScopeTree'
let params = {
@@ -254,10 +257,10 @@ export default {
if (code === 0) {
let oneData = this.dataList[index];
- if(change == 'change'){
- this.dataList[index].itemId = ''
- }
- oneData.itemList = data;
+ if (change == "change") {
+ this.dataList[index].itemId = "";
+ }
+ oneData.itemList = data;
this.$set(this.dataList, index, oneData);
} else {
this.$message.error(msg);
@@ -313,7 +316,9 @@ export default {
const { data } = await this.$http.post("sys/dict/data/dictlist", {
dictType: "resident_category",
});
+ let myObject = { label: "基础信息", value: "BASEINFO" };
this.resiClass = data.data;
+ this.resiClass.unshift(myObject);
} catch (error) {
console.log(error, "获取居民类别字典");
}
@@ -408,30 +413,36 @@ export default {
this.importBtnTitle = "正在上传中...";
const formData = new FormData(); //FormData对象,添加参数只能通过append('key', value)的形式添加
formData.append("file", file.file); //添加文件对象
- formData.append("flieModel", "flieModel"); //添加文件对象
+ formData.append("fileMode", this.importType); //添加文件对象
// http://127.0.0.1:4523/mock2/2515967/97869993
await this.$http
- .post("/actual/base/residentBaseInfo/importExcel", formData)
+ .post("/actual/base/importExcelData/extractExcelHead", formData)
.then((res) => {
console.log("res-up", res);
- if (res.data.code == 0 ) {
- const { data: rawData } = res.data.data;
- rawData.forEach((item, index) => {
- const arr = this.groupList.filter(group => group.label === item.itemGroupId);
- this.handleSelGroup(index, arr[0]);
- });
+ if (res.data.code == 0) {
+ const { metaListData, fileCode, msg } = res.data.data;
this.afterSuccess();
- this.dataList = rawData
- this.importCode = res.data.data.importCode;
+ this.dataList = metaListData;
+ // 相等于在for循环中写filter过滤,这样写能够以 O(1) 的时间复杂度获取 itemGroupId 匹配的元素。
+ let groupMap = new Map(
+ this.groupList.map((item) => [item.label, item])
+ );
+ for (let i in this.dataList) {
+ this.handleSelGroup(
+ i,
+ groupMap.get(this.dataList[i].itemGroupId)
+ );
+ }
+ this.importCode = fileCode;
this.fileData = file;
- } else{
- this.$message.error(res.rawData.msg);
+ } else {
+ this.$message.error(msg);
}
})
.catch((err) => {
console.log("失败", err);
file.onError(); //上传失败的文件会从文件列表中删除
- this.$message.error('导入失败')
+ this.$message.error("导入失败");
});
this.importLoading = false;
this.importBtnTitle = "导入";
@@ -442,13 +453,17 @@ export default {
this.importLoading = true;
this.importBtnTitle = "正在上传中...";
const { importOption, importCode, dataList } = this;
- //MOCK http://127.0.0.1:4523/mock2/2515967/97971313
- let arr = dataList.map(item=>({userTableHeader:item.userTableHeader,itemGroupId:item.itemGroupId,itemId:item.itemId}))
+ let obj = dataList.reduce((acc, item) => {
+ if (item.userTableHeader) {
+ acc[item.userTableHeader] = item.itemId;
+ }
+ return acc;
+ }, {});
+ const formData = new FormData();
+ formData.append("columnMateJson", JSON.stringify(obj));
+ formData.append("fileCode", importCode);
await this.$http
- .post("/actual/base/residentBaseInfo/import/header", {
- importCode,
- option:arr,
- })
+ .post("/actual/base/importExcelData/importResiHouseExcel", formData)
.then((res) => {
console.log("res-up", res);
if (res.data.code == 0 && res.data.msg == "success") {