使用Map代替原来的数组, 原来会出现错乱问题

This commit is contained in:
邓皓元 2020-01-06 23:04:10 +08:00
parent cb29ab302a
commit e5e33e11bd

View File

@ -9,14 +9,14 @@ export default {
}, },
data() { data() {
return { return {
properties: [], properties: new Map(),
showData: [], showData: [],
params: { params: {
company_id: '', company_id: '',
package_id: '' package_id: ''
}, },
only: ['company_id', 'package_id', 'product', 'vehicle', 'commercial_vehicle', 'company', 'platform', 'customer', 'province', 'agent'], only: ['company_id', 'package_id', 'product', 'vehicle', 'commercial_vehicle', 'company', 'platform', 'customer', 'province', 'agent'],
updates: [], updates: new Map(),
settingsShow: false, settingsShow: false,
settingsData: {}, settingsData: {},
agentsData: {}, agentsData: {},
@ -270,10 +270,12 @@ export default {
}, },
on: { on: {
input: (value) => { input: (value) => {
let index = (this.page.page - 1) * this.page.limit + context.index; let index = this.getIndex(context.row);
this.properties[index][key] = value; let property = this.properties.get(index);
property[key] = value;
this.properties.set(index, property);
this.changePage(this.page.page); this.changePage(this.page.page);
this.updates[index] = this.properties[index]; this.updates.set(index, this.properties.get(index));
} }
} }
}, options); }, options);
@ -284,11 +286,17 @@ export default {
* @return {[type]} [description] * @return {[type]} [description]
*/ */
index(page = 1) { index(page = 1) {
if (!this.properties.length) { if (!this.properties.size) {
this.isShowLoading(true); this.isShowLoading(true);
API.index().then(res => { API.index().then(res => {
if (res.code === 0) { if (res.code === 0) {
this.properties = res.data; let properties = new Map();
res.data.forEach(element => {
properties.set(this.getIndex(element), element);
});
this.properties = properties;
this.changePage(page); this.changePage(page);
this.complete(); this.complete();
} }
@ -301,7 +309,9 @@ export default {
complete() { complete() {
let companies = {}; let companies = {};
this.properties.map(function (item) { let properties = Array.from(this.properties.values());
properties.forEach((item) => {
companies[item.company_id] = item.company_name; companies[item.company_id] = item.company_name;
}); });
@ -315,7 +325,7 @@ export default {
let packages = {}; let packages = {};
this.properties.map(function (item) { properties.forEach((item) => {
packages[item.package_id] = item.package_name; packages[item.package_id] = item.package_name;
}); });
@ -348,7 +358,7 @@ export default {
changePage(page) { changePage(page) {
this.page.page = page; this.page.page = page;
let properties = JSON.parse(JSON.stringify(this.properties)); let properties = Array.from(this.properties.values());
if (this.params.company_id !== '' && this.params.company_id !== undefined) { if (this.params.company_id !== '' && this.params.company_id !== undefined) {
properties = properties.filter(el => { return el.company_id == this.params.company_id; }); properties = properties.filter(el => { return el.company_id == this.params.company_id; });
@ -392,7 +402,7 @@ export default {
this.settingsData = values; this.settingsData = values;
}, },
ok() { ok() {
if (!this.updates.length) { if (!this.updates.size) {
this.$Message.warning('数据未修改'); this.$Message.warning('数据未修改');
this.editModel = false; this.editModel = false;
return; return;
@ -402,8 +412,7 @@ export default {
let updates = []; let updates = [];
for (let index = 0; index < this.updates.length; index++) { this.updates.forEach((element) => {
const element = this.updates[index];
let obj = {}; let obj = {};
for (const key in element) { for (const key in element) {
if (this.only.indexOf(key) !== -1) { if (this.only.indexOf(key) !== -1) {
@ -411,7 +420,9 @@ export default {
} }
} }
updates.push(obj); updates.push(obj);
} });
console.log("updates", updates);
API.store({ data: updates }).then(res => { API.store({ data: updates }).then(res => {
if (res.code === 0) { if (res.code === 0) {
@ -422,16 +433,16 @@ export default {
}); });
}, },
handleProvinceSuccess(data) { handleProvinceSuccess(data) {
let index = (this.page.page - 1) * this.page.limit + data._index; let index = this.getIndex(data);
this.properties[index] = data; this.properties.set(index, data);
this.changePage(this.page.page); this.changePage(this.page.page);
this.updates[index] = this.properties[index]; this.updates.set(index, this.properties.get(index));
}, },
handleAgentSuccess(data) { handleAgentSuccess(data) {
let index = (this.page.page - 1) * this.page.limit + data._index; let index = this.getIndex(data);
this.properties[index] = data; this.properties.set(index, data);
this.changePage(this.page.page); this.changePage(this.page.page);
this.updates[index] = this.properties[index]; this.updates.set(index, this.properties.get(index));
}, },
exportExcel() { exportExcel() {
let params = {}; let params = {};
@ -474,6 +485,9 @@ export default {
}); });
return false; return false;
},
getIndex(row) {
return row.company_id + '_' + row.package_id;
} }
} }
}; };