diff --git a/package.json b/package.json index f0a3beb..e979295 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,8 @@ "vue-meta": "2.4.0", "vue-router": "3.4.9", "vuedraggable": "2.24.3", - "vuex": "3.6.0" + "vuex": "3.6.0", + "xlsx": "^0.17.0" }, "devDependencies": { "@vue/cli-plugin-babel": "4.4.6", diff --git a/public/favicon.ico b/public/favicon.ico index e263760..8b5b410 100644 Binary files a/public/favicon.ico and b/public/favicon.ico differ diff --git a/src/api/ems/base/baseMonitorThreshold.js b/src/api/ems/base/baseMonitorThreshold.js new file mode 100644 index 0000000..7af9498 --- /dev/null +++ b/src/api/ems/base/baseMonitorThreshold.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询计量设备阈值维护列表 +export function listBaseMonitorThreshold(query) { + return request({ + url: '/ems/base/baseMonitorThreshold/list', + method: 'get', + params: query + }) +} + +// 查询计量设备阈值维护详细 +export function getBaseMonitorThreshold(objId) { + return request({ + url: '/ems/base/baseMonitorThreshold/' + objId, + method: 'get' + }) +} + +// 新增计量设备阈值维护 +export function addBaseMonitorThreshold(data) { + return request({ + url: '/ems/base/baseMonitorThreshold', + method: 'post', + data: data + }) +} + +// 修改计量设备阈值维护 +export function updateBaseMonitorThreshold(data) { + return request({ + url: '/ems/base/baseMonitorThreshold', + method: 'put', + data: data + }) +} + +// 删除计量设备阈值维护 +export function delBaseMonitorThreshold(objId) { + return request({ + url: '/ems/base/baseMonitorThreshold/' + objId, + method: 'delete' + }) +} diff --git a/src/api/ems/record/recordAlarmData.js b/src/api/ems/record/recordAlarmData.js index c1a6367..89e7dea 100644 --- a/src/api/ems/record/recordAlarmData.js +++ b/src/api/ems/record/recordAlarmData.js @@ -42,3 +42,11 @@ export function delRecordAlarmData(objId) { method: 'delete' }) } + +// 新增异常数据记录 +export function handleExceptions(objId) { + return request({ + url: '/ems/record/recordAlarmData/handleExceptions/' + objId, + method: 'post' + }) +} diff --git a/src/api/ems/report/reportPort.js b/src/api/ems/report/reportPort.js index 695a129..17c2023 100644 --- a/src/api/ems/report/reportPort.js +++ b/src/api/ems/report/reportPort.js @@ -1,6 +1,6 @@ import request from '@/utils/request' -// 查询水整点数据列表 +// 查询统计能耗报表 export function energyStatisticalReportList(query) { return request({ url: '/ems/report/energyStatisticalReportList', @@ -8,3 +8,21 @@ export function energyStatisticalReportList(query) { params: query }) } + +// 查询峰平谷耗量报表 +export function peaksValleysConsumptionReportList(query) { + return request({ + url: '/ems/report/peaksValleysConsumptionReportList', + method: 'get', + params: query + }) +} + +// 查询能源预览接口 +export function energyPreviewReportList(query) { + return request({ + url: '/ems/report/energyPreviewReportList', + method: 'get', + params: query + }) +} diff --git a/src/api/mes/base/processInfo.js b/src/api/mes/base/processInfo.js index b0b3d07..59f2ee5 100644 --- a/src/api/mes/base/processInfo.js +++ b/src/api/mes/base/processInfo.js @@ -42,3 +42,12 @@ export function delProcessInfo(objId) { method: 'delete' }) } + +// 查询工序信息列表 +export function getProcessInfoList(query) { + return request({ + url: '/mes/base/processInfo/processInfoList', + method: 'get', + params: query + }) +} diff --git a/src/api/mes/prod/planExecuteUser.js b/src/api/mes/prod/planExecuteUser.js new file mode 100644 index 0000000..712fb37 --- /dev/null +++ b/src/api/mes/prod/planExecuteUser.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询生产工单执行用户列表 +export function listPlanExecuteUser(query) { + return request({ + url: '/mes/prod/planExecuteUser/list', + method: 'get', + params: query + }) +} + +// 查询生产工单执行用户详细 +export function getPlanExecuteUser(objId) { + return request({ + url: '/mes/prod/planExecuteUser/' + objId, + method: 'get' + }) +} + +// 新增生产工单执行用户 +export function addPlanExecuteUser(data) { + return request({ + url: '/mes/prod/planExecuteUser', + method: 'post', + data: data + }) +} + +// 修改生产工单执行用户 +export function updatePlanExecuteUser(data) { + return request({ + url: '/mes/prod/planExecuteUser', + method: 'put', + data: data + }) +} + +// 删除生产工单执行用户 +export function delPlanExecuteUser(objId) { + return request({ + url: '/mes/prod/planExecuteUser/' + objId, + method: 'delete' + }) +} diff --git a/src/api/mes/prod/prodPlanErpInfo.js b/src/api/mes/prod/prodPlanErpInfo.js new file mode 100644 index 0000000..1d8a821 --- /dev/null +++ b/src/api/mes/prod/prodPlanErpInfo.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询生产计划信息列表 +export function listProdPlanErpInfo(query) { + return request({ + url: '/mes/prod/prodPlanErpInfo/list', + method: 'get', + params: query + }) +} + +// 查询生产计划信息详细 +export function getProdPlanErpInfo(objId) { + return request({ + url: '/mes/prod/prodPlanErpInfo/' + objId, + method: 'get' + }) +} + +// 新增生产计划信息 +export function addProdPlanErpInfo(data) { + return request({ + url: '/mes/prod/prodPlanErpInfo', + method: 'post', + data: data + }) +} + +// 修改生产计划信息 +export function updateProdPlanErpInfo(data) { + return request({ + url: '/mes/prod/prodPlanErpInfo', + method: 'put', + data: data + }) +} + +// 删除生产计划信息 +export function delProdPlanErpInfo(objId) { + return request({ + url: '/mes/prod/prodPlanErpInfo/' + objId, + method: 'delete' + }) +} diff --git a/src/api/mes/record/recordStaffCommute.js b/src/api/mes/record/recordStaffCommute.js new file mode 100644 index 0000000..8afb170 --- /dev/null +++ b/src/api/mes/record/recordStaffCommute.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询员工上下班记录列表 +export function listRecordStaffCommute(query) { + return request({ + url: '/mes/record/recordStaffCommute/list', + method: 'get', + params: query + }) +} + +// 查询员工上下班记录详细 +export function getRecordStaffCommute(objId) { + return request({ + url: '/mes/record/recordStaffCommute/' + objId, + method: 'get' + }) +} + +// 新增员工上下班记录 +export function addRecordStaffCommute(data) { + return request({ + url: '/mes/record/recordStaffCommute', + method: 'post', + data: data + }) +} + +// 修改员工上下班记录 +export function updateRecordStaffCommute(data) { + return request({ + url: '/mes/record/recordStaffCommute', + method: 'put', + data: data + }) +} + +// 删除员工上下班记录 +export function delRecordStaffCommute(objId) { + return request({ + url: '/mes/record/recordStaffCommute/' + objId, + method: 'delete' + }) +} diff --git a/src/api/mes/record/recordStaffSalary.js b/src/api/mes/record/recordStaffSalary.js new file mode 100644 index 0000000..eae0a24 --- /dev/null +++ b/src/api/mes/record/recordStaffSalary.js @@ -0,0 +1,62 @@ +import request from '@/utils/request' + +// 查询员工工资记录列表 +export function listRecordStaffSalary(query) { + return request({ + url: '/mes/record/recordStaffSalary/list', + method: 'get', + params: query + }) +} + +// 查询员工工资记录详细 +export function getRecordStaffSalary(objId) { + return request({ + url: '/mes/record/recordStaffSalary/' + objId, + method: 'get' + }) +} + +// 新增员工工资记录 +export function addRecordStaffSalary(data) { + return request({ + url: '/mes/record/recordStaffSalary', + method: 'post', + data: data + }) +} + +// 修改员工工资记录 +export function updateRecordStaffSalary(data) { + return request({ + url: '/mes/record/recordStaffSalary', + method: 'put', + data: data + }) +} + +// 删除员工工资记录 +export function delRecordStaffSalary(objId) { + return request({ + url: '/mes/record/recordStaffSalary/' + objId, + method: 'delete' + }) +} + +// 生成班组员工工资 +export function selectTeamEmployeesWages(query) { + return request({ + url: '/mes/record/recordStaffSalary/selectTeamEmployeesWages', + method: 'get', + params: query + }) +} + +// 新增员工工资记录 +export function uploadERPStaffSalary(data) { + return request({ + url: '/mes/record/recordStaffSalary/uploadERPStaffSalary', + method: 'post', + data: data + }) +} diff --git a/src/assets/images/electricityIcon.svg b/src/assets/images/electricityIcon.svg new file mode 100644 index 0000000..c150c81 --- /dev/null +++ b/src/assets/images/electricityIcon.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/logo/logo.png b/src/assets/logo/logo.png index e263760..117cd32 100644 Binary files a/src/assets/logo/logo.png and b/src/assets/logo/logo.png differ diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue index 94733d5..2771ee4 100644 --- a/src/layout/components/Navbar.vue +++ b/src/layout/components/Navbar.vue @@ -1,26 +1,38 @@ @@ -57,8 +125,41 @@ import Search from '@/components/HeaderSearch' import RuoYiGit from '@/components/RuoYi/Git' import RuoYiDoc from '@/components/RuoYi/Doc' import settings from '@/settings' +import { handleExceptions, listRecordAlarmData } from '@/api/ems/record/recordAlarmData' export default { + dicts: ['alarm_type', 'alarm_status'], + data() { + return { + poolNameList: [], + poolName: '', + alarmTitle: '异常处理', + alarmOpen: false, + alarmLoading: false, + alarmDataList: [], + alarmDataTotal: 0, + // 选中数组 + objIds: [], + // 非单个禁用 + single: true, + // 非多个禁用 + multiple: true, + // 查询参数 + queryParams: { + pageNum: 1, + pageSize: 10, + alarmStatus: '1' + } + } + }, + created() { + localStorage.setItem('this.alarmDataTotal', 0) + }, + mounted() { + // 定时获取提示路由信息 + this.getAlarmData() + // setInterval(() => this.getAlarmData(), 1000 * 60); + }, components: { Breadcrumb, TopNav, @@ -93,6 +194,58 @@ export default { } }, methods: { + // 打开右下角异常 + openAlarm() { + this.$notify({ + title: '异常数据提示', + position: 'bottom-right', + message: this.$createElement( + 'div', + { + on: { + click: () => { + this.getAlarmData(true) + } + } + }, + [this.$createElement('el-button', {}, ['点击查看'])] + ) + }) + }, + /** 报警列表 */ + getAlarmData(open) { + this.alarmOpen = open + this.alarmLoading = true + this.getAlarmDataList() + }, + getAlarmDataList() { + listRecordAlarmData(this.queryParams).then((response) => { + this.alarmDataList = response.rows + this.alarmDataTotal = response.total + this.alarmLoading = false + if (localStorage.getItem('this.alarmDataTotal') != this.alarmDataTotal) { + localStorage.setItem('this.alarmDataTotal', this.alarmDataTotal) + this.openAlarm() + } + }) + }, + /** 跳转处理 */ + jumpProcessing(row) { + if (this.objIds.length === 0) { + this.$modal.msgWarning('请勾选设备进行异常处理!') + return + } + handleExceptions(this.objIds).then(response => { + this.$modal.msgSuccess('处理成功') + this.alarmOpen = false + }) + }, + // 多选框选中数据 + handleSelectionChangeAlarm(selection) { + this.objIds = selection.map((item) => item.objId) + this.single = selection.length !== 1 + this.multiple = !selection.length + }, toggleSideBar() { this.$store.dispatch('app/toggleSideBar') }, @@ -103,23 +256,41 @@ export default { type: 'warning' }).then(() => { this.$store.dispatch('LogOut').then(() => { - if (!settings.casEnable){ - location.href = '/index'; + if (!settings.casEnable) { + location.href = '/index' } }) - }).catch(() => {}); + }).catch(() => { + }) } } } diff --git a/src/views/ems/report/energyStatisticalReport/index.vue b/src/views/ems/report/energyStatisticalReport/index.vue index 184573b..867deeb 100644 --- a/src/views/ems/report/energyStatisticalReport/index.vue +++ b/src/views/ems/report/energyStatisticalReport/index.vue @@ -31,8 +31,18 @@ + + + + + - + - + 搜索 - 重置 + @@ -75,13 +85,13 @@ - - - - - - - + + + + + + + import { getWorkUnitTrees } from '@/api/ems/base/baseWorkUnit' -import {listBaseMonitorInfo} from '@//api/ems/base/baseMonitorInfo' -import Treeselect from "@riophae/vue-treeselect"; -import "@riophae/vue-treeselect/dist/vue-treeselect.css"; +import Treeselect from '@riophae/vue-treeselect' +import '@riophae/vue-treeselect/dist/vue-treeselect.css' import { energyStatisticalReportList } from '@//api/ems/report/reportPort.js' import { parseTime } from '@//utils/ruoyi' export default { - name: "EnergyStatisticalReport", + name: 'EnergyStatisticalReport', components: { Treeselect }, data() { @@ -130,103 +139,110 @@ export default { monitorWorkUnitList: [], daterangeCollectTime: [], // 弹出层标题 - title: "", + title: '', // 是否显示弹出层 open: false, // 查询参数 queryParams: { pageNum: 1, pageSize: 10, + energyType: '2', monitorCode: null, workUnitCode: null, monitorStatus: null, monitorType: null, - dateType: 10, + dateType: 10 }, // 表单参数 form: {}, workUnitProps: { - children: "children", - label: "label" + children: 'children', + label: 'label' }, dateTypeList: [ - {dateTypeCode: 19, dateTypeName: '时'}, - {dateTypeCode: 10, dateTypeName: '日'}, - {dateTypeCode: 7, dateTypeName: '月'}, - {dateTypeCode: 4, dateTypeName: '年'}, + { dateTypeCode: 19, dateTypeName: '时' }, + { dateTypeCode: 10, dateTypeName: '日' }, + { dateTypeCode: 7, dateTypeName: '月' }, + { dateTypeCode: 4, dateTypeName: '年' } ], columns: [ - {key: 0, label: `主键标识`, visible: false}, - {key: 1, label: `统计单元编号`, visible: true}, - {key: 2, label: `统计单元名称`, visible: true}, - {key: 3, label: `耗量(kwh)`, visible: true}, - {key: 4, label: `开始日期`, visible: true}, - {key: 5, label: `结束日期`, visible: true}, - {key: 6, label: `仪表值(kwh)`, visible: true} + { key: 0, label: `主键标识`, visible: false }, + { key: 1, label: `统计单元编号`, visible: true }, + { key: 2, label: `统计单元名称`, visible: true }, + { key: 3, label: `耗量(kwh)`, visible: true }, + { key: 4, label: `开始时间`, visible: true }, + { key: 5, label: `结束时间`, visible: true }, + { key: 6, label: `仪表值(kwh)`, visible: true } + ], + // 能源类型选项 + energyTypeList: [ + { value: '2', label: '电' }, + // { value: '3', label: '水' }, + // { value: '4', label: '蒸汽' } ] - }; + } }, created() { const nowDate = parseTime(new Date(), '{y}-{m}-{d}') - this.daterangeCollectTime[0] = nowDate - this.daterangeCollectTime[1] = nowDate - this.getList(); - this.getWorkUnitTrees(); + this.daterangeCollectTime[0] = nowDate + ' 00:00:00' + this.daterangeCollectTime[1] = nowDate + ' 23:59:59' + this.getList() + this.getWorkUnitTrees() }, watch: { // 根据名称筛选部门树 workUnitName(val) { - this.$refs.tree.filter(val); + this.$refs.tree.filter(val) } }, methods: { /** 转换统计单元信息数据结构 */ workUnitOptionsNormalizer(node) { if (node.children && !node.children.length) { - delete node.children; + delete node.children } return { id2: node.workUnitCode, label2: node.workUnitName, children2: node.children - }; + } }, /** 查询计量设备下拉树结构 */ getWorkUnitTrees() { getWorkUnitTrees().then(response => { - this.workUnitOptions = []; - console.log(response.data) - this.workUnitOptions = JSON.parse(JSON.stringify(response.data).replaceAll('id','id2').replaceAll('code','id')); - }); + this.workUnitOptions = [] + this.workUnitOptions = JSON.parse(JSON.stringify(response.data).replaceAll('id', 'id2').replaceAll('code', 'id')) + }) }, // 筛选节点 filterNode(value, data) { - if (!value) return true; - return data.label.indexOf(value) !== -1; + if (!value) return true + return data.label.indexOf(value) !== -1 }, // 节点单击事件 handleNodeClick(data) { - this.queryParams.workUnitCode = data.id; - this.handleQuery(); + this.queryParams.workUnitCode = data.id + this.handleQuery() }, /** 查询统计计量信息列表 */ getList() { - this.loading = true; - // this.queryParams = {}; - if (null != this.daterangeCollectTime && '' != this.daterangeCollectTime) { - this.queryParams.beginCollectTime = this.daterangeCollectTime[0]; - this.queryParams.endCollectTime = this.daterangeCollectTime[1]; + this.loading = true + this.queryParams.beginCollectTime = null + this.queryParams.endCollectTime = null + if (this.daterangeCollectTime != null && this.daterangeCollectTime !== '') { + this.queryParams.beginCollectTime = this.daterangeCollectTime[0] + this.queryParams.endCollectTime = this.daterangeCollectTime[1] } energyStatisticalReportList(this.queryParams).then(response => { - this.monitorWorkUnitList = response.rows; - this.total = response.total; - this.loading = false; - }); + this.monitorWorkUnitList = response.rows + this.total = response.total + this.loading = false + }) }, // 取消按钮 cancel() { - this.open = false; - this.reset(); + this.open = false + this.reset() }, // 表单重置 reset() { @@ -237,20 +253,20 @@ export default { monitorCode: null, workUnitCode: null, monitorStatus: 0, - monitorType: 1, - }; - this.resetForm("form"); + monitorType: 1 + } + this.resetForm('form') }, /** 搜索按钮操作 */ handleQuery() { - this.queryParams.pageNum = 1; - this.getList(); + this.queryParams.pageNum = 1 + this.getList() }, /** 重置按钮操作 */ resetQuery() { - this.resetForm("queryForm"); - this.queryParams.workUnitCode = null; - this.handleQuery(); + this.resetForm('queryForm') + this.queryParams.workUnitCode = null + this.handleQuery() }, // 多选框选中数据 handleSelectionChange(selection) { @@ -265,5 +281,5 @@ export default { }, `统计能耗报表_${new Date().getTime()}.xlsx`) } } -}; +} diff --git a/src/views/ems/report/peaksValleysConsumptionReport/index.vue b/src/views/ems/report/peaksValleysConsumptionReport/index.vue new file mode 100644 index 0000000..7f01560 --- /dev/null +++ b/src/views/ems/report/peaksValleysConsumptionReport/index.vue @@ -0,0 +1,266 @@ + + + diff --git a/src/views/index.vue b/src/views/index.vue index f22b1d3..a3d4cfc 100644 --- a/src/views/index.vue +++ b/src/views/index.vue @@ -1,87 +1,98 @@ - - + + diff --git a/src/views/mes/base/baseDeviceLedger/index.vue b/src/views/mes/base/baseDeviceLedger/index.vue index 40f477f..87470a3 100644 --- a/src/views/mes/base/baseDeviceLedger/index.vue +++ b/src/views/mes/base/baseDeviceLedger/index.vue @@ -9,8 +9,8 @@ - - + + - + - + @@ -131,7 +131,7 @@ - + - + - + + + diff --git a/src/views/mes/record/recordStaffSalary/index.vue b/src/views/mes/record/recordStaffSalary/index.vue new file mode 100644 index 0000000..525285a --- /dev/null +++ b/src/views/mes/record/recordStaffSalary/index.vue @@ -0,0 +1,441 @@ + + + diff --git a/src/views/mes/record/teamEmployeesWages/index.vue b/src/views/mes/record/teamEmployeesWages/index.vue new file mode 100644 index 0000000..3afe6c1 --- /dev/null +++ b/src/views/mes/record/teamEmployeesWages/index.vue @@ -0,0 +1,396 @@ + + +