diff --git a/src/pages/Middle/bathroom/BathroomQuotation/BathroomQuotation/Edit.vue b/src/pages/Middle/bathroom/BathroomQuotation/BathroomQuotation/Edit.vue index 0b3c282..8b5e295 100644 --- a/src/pages/Middle/bathroom/BathroomQuotation/BathroomQuotation/Edit.vue +++ b/src/pages/Middle/bathroom/BathroomQuotation/BathroomQuotation/Edit.vue @@ -771,14 +771,14 @@ export default { // 当前项目名称 currentConfigName: "", // 当前项目ID - currentBeid: 0, - settignsValues: {}, - tabKey: 'main', - showAll: false, - showExp: false, - showType: "1", - modalVisible: false, - isPreview:false, + currentBeid: 0, // 当前项目ID + settignsValues: {}, // 当前项目配置 + tabKey: 'main', // 当前tab页 + showAll: false, // 是否显示全部 + showExp: false, // 是否显示公式 + showType: "1", // 显示类型 + modalVisible: false, // 弹出框是否显示 + isPreview:false, // 是否预览 scheme_loading: false, // 加载中 scheme_tableData: [], // 表格数据 scheme_tableColumn: [ // 表格列 @@ -882,15 +882,15 @@ export default { - packaging_detailsData: [], + packaging_detailsData: [], // 包装 + + material_detailsData: [], // 材料 + labor_detailsData: [], // 人工 + paintMaterial_detailsData: [], // 油漆材料 + paintLabor_detailsData: [], // 油漆人工 - material_detailsData: [], - labor_detailsData: [], - paintMaterial_detailsData: [], - paintLabor_detailsData: [], - - expense_detailsData: [ + expense_detailsData: [ // 费用结算 { item_name: "材料小计", amount_formula: "{免漆材料总费用}+{配件总费用}+{包装总费用}" }, @@ -905,7 +905,7 @@ export default { item_name: "制,造,费,用", amount_formula: "({免漆材料总费用}+{配件总费用}+{包装总费用} + {免漆人工总费用}+{免漆抽屉总费用})*0.22" } ], - paintExpense_detailsData: [ + paintExpense_detailsData: [ // 油漆费用结算 { item_name: "材料小计", amount_formula: "{油漆材料总费用}+{配件总费用}+{包装总费用}" }, @@ -922,8 +922,8 @@ export default { ], - uploadDefaultImg: null, - detailDataFieldName: "bathroom_quotation", + uploadDefaultImg: null, // 默认图片 + detailDataFieldName: "bathroom_quotation", // 详情数据字段名称 actions: { // =============================== 接口地址 自动生成 Start =============================== @@ -1021,29 +1021,29 @@ export default { data: { // =============================== 表单数据 自动生成 Start =============================== - id: 0, - code: "", - order_code: "", - customer: "", - phone: "", - address: "", - model_id: 0, - design_id: 0, - project_name: "", - main_cabinet_length: "", - main_cabinet_width: "", - main_cabinet_height: "", - create_uid: 0, - update_uid: 0, - create_time: new Date(2100, 1, 1).getTime() / 10000, - update_time: new Date(2100, 1, 1).getTime() / 10000, + id: 0, // 报价单ID + code: "", // 报价单编号 + order_code: "", // 订单编号 + customer: "", // 客户名称 + phone: "", // 联系电话 + address: "", // 地址 + model_id: 0, // 型号ID + design_id: 0, // 设计方案ID + project_name: "", // 工程名 + main_cabinet_length: "", // 主柜规格 长 + main_cabinet_width: "", // 宽 + main_cabinet_height: "", // 高 + create_uid: 0, // 创建人 + update_uid: 0, // 更新人 + create_time: new Date(2100, 1, 1).getTime() / 10000, // 创建时间 + update_time: new Date(2100, 1, 1).getTime() / 10000, // 更新时间 // =============================== 表单数据 自动生成 End =============================== }, // 标题宽度 - titleWidth: 120, - // 标题对齐方式 - titleAlign: 'right', + titleWidth: 120, // 标题宽度 + // 标题对齐方式 + titleAlign: 'right', // 标题对齐方式 // 表单校验规则 rules: { @@ -1108,9 +1108,9 @@ export default { }; - pageData.actions.get = pageData.actions.BathroomQuotationDetail; - pageData.actions.create = pageData.actions.BathroomQuotationCreate; - pageData.actions.update = pageData.actions.BathroomQuotationUpdate; + pageData.actions.get = pageData.actions.BathroomQuotationDetail; // 详情接口 + pageData.actions.create = pageData.actions.BathroomQuotationCreate; // 新增接口 + pageData.actions.update = pageData.actions.BathroomQuotationUpdate; // 更新接口 // 合并表单数据及配置 pageData.formOptions = Object.assign({}, this.$mk.config.defaults.formOptions, pageData.formOptions); @@ -1126,19 +1126,19 @@ export default { created() { - this.loadSettings(); + this.loadSettings(); // 加载设置 // 获取路由的id参数 - let dataId = this.getDataId(); - if(dataId && dataId.indexOf && dataId.indexOf('d') == 0){ - this.isPreview = true; - this.loadSchemeDataById(dataId.substr(1)); + let dataId = this.getDataId(); // 获取路由的id参数 + if(dataId && dataId.indexOf && dataId.indexOf('d') == 0){ // 如果有id参数,说明是预览模式 + this.isPreview = true; // 设置预览模式 + this.loadSchemeDataById(dataId.substr(1)); // 加载方案数据 } // 如果有id参数,说明是编辑模式 else if (dataId) { - const json = `{"id":${dataId}}`; - this.$mk.post({ - url: this.actions.get, + const json = `{"id":${dataId}}`; // 构造json + this.$mk.post({ // 获取详情数据 + url: this.actions.get, // 详情接口地址 loading: "加载中...", data: json, config: { @@ -1149,52 +1149,52 @@ export default { }).then(a => { // =============================== 时间字段判断 自动生成 Start =============================== - if (a.data[this.detailDataFieldName].create_time) { + if (a.data[this.detailDataFieldName].create_time) { // 如果有create_time字段 a.data[this.detailDataFieldName].create_time = new Date(a.data[this.detailDataFieldName].create_time * 1000); } - if (a.data[this.detailDataFieldName].update_time) { + if (a.data[this.detailDataFieldName].update_time) { // 如果有update_time字段 a.data[this.detailDataFieldName].update_time = new Date(a.data[this.detailDataFieldName].update_time * 1000); } // =============================== 时间字段判断 自动生成 End =============================== let data = a.data[this.detailDataFieldName] - this.formOptions.data = data; + this.formOptions.data = data; // 设置表单数据 - this.fittings_detailsData = JSON.parse(data.fittingsList || "[]"); - this.parts_detailsData = JSON.parse(data.partsList || "[]"); - this.packaging_detailsData = JSON.parse(data.packagingList || "[]"); + this.fittings_detailsData = JSON.parse(data.fittingsList || "[]"); // 部件 + this.parts_detailsData = JSON.parse(data.partsList || "[]"); // 配件 + this.packaging_detailsData = JSON.parse(data.packagingList || "[]"); // 包装 - this.labor_detailsData = JSON.parse(data.laborList || "[]"); - this.material_detailsData = JSON.parse(data.materialList || "[]"); - this.paintLabor_detailsData = JSON.parse(data.paint_laborList || "[]"); - this.paintMaterial_detailsData = JSON.parse(data.paint_materialList || "[]"); + this.labor_detailsData = JSON.parse(data.laborList || "[]"); // 人工 + this.material_detailsData = JSON.parse(data.materialList || "[]"); // 材料 + this.paintLabor_detailsData = JSON.parse(data.paint_laborList || "[]"); // 油漆人工 + this.paintMaterial_detailsData = JSON.parse(data.paint_materialList || "[]"); // 油漆材料 - this.expense_detailsData = JSON.parse(data.expense_list || "[]"); - this.paintExpense_detailsData = JSON.parse(data.paint_expenseList || "[]"); + this.expense_detailsData = JSON.parse(data.expense_list || "[]"); // 费用结算 + this.paintExpense_detailsData = JSON.parse(data.paint_expenseList || "[]"); // 油漆费用结算 - this.drawer_detailsData = JSON.parse(data.drawer_list || "[]"); + this.drawer_detailsData = JSON.parse(data.drawer_list || "[]"); // 抽屉 - this.materialHeightInit(); + this.materialHeightInit(); // 初始化材料高度 - this.detailDataInit(); + this.detailDataInit(); // 初始化详情数据 - this.calculateAll(); + this.calculateAll(); // 计算所有数据 }).catch((a) => { this.$mk.error(a.data.msg); }); - this.isEdit = true; + this.isEdit = true; // 设置编辑模式 } else { // 如果没有id参数,说明是新增模式 this.addModeItems.forEach(item => { - this.formOptions.items.push(item); + this.formOptions.items.push(item); // 添加新增模式表单项 }); this.detailDataInit(); @@ -1209,20 +1209,20 @@ export default { - materialHeightInit() { + materialHeightInit() { // 初始化材料高度 - this.$mk.post({ + this.$mk.post({ // 获取材料列表 url: `${BASE_URL.BASE_URL}/BathroomMaterial/v1/bathroom/material/list`, data: { "page": 1, "limit": 100, "order_bys": [], "search_rules": [] } }).then(a => { - a.data.BathroomMaterial.forEach(o => { - this.fittings_detailsData.forEach(item => { - if (item.material && item.material[0] && item.material[0].toString() == o.id.toString()) { - - item.material_default_height = o.spec || "15"; + a.data.BathroomMaterial.forEach(o => { // 遍历材料列表 + this.fittings_detailsData.forEach(item => { // 遍历部件列表 + if (item.material && item.material[0] && item.material[0].toString() == o.id.toString()) { // 如果部件的材料id和材料列表的id相同 + + item.material_default_height = o.spec || "15"; // 设置部件的默认高度 } }); @@ -1234,9 +1234,9 @@ export default { }, - loadSettings() { - - this.$mk.post({ + loadSettings() { // 加载设置 + + this.$mk.post({ // 获取设置列表 url: `${BASE_URL.BASE_URL}/BathroomScheme/v1/settings/list`, data: { } @@ -1260,13 +1260,13 @@ export default { this.$mk.error(a.data.msg); }); }, - formatShowNumber(value, points) { + formatShowNumber(value, points) { // 格式化显示数字 if (!value) { return '' + (0.0).toFixed(points || 0) + ''; } - return parseFloat(value).toFixed(points || 0) + return parseFloat(value).toFixed(points || 0) }, - toggleAll() { + toggleAll() { // 展开/收起 if (this.tabKey == "main") { this.showAll = !this.showAll; @@ -1283,97 +1283,97 @@ export default { } else { - let index = parseInt(this.tabKey); + let index = parseInt(this.tabKey); // 获取当前tab的索引 - let drawers = this.$refs['drawer']; + let drawers = this.$refs['drawer']; // 获取抽屉组件 - if (drawers && drawers[index] && drawers[index].toggleAll) { - drawers[index].toggleAll(); + if (drawers && drawers[index] && drawers[index].toggleAll) { // 如果有抽屉组件 + drawers[index].toggleAll(); // 调用抽屉组件的展开/收起方法 } } }, - print() { + print() { // 打印 - let hiprint = this.$hiPrint; - let tdata = JSON.parse(JSON.stringify(this.formOptions.data)); + let hiprint = this.$hiPrint; // 获取打印组件 + let tdata = JSON.parse(JSON.stringify(this.formOptions.data)); // 复制表单数据 - tdata.fittings = this.printFormatListData(this.fittings_detailsData); - tdata.parts = this.printFormatListData(this.parts_detailsData); - tdata.packaging = this.printFormatListData(this.packaging_detailsData); - tdata.labor = this.printFormatListData(this.labor_detailsData); - tdata.material = this.printFormatListData(this.material_detailsData); - tdata.paintLabor = this.printFormatListData(this.paintLabor_detailsData); - tdata.paintMaterial = this.printFormatListData(this.paintMaterial_detailsData); - tdata.expense = this.printFormatListData(this.expense_detailsData); - tdata.paintExpense = this.printFormatListData(this.paintExpense_detailsData); + tdata.fittings = this.printFormatListData(this.fittings_detailsData); // 格式化部件数据 + tdata.parts = this.printFormatListData(this.parts_detailsData); // 格式化配件数据 + tdata.packaging = this.printFormatListData(this.packaging_detailsData); // 格式化包装数据 + tdata.labor = this.printFormatListData(this.labor_detailsData); // 格式化人工数据 + tdata.material = this.printFormatListData(this.material_detailsData); // 格式化材料数据 + tdata.paintLabor = this.printFormatListData(this.paintLabor_detailsData); // 格式化油漆人工数据 + tdata.paintMaterial = this.printFormatListData(this.paintMaterial_detailsData); // 格式化油漆材料数据 + tdata.expense = this.printFormatListData(this.expense_detailsData); // 格式化费用结算数据 + tdata.paintExpense = this.printFormatListData(this.paintExpense_detailsData); // 格式化油漆费用结算数据 - hiprint.init(); - var hiprintTemplate = new hiprint.PrintTemplate({ - template: settings.printTemplate + hiprint.init(); // 初始化打印组件 + var hiprintTemplate = new hiprint.PrintTemplate({ // 创建打印模板 + template: settings.printTemplate // 模板内容 }); - hiprintTemplate.print(tdata, { printer: '', title: '报价单' }); + hiprintTemplate.print(tdata, { printer: '', title: '报价单' }); // 打印 }, - printFormatListData(detailsData) { + printFormatListData(detailsData) { // 格式化打印列表数据 - let data = JSON.parse(JSON.stringify(detailsData)); - data.forEach(item => { + let data = JSON.parse(JSON.stringify(detailsData)); // 复制数据 + data.forEach(item => { // 遍历数据 - for (let name in item) { - let o = item[name]; - if (Array.isArray(o) && o[1]) { - item[name] = o[1]; - } - if (typeof (o) == "number") { - item[name] = parseFloat(o || 0).toFixed(2) + for (let name in item) { // 遍历数据的每个字段 + let o = item[name]; // 获取字段值 + if (Array.isArray(o) && o[1]) { // 如果字段值是数组 + item[name] = o[1]; // 设置字段值为数组的第二个元素 + } + if (typeof (o) == "number") { // 如果字段值是数字 + item[name] = parseFloat(o || 0).toFixed(2) // 设置字段值为数字的字符串 } } }); - return data; + return data; // 返回数据 }, - showTypeChange(e) { - this.showType = e.target.value; + showTypeChange(e) { // 显示类型改变 + this.showType = e.target.value; // 设置显示类型 - let drawers = this.$refs['drawer']; + let drawers = this.$refs['drawer']; // 获取抽屉组件 - if (drawers) { - drawers.forEach(drawer => { - if (drawer.setShowType) { + if (drawers) { // 如果有抽屉组件 + drawers.forEach(drawer => { // 遍历抽屉组件 + if (drawer.setShowType) { // 如果有设置显示类型的方法 - drawer.setShowType(this.showType); + drawer.setShowType(this.showType); // 设置显示类型 } }) } }, - selectScheme() { - this.modalVisible = true; - this.scheme_load(); + selectScheme() { // 选择方案 + this.modalVisible = true; // 显示模态框 + this.scheme_load(); // 加载方案列表 }, - dblClickEvent( ) { - this.confirmSelectScheme(); + dblClickEvent( ) { // 双击事件 + this.confirmSelectScheme(); // 确认选择方案 }, - confirmSelectScheme() { - let row = this.$refs.scheme_grid.getCurrentRecord(); // 获取当前行 + confirmSelectScheme() { // 确认选择方案 + let row = this.$refs.scheme_grid.getCurrentRecord(); // 获取当前行 - this.loadSchemeData(row); - - this.modalVisible = false; + this.loadSchemeData(row); // 加载方案数据 + + this.modalVisible = false; // 隐藏模态框 }, - loadSchemeDataById(dataId){ - const json = `{"id":${dataId}}`; - this.$mk.post({ - url: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/detail`, - loading: "加载中...", + loadSchemeDataById(dataId){ // 加载方案数据 + const json = `{"id":${dataId}}`; // 构造json + this.$mk.post({ // 获取详情数据 + url: `${BASE_URL.BASE_URL}/BathroomScheme/v1/bathroom/scheme/detail`, // 详情接口地址 + loading: "加载中...", data: json, config: { headers: { @@ -1382,173 +1382,173 @@ export default { } }).then(a => { - this.loadSchemeData(a.data.bathroom_scheme); + this.loadSchemeData(a.data.bathroom_scheme); // 加载方案数据 }); }, - loadSchemeData(row){ + loadSchemeData(row){ // 加载方案数据 - let scheme_id = row.id.toString() + let scheme_id = row.id.toString() // 获取方案id - 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 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 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 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]); // 过滤油漆材料列表 - if (row.type != settings.schemeType_main) { //抽屉 - this.drawer_detailsData.push({ - name: row.name, - quantity: 1, - fittingsList, - partsList, - packagingList, - laborList, - materialList, - paintLaborList, - paintMaterialList + if (row.type != settings.schemeType_main) { //抽屉 如果不是主柜 + this.drawer_detailsData.push({ // 添加抽屉数据 + name: row.name, // 名称 + quantity: 1, // 数量 + fittingsList, // 部件列表 + partsList, // 配件列表 + packagingList, // 包装列表 + laborList, // 人工列表 + materialList, // 材料列表 + paintLaborList, // 油漆人工列表 + paintMaterialList // 油漆材料列表 }); - this.$forceUpdate(); + this.$forceUpdate(); // 强制更新 - } else { + } else { //主柜 - this.addToList({ scheme_id, listData: fittingsList, detailsData: this.fittings_detailsData }); - this.addToList({ scheme_id, listData: partsList, detailsData: this.parts_detailsData }); - this.addToList({ scheme_id, listData: packagingList, detailsData: this.packaging_detailsData }); - this.addToList({ scheme_id, listData: laborList, detailsData: this.labor_detailsData }); - 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: fittingsList, detailsData: this.fittings_detailsData }); // 把来源数据添加到目标表格数据 + this.addToList({ scheme_id, listData: partsList, detailsData: this.parts_detailsData }); // 把来源数据添加到目标表格数据 + this.addToList({ scheme_id, listData: packagingList, detailsData: this.packaging_detailsData }); // 把来源数据添加到目标表格数据 + this.addToList({ scheme_id, listData: laborList, detailsData: this.labor_detailsData }); // 把来源数据添加到目标表格数据 + 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.calculateAll(); + this.calculateAll(); // 计算所有数据 } }, //把来源数据添加到目标表格数据 - addToList({ listData, scheme_id, detailsData }) { + addToList({ listData, scheme_id, detailsData }) { // 把来源数据添加到目标表格数据 - let newInfos = []; - listData.forEach(item => { - let info = JSON.parse(JSON.stringify(item)); - let source = JSON.parse(JSON.stringify(item)); - info.source = source; - info.scheme_id = scheme_id; + let newInfos = []; // 新的数据 + listData.forEach(item => { // 遍历来源数据 + let info = JSON.parse(JSON.stringify(item)); // 复制数据 + let source = JSON.parse(JSON.stringify(item)); // 复制数据 + info.source = source; // 设置来源数据 + info.scheme_id = scheme_id; // 设置方案id //第二次选择 方案 的时候 ,先找到原来行, - let oldDetailItem = detailsData.filter(a => a.scheme_id == scheme_id && a.source && a.source.id == item.id); + let oldDetailItem = detailsData.filter(a => a.scheme_id == scheme_id && a.source && a.source.id == item.id); // 过滤目标表格数据 - if (oldDetailItem.length) { + if (oldDetailItem.length) { // 如果有原来行 //覆盖 更新 原来行的数据 - Object.assign(oldDetailItem[0], info); - } else { + Object.assign(oldDetailItem[0], info); + } else { // 如果没有原来行 //准备 要附加进去的行 newInfos.push(info); } }); - let j = 0; - for (let i = 0; i < detailsData.length && j < newInfos.length; i++) { - let item = detailsData[i]; + let j = 0; // 新的数据的索引 + for (let i = 0; i < detailsData.length && j < newInfos.length; i++) { // 遍历目标表格数据 + let item = detailsData[i]; // 获取目标表格数据的每一行 //没有选择部件的行,覆盖数据 - if (!item.fittings || !item.fittings[0]) { - Object.assign(detailsData[i], newInfos[j]); - j++; + if (!item.fittings || !item.fittings[0]) { + Object.assign(detailsData[i], newInfos[j]); // 覆盖数据 + j++; // 新的数据的索引+1 } } //剩下的行,直接push进去 for (; j < newInfos.length; j++) { - detailsData.push(newInfos[j]); + detailsData.push(newInfos[j]); // 添加数据 } }, scheme_pageChangeEvent({ currentPage, pageSize }) { // 分页改变事件 - this.scheme_tablePage.currentPage = currentPage - this.scheme_tablePage.pageSize = pageSize - this.scheme_loading = true - this.scheme_load(); + 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": [ + scheme_load() { // 加载数据 + let parms = { // 请求参数 + "page": this.scheme_tablePage.currentPage, // 当前页 + "limit": this.scheme_tablePage.pageSize, // 每页条数 + "order_bys": [ // 排序 + ], + "search_rules": [ // 查询条件 ], - "search_rules": [ - ], - "start_time": 0, - "end_time": 0 + "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; + data: parms // 参数 + }).then(r => { + this.scheme_loading = false // 设置加载状态 + let data = r.data; // 获取数据 + this.scheme_tablePage.total = data.total; // 设置总条数 + this.scheme_tableData = data.BathroomScheme; // 设置表格数据 }); }, - detailDataInit() { - for (let i = this.fittings_detailsData.length; i < settings.table_min_count; i++) { + detailDataInit() { // 初始化详情数据 + for (let i = this.fittings_detailsData.length; i < settings.table_min_count; i++) { // 遍历部件列表 this.fittings_detailsData.push({}); } - for (let i = this.parts_detailsData.length; i < settings.table_min_count; i++) { + for (let i = this.parts_detailsData.length; i < settings.table_min_count; i++) { // 遍历配件列表 this.parts_detailsData.push({}); } - for (let i = this.packaging_detailsData.length; i < settings.table_min_count; i++) { - this.packaging_detailsData.push({}); + for (let i = this.packaging_detailsData.length; i < settings.table_min_count; i++) { // 遍历包装列表 + this.packaging_detailsData.push({}); } - for (let i = this.material_detailsData.length; i < settings.table_min_count; i++) { + for (let i = this.material_detailsData.length; i < settings.table_min_count; i++) { // 遍历材料列表 this.material_detailsData.push({}); - } - for (let i = this.labor_detailsData.length; i < settings.table_min_count; i++) { + } + for (let i = this.labor_detailsData.length; i < settings.table_min_count; i++) { // 遍历人工列表 this.labor_detailsData.push({}); } - for (let i = this.paintMaterial_detailsData.length; i < settings.table_min_count; i++) { + for (let i = this.paintMaterial_detailsData.length; i < settings.table_min_count; i++) { // 遍历油漆材料列表 this.paintMaterial_detailsData.push({}); } - for (let i = this.paintLabor_detailsData.length; i < settings.table_min_count; i++) { + for (let i = this.paintLabor_detailsData.length; i < settings.table_min_count; i++) { // 遍历油漆人工列表 this.paintLabor_detailsData.push({}); } - for (let i = this.expense_detailsData.length; i < settings.table_min_count; i++) { + 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++) { + for (let i = this.paintExpense_detailsData.length; i < settings.table_min_count; i++) { // 遍历油漆费用结算列表 this.paintExpense_detailsData.push({}); } }, // 获取路由的id参数 - getDataId() { + getDataId() { let dataId = this.dataId; if (this.$route.params.id) { dataId = this.$route.params.id; @@ -1577,133 +1577,150 @@ export default { // 打开列表页面 this.$openPage('/BathroomQuotation/BathroomQuotationList') }, - fittings_onPulldownSelected({ row, selectedData, column }) { + // 部件下拉选择事件 + fittings_onPulldownSelected({ row, selectedData, column }) { // row 当前行 selectedData 选择的数据 column 当前列 - if (column.field == "banding") { - if (selectedData.formula) { - row.seal_formula = selectedData.formula; + if (column.field == "banding") { // 如果是封边 + if (selectedData.formula) { // 如果有公式 + row.seal_formula = selectedData.formula; // 设置封边公式 } } - if (column.field == "paint_material") { - this.resetPaintMaterial(); + if (column.field == "paint_material") { // 如果是油漆材料 + this.resetPaintMaterial(); // 重置油漆材料 } - if (column.field == "material") { - this.resetMaterial(); + if (column.field == "material") { // 如果是材料 + this.resetMaterial(); // 重置材料 - if (selectedData.spec) { - row.material_default_height = selectedData.spec; + if (selectedData.spec) { // 如果有规格 + row.material_default_height = selectedData.spec; // 设置默认高度 } } - if (!row.rate_materials && this.settignsValues.Main_material_utilization_rate) { - row.rate_materials = this.settignsValues.Main_material_utilization_rate; + if (!row.rate_materials && this.settignsValues.Main_material_utilization_rate) { // 如果没有主材利用率 + row.rate_materials = this.settignsValues.Main_material_utilization_rate; // 设置主材利用率 } - if (!row.paint_number && this.settignsValues.Default_rate_of_paint_surface) { - row.paint_number = this.settignsValues.Default_rate_of_paint_surface; + if (!row.paint_number && this.settignsValues.Default_rate_of_paint_surface) { // 如果没有油漆面 + row.paint_number = this.settignsValues.Default_rate_of_paint_surface; // 设置油漆面 } - if (!row.board_length_formula) { + if (!row.board_length_formula) { // 如果没有板材长度公式 row.board_length_formula = this.settignsValues.Default_board_length_formula || '{板材的长}*{板材的宽}*{部件的数量}/{主材利用率}/1000000/2.96'; } - if (!row.paint_area_formula) { + if (!row.paint_area_formula) { // 如果没有油漆面公式 row.paint_area_formula = this.settignsValues.Default_paint_area_formula || '{板材的长}*{板材的宽}*{部件的数量}*{油漆面}/1000000'; } }, - fittings_onPopupSelected({ rows, name, params }) { - console.log(rows, name, params); + // 部件弹出选择事件 + fittings_onPopupSelected({ rows, name, params }) { // rows 当前行 name 当前列 params 参数 + console.log(rows, name, params); // 打印参数 }, - fittings_beforeEditMethod({ column, row }) { + // 部件编辑前事件 + fittings_beforeEditMethod({ column, row }) { // column 当前列 row 当前行 console.log(row, column); return true; }, - fittings_afterEditEvent({ column, row }) { + + // 部件编辑后事件 + fittings_afterEditEvent({ column, row }) { // column 当前列 row 当前行 console.log(row, column); this.calculateAll(); }, - fittings_beforeEditEvent({ column, row }) { - console.log(row, column); + // 部件编辑前事件 + fittings_beforeEditEvent({ column, row }) { // column 当前列 row 当前行 + console.log(row, column); }, - fittings_footerCellClassName({ columnIndex }) { + + // 部件表格添加事件 + fittings_footerCellClassName({ columnIndex }) { // columnIndex 当前列索引 if (columnIndex === 0) { return 'col-blue' } }, - fittings_footerMethod({ columns }) { - const sums = [] - columns.forEach((column, columnIndex) => { - if (columnIndex === 0) { - sums.push('') - } else { - let sumCell = '' - switch (column.field) { - case 'quantity': - sumCell = parseFloat(this.formOptions.data.fittings_total_quantity || 0).toFixed(0) + // 部件表格合计事件 + fittings_footerMethod({ columns }) { // columns 当前列 + const sums = [] // 合计数组 + columns.forEach((column, columnIndex) => { // 遍历列 + if (columnIndex === 0) { // 如果是第一列 + sums.push('') // 添加空字符串 + } else { // 如果不是第一列 + let sumCell = '' // 合计单元格 + switch (column.field) { // 判断列字段 + case 'quantity': // 数量 + sumCell = parseFloat(this.formOptions.data.fittings_total_quantity || 0).toFixed(0) // 设置合计单元格 break - case 'seal_formula': - sumCell = parseFloat(this.formOptions.data.fittings_total_seal || 0).toFixed(2) + case 'seal_formula': // 封边公式 + sumCell = parseFloat(this.formOptions.data.fittings_total_seal || 0).toFixed(2) // 设置合计单元格 break - case 'board_length_formula': - sumCell = parseFloat(this.formOptions.data.fittings_total_board_length || 0).toFixed(3) + case 'board_length_formula': // 板材长度公式 + sumCell = parseFloat(this.formOptions.data.fittings_total_board_length || 0).toFixed(3) // 设置合计单元格 break - case 'paint_area_formula': - sumCell = parseFloat(this.formOptions.data.fittings_total_paint_area || 0).toFixed(3) + case 'paint_area_formula': // 油漆面公式 + sumCell = parseFloat(this.formOptions.data.fittings_total_paint_area || 0).toFixed(3) // 设置合计单元格 break } - sums.push(sumCell) + sums.push(sumCell) // 添加合计单元格 } }) // 返回一个二维数组的表尾合计 - return [sums] + return [sums] }, - fittings_pageAdd(row) { - const $table = this.$refs.fittings_xTable - const record = { + // 部件表格添加事件 + fittings_pageAdd(row) { // row 当前行 + const $table = this.$refs.fittings_xTable // 获取表格 + const record = { // 新的数据 + } + if (row) { // 如果有行 + + this.fittings_detailsData.splice($table.getRowSeq(row), 0, record); // 添加数据 + } else { // 如果没有行 + this.fittings_detailsData.push(record) // 添加数据 } - if (row) { + }, - this.fittings_detailsData.splice($table.getRowSeq(row), 0, record); - } else { - this.fittings_detailsData.push(record) - } - }, - fittings_pageDelete(row) { - const $table = this.$refs.fittings_xTable; - this.fittings_detailsData.splice($table.getRowSeq(row) - 1, 1); - this.resetMaterial(); - this.resetPaintMaterial(); + // 部件表格删除事件 + fittings_pageDelete(row) { // row 当前行 + const $table = this.$refs.fittings_xTable; // 获取表格 + this.fittings_detailsData.splice($table.getRowSeq(row) - 1, 1); // 删除数据 + this.resetMaterial(); // 重置材料 + this.resetPaintMaterial(); // 重置油漆材料 }, - - parts_onPulldownSelected({ selectedData, row }) { - console.log(row, selectedData); - if (selectedData.spec) { - row.spec = selectedData.spec; + // 配件下拉选择事件 + parts_onPulldownSelected({ selectedData, row }) { // selectedData 选择的数据 row 当前行 + console.log(row, selectedData); + if (selectedData.spec) { // 如果有规格 + row.spec = selectedData.spec; // 设置规格 } - if (selectedData.price) { - row.price = selectedData.price; + if (selectedData.price) { // 如果有价格 + row.price = selectedData.price; // 设置价格 } }, - parts_onPopupSelected({ rows, name, params }) { + // 配件弹出选择事件 + parts_onPopupSelected({ rows, name, params }) { // rows 当前行 name 当前列 params 参数 console.log(rows, name, params); }, + // 配件编辑前事件 parts_beforeEditMethod({ column, row }) { console.log(row, column); return true; }, + // 配件编辑后事件 parts_afterEditEvent() { this.calculateAll(); }, + // 配件编辑前事件 parts_beforeEditEvent({ column, row }) { console.log(row, column); }, + // 配件表格添加事件 parts_pageAdd(row) { const $table = this.$refs.parts_xTable const record = { @@ -1714,16 +1731,19 @@ export default { this.parts_detailsData.push(record) } }, + // 配件表格删除事件 parts_pageDelete(row) { const $table = this.$refs.parts_xTable; this.parts_detailsData.splice($table.getRowSeq(row) - 1, 1); this.calculateAll(); }, + // 配件表格添加事件 parts_footerCellClassName({ columnIndex }) { if (columnIndex === 0) { return 'col-blue' } }, + // 配件表格合计事件 parts_footerMethod({ columns, data }) { console.log(data) const sums = [] @@ -1744,26 +1764,31 @@ export default { }, - + // 包装下拉选择事件 packaging_onPulldownSelected({ row, name, params }) { console.log(row, name, params); }, + // 包装弹出选择事件 packaging_onPopupSelected({ rows, name, params }) { console.log(rows, name, params); }, + // 包装编辑前事件 packaging_beforeEditMethod({ column, row }) { console.log(row, column); return true; }, + // 包装编辑后事件 packaging_afterEditEvent({ column, row }) { console.log(row, column); this.calculateAll(); }, + // 包装编辑前事件 packaging_beforeEditEvent({ column, row }) { console.log(row, column); }, + // 包装表格添加事件 packaging_pageAdd(row) { const $table = this.$refs.packaging_xTable const record = { @@ -1774,15 +1799,18 @@ export default { this.packaging_detailsData.push(record) } }, + // 包装表格删除事件 packaging_pageDelete(row) { const $table = this.$refs.packaging_xTable; this.packaging_detailsData.splice($table.getRowSeq(row) - 1, 1); }, + // 包装表格添加事件 packaging_footerCellClassName({ columnIndex }) { if (columnIndex === 0) { return 'col-blue' } }, + // 包装表格合计事件 packaging_footerMethod({ columns, data }) { console.log(data) const sums = [] @@ -1802,23 +1830,27 @@ export default { return [sums] }, - + // 油漆材料下拉选择事件 material_onPulldownSelected({ row, name, params }) { console.log(row, name, params); }, + // 油漆材料弹出选择事件 material_onPopupSelected({ rows, name, params }) { console.log(rows, name, params); }, + // 油漆材料编辑前事件 material_beforeEditMethod({ column, row }) { console.log(row, column); return true; }, + // 油漆材料编辑后事件 material_afterEditEvent({ column, row }) { console.log(row, column); this.calculateAll(); }, + // 油漆材料编辑前事件 material_pageAdd(row) { const $table = this.$refs.material_xTable const record = { @@ -1830,15 +1862,18 @@ export default { this.material_detailsData.push(record) } }, + // 油漆材料表格删除事件 material_pageDelete(row) { const $table = this.$refs.material_xTable; this.material_detailsData.splice($table.getRowSeq(row) - 1, 1); }, + // 油漆材料表格添加事件 material_footerCellClassName({ columnIndex }) { if (columnIndex === 0) { return 'col-blue' } }, + // 油漆材料表格合计事件 material_footerMethod({ columns }) { const sums = [] columns.forEach((column, columnIndex) => { @@ -1858,26 +1893,31 @@ export default { }, - + // 人工下拉选择事件 labor_onPulldownSelected({ row, name, params }) { console.log(row, name, params); }, + // 人工弹出选择事件 labor_onPopupSelected({ rows, name, params }) { console.log(rows, name, params); }, + // 人工编辑前事件 labor_beforeEditMethod({ column, row }) { console.log(row, column); return true; }, + // 人工编辑后事件 labor_afterEditEvent({ column, row }) { console.log(row, column); this.calculateAll(); }, + // 人工编辑前事件 labor_beforeEditEvent({ column, row }) { console.log(row, column); }, + // 人工表格添加事件 labor_pageAdd(row) { const $table = this.$refs.labor_xTable const record = { @@ -1889,15 +1929,18 @@ export default { this.labor_detailsData.push(record) } }, + // 人工表格删除事件 labor_pageDelete(row) { const $table = this.$refs.labor_xTable; this.labor_detailsData.splice($table.getRowSeq(row) - 1, 1); }, + // 人工表格添加事件 labor_footerCellClassName({ columnIndex }) { if (columnIndex === 0) { return 'col-blue' } }, + // 人工表格合计事件 labor_footerMethod({ columns }) { const sums = [] columns.forEach((column, columnIndex) => { @@ -1917,25 +1960,30 @@ 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); this.calculateAll(); }, + // 油漆人工编辑前事件 expense_beforeEditEvent({ column, row }) { console.log(row, column); }, + // 油漆人工表格添加事件 expense_pageAdd(row) { const $table = this.$refs.expense_xTable const record = { @@ -1946,10 +1994,12 @@ export default { 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' @@ -2537,46 +2587,51 @@ export default { - calculateAll() { + calculateAll() { // 计算所有 - this._calculateAll(); - this.$forceUpdate(); + this._calculateAll(); // 计算所有 + this.$forceUpdate(); // 强制刷新 }, - _calculateAll() { + _calculateAll() { // 计算所有 - this.totalRows({ detailsData: this.drawer_detailsData, names: ["amount", "paint_amount"], totalPrev: "drawer" }); + this.totalRows({ detailsData: this.drawer_detailsData, names: ["amount", "paint_amount"], totalPrev: "drawer" }); // 计算所有 抽屉 + // 计算所有 五金 配件 this.calculateRows({ detailsData: this.fittings_detailsData, names: ["long", "width", "height", "seal", "board_length", "paint_area"], totalPrev: "fittings" }); - + // 计算所有 部件 this.totalRows({ detailsData: this.fittings_detailsData, names: ["quantity"], totalPrev: "fittings" }); - + // 计算所有 配件 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.material_detailsData, names: ["quantity", "amount"], totalPrev: "material" }); + // 计算所有 人工 this.calculateRows({ detailsData: this.labor_detailsData, names: ["amount"], totalPrev: "labor" }); - + // 计算所有 油漆材料 this.calculateRows({ detailsData: this.paintMaterial_detailsData, names: ["quantity", "amount"], totalPrev: "paintMaterial" }); + // 计算所有 油漆人工 this.calculateRows({ detailsData: this.paintLabor_detailsData, names: ["amount"], totalPrev: "paintLabor" }); - + // 计算所有 费用 this.calculateRows({ detailsData: this.expense_detailsData, names: ["amount"], totalPrev: "expense" }); + // 计算所有 油漆费用 this.calculateRows({ detailsData: this.paintExpense_detailsData, names: ["amount"], totalPrev: "paintExpense" }); - + console.log("this.formOptions.data.expense_total_amount:" + this.formOptions.data.expense_total_amount) - this.formOptions.data.expense = this.formOptions.data.expense_total_amount; - this.formOptions.data.paint_expense = this.formOptions.data.paintExpense_total_amount; + this.formOptions.data.expense = this.formOptions.data.expense_total_amount; // 计算所有 费用 + this.formOptions.data.paint_expense = this.formOptions.data.paintExpense_total_amount; // 计算所有 油漆费用 + + this.formOptions.data.show_expense = parseFloat(this.formOptions.data.expense || 0).toFixed(2); // 计算所有 费用 + this.formOptions.data.show_paint_expense = parseFloat(this.formOptions.data.paint_expense || 0).toFixed(2); // 计算所有 油漆费用 - this.formOptions.data.show_expense = parseFloat(this.formOptions.data.expense || 0).toFixed(2); - this.formOptions.data.show_paint_expense = parseFloat(this.formOptions.data.paint_expense || 0).toFixed(2); - - this.formOptions.data = JSON.parse(JSON.stringify(this.formOptions.data)) + this.formOptions.data = JSON.parse(JSON.stringify(this.formOptions.data)) // 强制刷新 }, - + // 计算行 calculateRows({ detailsData, names, totalPrev }) { let totals = {}; @@ -2602,7 +2657,7 @@ export default { }, - + // 统计行 totalRows({ detailsData, names, totalPrev }) { let totals = {};