This commit is contained in:
parent
2b93646863
commit
5db9f23c38
|
|
@ -29,6 +29,7 @@
|
||||||
<a-tab-pane key="main" tab="主柜">
|
<a-tab-pane key="main" tab="主柜">
|
||||||
|
|
||||||
|
|
||||||
|
<a-button @click="reloadMain()" style="margin-bottom: 5px;">重新加载方案</a-button>
|
||||||
<a-collapse v-model="groupbox1_activeKey">
|
<a-collapse v-model="groupbox1_activeKey">
|
||||||
<a-collapse-panel key="1" header="基本信息">
|
<a-collapse-panel key="1" header="基本信息">
|
||||||
|
|
||||||
|
|
@ -75,7 +76,7 @@
|
||||||
:edit-render="{ name: 'MkGridDataSelector' }"></vxe-column>
|
:edit-render="{ name: 'MkGridDataSelector' }"></vxe-column>
|
||||||
|
|
||||||
<vxe-column field="long_formula" title="长" width="160" :edit-render="{ name: 'EditExpressions' }"
|
<vxe-column field="long_formula" title="长" width="160" :edit-render="{ name: 'EditExpressions' }"
|
||||||
:params="{ moreExpressionsList: getMoreExpressionsList_material_height }">
|
:params="{ moreExpressionsList: getMoreExpressionsList }">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<a-tooltip>
|
<a-tooltip>
|
||||||
<template slot="title">
|
<template slot="title">
|
||||||
|
|
@ -89,7 +90,7 @@
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column field="width_formula" title="宽" width="160" :edit-render="{ name: 'EditExpressions' }"
|
<vxe-column field="width_formula" title="宽" width="160" :edit-render="{ name: 'EditExpressions' }"
|
||||||
:params="{ moreExpressionsList: getMoreExpressionsList_material_height }">
|
:params="{ moreExpressionsList: getMoreExpressionsList }">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<a-tooltip>
|
<a-tooltip>
|
||||||
<template slot="title">
|
<template slot="title">
|
||||||
|
|
@ -103,7 +104,7 @@
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column field="height_formula" title="厚" width="160" :edit-render="{ name: 'EditExpressions' }"
|
<vxe-column field="height_formula" title="厚" width="160" :edit-render="{ name: 'EditExpressions' }"
|
||||||
:params="{ moreExpressionsList: getMoreExpressionsList_material_height }">
|
:params="{ moreExpressionsList: getMoreExpressionsList }">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<a-tooltip>
|
<a-tooltip>
|
||||||
<template slot="title">
|
<template slot="title">
|
||||||
|
|
@ -727,6 +728,8 @@
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
<a-tab-pane v-for="(item, index) in drawer_detailsData" :key="index" :tab="item.name">
|
<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="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>
|
<drawer :item="item" ref="drawer" :index="index" @update="calculateAll()"></drawer>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
</a-tabs>
|
</a-tabs>
|
||||||
|
|
@ -911,8 +914,9 @@ export default {
|
||||||
paintMaterial_detailsData: [], // 油漆材料
|
paintMaterial_detailsData: [], // 油漆材料
|
||||||
paintLabor_detailsData: [], // 油漆人工
|
paintLabor_detailsData: [], // 油漆人工
|
||||||
bathroomMaterial_list: [],//材料的数据
|
bathroomMaterial_list: [],//材料的数据
|
||||||
moreExpressionsList_material_height:[],//材料的厚度 变量列表
|
fittings_list: [],//材料的数据
|
||||||
|
moreExpressionsList_material_height: [],//材料的厚度 变量列表
|
||||||
|
moreExpressionsList_fittings: [],
|
||||||
expense_detailsData: [ // 费用结算
|
expense_detailsData: [ // 费用结算
|
||||||
{
|
{
|
||||||
item_name: "材料小计", amount_formula: "{免漆材料总费用}+{配件总费用}+{包装总费用}"
|
item_name: "材料小计", amount_formula: "{免漆材料总费用}+{配件总费用}+{包装总费用}"
|
||||||
|
|
@ -1210,7 +1214,7 @@ export default {
|
||||||
this.drawer_detailsData = JSON.parse(data.drawer_list || "[]"); // 抽屉
|
this.drawer_detailsData = JSON.parse(data.drawer_list || "[]"); // 抽屉
|
||||||
|
|
||||||
this.materialHeightInit(); // 初始化材料高度
|
this.materialHeightInit(); // 初始化材料高度
|
||||||
|
this.fittingsListInit();
|
||||||
this.detailDataInit(); // 初始化详情数据
|
this.detailDataInit(); // 初始化详情数据
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1240,7 +1244,27 @@ export default {
|
||||||
methods: {
|
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() { // 初始化材料高度
|
materialHeightInit() { // 初始化材料高度
|
||||||
|
|
||||||
this.$mk.post({ // 获取材料列表
|
this.$mk.post({ // 获取材料列表
|
||||||
|
|
@ -1253,7 +1277,7 @@ export default {
|
||||||
|
|
||||||
this.bathroomMaterial_list.forEach(o => { // 遍历材料列表
|
this.bathroomMaterial_list.forEach(o => { // 遍历材料列表
|
||||||
this.fittings_detailsData.forEach(item => { // 遍历部件列表
|
this.fittings_detailsData.forEach(item => { // 遍历部件列表
|
||||||
|
|
||||||
|
|
||||||
if (item.material && item.material[0] && item.material[0].toString() == o.id.toString()) { // 如果部件的材料id和材料列表的id相同
|
if (item.material && item.material[0] && item.material[0].toString() == o.id.toString()) { // 如果部件的材料id和材料列表的id相同
|
||||||
|
|
||||||
|
|
@ -1265,16 +1289,16 @@ export default {
|
||||||
|
|
||||||
|
|
||||||
this.bathroomMaterial_list.forEach(o => { // 遍历材料列表
|
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(){
|
getMoreExpressionsList() {
|
||||||
return this.moreExpressionsList_material_height;
|
return [...this.moreExpressionsList_material_height, ...this.moreExpressionsList_fittings]
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1412,7 +1436,72 @@ export default {
|
||||||
|
|
||||||
this.modalVisible = false; // 隐藏模态框
|
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) { // 加载方案数据
|
loadSchemeDataById(dataId) { // 加载方案数据
|
||||||
const json = `{"id":${dataId}}`; // 构造json
|
const json = `{"id":${dataId}}`; // 构造json
|
||||||
this.$mk.post({ // 获取详情数据
|
this.$mk.post({ // 获取详情数据
|
||||||
|
|
@ -1455,6 +1544,7 @@ export default {
|
||||||
|
|
||||||
if (row.type != settings.schemeType_main) { //抽屉 如果不是主柜
|
if (row.type != settings.schemeType_main) { //抽屉 如果不是主柜
|
||||||
this.drawer_detailsData.push({ // 添加抽屉数据
|
this.drawer_detailsData.push({ // 添加抽屉数据
|
||||||
|
scheme_id: scheme_id,
|
||||||
name: row.name, // 名称
|
name: row.name, // 名称
|
||||||
quantity: 1, // 数量
|
quantity: 1, // 数量
|
||||||
fittingsList, // 部件列表
|
fittingsList, // 部件列表
|
||||||
|
|
@ -1468,7 +1558,8 @@ export default {
|
||||||
|
|
||||||
|
|
||||||
this.materialHeightInit(); // 初始化材料高度
|
this.materialHeightInit(); // 初始化材料高度
|
||||||
|
this.fittingsListInit();
|
||||||
|
this.tabKey = this.drawer_detailsData.length - 1;
|
||||||
this.$forceUpdate(); // 强制更新
|
this.$forceUpdate(); // 强制更新
|
||||||
|
|
||||||
} else { //主柜
|
} else { //主柜
|
||||||
|
|
@ -1484,7 +1575,7 @@ export default {
|
||||||
|
|
||||||
|
|
||||||
this.materialHeightInit(); // 初始化材料高度
|
this.materialHeightInit(); // 初始化材料高度
|
||||||
|
this.fittingsListInit();
|
||||||
this.calculateAll(); // 计算所有数据
|
this.calculateAll(); // 计算所有数据
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1661,9 +1752,9 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 部件弹出选择事件
|
// 部件弹出选择事件
|
||||||
fittings_onPopupSelected({ rows, name, params }) { // rows 当前行 name 当前列 params 参数
|
fittings_onPopupSelected({ rows, name, params }) { // rows 当前行 name 当前列 params 参数
|
||||||
console.log(rows, name, params); // 打印参数
|
console.log(rows, name, params); // 打印参数
|
||||||
|
|
||||||
},
|
},
|
||||||
// 部件编辑前事件
|
// 部件编辑前事件
|
||||||
fittings_beforeEditMethod({ column, row }) { // column 当前列 row 当前行
|
fittings_beforeEditMethod({ column, row }) { // column 当前列 row 当前行
|
||||||
|
|
@ -1815,14 +1906,14 @@ export default {
|
||||||
|
|
||||||
|
|
||||||
// 包装下拉选择事件
|
// 包装下拉选择事件
|
||||||
packaging_onPulldownSelected({ row, name, column,params, selectedData }) {
|
packaging_onPulldownSelected({ row, name, column, params, selectedData }) {
|
||||||
console.log(row, name, params);
|
console.log(row, name, params);
|
||||||
|
|
||||||
if (column.field == "packaging") {
|
if (column.field == "packaging") {
|
||||||
|
|
||||||
if (selectedData && selectedData.default_quantity) {
|
if (selectedData && selectedData.default_quantity) {
|
||||||
row.quantity = selectedData.default_quantity; // 设置默认数量
|
row.quantity = selectedData.default_quantity; // 设置默认数量
|
||||||
row.quantity_formula = selectedData.default_quantity;
|
row.quantity_formula = selectedData.default_quantity;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2459,7 +2550,7 @@ export default {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
// 保存
|
// 保存update
|
||||||
ok() {
|
ok() {
|
||||||
|
|
||||||
let save = () => {
|
let save = () => {
|
||||||
|
|
@ -2471,6 +2562,7 @@ export default {
|
||||||
let postdata = Object.assign({}, this.formOptions.data);
|
let postdata = Object.assign({}, this.formOptions.data);
|
||||||
// 如果是编辑模式
|
// 如果是编辑模式
|
||||||
if (this.isEdit) {
|
if (this.isEdit) {
|
||||||
|
postdata.id = this.$mk.toBigInt(postdata.id)
|
||||||
// postdata = { BathroomQuotation: postdata }
|
// postdata = { BathroomQuotation: postdata }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2624,9 +2716,9 @@ export default {
|
||||||
let v = 0;
|
let v = 0;
|
||||||
this.bathroomMaterial_list.forEach(o => { // 遍历材料列表
|
this.bathroomMaterial_list.forEach(o => { // 遍历材料列表
|
||||||
|
|
||||||
if (name == this.formatName(o.name)) {
|
if (name == this.formatName(o.name)) {
|
||||||
|
|
||||||
v = parseFloat(o.spec || 15);
|
v = parseFloat(o.spec || 15);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -2634,6 +2726,25 @@ export default {
|
||||||
return v;
|
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];
|
let fun = settings.expressionsDefines[name];
|
||||||
if (!fun) {
|
if (!fun) {
|
||||||
|
|
@ -2684,7 +2795,7 @@ export default {
|
||||||
// 计算所有 配件
|
// 计算所有 配件
|
||||||
this.calculateRows({ detailsData: this.parts_detailsData, names: ["amount"], totalPrev: "parts" });
|
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" });
|
this.calculateRows({ detailsData: this.material_detailsData, names: ["quantity", "amount"], totalPrev: "material" });
|
||||||
// 计算所有 人工
|
// 计算所有 人工
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue