报价优化2

This commit is contained in:
xielue 2023-04-20 09:52:11 +08:00
parent b30a855f56
commit 2128170f71
4 changed files with 251 additions and 164 deletions

View File

@ -66,6 +66,7 @@
</div> </div>
</template> </template>
</vxe-column> </vxe-column>
<vxe-column type="seq" title="序号" width="48"></vxe-column>
<vxe-column field="fittings" title="部件" width="160" :params="editorFittings" formatter="formatRef" <vxe-column field="fittings" title="部件" width="160" :params="editorFittings" formatter="formatRef"
:edit-render="{ name: 'MkGridDataSelector' }"></vxe-column> :edit-render="{ name: 'MkGridDataSelector' }"></vxe-column>
<vxe-column field="material" title="材料(免漆)" width="160" :params="editorMaterial" formatter="formatRef" <vxe-column field="material" title="材料(免漆)" width="160" :params="editorMaterial" formatter="formatRef"
@ -82,9 +83,7 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.long_formula || '' }} {{ row.long_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.long, 0)"></span>
{{ parseFloat(row.long || 0).toFixed(0) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
@ -97,9 +96,7 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.width_formula || '' }} {{ row.width_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.width, 0)"></span>
{{ parseFloat(row.width || 0).toFixed(0) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
@ -112,9 +109,8 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.height_formula || '' }} {{ row.height_formula || '' }}
</span> </span>
<span v-else>
{{ parseFloat(row.height || 0).toFixed(0) }} <span v-else v-html="formatShowNumber(row.height, 0)"></span>
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
@ -133,12 +129,11 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.seal_formula || '' }} {{ row.seal_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.seal, 2)"></span>
{{ parseFloat(row.seal || 0).toFixed(2) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
<vxe-column type="seq" title="序号" width="48"></vxe-column>
<vxe-column field="rate_materials" title="主材利用率" width="80" <vxe-column field="rate_materials" title="主材利用率" width="80"
:edit-render="{ name: '$input', props: { type: 'number' } }"></vxe-column> :edit-render="{ name: '$input', props: { type: 'number' } }"></vxe-column>
<vxe-column field="paint_number" title="油漆面" width="80" <vxe-column field="paint_number" title="油漆面" width="80"
@ -153,9 +148,7 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.board_length_formula || '' }} {{ row.board_length_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.board_length, 3)"></span>
{{ parseFloat(row.board_length || 0).toFixed(3) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
@ -208,6 +201,7 @@
</div> </div>
</template> </template>
</vxe-column> </vxe-column>
<vxe-column type="seq" title="序号" width="48"></vxe-column>
<vxe-column field="parts" title="配件" width="260" :params="editorParts" formatter="formatRef" <vxe-column field="parts" title="配件" width="260" :params="editorParts" formatter="formatRef"
:edit-render="{ name: 'MkGridDataSelector' }"></vxe-column> :edit-render="{ name: 'MkGridDataSelector' }"></vxe-column>
<vxe-column field="spec" title="规格" width="120" :edit-render="{ name: '$input' }"></vxe-column> <vxe-column field="spec" title="规格" width="120" :edit-render="{ name: '$input' }"></vxe-column>
@ -225,9 +219,8 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.amount_formula || '' }} {{ row.amount_formula || '' }}
</span> </span>
<span v-else>
{{ parseFloat(row.amount || 0).toFixed(2) }} <span v-else v-html="formatShowNumber(row.amount, 2)"></span>
</span>
</a-tooltip> </a-tooltip>
</template> </template>
@ -263,6 +256,7 @@
</div> </div>
</template> </template>
</vxe-column> </vxe-column>
<vxe-column type="seq" title="序号" width="48"></vxe-column>
<vxe-column field="packaging" title="包装" width="260" :params="editorPackaging" formatter="formatRef" <vxe-column field="packaging" title="包装" width="260" :params="editorPackaging" formatter="formatRef"
:edit-render="{ name: 'MkGridDataSelector' }"></vxe-column> :edit-render="{ name: 'MkGridDataSelector' }"></vxe-column>
<vxe-column field="long_formula" title="长" width="200" :edit-render="{ name: 'EditExpressions' }"> <vxe-column field="long_formula" title="长" width="200" :edit-render="{ name: 'EditExpressions' }">
@ -274,9 +268,8 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.long_formula || '' }} {{ row.long_formula || '' }}
</span> </span>
<span v-else>
{{ parseFloat(row.long || 0).toFixed(1) }} <span v-else v-html="formatShowNumber(row.long, 1)"></span>
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
@ -289,9 +282,7 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.width_formula || '' }} {{ row.width_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.width, 1)"></span>
{{ parseFloat(row.width || 0).toFixed(1) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
@ -304,9 +295,7 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.height_formula || '' }} {{ row.height_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.height, 1)"></span>
{{ parseFloat(row.height || 0).toFixed(1) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
@ -320,9 +309,7 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.quantity_formula || '' }} {{ row.quantity_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.quantity, 1)"></span>
{{ parseFloat(row.quantity || 0).toFixed(1) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
@ -337,9 +324,7 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.amount_formula || '' }} {{ row.amount_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.amount, 2)"></span>
{{ parseFloat(row.amount || 0).toFixed(2) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
@ -362,6 +347,7 @@
@edit-actived="drawer_beforeEditEvent" show-footer :footer-method="drawer_footerMethod" @edit-actived="drawer_beforeEditEvent" show-footer :footer-method="drawer_footerMethod"
:footer-cell-class-name="drawer_footerCellClassName" :footer-cell-class-name="drawer_footerCellClassName"
:edit-config="{ trigger: 'click', mode: 'cell', icon: 'vxe-icon-edit', showStatus: false, beforeEditMethod: drawer_beforeEditMethod }"> :edit-config="{ trigger: 'click', mode: 'cell', icon: 'vxe-icon-edit', showStatus: false, beforeEditMethod: drawer_beforeEditMethod }">
<vxe-column type="seq" title="序号" width="48"></vxe-column>
<vxe-column field="name" title="抽屉" width="260"></vxe-column> <vxe-column field="name" title="抽屉" width="260"></vxe-column>
<vxe-column field="quantity" title="数量" width="200"></vxe-column> <vxe-column field="quantity" title="数量" width="200"></vxe-column>
<vxe-column field="expense" formatter="formatNumber" title="单价(免漆)" width="200"></vxe-column> <vxe-column field="expense" formatter="formatNumber" title="单价(免漆)" width="200"></vxe-column>
@ -407,6 +393,7 @@
</div> </div>
</template> </template>
</vxe-column> </vxe-column>
<vxe-column type="seq" title="序号" width="48"></vxe-column>
<vxe-column field="material" title="材料" width="260" :params="editorMaterial" formatter="formatRef" <vxe-column field="material" title="材料" width="260" :params="editorMaterial" formatter="formatRef"
:edit-render="{ name: 'MkGridDataSelector' }"></vxe-column> :edit-render="{ name: 'MkGridDataSelector' }"></vxe-column>
@ -419,9 +406,7 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.quantity_formula || '' }} {{ row.quantity_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.quantity, 3)"></span>
{{ parseFloat(row.quantity || 0).toFixed(3) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
@ -437,9 +422,7 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.amount_formula || '' }} {{ row.amount_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.amount, 2)"></span>
{{ parseFloat(row.amount || 0).toFixed(2) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
@ -473,6 +456,7 @@
</div> </div>
</template> </template>
</vxe-column> </vxe-column>
<vxe-column type="seq" title="序号" width="48"></vxe-column>
<vxe-column field="labor" title="项目" width="260" :params="editorLabor" formatter="formatRef" <vxe-column field="labor" title="项目" width="260" :params="editorLabor" formatter="formatRef"
:edit-render="{ name: 'MkGridDataSelector' }"></vxe-column> :edit-render="{ name: 'MkGridDataSelector' }"></vxe-column>
@ -486,9 +470,7 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.amount_formula || '' }} {{ row.amount_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.amount, 2)"></span>
{{ parseFloat(row.amount || 0).toFixed(2) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
@ -525,6 +507,7 @@
</div> </div>
</template> </template>
</vxe-column> </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="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 field="amount_formula" title="金额" width="220" :edit-render="{ name: 'EditExpressions' }">
<template #default="{ row }"> <template #default="{ row }">
@ -535,9 +518,7 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.amount_formula || '' }} {{ row.amount_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.amount, 2)"></span>
{{ parseFloat(row.amount || 0).toFixed(2) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
@ -580,6 +561,7 @@
</div> </div>
</template> </template>
</vxe-column> </vxe-column>
<vxe-column type="seq" title="序号" width="48"></vxe-column>
<vxe-column field="material" title="材料" width="260" :params="editorMaterial" formatter="formatRef" <vxe-column field="material" title="材料" width="260" :params="editorMaterial" formatter="formatRef"
:edit-render="{ name: 'MkGridDataSelector' }"></vxe-column> :edit-render="{ name: 'MkGridDataSelector' }"></vxe-column>
@ -592,9 +574,7 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.quantity_formula || '' }} {{ row.quantity_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.quantity, 2)"></span>
{{ parseFloat(row.quantity || 0).toFixed(2) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
@ -609,9 +589,7 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.amount_formula || '' }} {{ row.amount_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.amount, 2)"></span>
{{ parseFloat(row.amount || 0).toFixed(2) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
@ -646,6 +624,7 @@
</div> </div>
</template> </template>
</vxe-column> </vxe-column>
<vxe-column type="seq" title="序号" width="48"></vxe-column>
<vxe-column field="labor" title="项目" width="260" :params="editorLabor" formatter="formatRef" <vxe-column field="labor" title="项目" width="260" :params="editorLabor" formatter="formatRef"
:edit-render="{ name: 'MkGridDataSelector' }"></vxe-column> :edit-render="{ name: 'MkGridDataSelector' }"></vxe-column>
@ -658,9 +637,7 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.amount_formula || '' }} {{ row.amount_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.amount, 2)"></span>
{{ parseFloat(row.amount || 0).toFixed(2) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
@ -696,6 +673,7 @@
</div> </div>
</template> </template>
</vxe-column> </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="item_name" title="项目" width="220" :edit-render="{ name: '$input' }"></vxe-column>
<vxe-column field="amount_formula" title="金额" width="200" :edit-render="{ name: 'EditExpressions' }"> <vxe-column field="amount_formula" title="金额" width="200" :edit-render="{ name: 'EditExpressions' }">
<template #default="{ row }"> <template #default="{ row }">
@ -706,9 +684,7 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.amount_formula || '' }} {{ row.amount_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.amount, 2)"></span>
{{ parseFloat(row.amount || 0).toFixed(2) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
@ -1048,7 +1024,7 @@ export default {
// =============================== End =============================== // =============================== End ===============================
}, },
// //
titleWidth: 100, titleWidth: 120,
// //
titleAlign: 'right', titleAlign: 'right',
@ -1064,22 +1040,41 @@ export default {
}, },
// //
items: [ items: [
// =============================== Start ===============================
{ field: 'project_name', title: '工程名', span: 8, itemRender: { name: '$input' } }, {
{ field: 'mode_name', title: '型号', span: 8, itemRender: { name: '$input' } }, title: '左侧',
{ field: 'customer', title: '客户名称', span: 8, itemRender: { name: '$input' } }, span: 18,
children: [
{ field: 'project_name', title: '工程名', span: 6, itemRender: { name: '$input' } },
{ field: 'mode_name', title: '型号', span: 6, itemRender: { name: '$input' } },
{ field: 'customer', title: '客户名称', span: 6, itemRender: { name: '$input' } },
{ field: '报价日期', title: '报价日期', span: 6, itemRender: { name: '$input',props:{type:"date"} } },
{ field: 'main_cabinet_length', title: '主柜规格 长', span: 8, itemRender: { name: '$input', events: { change: this.calculateAll } } }, { field: 'main_cabinet_length', title: '主柜规格 长', span: 6, itemRender: { name: '$input', events: { change: this.calculateAll } } },
{ field: 'main_cabinet_width', title: '宽', span: 8, itemRender: { name: '$input', events: { change: this.calculateAll } } }, { field: 'main_cabinet_width', title: '宽', span: 6, itemRender: { name: '$input', events: { change: this.calculateAll } } },
{ field: 'main_cabinet_height', title: '高', span: 8, itemRender: { name: '$input', events: { change: this.calculateAll } } }, { field: 'main_cabinet_height', title: '高', span: 6, itemRender: { name: '$input', events: { change: this.calculateAll } } },
{ field: '报价有效日期', title: '报价有效日期', span: 6, itemRender: { name: '$input',props:{type:"date"} } },
{ field: 'show_expense', title: '总费用(免漆)', span: 6, itemRender: { name: 'MkFormInputShow' } },
{ field: 'show_paint_expense', title: '总费用(油漆)', span: 6, itemRender: { name: 'MkFormInputShow' } },
]
},
{
title: '右侧',
span: 6,
children: [
{
field: 'image', span: 24, itemRender: {
name: 'MkFormUploader', props: {
}
}
},
]
},
{ field: 'show_expense', title: '总费用(免漆)', span: 8, itemRender: { name: 'MkFormInputShow' } },
{ field: 'show_paint_expense', title: '总费用(油漆)', span: 8, itemRender: { name: 'MkFormInputShow' } },
// =============================== End ===============================
] ]
}, },
// //
@ -1184,7 +1179,12 @@ export default {
// //
methods: { methods: {
formatShowNumber(value, points) {
if (!value) {
return '<span style="color:red;">' + (0.0).toFixed(points || 0) + '</span>';
}
return parseFloat(value).toFixed(points || 0)
},
toggleAll() { toggleAll() {
if (this.tabKey == "main") { if (this.tabKey == "main") {
@ -1485,7 +1485,7 @@ export default {
if (column.field == "material") { if (column.field == "material") {
this.resetMaterial(); this.resetMaterial();
if(selectedData.spec){ if (selectedData.spec) {
row.height_formula = selectedData.spec; row.height_formula = selectedData.spec;
} }
} }
@ -1563,6 +1563,7 @@ export default {
console.log(row, selectedData); console.log(row, selectedData);
if (selectedData.spec) { if (selectedData.spec) {
row.spec = selectedData.spec; row.spec = selectedData.spec;
//TODO
} }
}, },

View File

@ -32,9 +32,6 @@
<div class="gridPanel"> <div class="gridPanel">
<vxe-grid ref='xGrid' v-bind="gridOptions"> <vxe-grid ref='xGrid' v-bind="gridOptions">
<!-- =============================== 表格列 自动生成 Start =============================== -->
<!-- =============================== 表格列 自动生成 End =============================== -->
<template #op="{ row }"> <template #op="{ row }">
<div class="oplinks"> <div class="oplinks">
@ -43,6 +40,10 @@
</div> </div>
</template> </template>
<template #image="{ row }">
<img v-if="row.image" :src="row.image" style="width: 100px;">
<span v-else></span>
</template>
</vxe-grid> </vxe-grid>
</div> </div>
@ -245,6 +246,8 @@ export default {
{ field: 'main_cabinet_length', sortable: true, title: '主柜规格 长', width: 250 }, // { field: 'main_cabinet_length', sortable: true, title: '主柜规格 长', width: 250 }, //
{ field: 'main_cabinet_width', sortable: true, title: '主柜规格 宽', width: 250 }, // { field: 'main_cabinet_width', sortable: true, title: '主柜规格 宽', width: 250 }, //
{ field: 'main_cabinet_height', sortable: true, title: '主柜规格 高', width: 250 }, // { field: 'main_cabinet_height', sortable: true, title: '主柜规格 高', width: 250 }, //
{ field: 'image', sortable: true, title: '主图', width: 250 , slots: { default: 'image' } }, //
{ field: 'create_time', formatter: 'formatDate', width: 160, sortable: true, title: '创建时间', showHeaderOverflow: true }, // { field: 'create_time', formatter: 'formatDate', width: 160, sortable: true, title: '创建时间', showHeaderOverflow: true }, //
{ field: 'update_time', formatter: 'formatDate', width: 160, sortable: true, title: '更新时间', showHeaderOverflow: true }, // { field: 'update_time', formatter: 'formatDate', width: 160, sortable: true, title: '更新时间', showHeaderOverflow: true }, //

View File

@ -38,6 +38,7 @@
</div> </div>
</template> </template>
</vxe-column> </vxe-column>
<vxe-column type="seq" title="序号" width="48"></vxe-column>
<vxe-column field="fittings" title="部件" width="160" :params="editorFittings" formatter="formatRef" <vxe-column field="fittings" title="部件" width="160" :params="editorFittings" formatter="formatRef"
:edit-render="{ name: 'MkGridDataSelector' }"></vxe-column> :edit-render="{ name: 'MkGridDataSelector' }"></vxe-column>
<vxe-column field="material" title="材料(免漆)" width="160" :params="editorMaterial" formatter="formatRef" <vxe-column field="material" title="材料(免漆)" width="160" :params="editorMaterial" formatter="formatRef"
@ -54,9 +55,7 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.long_formula || '' }} {{ row.long_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.long, 0)"></span>
{{ parseFloat(row.long || 0).toFixed(0) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
@ -69,9 +68,7 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.width_formula || '' }} {{ row.width_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.width, 0)"></span>
{{ parseFloat(row.width || 0).toFixed(0) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
@ -84,9 +81,8 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.height_formula || '' }} {{ row.height_formula || '' }}
</span> </span>
<span v-else>
{{ parseFloat(row.height || 0).toFixed(0) }} <span v-else v-html="formatShowNumber(row.height, 0)"></span>
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
@ -105,12 +101,11 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.seal_formula || '' }} {{ row.seal_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.seal, 2)"></span>
{{ parseFloat(row.seal || 0).toFixed(2) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
<vxe-column type="seq" title="序号" width="48"></vxe-column>
<vxe-column field="rate_materials" title="主材利用率" width="80" <vxe-column field="rate_materials" title="主材利用率" width="80"
:edit-render="{ name: '$input', props: { type: 'number' } }"></vxe-column> :edit-render="{ name: '$input', props: { type: 'number' } }"></vxe-column>
<vxe-column field="paint_number" title="油漆面" width="80" <vxe-column field="paint_number" title="油漆面" width="80"
@ -124,9 +119,7 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.board_length_formula || '' }} {{ row.board_length_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.board_length, 3)"></span>
{{ parseFloat(row.board_length || 0).toFixed(3) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
@ -178,6 +171,7 @@
</div> </div>
</template> </template>
</vxe-column> </vxe-column>
<vxe-column type="seq" title="序号" width="48"></vxe-column>
<vxe-column field="parts" title="配件" width="260" :params="editorParts" formatter="formatRef" <vxe-column field="parts" title="配件" width="260" :params="editorParts" formatter="formatRef"
:edit-render="{ name: 'MkGridDataSelector' }"></vxe-column> :edit-render="{ name: 'MkGridDataSelector' }"></vxe-column>
<vxe-column field="spec" title="规格" width="120" :edit-render="{ name: '$input' }"></vxe-column> <vxe-column field="spec" title="规格" width="120" :edit-render="{ name: '$input' }"></vxe-column>
@ -195,9 +189,8 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.amount_formula || '' }} {{ row.amount_formula || '' }}
</span> </span>
<span v-else>
{{ parseFloat(row.amount || 0).toFixed(2) }} <span v-else v-html="formatShowNumber(row.amount, 2)"></span>
</span>
</a-tooltip> </a-tooltip>
</template> </template>
@ -232,6 +225,7 @@
</div> </div>
</template> </template>
</vxe-column> </vxe-column>
<vxe-column type="seq" title="序号" width="48"></vxe-column>
<vxe-column field="packaging" title="包装" width="260" :params="editorPackaging" formatter="formatRef" <vxe-column field="packaging" title="包装" width="260" :params="editorPackaging" formatter="formatRef"
:edit-render="{ name: 'MkGridDataSelector' }"></vxe-column> :edit-render="{ name: 'MkGridDataSelector' }"></vxe-column>
<vxe-column field="long_formula" title="长" width="200" :edit-render="{ name: 'EditExpressions' }"> <vxe-column field="long_formula" title="长" width="200" :edit-render="{ name: 'EditExpressions' }">
@ -243,9 +237,8 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.long_formula || '' }} {{ row.long_formula || '' }}
</span> </span>
<span v-else>
{{ parseFloat(row.long || 0).toFixed(1) }} <span v-else v-html="formatShowNumber(row.long, 1)"></span>
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
@ -258,9 +251,7 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.width_formula || '' }} {{ row.width_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.width, 1)"></span>
{{ parseFloat(row.width || 0).toFixed(1) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
@ -273,9 +264,7 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.height_formula || '' }} {{ row.height_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.height, 1)"></span>
{{ parseFloat(row.height || 0).toFixed(1) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
@ -289,9 +278,7 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.quantity_formula || '' }} {{ row.quantity_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.quantity, 1)"></span>
{{ parseFloat(row.quantity || 0).toFixed(1) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
@ -306,9 +293,7 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.amount_formula || '' }} {{ row.amount_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.amount, 2)"></span>
{{ parseFloat(row.amount || 0).toFixed(2) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
@ -349,6 +334,7 @@
</div> </div>
</template> </template>
</vxe-column> </vxe-column>
<vxe-column type="seq" title="序号" width="48"></vxe-column>
<vxe-column field="material" title="材料" width="260" :params="editorMaterial" formatter="formatRef" <vxe-column field="material" title="材料" width="260" :params="editorMaterial" formatter="formatRef"
:edit-render="{ name: 'MkGridDataSelector' }"></vxe-column> :edit-render="{ name: 'MkGridDataSelector' }"></vxe-column>
@ -361,9 +347,7 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.quantity_formula || '' }} {{ row.quantity_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.quantity, 3)"></span>
{{ parseFloat(row.quantity || 0).toFixed(3) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
@ -379,9 +363,7 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.amount_formula || '' }} {{ row.amount_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.amount, 2)"></span>
{{ parseFloat(row.amount || 0).toFixed(2) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
@ -415,6 +397,7 @@
</div> </div>
</template> </template>
</vxe-column> </vxe-column>
<vxe-column type="seq" title="序号" width="48"></vxe-column>
<vxe-column field="labor" title="项目" width="260" :params="editorLabor" formatter="formatRef" <vxe-column field="labor" title="项目" width="260" :params="editorLabor" formatter="formatRef"
:edit-render="{ name: 'MkGridDataSelector' }"></vxe-column> :edit-render="{ name: 'MkGridDataSelector' }"></vxe-column>
@ -428,9 +411,7 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.amount_formula || '' }} {{ row.amount_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.amount, 2)"></span>
{{ parseFloat(row.amount || 0).toFixed(2) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
@ -465,6 +446,7 @@
</div> </div>
</template> </template>
</vxe-column> </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="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 field="amount_formula" title="金额" width="220" :edit-render="{ name: 'EditExpressions' }">
<template #default="{ row }"> <template #default="{ row }">
@ -475,9 +457,7 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.amount_formula || '' }} {{ row.amount_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.amount, 2)"></span>
{{ parseFloat(row.amount || 0).toFixed(2) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
@ -520,6 +500,7 @@
</div> </div>
</template> </template>
</vxe-column> </vxe-column>
<vxe-column type="seq" title="序号" width="48"></vxe-column>
<vxe-column field="material" title="材料" width="260" :params="editorMaterial" formatter="formatRef" <vxe-column field="material" title="材料" width="260" :params="editorMaterial" formatter="formatRef"
:edit-render="{ name: 'MkGridDataSelector' }"></vxe-column> :edit-render="{ name: 'MkGridDataSelector' }"></vxe-column>
@ -532,9 +513,7 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.quantity_formula || '' }} {{ row.quantity_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.quantity, 2)"></span>
{{ parseFloat(row.quantity || 0).toFixed(2) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
@ -549,9 +528,7 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.amount_formula || '' }} {{ row.amount_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.amount, 2)"></span>
{{ parseFloat(row.amount || 0).toFixed(2) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
@ -586,6 +563,7 @@
</div> </div>
</template> </template>
</vxe-column> </vxe-column>
<vxe-column type="seq" title="序号" width="48"></vxe-column>
<vxe-column field="labor" title="项目" width="260" :params="editorLabor" formatter="formatRef" <vxe-column field="labor" title="项目" width="260" :params="editorLabor" formatter="formatRef"
:edit-render="{ name: 'MkGridDataSelector' }"></vxe-column> :edit-render="{ name: 'MkGridDataSelector' }"></vxe-column>
@ -598,9 +576,7 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.amount_formula || '' }} {{ row.amount_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.amount, 2)"></span>
{{ parseFloat(row.amount || 0).toFixed(2) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
@ -636,6 +612,7 @@
</div> </div>
</template> </template>
</vxe-column> </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="item_name" title="项目" width="220" :edit-render="{ name: '$input' }"></vxe-column>
<vxe-column field="amount_formula" title="金额" width="200" :edit-render="{ name: 'EditExpressions' }"> <vxe-column field="amount_formula" title="金额" width="200" :edit-render="{ name: 'EditExpressions' }">
<template #default="{ row }"> <template #default="{ row }">
@ -646,9 +623,7 @@
<span v-if="showExp"> <span v-if="showExp">
{{ row.amount_formula || '' }} {{ row.amount_formula || '' }}
</span> </span>
<span v-else> <span v-else v-html="formatShowNumber(row.amount, 2)"></span>
{{ parseFloat(row.amount || 0).toFixed(2) }}
</span>
</a-tooltip> </a-tooltip>
</template> </template>
</vxe-column> </vxe-column>
@ -923,6 +898,12 @@ export default {
}, },
// //
methods: { methods: {
formatShowNumber(value, points) {
if (!value) {
return '<span style="color:red;">'+(0.0).toFixed(points ||0)+'</span>';
}
return parseFloat(value).toFixed(points || 0)
},
toggleAll() { toggleAll() {
this.showAll = !this.showAll; this.showAll = !this.showAll;
@ -1142,6 +1123,8 @@ export default {
console.log(row, selectedData); console.log(row, selectedData);
if (selectedData.spec) { if (selectedData.spec) {
row.spec = selectedData.spec; row.spec = selectedData.spec;
//TODO
} }
}, },

View File

@ -5,6 +5,7 @@
<div class="topbar"> <div class="topbar">
<a-button type="primary" @click="ok">保存</a-button> <a-button type="primary" @click="ok">保存</a-button>
<a-button @click="selectScheme">复制方案</a-button>
<a-button @click="cancel">取消</a-button> <a-button @click="cancel">取消</a-button>
</div> </div>
@ -300,6 +301,15 @@
</a-collapse> </a-collapse>
</div> </div>
<vxe-modal show-footer class-name="vxe-table--ignore-clear edit-popup-box" title="选择数据" width="800" height="600"
v-model="modalVisible" @confirm="confirmSelectScheme">
<template #default>
<vxe-grid :keyboard-config="{ isArrow: true }" auto-resize height="400" ref="scheme_grid"
:row-config="{ isCurrent: true, isHover: true }" :loading="scheme_loading" :pager-config="scheme_tablePage"
:data="scheme_tableData" :columns="scheme_tableColumn" @page-change="scheme_pageChangeEvent">
</vxe-grid>
</template>
</vxe-modal>
</div> </div>
</template> </template>
@ -354,6 +364,19 @@ export default {
parts_detailsData: [], parts_detailsData: [],
modalVisible: false,
scheme_loading: false, //
scheme_tableData: [], //
scheme_tableColumn: [ //
{ field: 'type', sortable: true, title: '类型', params: settings.options_schemeType, formatter: 'formatEnum' }, // :1.,2.
{ field: 'name', sortable: true, title: '设计方案名称' }, //
],
scheme_tablePage: { //
total: 0, //
currentPage: 1, //
pageSize: 100 //
},
editorFittings: { editorFittings: {
dataUrl: `${BASE_URL.BASE_URL}/BathroomFittings/v1/bathroom/fittings/list`, dataUrl: `${BASE_URL.BASE_URL}/BathroomFittings/v1/bathroom/fittings/list`,
@ -708,6 +731,11 @@ export default {
// //
methods: { methods: {
detailDataInit() { detailDataInit() {
for (let i = this.fittings_detailsData.length; i < settings.table_min_count; i++) { for (let i = this.fittings_detailsData.length; i < settings.table_min_count; i++) {
this.fittings_detailsData.push({}); this.fittings_detailsData.push({});
@ -826,6 +854,8 @@ export default {
console.log(row, selectedData); console.log(row, selectedData);
if(selectedData.spec){ if(selectedData.spec){
row.spec = selectedData.spec; row.spec = selectedData.spec;
//TODO
} }
}, },
@ -1284,7 +1314,77 @@ export default {
// //
cancel() { cancel() {
this.back(); this.back();
} },
scheme_pageChangeEvent({ currentPage, pageSize }) { //
this.scheme_tablePage.currentPage = currentPage
this.scheme_tablePage.pageSize = pageSize
this.scheme_loading = true
this.scheme_load();
},
scheme_load() {
let parms = {
"page": this.scheme_tablePage.currentPage,
"limit": this.scheme_tablePage.pageSize,
"order_bys": [
],
"search_rules": [
],
"start_time": 0,
"end_time": 0
};
this.$mk.post({ //
url: this.actions.BathroomSchemeList, //
data: parms
}).then(r => {
this.scheme_loading = false
let data = r.data;
this.scheme_tablePage.total = data.total;
this.scheme_tableData = data.BathroomScheme;
});
},
selectScheme() {
this.modalVisible = true;
this.scheme_load();
},
confirmSelectScheme() {
let row = this.$refs.scheme_grid.getCurrentRecord(); //
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]);
this.labor_detailsData = laborList;
this.parts_detailsData = partsList;
this.fittings_detailsData = fittingsList;
this.material_detailsData = materialList;
this.packaging_detailsData = packagingList;
this.paintLabor_detailsData = paintLaborList;
this.paintMaterial_detailsData = paintMaterialList;
this.detailDataInit();
this.calculateAll();
this.modalVisible = false;
},
}, },
// //
watch: { watch: {