Browse Source

智能导入接口联调

feature
mk 2 years ago
parent
commit
9ed95781a0
  1. 71
      src/views/modules/base/smartImport.vue

71
src/views/modules/base/smartImport.vue

@ -44,7 +44,6 @@
>下载模板</el-button >下载模板</el-button
> >
</div> </div>
<div v-if="dataList.length > 0"> <div v-if="dataList.length > 0">
<el-table <el-table
ref="ref_table" ref="ref_table"
@ -62,7 +61,6 @@
type="index" type="index"
width="100" width="100"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
prop="userTableHeader" prop="userTableHeader"
header-align="center" header-align="center"
@ -70,9 +68,13 @@
label="表格信息" label="表格信息"
min-width="100" min-width="100"
> >
<template slot-scope="scope">
{{ scope.row.userTableHeader || "--" }}
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="field" prop="itemGroupId"
header-align="center" header-align="center"
align="center" align="center"
label="平台对应信息" label="平台对应信息"
@ -88,7 +90,7 @@
> >
<el-option <el-option
v-for="item in groupList" v-for="item in groupList"
@click.native="handleSelGroup(scope.$index, item,'change')" @click.native="handleSelGroup(scope.$index, item, 'change')"
:key="item.value" :key="item.value"
:label="item.label" :label="item.label"
:value="item.label" :value="item.label"
@ -126,7 +128,6 @@
> >
</div> </div>
</div> </div>
<div class="m-hint" v-else>请先导入表格</div> <div class="m-hint" v-else>请先导入表格</div>
</div> </div>
</div> </div>
@ -178,7 +179,7 @@ export default {
importLoading: false, importLoading: false,
groupList: [], groupList: [],
sHeight: 0, sHeight: 100,
importCode: "", importCode: "",
importOption: { exist: {}, notExist: {} }, 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 = "/oper/customize/icformitem/getItemListV2";
// const url = 'http://yapi.elinkservice.cn/mock/245/gov/org/isServiceProject/service/serviceScopeTree' // const url = 'http://yapi.elinkservice.cn/mock/245/gov/org/isServiceProject/service/serviceScopeTree'
let params = { let params = {
@ -254,8 +257,8 @@ export default {
if (code === 0) { if (code === 0) {
let oneData = this.dataList[index]; let oneData = this.dataList[index];
if(change == 'change'){ if (change == "change") {
this.dataList[index].itemId = '' this.dataList[index].itemId = "";
} }
oneData.itemList = data; oneData.itemList = data;
this.$set(this.dataList, index, oneData); this.$set(this.dataList, index, oneData);
@ -313,7 +316,9 @@ export default {
const { data } = await this.$http.post("sys/dict/data/dictlist", { const { data } = await this.$http.post("sys/dict/data/dictlist", {
dictType: "resident_category", dictType: "resident_category",
}); });
let myObject = { label: "基础信息", value: "BASEINFO" };
this.resiClass = data.data; this.resiClass = data.data;
this.resiClass.unshift(myObject);
} catch (error) { } catch (error) {
console.log(error, "获取居民类别字典"); console.log(error, "获取居民类别字典");
} }
@ -408,30 +413,36 @@ export default {
this.importBtnTitle = "正在上传中..."; this.importBtnTitle = "正在上传中...";
const formData = new FormData(); //FormDataappend('key', value) const formData = new FormData(); //FormDataappend('key', value)
formData.append("file", file.file); // formData.append("file", file.file); //
formData.append("flieModel", "flieModel"); // formData.append("fileMode", this.importType); //
// http://127.0.0.1:4523/mock2/2515967/97869993 // http://127.0.0.1:4523/mock2/2515967/97869993
await this.$http await this.$http
.post("/actual/base/residentBaseInfo/importExcel", formData) .post("/actual/base/importExcelData/extractExcelHead", formData)
.then((res) => { .then((res) => {
console.log("res-up", res); console.log("res-up", res);
if (res.data.code == 0 ) { if (res.data.code == 0) {
const { data: rawData } = res.data.data; const { metaListData, fileCode, msg } = res.data.data;
rawData.forEach((item, index) => {
const arr = this.groupList.filter(group => group.label === item.itemGroupId);
this.handleSelGroup(index, arr[0]);
});
this.afterSuccess(); this.afterSuccess();
this.dataList = rawData this.dataList = metaListData;
this.importCode = res.data.data.importCode; // forfilter, 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; this.fileData = file;
} else{ } else {
this.$message.error(res.rawData.msg); this.$message.error(msg);
} }
}) })
.catch((err) => { .catch((err) => {
console.log("失败", err); console.log("失败", err);
file.onError(); // file.onError(); //
this.$message.error('导入失败') this.$message.error("导入失败");
}); });
this.importLoading = false; this.importLoading = false;
this.importBtnTitle = "导入"; this.importBtnTitle = "导入";
@ -442,13 +453,17 @@ export default {
this.importLoading = true; this.importLoading = true;
this.importBtnTitle = "正在上传中..."; this.importBtnTitle = "正在上传中...";
const { importOption, importCode, dataList } = this; const { importOption, importCode, dataList } = this;
//MOCK http://127.0.0.1:4523/mock2/2515967/97971313 let obj = dataList.reduce((acc, item) => {
let arr = dataList.map(item=>({userTableHeader:item.userTableHeader,itemGroupId:item.itemGroupId,itemId:item.itemId})) 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 await this.$http
.post("/actual/base/residentBaseInfo/import/header", { .post("/actual/base/importExcelData/importResiHouseExcel", formData)
importCode,
option:arr,
})
.then((res) => { .then((res) => {
console.log("res-up", res); console.log("res-up", res);
if (res.data.code == 0 && res.data.msg == "success") { if (res.data.code == 0 && res.data.msg == "success") {

Loading…
Cancel
Save