This commit is contained in:
xielue 2023-07-20 17:40:59 +08:00
parent d99bc93ed5
commit c4bc0b7c8e
2 changed files with 236 additions and 7 deletions

View File

@ -1504,6 +1504,15 @@ export default {
paintMaterialList = paintMaterialList.filter(a => a.material && a.material[0]); //
console.log(row.expense_list);
console.log(row.paint_expenseList);
let expense_list = JSON.parse(row.expense_list || "[]");
expense_list = expense_list.filter(a => a.item_name);
let paint_expenseList = JSON.parse(row.paint_expenseList || "[]");
paint_expenseList = paint_expenseList.filter(a => a.item_name);
if (row.type != '1' && row.type != '3') { //
this.drawer_detailsData.push({ //
@ -1537,8 +1546,8 @@ export default {
this.addToList({ scheme_id, listData: materialList, detailsData: this.material_detailsData }); //
this.addToList({ scheme_id, listData: paintLaborList, detailsData: this.paintLabor_detailsData }); //
this.addToList({ scheme_id, listData: paintMaterialList, detailsData: this.paintMaterial_detailsData }); //
this.addToList({ scheme_id, listData: expense_list, detailsData: this.expense_detailsData });
this.addToList({ scheme_id, listData: paint_expenseList, detailsData: this.paintExpense_detailsData });
this.materialHeightInit(); //
this.fittingsListInit();

View File

@ -226,9 +226,32 @@
:edit-render="{ name: 'EditExpressions' }"></vxe-column>
</vxe-table>
</a-collapse-panel>
<a-collapse-panel key="3" header="费用结算" :disabled="false">
<vxe-table border show-overflow keep-source ref="expense_xTable" :data="expense_detailsData" :keyboard-config="{
isArrow: true, isDel: true,
isEnter: false, isTab: true, isEdit: true, isChecked: true
}" :mouse-config="{ selected: true }" @pulldownSelected="expense_onPulldownSelected"
@popupSelected="expense_onPopupSelected" :export-config="{}" @edit-closed="expense_afterEditEvent"
@edit-actived="expense_beforeEditEvent"
:edit-config="{ trigger: 'click', mode: 'cell', icon: 'vxe-icon-edit', showStatus: false, beforeEditMethod: expense_beforeEditMethod }">
<vxe-column width="60" v-if="!isReadonly">
<template #default="{ row }">
<div class="oplinks2">
<a @click.stop="expense_pageAdd(row)" title="新增">
<a-icon type="plus-circle" />
</a>
<a @click.stop="expense_pageDelete(row)" title="删除">
<a-icon type="delete" />
</a>
</div>
</template>
</vxe-column>
<vxe-column type="seq" title="序号" width="48"></vxe-column>
<vxe-column field="item_name" title="项目" width="220" :edit-render="{ name: '$input' }"></vxe-column>
<vxe-column field="amount_formula" title="金额(公式)" width="220"
:edit-render="{ name: 'EditExpressions' }"></vxe-column>
</vxe-table>
</a-collapse-panel>
</a-collapse>
</div>
@ -305,6 +328,37 @@
</a-collapse-panel>
<a-collapse-panel key="3" header="费用结算" :disabled="false">
<vxe-table border show-overflow keep-source ref="paintExpense_xTable" :data="paintExpense_detailsData"
:keyboard-config="{
isArrow: true, isDel: true,
isEnter: false, isTab: true, isEdit: true, isChecked: true
}" :mouse-config="{ selected: true }" @pulldownSelected="paintExpense_onPulldownSelected"
@popupSelected="paintExpense_onPopupSelected" :export-config="{}" @edit-closed="paintExpense_afterEditEvent"
@edit-actived="paintExpense_beforeEditEvent"
:edit-config="{ trigger: 'click', mode: 'cell', icon: 'vxe-icon-edit', showStatus: false, beforeEditMethod: paintExpense_beforeEditMethod }">
<vxe-column width="60" v-if="!isReadonly">
<template #default="{ row }">
<div class="oplinks2">
<a @click.stop="paintExpense_pageAdd(row)" title="新增">
<a-icon type="plus-circle" />
</a>
<a @click.stop="paintExpense_pageDelete(row)" title="删除">
<a-icon type="delete" />
</a>
</div>
</template>
</vxe-column>
<vxe-column type="seq" title="序号" width="48"></vxe-column>
<vxe-column field="item_name" title="项目" width="220" :edit-render="{ name: '$input' }"></vxe-column>
<vxe-column field="amount_formula" title="金额(公式)" width="220"
:edit-render="{ name: 'EditExpressions' }"></vxe-column>
</vxe-table>
</a-collapse-panel>
</a-collapse>
</div>
@ -480,6 +534,39 @@ export default {
bathroomMaterial_list: [],//
moreExpressionsList_material_height: [],//
moreExpressionsList_fittings: [],
expense_detailsData: [ //
{
item_name: "材料小计", amount_formula: "{免漆材料总费用}+{配件总费用}+{包装总费用}"
},
{
item_name: "人工费", amount_formula: "{免漆人工总费用}"
},
{
item_name: "抽屉费用", amount_formula: "{免漆抽屉总费用}"
},
{
item_name: "制,造,费,用", amount_formula: "({免漆材料总费用}+{配件总费用}+{包装总费用} + {免漆人工总费用}+{免漆抽屉总费用})*0.22"
}
],
paintExpense_detailsData: [ //
{
item_name: "材料小计", amount_formula: "{油漆材料总费用}+{配件总费用}+{包装总费用}"
},
{
item_name: "人工费", amount_formula: "{油漆人工总费用}"
},
{
item_name: "抽屉费用", amount_formula: "{油漆抽屉总费用}"
},
{
item_name: "制,造,费,用", amount_formula: "({油漆材料总费用}+{配件总费用}+{包装总费用} + {油漆人工总费用}+{油漆抽屉总费用})*0.22"
}
],
uploadDefaultImg: null,
detailDataFieldName: "bathroom_scheme",
@ -729,6 +816,8 @@ export default {
this.paintMaterial_detailsData = JSON.parse(data.paintMaterialList || "[]");
this.expense_detailsData = JSON.parse(data.expense_list || "[]"); //
this.paintExpense_detailsData = JSON.parse(data.paint_expenseList || "[]"); //
this.materialHeightInit();
this.fittingsListInit();
@ -874,6 +963,14 @@ export default {
this.paintLabor_detailsData.push({});
}
for (let i = this.expense_detailsData.length; i < settings.table_min_count; i++) { //
this.expense_detailsData.push({});
}
for (let i = this.paintExpense_detailsData.length; i < settings.table_min_count; i++) { //
this.paintExpense_detailsData.push({});
}
},
// id
getDataId() {
@ -1143,6 +1240,69 @@ export default {
//
expense_onPulldownSelected({ row, name, params }) {
console.log(row, name, params);
},
//
expense_onPopupSelected({ rows, name, params }) {
console.log(rows, name, params);
},
//
expense_beforeEditMethod({ column, row }) {
console.log(row, column);
return true;
},
//
expense_afterEditEvent({ column, row }) {
console.log(row, column);
},
//
expense_beforeEditEvent({ column, row }) {
console.log(row, column);
},
//
expense_pageAdd(row) {
const $table = this.$refs.expense_xTable
const record = {
}
if (row) {
this.expense_detailsData.splice($table.getRowSeq(row), 0, record);
} else {
this.expense_detailsData.push(record)
}
},
//
expense_pageDelete(row) {
const $table = this.$refs.expense_xTable;
this.expense_detailsData.splice($table.getRowSeq(row) - 1, 1);
},
//
expense_footerCellClassName({ columnIndex }) {
if (columnIndex === 0) {
return 'col-blue'
}
},
expense_footerMethod({ columns }) {
const sums = []
columns.forEach((column, columnIndex) => {
if (columnIndex === 0) {
sums.push('')
} else {
let sumCell = ''
switch (column.field) {
case 'amount_formula':
sumCell = parseFloat(this.formOptions.data.expense_total_amount || 0).toFixed(2)
break
}
sums.push(sumCell)
}
})
return [sums]
},
paintMaterial_onPulldownSelected({ row, name, params }) {
console.log(row, name, params);
@ -1212,6 +1372,60 @@ export default {
},
paintExpense_onPulldownSelected({ row, name, params }) {
console.log(row, name, params);
},
paintExpense_onPopupSelected({ rows, name, params }) {
console.log(rows, name, params);
},
paintExpense_beforeEditMethod({ column, row }) {
console.log(row, column);
return true;
},
paintExpense_afterEditEvent({ column, row }) {
console.log(row, column);
},
paintExpense_beforeEditEvent({ column, row }) {
console.log(row, column);
},
paintExpense_pageAdd(row) {
const $table = this.$refs.paintExpense_xTable
const record = {
}
if (row) {
this.paintExpense_detailsData.splice($table.getRowSeq(row), 0, record);
} else {
this.paintExpense_detailsData.push(record)
}
},
paintExpense_pageDelete(row) {
const $table = this.$refs.paintExpense_xTable;
this.paintExpense_detailsData.splice($table.getRowSeq(row) - 1, 1);
},
paintExpense_footerCellClassName({ columnIndex }) {
if (columnIndex === 0) {
return 'col-blue'
}
},
paintExpense_footerMethod({ columns }) {
const sums = []
columns.forEach((column, columnIndex) => {
if (columnIndex === 0) {
sums.push('')
} else {
let sumCell = ''
switch (column.field) {
case 'amount_formula':
sumCell = parseFloat(this.formOptions.data.paintExpense_total_amount || 0).toFixed(2)
break
}
sums.push(sumCell)
}
})
return [sums]
},
formatName(v) {
@ -1381,6 +1595,9 @@ export default {
postdata.paintLaborList = JSON.parse(JSON.stringify(this.paintLabor_detailsData));
postdata.paintMaterialList = JSON.parse(JSON.stringify(this.paintMaterial_detailsData));
postdata.expense_list = JSON.parse(JSON.stringify(this.expense_detailsData));
postdata.paint_expenseList = JSON.parse(JSON.stringify(this.paintExpense_detailsData));
postdata.fittingsList = postdata.fittingsList.filter(item => item.fittings && item.fittings[1] ? true : false);
postdata.partsList = postdata.partsList.filter(item => item.parts && item.parts[1] ? true : false);
@ -1393,6 +1610,8 @@ export default {
postdata.paintMaterialList = postdata.paintMaterialList.filter(item => item.material && item.material[1] ? true : false);
postdata.expense_list = postdata.expense_list.filter(item => item.item_name ? true : false);
postdata.paint_expenseList = postdata.paint_expenseList.filter(item => item.item_name ? true : false);
this.formatDetailsData(postdata.fittingsList);
this.formatDetailsData(postdata.partsList);
@ -1410,6 +1629,8 @@ export default {
postdata.materialList = JSON.stringify(postdata.materialList);
postdata.paintLaborList = JSON.stringify(postdata.paintLaborList);
postdata.paintMaterialList = JSON.stringify(postdata.paintMaterialList);
postdata.expense_list = JSON.stringify(postdata.expense_list);
postdata.paint_expenseList = JSON.stringify(postdata.paint_expenseList);
//
this.$mk.formatFormData({ data: postdata, rules: this.formOptions.items });
@ -1518,7 +1739,6 @@ export default {
this.paintMaterial_detailsData = paintMaterialList;
this.detailDataInit();
this.calculateAll();
this.modalVisible = false;
},