From 4fbe72d3147c12d828bb219b8ff99c7b0ddbf1e4 Mon Sep 17 00:00:00 2001 From: zwq Date: Mon, 15 Apr 2024 17:22:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/base/energyQuantityManual.js | 86 +++ src/api/base/material.js | 75 +++ src/api/base/materialPricing.js | 68 ++ src/api/cost/rawOthercostRule.js | 68 ++ src/api/monitoring/energyOverlimitLog.js | 8 + src/filter/code-filter.js | 83 +++ src/mixins/basic-add.js | 122 ++++ src/mixins/basic-page.js | 128 ++++ src/mixins/lb/tableHeightMixin.js | 20 + src/router/index.js | 20 +- src/utils/ruoyi.js | 44 ++ src/views/base/material/add-or-updata.vue | 94 +++ src/views/base/material/index.vue | 180 ++++++ .../base/materialPricing/add-or-updata.vue | 156 +++++ .../base/materialPricing/connectTime.vue | 23 + src/views/base/materialPricing/index.vue | 182 ++++++ .../base/productionLine/add-or-updata.vue | 30 +- src/views/core/base/productionLine/index.vue | 19 +- src/views/core/mixins/code-filter.js | 6 +- .../raw/costOthercostRule/add-or-updata.vue | 134 ++++ .../cost/raw/costOthercostRule/index.vue | 94 +++ .../cost/raw/costOthercostRule/typeRule.vue | 31 + .../analysis/contrastAnalysis/index.vue | 105 +++- .../trendAnalysis/components/searchArea.vue | 23 +- .../energy/analysis/trendAnalysis/index.vue | 112 ++-- .../components/energyPlcConnectAdd.vue | 3 +- .../energy/base/energyPlcConnect/index.vue | 3 +- .../components/AddTable.vue | 141 +++++ .../components/energyQuantityManualAdd.vue | 215 +++++++ .../base/energyQuantityManual/index.vue | 332 ++++++++++ .../base/energyQuantityRealtime/index.vue | 1 - .../components/tableNameConfigUpdate.vue | 85 +++ .../energy/base/tableNameConfig/index.vue | 118 ++++ .../energyLimit/components/InputArea.vue | 7 + .../energyLimit/components/TimePickerArea.vue | 7 + .../energyLimit/components/energyLimitAdd.vue | 587 +++++++++++------- .../energy/monitoring/energyLimit/index.vue | 39 +- .../monitoring/energyOverlimitLog/index.vue | 404 +++++++----- 38 files changed, 3363 insertions(+), 490 deletions(-) create mode 100644 src/api/base/energyQuantityManual.js create mode 100644 src/api/base/material.js create mode 100644 src/api/base/materialPricing.js create mode 100644 src/api/cost/rawOthercostRule.js create mode 100644 src/filter/code-filter.js create mode 100644 src/mixins/basic-add.js create mode 100644 src/mixins/basic-page.js create mode 100644 src/mixins/lb/tableHeightMixin.js create mode 100644 src/views/base/material/add-or-updata.vue create mode 100644 src/views/base/material/index.vue create mode 100644 src/views/base/materialPricing/add-or-updata.vue create mode 100644 src/views/base/materialPricing/connectTime.vue create mode 100644 src/views/base/materialPricing/index.vue create mode 100644 src/views/cost/raw/costOthercostRule/add-or-updata.vue create mode 100644 src/views/cost/raw/costOthercostRule/index.vue create mode 100644 src/views/cost/raw/costOthercostRule/typeRule.vue create mode 100644 src/views/energy/base/energyQuantityManual/components/AddTable.vue create mode 100644 src/views/energy/base/energyQuantityManual/components/energyQuantityManualAdd.vue create mode 100644 src/views/energy/base/energyQuantityManual/index.vue create mode 100644 src/views/energy/base/tableNameConfig/components/tableNameConfigUpdate.vue create mode 100644 src/views/energy/base/tableNameConfig/index.vue diff --git a/src/api/base/energyQuantityManual.js b/src/api/base/energyQuantityManual.js new file mode 100644 index 00000000..742f3b2c --- /dev/null +++ b/src/api/base/energyQuantityManual.js @@ -0,0 +1,86 @@ +/* + * @Author: zwq + * @Date: 2024-04-11 15:00:03 + * @LastEditors: zwq + * @LastEditTime: 2024-04-12 10:25:30 + * @Description: + */ +import request from '@/utils/request' + +// 获得分页数据 +export function energyQuantityManualPage(query) { + return request({ + url: '/base/energy-quantity-manual/page', + method: 'get', + params: query + }) +} + +// 创建 +export function energyQuantityManualCreate(data) { + return request({ + url: '/base/energy-quantity-manual/create', + method: 'post', + data: data + }) +} + +// 更新 +export function energyQuantityManualUpdate(data) { + return request({ + url: '/base/energy-quantity-manual/update', + method: 'put', + data: data + }) +} + +//获得能源抄表(手动) +export function energyQuantityManualGet(query) { + return request({ + url: '/base/energy-quantity-manual/get', + method: 'get', + params: query + }) +} + +//删除 +export function energyQuantityManualDelete(query) { + return request({ + url: '/base/energy-quantity-manual/delete', + method: 'delete', + params: query + }) +} + +//导出 +export function energyQuantityManualExport(query) { + return request({ + url: '/base/energy-quantity-manual/export-excel', + method: 'get', + params: query, + responseType: 'blob' + }) +} +// 获得能源表名配置分页 +export function energyTablePage() { + return request({ + url: '/base/energy-type-meter-bind/list', + method: 'get', + }) +} +// 获得能源表名配置 +export function energyTableGet(query) { + return request({ + url: '/base/energy-type-meter-bind/list', + method: 'get', + params: query + }) +} +// 更新能源表名配置 +export function energyTableUpdate(data) { + return request({ + url: '/base/energy-type-meter-bind/update', + method: 'put', + data: data + }) +} diff --git a/src/api/base/material.js b/src/api/base/material.js new file mode 100644 index 00000000..06481564 --- /dev/null +++ b/src/api/base/material.js @@ -0,0 +1,75 @@ +/* + * @Author: zwq + * @Date: 2024-04-09 16:42:19 + * @LastEditors: zwq + * @LastEditTime: 2024-04-10 14:33:52 + * @Description: + */ +import request from '@/utils/request' + +// 创建原料 +export function createMaterial(data) { + return request({ + url: '/base/material/create', + method: 'post', + data: data + }) +} + +// 更新原料 +export function updateMaterial(data) { + return request({ + url: '/base/material/update', + method: 'put', + data: data + }) +} + +// 获取code +export function getCode() { + return request({ + url: '/base/material/autoCode', + method: 'POST' + }) +} +// 删除原料 +export function deleteMaterial(id) { + return request({ + url: '/base/material/delete?id=' + id, + method: 'delete' + }) +} + +// 获得原料 +export function getMaterial(id) { + return request({ + url: '/base/material/get?id=' + id, + method: 'get' + }) +} + +// 获得原料分页 +export function getMaterialPage(query) { + return request({ + url: '/base/material/page', + method: 'get', + params: query + }) +} +// 获得原料列表 +export function getMaterialList() { + return request({ + url: '/base/material/list', + method: 'get', + }) +} + +// 导出原料 Excel +export function exportMaterialExcel(query) { + return request({ + url: '/base/material/export-excel', + method: 'get', + params: query, + responseType: 'blob' + }) +} diff --git a/src/api/base/materialPricing.js b/src/api/base/materialPricing.js new file mode 100644 index 00000000..3fa3bd5c --- /dev/null +++ b/src/api/base/materialPricing.js @@ -0,0 +1,68 @@ +/* + * @Author: zwq + * @Date: 2024-04-09 16:42:19 + * @LastEditors: zwq + * @LastEditTime: 2024-04-10 14:31:46 + * @Description: + */ +import request from '@/utils/request' + +// 创建原料 +export function createMaterialPricing(data) { + return request({ + url: '/base/material-pricing/create', + method: 'post', + data: data + }) +} + +// 更新原料 +export function updateMaterialPricing(data) { + return request({ + url: '/base/material-pricing/update', + method: 'put', + data: data + }) +} + +// 获取code +export function getCode() { + return request({ + url: '/base/material-pricing/autoCode', + method: 'POST' + }) +} +// 删除原料 +export function deleteMaterialPricing(id) { + return request({ + url: '/base/material-pricing/delete?id=' + id, + method: 'delete' + }) +} + +// 获得原料 +export function getMaterialPricing(id) { + return request({ + url: '/base/material-pricing/get?id=' + id, + method: 'get' + }) +} + +// 获得原料分页 +export function getMaterialPricingPage(query) { + return request({ + url: '/base/material-pricing/page', + method: 'get', + params: query + }) +} + +// 导出原料 Excel +export function exportMaterialPricingExcel(query) { + return request({ + url: '/base/material-pricing/export-excel', + method: 'get', + params: query, + responseType: 'blob' + }) +} diff --git a/src/api/cost/rawOthercostRule.js b/src/api/cost/rawOthercostRule.js new file mode 100644 index 00000000..8b2b644d --- /dev/null +++ b/src/api/cost/rawOthercostRule.js @@ -0,0 +1,68 @@ +/* + * @Author: zwq + * @Date: 2024-04-15 17:01:20 + * @LastEditors: zwq + * @LastEditTime: 2024-04-15 17:05:47 + * @Description: + */ +import request from '@/utils/request' + +// 创建设备 +export function createRawOthercostRule(data) { + return request({ + url: '/monitoring/cost-othercost-rule/create', + method: 'post', + data: data + }) +} + +// 更新设备 +export function updateRawOthercostRule(data) { + return request({ + url: '/monitoring/cost-othercost-rule/update', + method: 'put', + data: data + }) +} + +// 删除设备 +export function deleteRawOthercostRule(id) { + return request({ + url: '/monitoring/cost-othercost-rule/delete?id=' + id, + method: 'delete' + }) +} + +// 获得设备 +export function getRawOthercostRule(id) { + return request({ + url: '/monitoring/cost-othercost-rule/get?id=' + id, + method: 'get' + }) +} + +// 获得设备分页 +export function getRawOthercostRulePage(query) { + return request({ + url: '/monitoring/cost-othercost-rule/page', + method: 'get', + params: query + }) +} + +// 导出设备 Excel +export function exportRawOthercostRuleExcel(query) { + return request({ + url: '/monitoring/cost-othercost-rule/export-excel', + method: 'get', + params: query, + responseType: 'blob' + }) +} +// 获得所有设备列表 +export function getRawOthercostRuleAll() { + return request({ + url: '/monitoring/cost-othercost-rule/listAll', + method: 'get' + }) +} diff --git a/src/api/monitoring/energyOverlimitLog.js b/src/api/monitoring/energyOverlimitLog.js index 4605a675..77014f3f 100644 --- a/src/api/monitoring/energyOverlimitLog.js +++ b/src/api/monitoring/energyOverlimitLog.js @@ -43,6 +43,14 @@ export function getEnergyOverlimitLogPage(data) { }) } +// 获得手动抄表记录分页 +export function getEnergyManualLogPage(data) { + return request({ + url: '/monitoring/energy-overlimit-log/pageManual', + method: 'post', + data: data + }) +} // 导出能源超限记录 Excel export function exportEnergyOverlimitLogExcel(query) { return request({ diff --git a/src/filter/code-filter.js b/src/filter/code-filter.js new file mode 100644 index 00000000..23c4b8b1 --- /dev/null +++ b/src/filter/code-filter.js @@ -0,0 +1,83 @@ + +/* + * @Date: 2020-12-29 16:49:28 + * @LastEditors: zwq + * @LastEditTime: 2023-12-07 10:00:51 + * @FilePath: \basic-admin\src\filters\basicData\index.js + * @Description: + */ + +const table = { + lineStatus: { + 1: '生产中', + 2: '停止', + 3: '未知', + }, + deactivate: { + 1: '启用', + 0: '停用', + }, + wareType: { + 1: '缓存', + 2: '活动', + 3: '其它', + }, + reportType: { + 2: '日', + 3: '周', + 4: '月', + 5: '年', + }, + manual: { + 1: '手动', + 0: '自动', + }, +} + +// 日期格式化 +export function parseTime(time, pattern) { + if (arguments.length === 0 || !time) { + return null + } + const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}' + let date + if (typeof time === 'object') { + date = time + } else { + if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) { + time = parseInt(time) + } else if (typeof time === 'string') { + time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.\d{3}/gm),''); + } + if ((typeof time === 'number') && (time.toString().length === 10)) { + time = time * 1000 + } + date = new Date(time) + } + const formatObj = { + y: date.getFullYear(), + m: date.getMonth() + 1, + d: date.getDate(), + h: date.getHours(), + i: date.getMinutes(), + s: date.getSeconds(), + a: date.getDay() + } + const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => { + let value = formatObj[key] + // Note: getDay() returns 0 on Sunday + if (key === 'a') { + return ['日', '一', '二', '三', '四', '五', '六'][value] + } + if (result.length > 0 && value < 10) { + value = '0' + value + } + return value || 0 + }) + return time_str +} +export default function (dictTable) { + return function (val) { + return table?.[dictTable]?.[val] + } +} diff --git a/src/mixins/basic-add.js b/src/mixins/basic-add.js new file mode 100644 index 00000000..fb0d0786 --- /dev/null +++ b/src/mixins/basic-add.js @@ -0,0 +1,122 @@ +/* + * @Author: zwq + * @Date: 2022-08-24 11:19:43 + * @LastEditors: zwq + * @LastEditTime: 2024-04-10 15:46:19 + * @Description: + */ +import { listData } from "@/api/system/dict/data"; //数据字典接口 +export default { + data() { + /* eslint-disable */ + return { + urlOptions: { + createURL: '', //新增接口 + updateURL: '', //编辑提交接口 + infoURL: '', //编辑时获取单条数据接口 + codeURL: '', //获取code接口(返回结果为dataForm.code字段) + optionArrUrl: [], //需要获取下拉框的方法数组 + optionArr: {}, //需要获取下拉框的方法数组的返回结果 + dictNameList: [], //数据字典name数组 + dictArr: {}, //需要获取数据字典的方法数组的返回结果 + }, + visible: false, + setData: false, // 是否需要【编辑时获取单条数据接口】返回的数据操作 + } + }, + created() { + }, + activated() { + }, + methods: { + init(id) { + this.dataForm.id = id || null; + this.visible = true; + if (this.urlOptions.optionArrUrl.length > 0) { + this.getArr() + } + if (this.urlOptions.dictNameList.length > 0) { + this.getDict() + } + this.$nextTick(() => { + this.$refs["dataForm"].resetFields(); + if (this.dataForm.id) { + this.urlOptions.infoURL(id).then(response => { + this.dataForm = response.data; + if (this.setData) { + this.setDataForm() + } + }); + } else { + if (this.urlOptions.codeURL) { + this.getCode() + } + } + }); + }, + /** 获取code */ + getCode() { + this.urlOptions.codeURL() + .then(({ data: res }) => { + this.dataForm.code = res; + }) + .catch(() => {}); + }, + /** 获取下拉框数组 */ + getArr() { + const params = { + pageSize: 100, + pageNo: 1, + } + this.urlOptions.optionArrUrl.forEach((item, index) => { + item(params).then(({ data: res }) => { + this.$set(this.urlOptions.optionArr, `arr${index}`, res.list) + }) + .catch(() => { + }); + }); + }, + /** 查询字典数据列表 */ + getDict() { + this.urlOptions.dictNameList.forEach((item,index)=>{ + const queryParams = { + pageNo: 1, + pageSize: 99, + dictType: item, + } + listData(queryParams).then(response => { + this.$set(this.urlOptions.dictArr, `dict${index}`, response.data.list) + }); + }) + }, + // 表单提交 + dataFormSubmit() { + this.$refs["dataForm"].validate((valid) => { + if (!valid) { + return false; + } + // 修改的提交 + if (this.dataForm.id) { + this.urlOptions.updateURL(this.dataForm).then(response => { + this.$modal.msgSuccess("修改成功"); + this.visible = false; + this.$emit("refreshDataList"); + }); + return; + } + // 添加的提交 + this.urlOptions.createURL(this.dataForm).then(response => { + this.$modal.msgSuccess("新增成功"); + this.visible = false; + this.$emit("refreshDataList"); + }); + }); + }, + /** 清空form */ + formClear() { + if (this.$refs.dataForm!==undefined) { + this.$refs.dataForm.resetFields(); + } + } + } +} diff --git a/src/mixins/basic-page.js b/src/mixins/basic-page.js new file mode 100644 index 00000000..549a15a6 --- /dev/null +++ b/src/mixins/basic-page.js @@ -0,0 +1,128 @@ +/* + * @Author: zwq + * @Date: 2022-08-24 11:19:43 + * @LastEditors: zwq + * @LastEditTime: 2024-04-02 09:33:29 + * @Description: + */ +export default { + data() { + /* eslint-disable */ + return { + urlOptions: { + getDataListURL: '', //获取table接口 + deleteURL: '', //删除接口 + exportURL: '' //导出接口 + }, + tableData: [], //table数据 + listQuery: { //分页 + pageSize: 10, + pageNo: 1, + total: 1, + }, + exportLoading: false, //导出完成的加载状态是否开启 + dataListLoading: false, //获取table的加载状态是否开启 + addOrEditTitle: '', //dialog的title + addOrUpdateVisible: false, //dialog状态 + } + }, + created() { + }, + mounted() { + this.getDataList() + }, + methods: { + // 获取数据列表 + getDataList() { + this.dataListLoading = true; + this.urlOptions.getDataListURL(this.listQuery).then(response => { + this.tableData = response.data.list; + this.listQuery.total = response.data.total; + this.dataListLoading = false; + }); + }, + // 每页数 + sizeChangeHandle(val) { + this.listQuery.pageSize = val; + this.listQuery.pageNo = 1; + this.getDataList(); + }, + // 当前页 + currentChangeHandle(val) { + this.listQuery.pageNo = val; + this.getDataList(); + }, + // 新增 + addOrUpdateHandle(id) { + this.addOrEditTitle = "新增"; + this.addOrUpdateVisible = true; + this.$nextTick(() => { + this.$refs.addOrUpdate.init(id); + }); + }, + //tableBtn点击 + handleClick(val) { + if (val.type === "edit") { + this.addOrUpdateVisible = true; + this.addOrEditTitle = "编辑"; + this.$nextTick(() => { + this.$refs.addOrUpdate.init(val.data.id); + }); + } else if (val.type === "delete") { + this.deleteHandle(val.data.id, val.data.name, val.data._pageIndex) + } else { + this.otherMethods(val) + } + }, + // 删除 + deleteHandle(id, name, index) { + this.$confirm(`是否确认删除${name ? '名称为"' + name + '"' : '序号为"' + index + '"'}的数据项?`, "系统提示", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning", + }) + .then(() => { + this.urlOptions.deleteURL(id).then(({ data }) => { + this.$message({ + message: "操作成功", + type: "success", + duration: 1500, + onClose: () => { + this.getDataList(); + }, + }); + }); + }) + .catch(() => { }); + }, + // dialog取消 + handleCancel() { + this.$refs.addOrUpdate.formClear() + this.addOrUpdateVisible = false + this.addOrEditTitle = '' + }, + // dialog确定 + handleConfirm() { + this.$refs.addOrUpdate.dataFormSubmit() + }, + // dialog的父组件方法this.$emit("refreshDataList"); + successSubmit() { + this.handleCancel() + this.getDataList() + }, + /** 导出按钮操作 */ + handleExport() { + // 处理查询参数 + let params = { ...this.queryParams }; + params.pageNo = undefined; + params.pageSize = undefined; + this.$modal.confirm('是否确认导出所有数据项?').then(() => { + this.exportLoading = true; + return this.urlOptions.exportURL(params); + }).then(response => { + this.$download.excel(response, '报表.xls'); + this.exportLoading = false; + }).catch(() => { }); + } + } +} diff --git a/src/mixins/lb/tableHeightMixin.js b/src/mixins/lb/tableHeightMixin.js new file mode 100644 index 00000000..ad23d16e --- /dev/null +++ b/src/mixins/lb/tableHeightMixin.js @@ -0,0 +1,20 @@ +export default { + data() { + return { + tableH: this.tableHeight(260), + }; + }, + created() { + this.tableH = this?.heightNum ? this.tableHeight(this.heightNum) : this.tableHeight(260); + window.addEventListener('resize', this._setTableHeight); + }, + destroyed() { + window.removeEventListener('resize', this._setTableHeight); + }, + methods: { + _setTableHeight() { + this.tableH = this?.heightNum ? this.tableHeight(this.heightNum) : this.tableHeight(260); + // this.tableH = this.tableHeight(260); + }, + }, +}; diff --git a/src/router/index.js b/src/router/index.js index fc08e221..9ac00be5 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -70,17 +70,17 @@ export const constantRoutes = [ hidden: true }, { - path: '/', + path: "", component: Layout, - redirect: 'core/base/factory', - // children: [{ - // path: 'index', - // redirect: 'core/base/factory', - // component: (resolve) => require(['@/views/index'], resolve), - // name: '首页', - // meta: { title: '首页', icon: 'dashboard', affix: true } - // } - // ] + redirect: "index", + children: [ + { + path: "index", + component: (resolve) => require(["@/views/index"], resolve), + name: "首页", + meta: { title: "首页", icon: "dashboard", affix: true }, + }, + ], }, { path: '/user', diff --git a/src/utils/ruoyi.js b/src/utils/ruoyi.js index fd5d1095..7df60e4b 100644 --- a/src/utils/ruoyi.js +++ b/src/utils/ruoyi.js @@ -48,6 +48,50 @@ export function parseTime(time, pattern) { return time_str } +// 日期格式化(仅适用表格) +export function parseTimeTable(pattern) { + return function(time){ + if (arguments.length === 0 || !time) { + return null + } + const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}' + let date + if (typeof time === 'object') { + date = time + } else { + if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) { + time = parseInt(time) + } else if (typeof time === 'string') { + time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.\d{3}/gm),''); + } + if ((typeof time === 'number') && (time.toString().length === 10)) { + time = time * 1000 + } + date = new Date(time) + } + const formatObj = { + y: date.getFullYear(), + m: date.getMonth() + 1, + d: date.getDate(), + h: date.getHours(), + i: date.getMinutes(), + s: date.getSeconds(), + a: date.getDay() + } + const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => { + let value = formatObj[key] + // Note: getDay() returns 0 on Sunday + if (key === 'a') { + return ['日', '一', '二', '三', '四', '五', '六'][value] + } + if (result.length > 0 && value < 10) { + value = '0' + value + } + return value || 0 + }) + return time_str + } +} // 表单重置 export function resetForm(refName) { if (this.$refs[refName]) { diff --git a/src/views/base/material/add-or-updata.vue b/src/views/base/material/add-or-updata.vue new file mode 100644 index 00000000..60cdde54 --- /dev/null +++ b/src/views/base/material/add-or-updata.vue @@ -0,0 +1,94 @@ + + + + diff --git a/src/views/base/material/index.vue b/src/views/base/material/index.vue new file mode 100644 index 00000000..edcbbd8f --- /dev/null +++ b/src/views/base/material/index.vue @@ -0,0 +1,180 @@ + + + diff --git a/src/views/base/materialPricing/add-or-updata.vue b/src/views/base/materialPricing/add-or-updata.vue new file mode 100644 index 00000000..4cda5a5d --- /dev/null +++ b/src/views/base/materialPricing/add-or-updata.vue @@ -0,0 +1,156 @@ + + + + diff --git a/src/views/base/materialPricing/connectTime.vue b/src/views/base/materialPricing/connectTime.vue new file mode 100644 index 00000000..a22daaaa --- /dev/null +++ b/src/views/base/materialPricing/connectTime.vue @@ -0,0 +1,23 @@ + + + diff --git a/src/views/base/materialPricing/index.vue b/src/views/base/materialPricing/index.vue new file mode 100644 index 00000000..006fc943 --- /dev/null +++ b/src/views/base/materialPricing/index.vue @@ -0,0 +1,182 @@ + + + diff --git a/src/views/core/base/productionLine/add-or-updata.vue b/src/views/core/base/productionLine/add-or-updata.vue index 32b83db5..d208be43 100644 --- a/src/views/core/base/productionLine/add-or-updata.vue +++ b/src/views/core/base/productionLine/add-or-updata.vue @@ -1,8 +1,8 @@