This commit is contained in:
xielue 2023-07-10 16:28:11 +08:00
parent 2b93646863
commit 5db9f23c38
1 changed files with 132 additions and 21 deletions

View File

@ -29,6 +29,7 @@
<a-tab-pane key="main" tab="主柜">
<a-button @click="reloadMain()" style="margin-bottom: 5px;">重新加载方案</a-button>
<a-collapse v-model="groupbox1_activeKey">
<a-collapse-panel key="1" header="基本信息">
@ -75,7 +76,7 @@
:edit-render="{ name: 'MkGridDataSelector' }"></vxe-column>
<vxe-column field="long_formula" title="长" width="160" :edit-render="{ name: 'EditExpressions' }"
:params="{ moreExpressionsList: getMoreExpressionsList_material_height }">
:params="{ moreExpressionsList: getMoreExpressionsList }">
<template #default="{ row }">
<a-tooltip>
<template slot="title">
@ -89,7 +90,7 @@
</template>
</vxe-column>
<vxe-column field="width_formula" title="宽" width="160" :edit-render="{ name: 'EditExpressions' }"
:params="{ moreExpressionsList: getMoreExpressionsList_material_height }">
:params="{ moreExpressionsList: getMoreExpressionsList }">
<template #default="{ row }">
<a-tooltip>
<template slot="title">
@ -103,7 +104,7 @@
</template>
</vxe-column>
<vxe-column field="height_formula" title="厚" width="160" :edit-render="{ name: 'EditExpressions' }"
:params="{ moreExpressionsList: getMoreExpressionsList_material_height }">
:params="{ moreExpressionsList: getMoreExpressionsList }">
<template #default="{ row }">
<a-tooltip>
<template slot="title">
@ -727,6 +728,8 @@
</a-tab-pane>
<a-tab-pane v-for="(item, index) in drawer_detailsData" :key="index" :tab="item.name">
<a-button @click="onTabEdit(index)" style="margin-bottom: 5px;">移除</a-button>
<a-button @click="reloadDrawer(index)" style="margin-bottom: 5px;margin-left: 5px;">重新加载方案</a-button>
<drawer :item="item" ref="drawer" :index="index" @update="calculateAll()"></drawer>
</a-tab-pane>
</a-tabs>
@ -911,8 +914,9 @@ export default {
paintMaterial_detailsData: [], //
paintLabor_detailsData: [], //
bathroomMaterial_list: [],//
moreExpressionsList_material_height:[],//
fittings_list: [],//
moreExpressionsList_material_height: [],//
moreExpressionsList_fittings: [],
expense_detailsData: [ //
{
item_name: "材料小计", amount_formula: "{免漆材料总费用}+{配件总费用}+{包装总费用}"
@ -1210,7 +1214,7 @@ export default {
this.drawer_detailsData = JSON.parse(data.drawer_list || "[]"); //
this.materialHeightInit(); //
this.fittingsListInit();
this.detailDataInit(); //
@ -1240,7 +1244,27 @@ export default {
methods: {
fittingsListInit() { //
this.$mk.post({ //
url: `${BASE_URL.BASE_URL}//BathroomFittings/v1/bathroom/fittings/list`,
data: { "page": 1, "limit": 100, "order_bys": [], "search_rules": [] }
}).then(a => {
this.fittings_list = a.data.BathroomFittings || [];
this.moreExpressionsList_fittings = [];
this.fittings_list.forEach(o => {
this.moreExpressionsList_fittings.push(this.formatName(o.name) + "的长");
this.moreExpressionsList_fittings.push(this.formatName(o.name) + "的宽");
this.moreExpressionsList_fittings.push(this.formatName(o.name) + "的厚");
});
});
},
materialHeightInit() { //
this.$mk.post({ //
@ -1266,15 +1290,15 @@ export default {
this.bathroomMaterial_list.forEach(o => { //
this.moreExpressionsList_material_height.push(this.formatName(o.name) +"的厚度");
this.moreExpressionsList_material_height.push(this.formatName(o.name) + "的厚度");
});
});
},
getMoreExpressionsList_material_height(){
return this.moreExpressionsList_material_height;
getMoreExpressionsList() {
return [...this.moreExpressionsList_material_height, ...this.moreExpressionsList_fittings]
},
@ -1412,7 +1436,72 @@ export default {
this.modalVisible = false; //
},
reloadMain() {
if (!this.fittings_detailsData.length) {
return;
}
let scheme_id = this.fittings_detailsData[0].scheme_id;
this.loadSchemeDataById(scheme_id);
},
reloadDrawer(index) {
let drawer_detailData = this.drawer_detailsData[index];
if (!drawer_detailData.scheme_id) return;
const json = `{"id":${drawer_detailData.scheme_id}}`; // json
this.$mk.post({ //
url: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/detail`, //
loading: "加载中...",
data: json,
config: {
headers: {
'Content-Type': 'application/json'
}
}
}).then(a => {
let row = a.data.bathroom_scheme; //
let fittingsList = JSON.parse(row.fittingsList || "[]"); //
fittingsList = fittingsList.filter(a => a.fittings && a.fittings[0]); //
let partsList = JSON.parse(row.partsList || "[]"); //
partsList = partsList.filter(a => a.parts && a.parts[0]); //
let packagingList = JSON.parse(row.packagingList || "[]"); //
packagingList = packagingList.filter(a => a.packaging && a.packaging[0]); //
let laborList = JSON.parse(row.laborList || "[]"); //
laborList = laborList.filter(a => a.labor && a.labor[0]); //
let materialList = JSON.parse(row.materialList || "[]"); //
materialList = materialList.filter(a => a.material && a.material[0]); //
let paintLaborList = JSON.parse(row.paintLaborList || "[]"); //
paintLaborList = paintLaborList.filter(a => a.labor && a.labor[0]); //
let paintMaterialList = JSON.parse(row.paintMaterialList || "[]"); //
paintMaterialList = paintMaterialList.filter(a => a.material && a.material[0]); //
let updateToList = ({ sourceList, targetList }) => {
sourceList.forEach(item => {
let oldItem = targetList.filter(a => a.id == item.id);
if (oldItem.length) { //
//
Object.assign(oldItem[0], item);
}
});
};
updateToList({ sourceList: fittingsList, targetList: drawer_detailData.fittingsList })
updateToList({ sourceList: partsList, targetList: drawer_detailData.partsList })
updateToList({ sourceList: packagingList, targetList: drawer_detailData.packagingList })
updateToList({ sourceList: laborList, targetList: drawer_detailData.laborList })
updateToList({ sourceList: materialList, targetList: drawer_detailData.materialList })
updateToList({ sourceList: paintLaborList, targetList: drawer_detailData.paintLaborList })
updateToList({ sourceList: paintMaterialList, targetList: drawer_detailData.paintMaterialList })
this.calculateAll();
});
},
loadSchemeDataById(dataId) { //
const json = `{"id":${dataId}}`; // json
this.$mk.post({ //
@ -1455,6 +1544,7 @@ export default {
if (row.type != settings.schemeType_main) { //
this.drawer_detailsData.push({ //
scheme_id: scheme_id,
name: row.name, //
quantity: 1, //
fittingsList, //
@ -1468,7 +1558,8 @@ export default {
this.materialHeightInit(); //
this.fittingsListInit();
this.tabKey = this.drawer_detailsData.length - 1;
this.$forceUpdate(); //
} else { //
@ -1484,7 +1575,7 @@ export default {
this.materialHeightInit(); //
this.fittingsListInit();
this.calculateAll(); //
@ -1815,7 +1906,7 @@ export default {
//
packaging_onPulldownSelected({ row, name, column,params, selectedData }) {
packaging_onPulldownSelected({ row, name, column, params, selectedData }) {
console.log(row, name, params);
if (column.field == "packaging") {
@ -2459,7 +2550,7 @@ export default {
}
});
},
//
// update
ok() {
let save = () => {
@ -2471,6 +2562,7 @@ export default {
let postdata = Object.assign({}, this.formOptions.data);
//
if (this.isEdit) {
postdata.id = this.$mk.toBigInt(postdata.id)
// postdata = { BathroomQuotation: postdata }
}
@ -2634,6 +2726,25 @@ export default {
return v;
}
let nn = [{ n: '的长', name: 'long' }, { n: '的宽', name: 'width' }, { n: '的厚', name: 'height' }];
for (let i = 0; i < nn.length; i++) {
if (name.indexOf(nn[i].n) > 0 &&
this.fittings_list.filter(a => this.formatName(a.name) + nn[i].n == name).length) {
name = this.formatName(name);
name = name.substr(0, name.length - 2);
console.log(name);
let v = 0;
this.fittings_detailsData.forEach(o => {
if (o.fittings && name == this.formatName(o.fittings[1])) {
v = parseFloat(o[nn[i].name] || 0);
}
});
return v;
}
}
let fun = settings.expressionsDefines[name];
if (!fun) {
@ -2684,7 +2795,7 @@ export default {
//
this.calculateRows({ detailsData: this.parts_detailsData, names: ["amount"], totalPrev: "parts" });
//
this.calculateRows({ detailsData: this.packaging_detailsData, names: ["long", "width", "height", "quantity", "amount"], totalPrev: "packaging" });
this.calculateRows({ detailsData: this.packaging_detailsData, names: ["long", "width", "height", "quantity", "amount", "price"], totalPrev: "packaging" });
//
this.calculateRows({ detailsData: this.material_detailsData, names: ["quantity", "amount"], totalPrev: "material" });
//