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

View File

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

View File

@ -38,6 +38,7 @@
</div>
</template>
</vxe-column>
<vxe-column type="seq" title="序号" width="48"></vxe-column>
<vxe-column field="fittings" title="部件" width="160" :params="editorFittings" formatter="formatRef"
:edit-render="{ name: 'MkGridDataSelector' }"></vxe-column>
<vxe-column field="material" title="材料(免漆)" width="160" :params="editorMaterial" formatter="formatRef"
@ -54,10 +55,8 @@
<span v-if="showExp">
{{ row.long_formula || '' }}
</span>
<span v-else>
{{ parseFloat(row.long || 0).toFixed(0) }}
</span>
</a-tooltip>
<span v-else v-html="formatShowNumber(row.long, 0)"></span>
</a-tooltip>
</template>
</vxe-column>
<vxe-column field="width_formula" title="宽" width="160" :edit-render="{ name: 'EditExpressions' }">
@ -69,10 +68,8 @@
<span v-if="showExp">
{{ row.width_formula || '' }}
</span>
<span v-else>
{{ parseFloat(row.width || 0).toFixed(0) }}
</span>
</a-tooltip>
<span v-else v-html="formatShowNumber(row.width, 0)"></span>
</a-tooltip>
</template>
</vxe-column>
<vxe-column field="height_formula" title="厚" width="160" :edit-render="{ name: 'EditExpressions' }">
@ -84,10 +81,9 @@
<span v-if="showExp">
{{ row.height_formula || '' }}
</span>
<span v-else>
{{ parseFloat(row.height || 0).toFixed(0) }}
</span>
</a-tooltip>
<span v-else v-html="formatShowNumber(row.height, 0)"></span>
</a-tooltip>
</template>
</vxe-column>
<vxe-column field="quantity" title="数量" width="80"
@ -104,13 +100,12 @@
</template>
<span v-if="showExp">
{{ row.seal_formula || '' }}
</span>
<span v-else>
{{ parseFloat(row.seal || 0).toFixed(2) }}
</span>
</a-tooltip>
</span>
<span v-else v-html="formatShowNumber(row.seal, 2)"></span>
</a-tooltip>
</template>
</vxe-column>
<vxe-column type="seq" title="序号" width="48"></vxe-column>
<vxe-column field="rate_materials" title="主材利用率" width="80"
:edit-render="{ name: '$input', props: { type: 'number' } }"></vxe-column>
<vxe-column field="paint_number" title="油漆面" width="80"
@ -123,11 +118,9 @@
</template>
<span v-if="showExp">
{{ row.board_length_formula || '' }}
</span>
<span v-else>
{{ parseFloat(row.board_length || 0).toFixed(3) }}
</span>
</a-tooltip>
</span>
<span v-else v-html="formatShowNumber(row.board_length, 3)"></span>
</a-tooltip>
</template>
</vxe-column>
@ -178,6 +171,7 @@
</div>
</template>
</vxe-column>
<vxe-column type="seq" title="序号" width="48"></vxe-column>
<vxe-column field="parts" title="配件" width="260" :params="editorParts" formatter="formatRef"
:edit-render="{ name: 'MkGridDataSelector' }"></vxe-column>
<vxe-column field="spec" title="规格" width="120" :edit-render="{ name: '$input' }"></vxe-column>
@ -194,11 +188,10 @@
</template>
<span v-if="showExp">
{{ row.amount_formula || '' }}
</span>
<span v-else>
{{ parseFloat(row.amount || 0).toFixed(2) }}
</span>
</a-tooltip>
</span>
<span v-else v-html="formatShowNumber(row.amount, 2)"></span>
</a-tooltip>
</template>
</vxe-column>
@ -232,6 +225,7 @@
</div>
</template>
</vxe-column>
<vxe-column type="seq" title="序号" width="48"></vxe-column>
<vxe-column field="packaging" title="包装" width="260" :params="editorPackaging" formatter="formatRef"
:edit-render="{ name: 'MkGridDataSelector' }"></vxe-column>
<vxe-column field="long_formula" title="长" width="200" :edit-render="{ name: 'EditExpressions' }">
@ -243,10 +237,9 @@
<span v-if="showExp">
{{ row.long_formula || '' }}
</span>
<span v-else>
{{ parseFloat(row.long || 0).toFixed(1) }}
</span>
</a-tooltip>
<span v-else v-html="formatShowNumber(row.long, 1)"></span>
</a-tooltip>
</template>
</vxe-column>
<vxe-column field="width_formula" title="宽" width="200" :edit-render="{ name: 'EditExpressions' }">
@ -257,12 +250,10 @@
</template>
<span v-if="showExp">
{{ row.width_formula || '' }}
</span>
<span v-else>
{{ parseFloat(row.width || 0).toFixed(1) }}
</span>
</a-tooltip>
</template>
</span>
<span v-else v-html="formatShowNumber(row.width, 1)"></span>
</a-tooltip>
</template>
</vxe-column>
<vxe-column field="height_formula" title="高" width="200" :edit-render="{ name: 'EditExpressions' }">
<template #default="{ row }">
@ -272,11 +263,9 @@
</template>
<span v-if="showExp">
{{ row.height_formula || '' }}
</span>
<span v-else>
{{ parseFloat(row.height || 0).toFixed(1) }}
</span>
</a-tooltip>
</span>
<span v-else v-html="formatShowNumber(row.height, 1)"></span>
</a-tooltip>
</template>
</vxe-column>
@ -288,11 +277,9 @@
</template>
<span v-if="showExp">
{{ row.quantity_formula || '' }}
</span>
<span v-else>
{{ parseFloat(row.quantity || 0).toFixed(1) }}
</span>
</a-tooltip>
</span>
<span v-else v-html="formatShowNumber(row.quantity, 1)"></span>
</a-tooltip>
</template>
</vxe-column>
<vxe-column field="price" title="单价" width="120"
@ -305,11 +292,9 @@
</template>
<span v-if="showExp">
{{ row.amount_formula || '' }}
</span>
<span v-else>
{{ parseFloat(row.amount || 0).toFixed(2) }}
</span>
</a-tooltip>
</span>
<span v-else v-html="formatShowNumber(row.amount, 2)"></span>
</a-tooltip>
</template>
</vxe-column>
@ -349,6 +334,7 @@
</div>
</template>
</vxe-column>
<vxe-column type="seq" title="序号" width="48"></vxe-column>
<vxe-column field="material" title="材料" width="260" :params="editorMaterial" formatter="formatRef"
:edit-render="{ name: 'MkGridDataSelector' }"></vxe-column>
@ -361,10 +347,8 @@
<span v-if="showExp">
{{ row.quantity_formula || '' }}
</span>
<span v-else>
{{ parseFloat(row.quantity || 0).toFixed(3) }}
</span>
</a-tooltip>
<span v-else v-html="formatShowNumber(row.quantity, 3)"></span>
</a-tooltip>
</template>
</vxe-column>
@ -379,10 +363,8 @@
<span v-if="showExp">
{{ row.amount_formula || '' }}
</span>
<span v-else>
{{ parseFloat(row.amount || 0).toFixed(2) }}
</span>
</a-tooltip>
<span v-else v-html="formatShowNumber(row.amount, 2)"></span>
</a-tooltip>
</template>
</vxe-column>
@ -415,6 +397,7 @@
</div>
</template>
</vxe-column>
<vxe-column type="seq" title="序号" width="48"></vxe-column>
<vxe-column field="labor" title="项目" width="260" :params="editorLabor" formatter="formatRef"
:edit-render="{ name: 'MkGridDataSelector' }"></vxe-column>
@ -428,10 +411,8 @@
<span v-if="showExp">
{{ row.amount_formula || '' }}
</span>
<span v-else>
{{ parseFloat(row.amount || 0).toFixed(2) }}
</span>
</a-tooltip>
<span v-else v-html="formatShowNumber(row.amount, 2)"></span>
</a-tooltip>
</template>
</vxe-column>
@ -465,6 +446,7 @@
</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' }">
<template #default="{ row }">
@ -475,10 +457,8 @@
<span v-if="showExp">
{{ row.amount_formula || '' }}
</span>
<span v-else>
{{ parseFloat(row.amount || 0).toFixed(2) }}
</span>
</a-tooltip>
<span v-else v-html="formatShowNumber(row.amount, 2)"></span>
</a-tooltip>
</template>
</vxe-column>
@ -520,6 +500,7 @@
</div>
</template>
</vxe-column>
<vxe-column type="seq" title="序号" width="48"></vxe-column>
<vxe-column field="material" title="材料" width="260" :params="editorMaterial" formatter="formatRef"
:edit-render="{ name: 'MkGridDataSelector' }"></vxe-column>
@ -531,11 +512,9 @@
</template>
<span v-if="showExp">
{{ row.quantity_formula || '' }}
</span>
<span v-else>
{{ parseFloat(row.quantity || 0).toFixed(2) }}
</span>
</a-tooltip>
</span>
<span v-else v-html="formatShowNumber(row.quantity, 2)"></span>
</a-tooltip>
</template>
</vxe-column>
<vxe-column field="price" title="单价" width="120"
@ -547,12 +526,10 @@
{{ row.amount_formula || '' }}
</template>
<span v-if="showExp">
{{ row.amount_formula || '' }}
</span>
<span v-else>
{{ parseFloat(row.amount || 0).toFixed(2) }}
</span>
</a-tooltip>
{{ row.amount_formula || '' }}
</span>
<span v-else v-html="formatShowNumber(row.amount, 2)"></span>
</a-tooltip>
</template>
</vxe-column>
@ -586,6 +563,7 @@
</div>
</template>
</vxe-column>
<vxe-column type="seq" title="序号" width="48"></vxe-column>
<vxe-column field="labor" title="项目" width="260" :params="editorLabor" formatter="formatRef"
:edit-render="{ name: 'MkGridDataSelector' }"></vxe-column>
@ -597,11 +575,9 @@
</template>
<span v-if="showExp">
{{ row.amount_formula || '' }}
</span>
<span v-else>
{{ parseFloat(row.amount || 0).toFixed(2) }}
</span>
</a-tooltip>
</span>
<span v-else v-html="formatShowNumber(row.amount, 2)"></span>
</a-tooltip>
</template>
</vxe-column>
@ -636,6 +612,7 @@
</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="200" :edit-render="{ name: 'EditExpressions' }">
<template #default="{ row }">
@ -645,11 +622,9 @@
</template>
<span v-if="showExp">
{{ row.amount_formula || '' }}
</span>
<span v-else>
{{ parseFloat(row.amount || 0).toFixed(2) }}
</span>
</a-tooltip>
</span>
<span v-else v-html="formatShowNumber(row.amount, 2)"></span>
</a-tooltip>
</template>
</vxe-column>
@ -923,6 +898,12 @@ export default {
},
//
methods: {
formatShowNumber(value, points) {
if (!value) {
return '<span style="color:red;">'+(0.0).toFixed(points ||0)+'</span>';
}
return parseFloat(value).toFixed(points || 0)
},
toggleAll() {
this.showAll = !this.showAll;
@ -1142,6 +1123,8 @@ export default {
console.log(row, selectedData);
if (selectedData.spec) {
row.spec = selectedData.spec;
//TODO
}
},

View File

@ -5,6 +5,7 @@
<div class="topbar">
<a-button type="primary" @click="ok">保存</a-button>
<a-button @click="selectScheme">复制方案</a-button>
<a-button @click="cancel">取消</a-button>
</div>
@ -300,6 +301,15 @@
</a-collapse>
</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>
</template>
@ -354,6 +364,19 @@ export default {
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: {
dataUrl: `${BASE_URL.BASE_URL}/BathroomFittings/v1/bathroom/fittings/list`,
@ -708,6 +731,11 @@ export default {
//
methods: {
detailDataInit() {
for (let i = this.fittings_detailsData.length; i < settings.table_min_count; i++) {
this.fittings_detailsData.push({});
@ -826,6 +854,8 @@ export default {
console.log(row, selectedData);
if(selectedData.spec){
row.spec = selectedData.spec;
//TODO
}
},
@ -1284,7 +1314,77 @@ export default {
//
cancel() {
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: {