Merge remote-tracking branch 'origin/main'

# Conflicts:
#	src/views/ems/report/currentVoltageCurve/index.vue
master
夜笙歌 1 year ago
commit 49f6e21189

@ -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",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 17 KiB

@ -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'
})
}

@ -42,3 +42,11 @@ export function delRecordAlarmData(objId) {
method: 'delete'
})
}
// 新增异常数据记录
export function handleExceptions(objId) {
return request({
url: '/ems/record/recordAlarmData/handleExceptions/' + objId,
method: 'post'
})
}

@ -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
})
}

@ -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
})
}

@ -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'
})
}

@ -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'
})
}

@ -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'
})
}

@ -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
})
}

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="114px" height="87px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -135 -174 )">
<path d="M 8 79 L 114 79 L 114 87 L 0 87 L 0 0 L 8 0 L 8 79 Z M 106.3740234375 7.759765625 C 106.7080078125 8.099609375 106.875 8.53385416666666 106 9.0625 L 106 33.701171875 C 106.875 34.494140625 106.51318359375 35.0511067708333 105.78955078125 35.3720703125 C 105.06591796875 35.6930338541667 104.4072265625 35.5514322916667 103.8134765625 34.947265625 L 97.078125 28.09375 L 61.8427734375 63.947265625 C 61.4716796875 64.3248697916667 61.044921875 64.513671875 60.5625 64.513671875 C 60.080078125 64.513671875 59.6533203125 64.3248697916667 59.2822265625 63.947265625 L 46.3125 50.75 L 23.15625 74.3125 L 12.46875 63.4375 L 45.0322265625 30.302734375 C 45.4033203125 29.9251302083333 45.830078125 29.736328125 46.3125 29.736328125 C 46.794921875 29.736328125 47.2216796875 29.9251302083333 47.5927734375 30.302734375 L 60.5625 43.5 L 86.390625 17.21875 L 79.6552734375 10.365234375 C 79.0615234375 9.76106770833333 78.92236328125 9.0908203125 79.23779296875 8.3544921875 C 79.55322265625 7.6181640625 80.1005859375 7.25 80.8798828125 8 L 105.09375 8 C 105.61328125 7.25 106.0400390625 7.419921875 106.3740234375 7.759765625 Z " fill-rule="nonzero" fill="#000000" stroke="none" transform="matrix(1 0 0 1 135 174 )" />
</g>
</svg>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

@ -1,26 +1,38 @@
<template>
<div class="navbar">
<hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" />
<hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container"
@toggleClick="toggleSideBar"
/>
<breadcrumb id="breadcrumb-container" class="breadcrumb-container" v-if="!topNav"/>
<top-nav id="topmenu-container" class="topmenu-container" v-if="topNav"/>
<div class="right-menu">
<template v-if="device!=='mobile'">
<search id="header-search" class="right-menu-item" />
<search id="header-search" class="right-menu-item"/>
<!-- <el-tooltip content="源码地址" effect="dark" placement="bottom">-->
<!-- <ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" />-->
<!-- </el-tooltip>-->
<!-- <el-tooltip content="源码地址" effect="dark" placement="bottom">-->
<!-- <ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" />-->
<!-- </el-tooltip>-->
<!-- <el-tooltip content="文档地址" effect="dark" placement="bottom">-->
<!-- <ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" />-->
<!-- </el-tooltip>-->
<screenfull id="screenfull" class="right-menu-item hover-effect" />
<!-- <el-tooltip content="文档地址" effect="dark" placement="bottom">-->
<!-- <ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" />-->
<!-- </el-tooltip>-->
<el-tooltip content="异常处理" class="right-menu-item hover-effect">
<span
class="exceptionHandling"
:class="{ warnTxt: alarmDataList && alarmDataList.length > 0, 'red-yellow-blink': alarmDataList && alarmDataList.length > 0 }"
@click="getAlarmData(true)"
>
<i class="el-icon-message"></i>{{
(alarmDataList && alarmDataList.length > 0 && alarmDataList.length) || ''
}}
</span>
</el-tooltip>
<screenfull id="screenfull" class="right-menu-item hover-effect"/>
<el-tooltip content="布局大小" effect="dark" placement="bottom">
<size-select id="size-select" class="right-menu-item hover-effect" />
<size-select id="size-select" class="right-menu-item hover-effect"/>
</el-tooltip>
</template>
@ -28,7 +40,7 @@
<el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
<div class="avatar-wrapper">
<img :src="avatar" class="user-avatar">
<i class="el-icon-caret-bottom" />
<i class="el-icon-caret-bottom"/>
</div>
<el-dropdown-menu slot="dropdown">
<router-link to="/user/profile">
@ -43,6 +55,62 @@
</el-dropdown-menu>
</el-dropdown>
</div>
<!-- 告警对话框 -->
<el-dialog
:title="alarmTitle"
:visible.sync="alarmOpen"
width="800px"
append-to-body
>
<el-table
v-loading="alarmLoading"
:data="alarmDataList"
@selection-change="handleSelectionChangeAlarm"
>
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="异常设备" align="center" prop="deviceName"/>
<el-table-column label="异常类型" align="center" prop="alarmType">
<template slot-scope="scope">
<dict-tag :options="dict.type.alarm_type" :value="scope.row.alarmType"/>
</template>
</el-table-column>
<el-table-column label="异常数据" align="center" prop="alarmData"/>
<el-table-column label="异常状态" align="center" prop="alarmStatus">
<template slot-scope="scope">
<dict-tag :options="dict.type.alarm_status" :value="scope.row.alarmStatus"/>
</template>
</el-table-column>
<el-table-column label="记录时间" align="center" prop="collectTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<!-- <el-table-column align="center" class-name="small-padding fixed-width" label="操作" width="100">-->
<!-- <template slot-scope="scope">-->
<!-- <el-button-->
<!-- icon="el-icon-d-arrow-right"-->
<!-- size="small"-->
<!-- type="Info"-->
<!-- @click="jumpProcessing(scope.row)"-->
<!-- >跳转-->
<!-- </el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
<pagination
v-show="alarmDataTotal > 0"
:total="alarmDataTotal"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageNum"
@pagination="getAlarmDataList"
/>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="jumpProcessing"> </el-button>
<el-button @click="alarmOpen = false"> </el-button>
</div>
</el-dialog>
</div>
</template>
@ -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(() => {
})
}
}
}
</script>
<style lang="scss" scoped>
@keyframes redYellowBlink {
0% {
color: red;
}
50% {
color: rgb(186, 186, 16);
}
100% {
color: red;
}
}
.red-yellow-blink {
animation: redYellowBlink 1s infinite;
}
.navbar {
height: 50px;
overflow: hidden;
position: relative;
background: #fff;
box-shadow: 0 1px 4px rgba(0,21,41,.08);
box-shadow: 0 1px 4px rgba(0, 21, 41, .08);
.hamburger-container {
line-height: 46px;
@ -127,7 +298,7 @@ export default {
float: left;
cursor: pointer;
transition: background .3s;
-webkit-tap-highlight-color:transparent;
-webkit-tap-highlight-color: transparent;
&:hover {
background: rgba(0, 0, 0, .025)

@ -241,7 +241,34 @@ export const dynamicRoutes = [
}
]
},
{
path: '/mes/prodOrder-detail',
component: Layout,
hidden: true,
permissions: ['mes/prod:prodOrderDetail:list'],
children: [
{
path: 'index/:orderCode',
component: () => import('@/views/mes/prod/prodOrderDetail/index'),
name: 'prodOrderDetail',
meta: { title: '订单明细', activeMenu: '/mes/prodOrderDetail' }
}
]
},
{
path: '/mes/prodPlan-erpInfo',
component: Layout,
hidden: true,
permissions: ['mes/prod:prodPlanErpInfo:list'],
children: [
{
path: 'index/:planCode',
component: () => import('@/views/mes/prod/prodPlanErpInfo/index'),
name: 'prodPlanErpInfo',
meta: { title: '生产计划', activeMenu: '/mes/prodPlanErpInfo' }
}
]
},
]
// 防止连续点击多次路由报错

@ -0,0 +1,63 @@
export function getHoursBetween(startHourStr, endHourStr) {
const startHour = new Date(startHourStr)
let endHour = new Date(endHourStr)
let nowDate = new Date()
nowDate.setHours(nowDate.getHours() - 1);
if (endHour.getTime() > nowDate.getTime()) {
endHour = nowDate
}
const hours = []
while (startHour <= endHour) {
const hourString = `${startHour.getFullYear()}-${String(startHour.getMonth() + 1).padStart(2, '0')}-${String(startHour.getDate()).padStart(2, '0')} ${String(startHour.getHours()).padStart(2, '0')}:00:00`
hours.push(hourString)
startHour.setTime(startHour.getTime() + 60 * 60 * 1000)
}
// return hours;
return hours.sort((a, b) => new Date(b) - new Date(a))
}
export function getDatesBetween(startDateStr, endDateStr) {
const startDate = new Date(startDateStr)
let endDate = new Date(endDateStr)
let nowDate = new Date()
nowDate.setHours(nowDate.getHours() - 1);
if (endDate.getTime() > nowDate.getTime()) {
endDate = nowDate
}
const dates = []
while (startDate <= endDate) {
dates.push(`${startDate.getFullYear()}-${String(startDate.getMonth() + 1).padStart(2, '0')}-${String(startDate.getDate()).padStart(2, '0')}`)
startDate.setDate(startDate.getDate() + 1)
}
// return dates;
return dates.sort((a, b) => new Date(b) - new Date(a))
}
export function getMonthsBetween(startMonthStr, endMonthStr) {
const result = []
const startDate = new Date(startMonthStr + '-01')
let endDate = new Date(endMonthStr + '-01')
const currentDate = new Date(startDate)
let nowDate = new Date()
nowDate.setHours(nowDate.getHours() - 1);
if (endDate.getTime() > nowDate.getTime()) {
endDate = nowDate
}
while (currentDate <= endDate) {
const year = currentDate.getFullYear()
const month = String(currentDate.getMonth() + 1).padStart(2, '0')
result.push(`${year}-${month}`)
currentDate.setMonth(currentDate.getMonth() + 1)
}
return result.sort((a, b) => new Date(b) - new Date(a))
}
export function getYearsBetween(startYearStr, endYearStr) {
const result = []
const startYear = Number(startYearStr.substring(0, 4))
const endYear = Number(endYearStr.substring(0, 4))
for (let i = startYear; i <= endYear; i++) {
result.push(`${i}`)
}
return result.sort((a, b) => new Date(b) - new Date(a))
}

@ -0,0 +1,36 @@
import FileSaver from "file-saver";
import XLSX from "xlsx";
/**
* 字符权限校验
* @param {Array} value 校验值
* @returns {Boolean}
* id:表ID
* name:导出表名字
*xlsxParamtrue/false:如果表格里有数字日期这些需要加上raw: true
*/
export function handleExport(id,name,xlsxParam) {
var wb = XLSX.utils.table_to_book(
document.querySelector('#'+id),
{raw: xlsxParam}
);
var wbout = XLSX.write(wb, {
bookType: "xlsx",
bookSST: true,
type: "array",
});
try {
FileSaver.saveAs(
new Blob([wbout], { type: "application/octet-stream" }),
name+".xlsx"
);
} catch (e) {
if (typeof console !== "undefined") {
console.log(e, wbout);
}
}
return wbout;
}

@ -3,52 +3,52 @@
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
<div class="card-panel" @click="handleSetLineChartData('newVisitis')">
<div class="card-panel-icon-wrapper icon-people">
<svg-icon icon-class="peoples" class-name="card-panel-icon" />
<svg-icon icon-class="list" class-name="card-panel-icon"/>
</div>
<div class="card-panel-description">
<div class="card-panel-text">
访客
计划订单数量
</div>
<count-to :start-val="0" :end-val="102400" :duration="2600" class="card-panel-num" />
<count-to :start-val="0" :end-val="topData.value1" class="card-panel-num"/>
</div>
</div>
</el-col>
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
<div class="card-panel" @click="handleSetLineChartData('messages')">
<div class="card-panel-icon-wrapper icon-message">
<svg-icon icon-class="message" class-name="card-panel-icon" />
<svg-icon icon-class="time" class-name="card-panel-icon"/>
</div>
<div class="card-panel-description">
<div class="card-panel-text">
消息
在制订单数量
</div>
<count-to :start-val="0" :end-val="81212" :duration="3000" class="card-panel-num" />
<count-to :start-val="0" :end-val="topData.value2" class="card-panel-num"/>
</div>
</div>
</el-col>
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
<div class="card-panel" @click="handleSetLineChartData('purchases')">
<div class="card-panel-icon-wrapper icon-money">
<svg-icon icon-class="money" class-name="card-panel-icon" />
<svg-icon icon-class="chart" class-name="card-panel-icon"/>
</div>
<div class="card-panel-description">
<div class="card-panel-text">
金额
今日计划米数
</div>
<count-to :start-val="0" :end-val="9280" :duration="3200" class="card-panel-num" />
<count-to :start-val="0" :end-val="topData.value3" class="card-panel-num"/>
</div>
</div>
</el-col>
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
<div class="card-panel" @click="handleSetLineChartData('shoppings')">
<div class="card-panel-icon-wrapper icon-shopping">
<svg-icon icon-class="shopping" class-name="card-panel-icon" />
<svg-icon icon-class="checkbox" class-name="card-panel-icon"/>
</div>
<div class="card-panel-description">
<div class="card-panel-text">
订单
今日完成米数
</div>
<count-to :start-val="0" :end-val="13600" :duration="3600" class="card-panel-num" />
<count-to :start-val="0" :end-val="topData.value4" class="card-panel-num"/>
</div>
</div>
</el-col>
@ -62,6 +62,23 @@ export default {
components: {
CountTo
},
props: {
topData: {
type: Object,
default:
{
value1: 10,
value2: 2,
value3: 710,
value4: 230
}
}
},
data() {
return {
topData: this.topData
}
},
methods: {
handleSetLineChartData(type) {
this.$emit('handleSetLineChartData', type)
@ -160,7 +177,7 @@ export default {
}
}
@media (max-width:550px) {
@media (max-width: 550px) {
.card-panel-description {
display: none;
}

@ -72,7 +72,7 @@
<el-table-column label="能源类型名称" align="center" prop="energyName" v-if="columns[2].visible"/>
<el-table-column label="单位" align="center" prop="measureUnit" v-if="columns[3].visible"/>
<el-table-column label="单价" align="center" prop="price" v-if="columns[4].visible"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="100">
<template slot-scope="scope">
<el-button
size="mini"
@ -82,14 +82,14 @@
v-hasPermi="['ems/base:baseEnergyType:edit']"
>修改
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['ems/base:baseEnergyType:remove']"
>删除
</el-button>
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['ems/base:baseEnergyType:remove']"-->
<!-- >删除-->
<!-- </el-button>-->
</template>
</el-table-column>
</el-table>

@ -0,0 +1,485 @@
<template>
<div class="app-container">
<el-row :gutter="28">
<el-col :span="5" :xs="24">
<div class="head-container">
<el-input
v-model="filterBoxName"
placeholder="请输入计量设备名称"
clearable
size="small"
prefix-icon="el-icon-search"
style="margin-bottom: 20px"
/>
</div>
<div class="head-container">
<el-tree
:data="monitorInfoOptions"
:props="monitorProps"
:expand-on-click-node="false"
:filter-node-method="filterNode"
ref="tree"
node-key="id"
default-expand-all
highlight-current
@node-click="handleNodeClick"
/>
</div>
</el-col>
<el-col :span="19" :xs="24">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
label-width="100px"
>
<!-- <el-form-item label="计量设备名称" prop="monitorCode">-->
<!-- <el-input-->
<!-- v-model="queryParams.monitorCode"-->
<!-- placeholder="请输入计量设备名称"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="计量设备类型" prop="monitorType">
<el-select v-model="queryParams.monitorType" placeholder="请选择计量设备类型" >
<el-option
v-for="dict in dict.type.monitor_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<!-- <el-form-item label="启用标识" prop="isFlag">-->
<!-- <el-input-->
<!-- v-model="queryParams.isFlag"-->
<!-- placeholder="请输入启用标识"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="primary"-->
<!-- plain-->
<!-- icon="el-icon-plus"-->
<!-- size="mini"-->
<!-- @click="handleAdd"-->
<!-- v-hasPermi="['ems/base:baseMonitorThreshold:add']"-->
<!-- >新增-->
<!-- </el-button>-->
<!-- </el-col>-->
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['ems/base:baseMonitorThreshold:edit']"
>修改
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['ems/base:baseMonitorThreshold:remove']"
>删除
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['ems/base:baseMonitorThreshold:export']"
>导出
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="baseMonitorThresholdList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="主键标识" align="center" prop="objId" v-if="columns[0].visible"/>
<el-table-column label="计量设备编号" align="center" prop="monitorCode" v-if="columns[23].visible" width="120"/>
<el-table-column label="计量设备名称" align="center" prop="monitorName" v-if="columns[1].visible" width="100"/>
<el-table-column label="计量设备类型" align="center" prop="monitorType" v-if="columns[2].visible" width="100">
<template slot-scope="scope">
<dict-tag :options="dict.type.monitor_type" :value="scope.row.monitorType"/>
</template>
</el-table-column>
<el-table-column label="A相电流最大值" align="center" prop="iAMax" v-if="columns[3].visible" width="110"/>
<el-table-column label="A相电流最小值" align="center" prop="iAMin" v-if="columns[4].visible" width="110"/>
<el-table-column label="B相电流最大值" align="center" prop="iBMax" v-if="columns[5].visible" width="110"/>
<el-table-column label="B相电流最小值" align="center" prop="iBMin" v-if="columns[6].visible" width="110"/>
<el-table-column label="C相电流最大值" align="center" prop="iCMax" v-if="columns[7].visible" width="110"/>
<el-table-column label="C相电流最小值" align="center" prop="iCMin" v-if="columns[8].visible" width="110"/>
<el-table-column label="A相电压最大值" align="center" prop="vAMax" v-if="columns[9].visible" width="110"/>
<el-table-column label="A相电压最小值" align="center" prop="vAMin" v-if="columns[10].visible" width="110"/>
<el-table-column label="B相电压最大值" align="center" prop="vBMax" v-if="columns[11].visible" width="110"/>
<el-table-column label="B相电压最小值" align="center" prop="vBMin" v-if="columns[12].visible" width="110"/>
<el-table-column label="C相电压最大值" align="center" prop="vCMax" v-if="columns[13].visible" width="110"/>
<el-table-column label="C相电压最小值" align="center" prop="vCMin" v-if="columns[14].visible" width="110"/>
<el-table-column label="小时耗量" align="center" prop="hourConsumption" v-if="columns[15].visible"/>
<el-table-column label="天耗量" align="center" prop="dayConsumption" v-if="columns[16].visible"/>
<el-table-column label="线损率(%)" align="center" prop="lineLossRate" v-if="columns[17].visible" width="100"/>
<el-table-column label="启用标识" align="center" prop="isFlag" v-if="columns[18].visible"/>
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="100">-->
<!-- <template slot-scope="scope">-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-edit"-->
<!-- @click="handleUpdate(scope.row)"-->
<!-- v-hasPermi="['ems/base:baseMonitorThreshold:edit']"-->
<!-- >修改-->
<!-- </el-button>-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['ems/base:baseMonitorThreshold:remove']"-->
<!-- >删除-->
<!-- </el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
</el-col>
</el-row>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改计量设备阈值维护对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="110px">
<el-form-item label="计量设备名称" prop="monitorName">
<el-input v-model="form.monitorName" placeholder="请输入计量设备名称" disabled/>
</el-form-item>
<el-form-item label="计量设备类型" prop="monitorType" >
<el-radio-group v-model="form.monitorType" disabled>
<el-radio
v-for="dict in dict.type.monitor_type"
:key="dict.value"
:label="parseInt(dict.value)"
>{{ dict.label }}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="A相电流最大值" prop="iAMax">
<el-input-number v-model="form.iAMax" placeholder="请输入A相电流最大值"/>
</el-form-item>
<el-form-item label="A相电流最小值" prop="iAMin">
<el-input-number v-model="form.iAMin" placeholder="请输入A相电流最小值"/>
</el-form-item>
<el-form-item label="B相电流最大值" prop="iBMax">
<el-input-number v-model="form.iBMax" placeholder="请输入B相电流最大值"/>
</el-form-item>
<el-form-item label="B相电流最小值" prop="iBMin">
<el-input-number v-model="form.iBMin" placeholder="请输入B相电流最小值"/>
</el-form-item>
<el-form-item label="C相电流最大值" prop="iCMax">
<el-input-number v-model="form.iCMax" placeholder="请输入C相电流最大值"/>
</el-form-item>
<el-form-item label="C相电流最小值" prop="iCMin">
<el-input-number v-model="form.iCMin" placeholder="请输入C相电流最小值"/>
</el-form-item>
<el-form-item label="A相电压最大值" prop="vAMax">
<el-input-number v-model="form.vAMax" placeholder="请输入A相电压最大值"/>
</el-form-item>
<el-form-item label="A相电压最小值" prop="vAMin">
<el-input-number v-model="form.vAMin" placeholder="请输入A相电压最小值"/>
</el-form-item>
<el-form-item label="B相电压最大值" prop="vBMax">
<el-input-number v-model="form.vBMax" placeholder="请输入B相电压最大值"/>
</el-form-item>
<el-form-item label="B相电压最小值" prop="vBMin">
<el-input-number v-model="form.vBMin" placeholder="请输入B相电压最小值"/>
</el-form-item>
<el-form-item label="C相电压最大值" prop="vCMax">
<el-input-number v-model="form.vCMax" placeholder="请输入C相电压最大值"/>
</el-form-item>
<el-form-item label="C相电压最小值" prop="vCMin">
<el-input-number v-model="form.vCMin" placeholder="请输入C相电压最小值"/>
</el-form-item>
<el-form-item label="小时耗量" prop="hourConsumption">
<el-input-number v-model="form.hourConsumption" placeholder="请输入小时耗量"/>
</el-form-item>
<el-form-item label="天耗量" prop="dayConsumption">
<el-input-number v-model="form.dayConsumption" placeholder="请输入天耗量"/>
</el-form-item>
<el-form-item label="线损率(%)" prop="lineLossRate">
<el-input-number v-model="form.lineLossRate" placeholder="请输入线损率(%)"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listBaseMonitorThreshold,
getBaseMonitorThreshold,
delBaseMonitorThreshold,
addBaseMonitorThreshold,
updateBaseMonitorThreshold
} from '@/api/ems/base/baseMonitorThreshold'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import { getMonitorInfoTree } from '@/api/ems/base/baseMonitorInfo'
export default {
name: 'BaseMonitorThreshold',
dicts: ['monitor_type'],
data() {
return {
//List
monitorInfoOptions: [],
//
filterBoxName: undefined,
monitorProps: {
children: 'children',
label: 'label'
},
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
baseMonitorThresholdList: [],
//
title: '',
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
monitorCode: null,
monitorType: '2',
iAMax: null,
iAMin: null,
iBMax: null,
iBMin: null,
iCMax: null,
iCMin: null,
vAMax: null,
vAMin: null,
vBMax: null,
vBMin: null,
vCMax: null,
vCMin: null,
hourConsumption: null,
dayConsumption: null,
lineLossRate: null,
isFlag: null
},
//
form: {},
//
rules: {
objId: [
{ required: true, message: '主键标识不能为空', trigger: 'blur' }
],
monitorCode: [
{ required: true, message: '计量设备名称不能为空', trigger: 'blur' }
]
},
columns: [
{ key: 0, label: `主键标识`, visible: false },
{ key: 1, label: `计量设备名称`, visible: true },
{ key: 2, label: `计量设备类型`, visible: true },
{ key: 3, label: `A相电流最大值`, visible: true },
{ key: 4, label: `A相电流最小值`, visible: true },
{ key: 5, label: `B相电流最大值`, visible: true },
{ key: 6, label: `B相电流最小值`, visible: true },
{ key: 7, label: `C相电流最大值`, visible: true },
{ key: 8, label: `C相电流最小值`, visible: true },
{ key: 9, label: `A相电压最大值`, visible: true },
{ key: 10, label: `A相电压最小值`, visible: true },
{ key: 11, label: `B相电压最大值`, visible: true },
{ key: 12, label: `B相电压最小值`, visible: true },
{ key: 13, label: `C相电压最大值`, visible: true },
{ key: 14, label: `C相电压最小值`, visible: true },
{ key: 15, label: `小时耗量`, visible: true },
{ key: 16, label: `天耗量`, visible: true },
{ key: 17, label: `线损率(%)`, visible: true },
{ key: 18, label: `启用标识`, visible: false },
{ key: 19, label: `创建人`, visible: false },
{ key: 20, label: `创建时间`, visible: false },
{ key: 21, label: `修改人`, visible: false },
{ key: 22, label: `修改时间`, visible: false },
{ key: 23, label: `计量设备编号`, visible: true },
]
}
},
created() {
this.getTreeselect()
this.getList()
},
methods: {
/** 查询计量设备阈值维护列表 */
getList() {
this.loading = true
listBaseMonitorThreshold(this.queryParams).then(response => {
this.baseMonitorThresholdList = response.rows
this.total = response.total
this.loading = false
})
},
//
cancel() {
this.open = false
this.reset()
},
//
reset() {
this.form = {
objId: null,
monitorCode: null,
monitorType: null,
iAMax: null,
iAMin: null,
iBMax: null,
iBMin: null,
iCMax: null,
iCMin: null,
vAMax: null,
vAMin: null,
vBMax: null,
vBMin: null,
vCMax: null,
vCMin: null,
hourConsumption: null,
dayConsumption: null,
lineLossRate: null,
isFlag: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null
}
this.resetForm('form')
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm('queryForm')
this.handleQuery()
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.objId)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 查询计量设备信息下拉树结构 */
getTreeselect() {
getMonitorInfoTree({ monitorType: this.queryParams.monitorType }).then(response => {
this.monitorInfoOptions = response.data
})
},
//
filterNode(value, data) {
if (!value) return true
return data.label.indexOf(value) !== -1
},
//
handleNodeClick(data) {
this.queryParams.monitorCode = data.code
this.handleQuery()
},
/** 新增按钮操作 */
handleAdd() {
this.reset()
this.open = true
this.title = '添加计量设备阈值维护'
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset()
const objId = row.objId || this.ids
getBaseMonitorThreshold(objId).then(response => {
this.form = response.data
this.open = true
this.title = '修改计量设备阈值维护'
})
},
/** 提交按钮 */
submitForm() {
this.$refs['form'].validate(valid => {
if (valid) {
if (this.form.objId != null) {
updateBaseMonitorThreshold(this.form).then(response => {
this.$modal.msgSuccess('修改成功')
this.open = false
this.getList()
})
} else {
addBaseMonitorThreshold(this.form).then(response => {
this.$modal.msgSuccess('新增成功')
this.open = false
this.getList()
})
}
}
})
},
/** 删除按钮操作 */
handleDelete(row) {
const objIds = row.objId || this.ids
this.$modal.confirm('是否确认删除计量设备阈值维护编号为"' + objIds + '"的数据项?').then(function() {
return delBaseMonitorThreshold(objIds)
}).then(() => {
this.getList()
this.$modal.msgSuccess('删除成功')
}).catch(() => {
})
},
/** 导出按钮操作 */
handleExport() {
this.download('ems/base/baseMonitorThreshold/export', {
...this.queryParams
}, `baseMonitorThreshold_${new Date().getTime()}.xlsx`)
}
}
}
</script>

@ -253,16 +253,16 @@
<!-- <el-form-item label="备注" prop="remark">-->
<!-- <el-input v-model="form.remark" placeholder="请输入备注"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="启用标识" prop="isFlag">-->
<!-- <el-radio-group v-model="form.isFlag">-->
<!-- <el-radio-->
<!-- v-for="dict in dict.type.is_flag"-->
<!-- :key="dict.value"-->
<!-- :label="dict.value"-->
<!-- >{{ dict.label }}-->
<!-- </el-radio>-->
<!-- </el-radio-group>-->
<!-- </el-form-item>-->
<el-form-item label="启用标识" prop="isFlag">
<el-radio-group v-model="form.isFlag">
<el-radio
v-for="dict in dict.type.is_flag"
:key="dict.value"
:label="dict.value"
>{{ dict.label }}
</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
@ -351,12 +351,12 @@ export default {
{ key: 0, label: `主键标识`, visible: false },
{ key: 1, label: `计量设备编号`, visible: true },
{ key: 2, label: `统计单元编号`, visible: true },
{ key: 3, label: `计量设备状态`, visible: true },
{ key: 3, label: `计量设备状态`, visible: false },
{ key: 4, label: `计量设备类型`, visible: true },
{ key: 5, label: `计算方式`, visible: true },
{ key: 6, label: `比率`, visible: true },
{ key: 7, label: `备注`, visible: false },
{ key: 8, label: `启用标识`, visible: false },
{ key: 8, label: `启用标识`, visible: true },
{ key: 9, label: `创建人`, visible: false },
{ key: 10, label: `创建时间`, visible: false },
{ key: 11, label: `修改人`, visible: false },
@ -403,7 +403,7 @@ export default {
monitorCode: null,
workUnitCode: null,
monitorStatus: null,
monitorType: null,
monitorType: this.queryParams.monitorType,
formulaMode: 0,
proportion: 1,
remark: null,

@ -84,8 +84,8 @@
<dict-tag :options="dict.type.price_type" :value="scope.row.priceType"/>
</template>
</el-table-column>
<el-table-column label="用电起始小时" align="center" prop="startHour" v-if="columns[3].visible"/>
<el-table-column label="用电结束小时" align="center" prop="endHour" v-if="columns[4].visible"/>
<el-table-column label="用电起始小时" align="center" prop="startHour" v-if="columns[3].visible"/>
<el-table-column label="用电结束小时" align="center" prop="endHour" v-if="columns[4].visible"/>
<el-table-column label="电单价" align="center" prop="dnbPrice" v-if="columns[5].visible"/>
<el-table-column label="备注" align="center" prop="remark" v-if="columns[6].visible"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="100">
@ -134,11 +134,27 @@
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="用电起始小时数" prop="startHour">
<el-input-number v-model="form.startHour" placeholder="请输入用电起始小时数"/>
<el-form-item label="用电起始小时" prop="startHour">
<el-time-picker
v-model="form.startHour"
clearable
placeholder="请选择用电起始小时"
format="HH:mm:ss"
value-format="HH:mm:ss"
:picker-options="{selectableRange: '00:00:00 - 23:59:59'}"
>
</el-time-picker>
</el-form-item>
<el-form-item label="用电结束小时数" prop="endHour">
<el-input-number v-model="form.endHour" placeholder="请输入用电结束小时数"/>
<el-form-item label="用电结束小时" prop="endHour">
<el-time-picker
v-model="form.endHour"
clearable
placeholder="请选择用电结束小时"
format="HH:mm:ss"
value-format="HH:mm:ss"
:picker-options="{selectableRange: '00:00:00 - 23:59:59'}"
>
</el-time-picker>
</el-form-item>
<el-form-item label="电单价" prop="dnbPrice">
<el-input-number v-model="form.dnbPrice" placeholder="请输入电单价"/>
@ -212,8 +228,8 @@ export default {
{ key: 0, label: `自增标识`, visible: false },
{ key: 1, label: `记录月份`, visible: true },
{ key: 2, label: `分时电价类型`, visible: true },
{ key: 3, label: `用电起始小时`, visible: true },
{ key: 4, label: `用电结束小时`, visible: true },
{ key: 3, label: `用电起始小时`, visible: true },
{ key: 4, label: `用电结束小时`, visible: true },
{ key: 5, label: `电单价`, visible: true },
{ key: 6, label: `备注`, visible: true }
]

@ -62,41 +62,41 @@
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['ems/record:recordAlarmData:add']"
>新增
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['ems/record:recordAlarmData:edit']"
>修改
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['ems/record:recordAlarmData:remove']"
>删除
</el-button>
</el-col>
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="primary"-->
<!-- plain-->
<!-- icon="el-icon-plus"-->
<!-- size="mini"-->
<!-- @click="handleAdd"-->
<!-- v-hasPermi="['ems/record:recordAlarmData:add']"-->
<!-- >新增-->
<!-- </el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="success"-->
<!-- plain-->
<!-- icon="el-icon-edit"-->
<!-- size="mini"-->
<!-- :disabled="single"-->
<!-- @click="handleUpdate"-->
<!-- v-hasPermi="['ems/record:recordAlarmData:edit']"-->
<!-- >修改-->
<!-- </el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="danger"-->
<!-- plain-->
<!-- icon="el-icon-delete"-->
<!-- size="mini"-->
<!-- :disabled="multiple"-->
<!-- @click="handleDelete"-->
<!-- v-hasPermi="['ems/record:recordAlarmData:remove']"-->
<!-- >删除-->
<!-- </el-button>-->
<!-- </el-col>-->
<el-col :span="1.5">
<el-button
type="warning"
@ -114,8 +114,8 @@
<el-table v-loading="loading" :data="recordAlarmDataList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="自增标识" align="center" prop="objId" v-if="columns[0].visible"/>
<el-table-column label="计量设备编号" align="center" prop="monitorId" v-if="columns[1].visible"/>
<el-table-column label="采集设备编号" align="center" prop="collectDeviceId" v-if="columns[2].visible"/>
<el-table-column label="计量设备名称" align="center" prop="monitorName" v-if="columns[1].visible"/>
<el-table-column label="采集设备名称" align="center" prop="collectDeviceName" v-if="columns[2].visible"/>
<el-table-column label="记录时间" align="center" prop="collectTime" width="180" v-if="columns[3].visible">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.collectTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
@ -150,14 +150,14 @@
v-hasPermi="['ems/record:recordAlarmData:edit']"
>修改
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['ems/record:recordAlarmData:remove']"
>删除
</el-button>
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['ems/record:recordAlarmData:remove']"-->
<!-- >删除-->
<!-- </el-button>-->
</template>
</el-table-column>
</el-table>
@ -182,8 +182,8 @@
<el-form-item label="记录时间" prop="collectTime">
<el-date-picker clearable
v-model="form.collectTime"
type="date"
value-format="yyyy-MM-dd"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择记录时间"
>
</el-date-picker>
@ -211,24 +211,24 @@
<el-form-item label="异常数据" prop="alarmData">
<el-input v-model="form.alarmData" placeholder="请输入异常数据"/>
</el-form-item>
<el-form-item label="操作人员" prop="operationName">
<el-input v-model="form.operationName" placeholder="请输入操作人员"/>
</el-form-item>
<el-form-item label="操作时间" prop="operationTime">
<el-date-picker clearable
v-model="form.operationTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择操作时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="备注" prop="cause">
<el-input v-model="form.cause" placeholder="请输入备注"/>
</el-form-item>
<el-form-item label="通知用户" prop="notifyUser">
<el-input v-model="form.notifyUser" placeholder="请输入通知用户"/>
</el-form-item>
<!-- <el-form-item label="操作人员" prop="operationName">-->
<!-- <el-input v-model="form.operationName" placeholder="请输入操作人员"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="操作时间" prop="operationTime">-->
<!-- <el-date-picker clearable-->
<!-- v-model="form.operationTime"-->
<!-- type="date"-->
<!-- value-format="yyyy-MM-dd"-->
<!-- placeholder="请选择操作时间"-->
<!-- >-->
<!-- </el-date-picker>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="备注" prop="cause">-->
<!-- <el-input v-model="form.cause" placeholder="请输入备注"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="通知用户" prop="notifyUser">-->
<!-- <el-input v-model="form.notifyUser" placeholder="请输入通知用户"/>-->
<!-- </el-form-item>-->
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
@ -277,7 +277,7 @@ export default {
monitorId: null,
collectDeviceId: null,
collectTime: null,
alarmType: null,
alarmType: '1',
alarmStatus: null,
alarmData: null,
operationName: null,

@ -34,41 +34,41 @@
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['ems/record:recordAlarmRule:add']"
>新增
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['ems/record:recordAlarmRule:edit']"
>修改
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['ems/record:recordAlarmRule:remove']"
>删除
</el-button>
</el-col>
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="primary"-->
<!-- plain-->
<!-- icon="el-icon-plus"-->
<!-- size="mini"-->
<!-- @click="handleAdd"-->
<!-- v-hasPermi="['ems/record:recordAlarmRule:add']"-->
<!-- >新增-->
<!-- </el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="success"-->
<!-- plain-->
<!-- icon="el-icon-edit"-->
<!-- size="mini"-->
<!-- :disabled="single"-->
<!-- @click="handleUpdate"-->
<!-- v-hasPermi="['ems/record:recordAlarmRule:edit']"-->
<!-- >修改-->
<!-- </el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="danger"-->
<!-- plain-->
<!-- icon="el-icon-delete"-->
<!-- size="mini"-->
<!-- :disabled="multiple"-->
<!-- @click="handleDelete"-->
<!-- v-hasPermi="['ems/record:recordAlarmRule:remove']"-->
<!-- >删除-->
<!-- </el-button>-->
<!-- </el-col>-->
<el-col :span="1.5">
<el-button
type="warning"
@ -102,7 +102,7 @@
</el-table-column>
<el-table-column label="触发阈值次数" align="center" prop="triggerNumber" v-if="columns[7].visible"/>
<el-table-column label="时间范围(分)" align="center" prop="timeRange" v-if="columns[8].visible"/>
<el-table-column label="设备离线时间(分)" align="center" prop="deviceOfflineTime" v-if="columns[9].visible"/>
<el-table-column label="设备离线时间(分)" align="center" prop="deviceOfflineTime" v-if="columns[9].visible"/>
<el-table-column label="通知用户" align="center" prop="notifyUser" v-if="columns[10].visible"/>
<el-table-column label="备注" align="center" prop="cause" v-if="columns[11].visible"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="100">
@ -115,14 +115,14 @@
v-hasPermi="['ems/record:recordAlarmRule:edit']"
>修改
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['ems/record:recordAlarmRule:remove']"
>删除
</el-button>
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['ems/record:recordAlarmRule:remove']"-->
<!-- >删除-->
<!-- </el-button>-->
</template>
</el-table-column>
</el-table>
@ -137,30 +137,30 @@
<!-- 添加或修改异常告警规则对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form ref="form" :model="form" :rules="rules" label-width="150px">
<el-form-item label="规则编号" prop="ruleId">
<el-input v-model="form.ruleId" placeholder="请输入规则编号"/>
<el-input v-model="form.ruleId" placeholder="请输入规则编号" disabled/>
</el-form-item>
<el-form-item label="规则名称" prop="ruleName">
<el-input v-model="form.ruleName" placeholder="请输入规则名称"/>
</el-form-item>
<el-form-item label="计量设备编号" prop="monitorId">
<el-input v-model="form.monitorId" placeholder="请输入计量设备编号"/>
</el-form-item>
<el-form-item label="记录时间" prop="collectTime">
<el-date-picker clearable
v-model="form.collectTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择记录时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="能源类型" prop="energyType">
<el-input v-model="form.energyType" placeholder="请输入能源类型"/>
</el-form-item>
<!-- <el-form-item label="计量设备编号" prop="monitorId">-->
<!-- <el-input v-model="form.monitorId" placeholder="请输入计量设备编号"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="记录时间" prop="collectTime">-->
<!-- <el-date-picker clearable-->
<!-- v-model="form.collectTime"-->
<!-- type="date"-->
<!-- value-format="yyyy-MM-dd"-->
<!-- placeholder="请选择记录时间"-->
<!-- >-->
<!-- </el-date-picker>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="能源类型" prop="energyType">-->
<!-- <el-input v-model="form.energyType" placeholder="请输入能源类型"/>-->
<!-- </el-form-item>-->
<el-form-item label="触发规则" prop="triggerRule">
<el-radio-group v-model="form.triggerRule">
<el-radio-group v-model="form.triggerRule" disabled>
<el-radio
v-for="dict in dict.type.trigger_rule"
:key="dict.value"
@ -169,18 +169,18 @@
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="触发阈值次数" prop="triggerNumber">
<el-input v-model="form.triggerNumber" placeholder="请输入触发阈值次数"/>
</el-form-item>
<el-form-item label="时间范围(分)" prop="timeRange">
<el-input v-model="form.timeRange" placeholder="请输入时间范围(分)"/>
</el-form-item>
<el-form-item label="设备离线时间(分)" prop="deviceOfflineTime">
<el-input v-model="form.deviceOfflineTime" placeholder="请输入设备离线时间(分)"/>
</el-form-item>
<el-form-item label="通知用户" prop="notifyUser">
<el-input v-model="form.notifyUser" placeholder="请输入通知用户"/>
<!-- <el-form-item label="触发阈值次数" prop="triggerNumber">-->
<!-- <el-input v-model="form.triggerNumber" placeholder="请输入触发阈值次数"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="时间范围(分)" prop="timeRange">-->
<!-- <el-input v-model="form.timeRange" placeholder="请输入时间范围(分)"/>-->
<!-- </el-form-item>-->
<el-form-item label="设备离线时间(分钟)" prop="deviceOfflineTime">
<el-input-number v-model="form.deviceOfflineTime" placeholder="请输入设备离线时间(分钟)"/>
</el-form-item>
<!-- <el-form-item label="通知用户" prop="notifyUser">-->
<!-- <el-input v-model="form.notifyUser" placeholder="请输入通知用户"/>-->
<!-- </el-form-item>-->
<el-form-item label="备注" prop="cause">
<el-input v-model="form.cause" placeholder="请输入备注"/>
</el-form-item>
@ -253,13 +253,13 @@ export default {
{ key: 0, label: `自增标识`, visible: false },
{ key: 1, label: `规则编号`, visible: true },
{ key: 2, label: `规则名称`, visible: true },
{ key: 3, label: `计量设备编号`, visible: true },
{ key: 4, label: `记录时间`, visible: true },
{ key: 5, label: `能源类型`, visible: true },
{ key: 3, label: `计量设备编号`, visible: false },
{ key: 4, label: `记录时间`, visible: false },
{ key: 5, label: `能源类型`, visible: false },
{ key: 6, label: `触发规则`, visible: true },
{ key: 7, label: `触发阈值次数`, visible: true },
{ key: 8, label: `时间范围(分)`, visible: true },
{ key: 9, label: `设备离线时间(分)`, visible: true },
{ key: 7, label: `触发阈值次数`, visible: false },
{ key: 8, label: `时间范围(分)`, visible: false },
{ key: 9, label: `设备离线时间(分)`, visible: true },
{ key: 10, label: `通知用户`, visible: false },
{ key: 11, label: `备注`, visible: true },
{ key: 12, label: `创建人`, visible: false },

@ -54,89 +54,27 @@
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<!-- <el-row :gutter="10" class="mb8">-->
<!-- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>-->
<!-- </el-row>-->
<!-- <el-table v-loading="loading" :data="dataList" @selection-change="handleSelectionChange">-->
<!-- <el-table-column type="selection" width="55" align="center"/>-->
<!-- <el-table-column label="编号" align="center" prop="objId" v-if="columns[0].visible"/>-->
<!-- <el-table-column label="计量设备编号" align="center" prop="monitorCode" v-if="columns[1].visible" width="100"/>-->
<!-- <el-table-column label="计量设备名称" align="center" prop="monitorName" v-if="columns[15].visible" width="120"/>-->
<!-- <el-table-column label="采集时间" align="center" prop="collectTime" width="180" v-if="columns[2].visible">-->
<!-- <template slot-scope="scope">-->
<!-- <span>{{ parseTime(scope.row.collectTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="A项电压" align="center" prop="va" v-if="columns[3].visible"/>-->
<!-- <el-table-column label="B项电压" align="center" prop="vb" v-if="columns[4].visible"/>-->
<!-- <el-table-column label="C项电压" align="center" prop="vc" v-if="columns[5].visible"/>-->
<!-- <el-table-column label="A项电流" align="center" prop="ia" v-if="columns[6].visible"/>-->
<!-- <el-table-column label="B项电流" align="center" prop="ib" v-if="columns[7].visible"/>-->
<!-- <el-table-column label="C项电流" align="center" prop="ic" v-if="columns[8].visible"/>-->
<!-- <el-table-column label="功率因数" align="center" prop="glys" v-if="columns[10].visible"/>-->
<!-- <el-table-column label="正向有功" align="center" prop="zxyg" v-if="columns[11].visible"/>-->
<!-- <el-table-column label="有功功率" align="center" prop="activePower" v-if="columns[12].visible"/>-->
<!-- <el-table-column label="无功功率" align="center" prop="reactivePower" v-if="columns[13].visible"/>-->
<!-- <el-table-column label="记录时间" align="center" prop="recordTime" width="180" v-if="columns[9].visible">-->
<!-- <template slot-scope="scope">-->
<!-- <span>{{ parseTime(scope.row.recordTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="采集方式" align="center" prop="collectType" v-if="columns[14].visible">-->
<!-- <template slot-scope="scope">-->
<!-- <dict-tag :options="dict.type.collect_type" :value="scope.row.collectType"/>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- &lt;!&ndash; <el-table-column label="操作" align="center" class-name="small-padding fixed-width">&ndash;&gt;-->
<!-- &lt;!&ndash; <template slot-scope="scope">&ndash;&gt;-->
<!-- &lt;!&ndash; <el-button&ndash;&gt;-->
<!-- &lt;!&ndash; size="mini"&ndash;&gt;-->
<!-- &lt;!&ndash; type="text"&ndash;&gt;-->
<!-- &lt;!&ndash; icon="el-icon-edit"&ndash;&gt;-->
<!-- &lt;!&ndash; @click="handleUpdate(scope.row)"&ndash;&gt;-->
<!-- &lt;!&ndash; v-hasPermi="['ems/record:recordDnbInstant:edit']"&ndash;&gt;-->
<!-- &lt;!&ndash; >修改&ndash;&gt;-->
<!-- &lt;!&ndash; </el-button>&ndash;&gt;-->
<!-- &lt;!&ndash; <el-button&ndash;&gt;-->
<!-- &lt;!&ndash; size="mini"&ndash;&gt;-->
<!-- &lt;!&ndash; type="text"&ndash;&gt;-->
<!-- &lt;!&ndash; icon="el-icon-delete"&ndash;&gt;-->
<!-- &lt;!&ndash; @click="handleDelete(scope.row)"&ndash;&gt;-->
<!-- &lt;!&ndash; v-hasPermi="['ems/record:recordDnbInstant:remove']"&ndash;&gt;-->
<!-- &lt;!&ndash; >删除&ndash;&gt;-->
<!-- &lt;!&ndash; </el-button>&ndash;&gt;-->
<!-- &lt;!&ndash; </template>&ndash;&gt;-->
<!-- &lt;!&ndash; </el-table-column>&ndash;&gt;-->
<!-- </el-table>-->
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<Chart ref="Chart1" class="chart1"/>
<Chart ref="Chart2" class="chart2"/>
</el-col>
</el-row>
</div>
</template>
<script>
import {
listRecordDnbInstant,
getRecordDnbInstant, dnbInstantList,
getRecordDnbInstant, dnbInstantList
} from '@/api/ems/record/recordDnbInstant'
import {getMonitorInfoTree} from '@/api/ems/base/baseMonitorInfo'
import { getMonitorInfoTree } from '@/api/ems/base/baseMonitorInfo'
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import {parseTime} from '@/utils/ruoyi'
import Chart from "@/components/Charts/Chart";
import * as echarts from 'echarts';
import { parseTime } from '@/utils/ruoyi'
import Chart from '@/components/Charts/Chart'
import * as echarts from 'echarts'
export default {
name: 'CurrentVoltageCurve',
@ -152,6 +90,8 @@ export default {
//List
monitorInfoOptions: [],
workUnitName: undefined,
//
selectMonitorName: null,
//
baseMonitorInfoList: [],
//
@ -176,16 +116,8 @@ export default {
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
monitorCode: null,
collectTime: null,
va: null,
vb: null,
vc: null,
ia: null,
ib: null,
ic: null,
recordTime: null,
glys: null,
zxyg: null,
@ -202,26 +134,26 @@ export default {
//
rules: {
objId: [
{required: true, message: '编号不能为空', trigger: 'blur'}
{ required: true, message: '编号不能为空', trigger: 'blur' }
]
},
columns: [
{key: 0, label: `主键标识`, visible: false},
{key: 1, label: `计量设备编号`, visible: true},
{key: 2, label: `采集时间`, visible: true},
{key: 3, label: `A项电压`, visible: true},
{key: 4, label: `B项电压`, visible: true},
{key: 5, label: `C项电压`, visible: true},
{key: 6, label: `A项电流`, visible: true},
{key: 7, label: `B项电流`, visible: true},
{key: 8, label: `C项电流`, visible: true},
{key: 9, label: `记录时间`, visible: true},
{key: 10, label: `功率因数`, visible: true},
{key: 11, label: `正向有功`, visible: true},
{key: 12, label: `有功功率`, visible: false},
{key: 13, label: `无功功率`, visible: false},
{key: 14, label: `采集方式`, visible: true},
{key: 15, label: `计量设备名称`, visible: true}
{ key: 0, label: `主键标识`, visible: false },
{ key: 1, label: `计量设备编号`, visible: true },
{ key: 2, label: `采集时间`, visible: true },
{ key: 3, label: `A项电压`, visible: true },
{ key: 4, label: `B项电压`, visible: true },
{ key: 5, label: `C项电压`, visible: true },
{ key: 6, label: `A项电流`, visible: true },
{ key: 7, label: `B项电流`, visible: true },
{ key: 8, label: `C项电流`, visible: true },
{ key: 9, label: `记录时间`, visible: true },
{ key: 10, label: `功率因数`, visible: true },
{ key: 11, label: `正向有功`, visible: true },
{ key: 12, label: `有功功率`, visible: false },
{ key: 13, label: `无功功率`, visible: false },
{ key: 14, label: `采集方式`, visible: true },
{ key: 15, label: `计量设备名称`, visible: true }
]
}
},
@ -258,18 +190,16 @@ export default {
this.queryParams.params['beginCollectTime'] = this.daterangeCollectTime[0]
this.queryParams.params['endCollectTime'] = this.daterangeCollectTime[1]
}
listRecordDnbInstant(this.queryParams).then(response => {
this.dataList = response.rows
this.total = response.total
this.loading = false
})
console.log(this.monitorInfoOptions)
this.getChart()
},
//
cancel() {
this.open = false
this.reset()
},
//
reset() {
this.form = {
@ -281,39 +211,19 @@ export default {
}
this.resetForm('form')
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams.monitorCode = null
this.resetForm('queryForm')
this.handleQuery()
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.objId)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset()
this.open = true
this.title = '添加电实时数据'
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset()
const objId = row.objId || this.ids
getRecordDnbInstant(objId).then(response => {
this.form = response.data
this.open = true
this.title = '修改电实时数据'
})
},
/** 导出按钮操作 */
handleExport() {
this.download('ems/record/recordDnbInstant/export', {
@ -323,103 +233,106 @@ export default {
/** 查询计量设备信息下拉树结构 */
getTreeselect() {
getMonitorInfoTree({monitorType: 2}).then(response => {
getMonitorInfoTree({ monitorType: 2 }).then(response => {
this.monitorInfoOptions = response.data
})
},
//
/** 筛选节点 */
filterNode(value, data) {
if (!value) return true
return data.label.indexOf(value) !== -1
},
//
/** 节点单击事件 */
handleNodeClick(data) {
this.queryParams.monitorCode = data.code
this.selectMonitorName = data.label
this.handleQuery()
},
async getChart(){
/** 电流电压曲线 */
async getChart() {
if (this.queryParams.monitorCode == null) {
return
}
let query = JSON.parse(JSON.stringify(this.queryParams))
delete query.pageNum
delete query.pageSize
const {data} = await dnbInstantList(query)
const { data } = await dnbInstantList(query)
let option1 = {
title:{
text:'电流曲线',
x:'center'
title: {
text: this.selectMonitorName + ' 电流曲线',
x: 'center'
},
grid: {
top: "15%",
bottom: "10%",
left:'3%',
right:'3%'
top: '15%',
bottom: '10%',
left: '3%',
right: '3%'
},
tooltip: {
trigger: "axis",
trigger: 'axis',
axisPointer: {
type: "shadow",
type: 'shadow',
label: {
show: true,
},
},
show: true
}
}
},
dataZoom:[{
type:'slider'
dataZoom: [{
type: 'slider'
}],
legend: {
right:0
right: 0
},
xAxis: {
data: data.map(e=>e.collectTime),
data: data.map(e => e.collectTime),
axisLine: {
show: true, //X线
lineStyle: {
color: "#000",
},
color: '#000'
}
},
axisTick: {
show: true, //X
show: true //X
},
axisLabel: {
show: true,
textStyle: {
color: "#000", //X
},
},
color: '#000' //X
}
}
},
yAxis: [
{
type: "value",
name: "电流A",
type: 'value',
name: '电流A',
nameTextStyle: {
color: "#000",
color: '#000'
},
splitLine: {
show: false,
show: false
},
axisTick: {
show: true,
show: true
},
axisLine: {
show: true,
lineStyle: {
color: "#000",
},
color: '#000'
}
},
axisLabel: {
show: true,
textStyle: {
color: "#000",
},
},
},
color: '#000'
}
}
}
],
series: [
{
name: "A相电流",
type: "line",
name: 'A相电流',
type: 'line',
smooth: true, //线
showAllSymbol: true, //
symbol: "emptyCircle", //
@ -434,11 +347,11 @@ export default {
// areaStyle: {
// color: "rgba(5,140,255, 0.2)",
// },
data: data.map(e=>e.ia),
data: data.map(e => e.ia)
},
{
name: "B相电流",
type: "line",
name: 'B相电流',
type: 'line',
smooth: true, //线
showAllSymbol: true, //
symbol: "emptyCircle", //
@ -453,11 +366,11 @@ export default {
// areaStyle: {
// color: "rgba(5,140,255, 0.2)",
// },
data: data.map(e=>e.ib),
data: data.map(e => e.ib)
},
{
name: "C相电流",
type: "line",
name: 'C相电流',
type: 'line',
smooth: true, //线
showAllSymbol: true, //
symbol: "emptyCircle", //
@ -471,86 +384,86 @@ export default {
// areaStyle: {
// color: "rgba(5,140,255, 0.2)",
// },
data: data.map(e=>e.ic),
},
],
data: data.map(e => e.ic)
}
]
}
let option2 = {
title:{
text:'电压曲线',
x:'center'
title: {
text: this.selectMonitorName + ' 电压曲线',
x: 'center'
},
grid: {
top: "15%",
bottom: "10%",
left:'3%',
right:'3%'
top: '15%',
bottom: '10%',
left: '3%',
right: '3%'
},
dataZoom:[{
type:'slider'
dataZoom: [{
type: 'slider'
}],
tooltip: {
trigger: "axis",
trigger: 'axis',
axisPointer: {
type: "shadow",
type: 'shadow',
label: {
show: true,
},
},
show: true
}
}
},
legend: {
right:0
right: 0
},
xAxis: {
data: data.map(e=>e.collectTime),
data: data.map(e => e.collectTime),
axisLine: {
show: true, //X线
lineStyle: {
color: "#000",
},
color: '#000'
}
},
axisTick: {
show: true, //X
show: true //X
},
axisLabel: {
show: true,
textStyle: {
color: "#000", //X
},
},
color: '#000' //X
}
}
},
yAxis: [
{
type: "value",
name: "电压V",
type: 'value',
name: '电压V',
nameTextStyle: {
color: "#000",
color: '#000'
},
splitLine: {
show: false,
show: false
},
axisTick: {
show: true,
show: true
},
axisLine: {
show: true,
lineStyle: {
color: "#000",
},
color: '#000'
}
},
axisLabel: {
show: true,
textStyle: {
color: "#000",
},
},
},
color: '#000'
}
}
}
],
series: [
{
name: "A相电压",
type: "line",
name: 'A相电压',
type: 'line',
smooth: true, //线
showAllSymbol: true, //
symbol: "emptyCircle", //
@ -565,11 +478,11 @@ export default {
// areaStyle: {
// color: "rgba(5,140,255, 0.2)",
// },
data: data.map(e=>e.va),
data: data.map(e => e.va)
},
{
name: "B相电压",
type: "line",
name: 'B相电压',
type: 'line',
smooth: true, //线
showAllSymbol: true, //
symbol: "emptyCircle", //
@ -584,11 +497,11 @@ export default {
// areaStyle: {
// color: "rgba(5,140,255, 0.2)",
// },
data: data.map(e=>e.vb),
data: data.map(e => e.vb)
},
{
name: "C相电压",
type: "line",
name: 'C相电压',
type: 'line',
smooth: true, //线
showAllSymbol: true, //
symbol: "emptyCircle", //
@ -602,19 +515,19 @@ export default {
// areaStyle: {
// color: "rgba(5,140,255, 0.2)",
// },
data: data.map(e=>e.vc),
},
],
data: data.map(e => e.vc)
}
]
}
this.$refs.Chart1.setData(option1)
this.$refs.Chart2.setData(option2)
echarts.connect(this.$refs.Chart1.chart,this.$refs.Chart2.chart)
this.$refs.Chart1.chart.on('datazoom',(e)=>{
echarts.connect(this.$refs.Chart1.chart, this.$refs.Chart2.chart)
this.$refs.Chart1.chart.on('datazoom', (e) => {
option2.dataZoom[0].start = e.start
option2.dataZoom[0].end = e.end
this.$refs.Chart2.setData(option2)
})
this.$refs.Chart2.chart.on('datazoom',(e)=>{
this.$refs.Chart2.chart.on('datazoom', (e) => {
option1.dataZoom[0].start = e.start
option1.dataZoom[0].end = e.end
this.$refs.Chart1.setData(option1)
@ -624,11 +537,12 @@ export default {
}
</script>
<style>
.chart1{
.chart1 {
width: 100%;
height: 40vh;
}
.chart2{
.chart2 {
width: 100%;
height: 40vh;
}

@ -0,0 +1,634 @@
<template>
<div class="app-container">
<el-card class="box-card" style="margin-bottom: 10px">
<el-row :gutter="20">
<el-col :span="24" :xs="24">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item label="能源类型" prop="energyType">
<el-select v-model="queryParams.energyType" style="width: 100px" placeholder="请选择能源类型">
<el-option
v-for="item in energyTypeList"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="日期类型" prop="dateType">
<el-select v-model="queryParams.dateType" style="width: 100px" placeholder="请选择日期类型">
<el-option
v-for="dict in dateTypeList"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="采集时间">
<el-date-picker
v-model="queryParams.startTime"
style="width: 200px"
type="datetime"
placeholder="选择日期时间"
value-format="yyyy-MM-dd HH:mm:ss"
></el-date-picker>
</el-form-item>
<el-form-item label-width="auto">-</el-form-item>
<el-form-item>
<el-date-picker
v-model="queryParams.endTime"
value-format="yyyy-MM-dd HH:mm:ss"
style="width: 200px"
type="datetime"
placeholder="选择日期时间"
></el-date-picker>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索
</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置
</el-button>
</el-form-item>
</el-form>
</el-col>
</el-row>
</el-card>
<el-row :gutter="20">
<el-col :span="5" :xs="24">
<el-card class="box-card" style="height: 350px; position: relative">
<img
class="centered-image"
src="@/assets/images/electricityIcon.svg"
/>
<div class="centered-text total-consumption-label" style="margin-bottom: 20px;">
总耗量
</div>
<div class="centered-text total-consumption-value">
{{ totalConsumption != null ? totalConsumption.toFixed(2) : '' }}{{ measurementUnit }}
</div>
</el-card>
</el-col>
<el-col :span="19" :xs="24">
<el-card class="box-card" style="height: 350px; margin-bottom: 10px">
<div id="card" class="card-container"></div>
</el-card>
</el-col>
</el-row>
<el-card class="box-card" style="margin-bottom: 30px">
<el-row :gutter="20">
<el-col :span="24" :xs="24">
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
>导出
</el-button>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
header-cell-class-name="columnClassName"
id="bootstrap-table"
v-loading="loading"
:data="dataList"
@selection-change="handleSelectionChange"
>
<template v-for="time in timeList">
<el-table-column
v-if="time.title && time.rowspan == 2"
:key="time.title"
:label="time.title"
:prop="time.field"
min-width="120"
/>
<el-table-column
v-if="time.title && time.colspan == 1"
:key="time.title"
:label="time.title"
>
<el-table-column
min-width="140"
:key="time.title + '_' + time.field"
:label="'耗量(' + measurementUnit + ')'"
:prop="time.field"
/>
</el-table-column>
</template>
</el-table>
</el-col>
</el-row>
</el-card>
</div>
</template>
<script>
import {
energyPreviewReportList
} from '@/api/ems/report/reportPort.js'
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import * as echarts from 'echarts'
import {
getHoursBetween,
getDatesBetween,
getMonthsBetween,
getYearsBetween
} from '@/utils/dateReportUtils.js'
import { handleExport } from '@/utils/export.js'
import { parseTime } from '@/utils/ruoyi'
let data = {}
let optionData = {}
export default {
name: 'EnergyPreview',
dicts: ['statistical_unit'],
components: { Treeselect },
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
dataList: null,
// List
timeList: null,
energyList: null,
//
title: '',
//
open: false,
//
form: {},
//
queryParams: {
energyType: '2',
dateType: '10',
startTime: '',
endTime: ''
},
//
totalConsumption: 0,
//
measurementUnit: 'kW·h',
//
dateTypeList: [
{ label: '时', value: '13' },
{ label: '日', value: '10' },
{ label: '月', value: '7' },
{ label: '年', value: '4' }
],
//
energyTypeList: [
{ value: '2', label: '电' },
{ value: '3', label: '水' },
{ value: '4', label: '蒸汽' }
],
option: {
grid: {
containLabel: true,
left: '2%',
right: '2%',
bottom: '5%',
top: 20
},
tooltip: {
trigger: 'axis',
formatter: function(params) {
return params.data + 'kW·h'
},
textStyle: {
align: 'left'
}
},
xAxis: [
{
axisLabel: {
color: '#333',
fontSize: 14
// interval: 0,
},
axisTick: {
lineStyle: {
color: '#384267'
},
show: true
},
splitLine: {
show: false
},
axisLine: {
lineStyle: {
color: 'rgba(255,255,255,0.1)',
width: 1
},
show: true
},
data: data.x,
type: 'category'
}
],
yAxis: {
axisLabel: {
color: '#333',
fontSize: 14
},
axisTick: {
lineStyle: {
color: '#384267',
width: 1
},
show: true
},
splitLine: {
show: true,
lineStyle: {
color: 'rgba(255,255,255,0.1)'
}
},
axisLine: {
lineStyle: {
color: 'rgba(255,255,255,0.1)',
width: 1
},
show: true
},
name: ''
},
dataZoom: [],
series: [
{
data: data.y,
type: 'bar',
barMaxWidth: 20,
barWidth: '75%',
itemStyle: {
color: {
x: 0,
y: 0,
x2: 0,
y2: 1,
type: 'linear',
global: false,
colorStops: [
{
offset: 0,
color: optionData?.bgColor ? optionData.bgColor : '#0a8ff6'
},
{
offset: 1,
color: '#06f8f7'
}
]
}
}
},
{
type: 'line',
stack: '总量',
symbol: 'circle',
symbolSize: 8,
itemStyle: {
normal: {
borderWidth: 2,
borderColor: '#3aa1ff',
color: '#3aa1ff',
lineStyle: {
color: '#3aa1ff',
width: 1
}
}
},
tooltip: {
show: false
},
data: data.y
}
]
}
}
},
created() {
const nowDate = parseTime(new Date(), '{y}-{m}-{d}')
this.queryParams.startTime = nowDate + ' 00:00:00'
this.queryParams.endTime = nowDate + ' 23:59:59'
},
mounted() {
this.handleQuery()
},
methods: {
getDateList(startTime, endTime) {
if (this.queryParams.dateType === '13') {
return getHoursBetween(startTime, endTime)
} else if (this.queryParams.dateType === '10') {
return getDatesBetween(startTime, endTime)
} else if (this.queryParams.dateType === '7') {
return getMonthsBetween(startTime, endTime)
} else if (this.queryParams.dateType === '4') {
return getYearsBetween(startTime, endTime)
}
},
barChart() {
var chartDom = document.getElementById('card')
var myChart = echarts.init(chartDom)
let data = []
const createLinearGradient = (startColor, endColor) => ({
x: 0,
y: 0,
x2: 0,
y2: 1,
type: 'linear',
global: false,
colorStops: [
{ offset: 0, color: startColor },
{ offset: 1, color: endColor }
]
})
const axisStyle = {
axisLabel: { color: '#333', fontSize: 14 },
axisTick: { lineStyle: { color: '#384267', width: 1 }, show: true },
axisLine: { lineStyle: { color: 'rgba(255,255,255,0.1)', width: 1 }, show: true }
}
const option = {
grid: {
containLabel: true,
left: '2%',
right: '2%',
bottom: '5%',
top: 20
},
tooltip: {
trigger: 'axis',
formatter: (params) => `${params[0].name}<br>${params[0].marker} ${params[0].data}kW·h`
},
xAxis: [
{
...axisStyle,
data: [],
type: 'category',
splitLine: { show: false }
}
],
yAxis: {
...axisStyle,
splitLine: { show: true, lineStyle: { color: 'rgba(255,255,255,0.1)' } },
name: ''
},
dataZoom: [],
series: [
{
data: data,
type: 'bar',
barMaxWidth: 20,
barWidth: '75%',
itemStyle: {
color: createLinearGradient(optionData?.bgColor || '#0a8ff6', '#06f8f7')
}
},
{
data: data,
type: 'line',
stack: '总量',
symbol: 'circle',
symbolSize: 8,
itemStyle: {
normal: {
borderWidth: 2,
borderColor: '#3aa1ff',
color: '#3aa1ff',
lineStyle: { color: '#3aa1ff', width: 1 }
}
},
tooltip: { show: false }
}
]
}
myChart.setOption(option)
energyPreviewReportList(this.queryParams).then((response) => {
this.dataList = response.data
this.loading = false
const data = response.data || []
if (data.length === 0) return
this.totalConsumption = data.reduce((sum, item) => {
return sum + parseFloat(item.expendSum || 0);
}, 0);
const keys = Object.keys(data[0])
const filteredKeys = keys.filter(key => key && !['unitName', 'state', 'expendSum', 'type'].includes(key))
const yData = filteredKeys.map(key => {
return data.reduce((sum, item) => sum + parseFloat(item[key] || 0), 0).toFixed(2)
})
const timeData = filteredKeys.map(key => key.split('expend')[1] + ':00:00')
const sortedData = timeData.map((time, index) => ({
name: time,
value: parseFloat(yData[index]),
time: new Date(time).getTime()
})).sort((a, b) => a.time - b.time)
const xAxisData = sortedData.map(item => item.name.split(':')[0])
const seriesData = sortedData.map(item => item.value)
myChart.setOption({
dataZoom: [{
show: true,
type: 'slider',
bottom: '3%',
xAxisIndex: 0,
height: 12,
start: 0,
brushSelect: false,
end: (1 / (seriesData.length / 20)) * 100,
textStyle: {
fontSize: 0,
color: 'rgba(0,0,0,0)'
}
}],
xAxis: [{
data: xAxisData
}],
series: [{
data: seriesData
}, {
data: seriesData
}]
})
})
},
/** 查询用户列表 */
getList(dateList) {
this.loading = true
this.initTable(dateList)
this.barChart()
},
initTable(columns) {
this.timeList = []
this.energyList = []
this.timeList.push(
{
title: '用电类型名称',
field: 'unitName',
align: 'center',
rowspan: 2
},
{
field: 'expendSum',
title: '耗量合计(' + this.measurementUnit + ')',
align: 'center',
rowspan: 2
}
)
for (let i in columns) {
this.timeList.push({
title: columns[i],
align: 'center',
colspan: 1,
field: 'expend' + columns[i].substring(0, 13)
})
this.energyList.push({
field: 'expend' + columns[i].substring(0, 13),
title: '耗量(' + this.measurementUnit + ')',
align: 'center',
rowspan: 1
})
}
},
//
cancel() {
this.open = false
this.reset()
},
//
reset() {
this.form = {
userId: undefined
}
this.resetForm('form')
},
/** 搜索按钮操作 */
handleQuery() {
let dateList = this.getDateList(
this.queryParams.startTime,
this.queryParams.endTime
)
this.getList(dateList)
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams.dateType = '10'
this.queryParams.startTime = ''
this.queryParams.endTime = ''
this.handleQuery()
},
//
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.userId)
this.single = selection.length != 1
this.multiple = !selection.length
},
/** 导出按钮操作 */
handleExport() {
handleExport('bootstrap-table', `能源预览_${new Date().getTime()}`, true)
}
}
}
</script>
<style lang="scss" scoped>
.app-container {
::v-deep.columnClassName {
font-size: 10px;
font-weight: normal;
}
.tree {
width: 220px;
::v-deep .el-tree-node {
white-space: normal; //!!!!!!!!!
.el-tree-node__content {
height: 100%;
align-items: start;
}
}
}
}
.app-container {
padding: 20px;
}
.centered-image {
position: absolute;
top: 40%;
left: 50%;
transform: translate(-50%, -100%);
}
.centered-text {
position: absolute;
left: 50%;
transform: translate(-50%, 0%);
font-weight: 600;
text-align: center;
}
.total-consumption-label {
top: 45%;
font-size: 1.9vw;
}
.total-consumption-value {
top: 55%;
width: 100%;
padding: 3px 10px;
font-size: 1.7vw;
}
.card-container {
width: 100%;
height: 350px;
margin-left: 50px;
user-select: none;
margin-top: -30px;
}
.mb8 {
margin-bottom: 8px;
}
</style>

@ -31,8 +31,18 @@
<el-col :span="19" :xs="24">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
label-width="100px">
<el-form-item label="能源类型" prop="energyType">
<el-select v-model="queryParams.energyType" style="width: 100px" placeholder="请选择能源类型">
<el-option
v-for="item in energyTypeList"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="日期类型" prop="dateType">
<el-select v-model="queryParams.dateType" placeholder="请选择日期类型">
<el-select v-model="queryParams.dateType" style="width: 100px" placeholder="请选择日期类型">
<el-option
v-for="item in dateTypeList"
:key="item.dateTypeCode"
@ -41,21 +51,21 @@
></el-option>
</el-select>
</el-form-item>
<el-form-item label="采集日期">
<el-form-item label="采集时间">
<el-date-picker
v-model="daterangeCollectTime"
style="width: 240px"
value-format="yyyy-MM-dd"
type="daterange"
style="width: 340px"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetimerange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
start-placeholder="开始时间"
end-placeholder="结束时间"
></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
<!-- <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>-->
</el-form-item>
</el-form>
@ -75,13 +85,13 @@
<el-table v-loading="loading" :data="monitorWorkUnitList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="主键标识" align="center" prop="objId" v-if="columns[0].visible" />
<el-table-column label="统计单元编号" align="center" prop="workUnitCode" v-if="columns[1].visible" />
<el-table-column label="统计单元名称" align="center" prop="workUnitName" v-if="columns[2].visible" />
<el-table-column label="耗量(kwh)" align="center" prop="expend" v-if="columns[3].visible" />
<el-table-column label="开始日期" align="center" prop="beginTime" v-if="columns[4].visible" />
<el-table-column label="结束日期" align="center" prop="endTime" v-if="columns[5].visible" />
<el-table-column label="仪表值(kwh)" align="center" prop="instrumentValue" v-if="columns[6].visible" />
<el-table-column label="主键标识" align="center" prop="objId" v-if="columns[0].visible"/>
<el-table-column label="统计单元编号" align="center" prop="workUnitCode" v-if="columns[1].visible"/>
<el-table-column label="统计单元名称" align="center" prop="workUnitName" v-if="columns[2].visible"/>
<el-table-column label="耗量(kwh)" align="center" prop="expend" v-if="columns[3].visible"/>
<el-table-column label="开始时间" align="center" prop="beginTime" v-if="columns[4].visible"/>
<el-table-column label="结束时间" align="center" prop="endTime" v-if="columns[5].visible"/>
<el-table-column label="仪表值(kwh)" align="center" prop="instrumentValue" v-if="columns[6].visible"/>
</el-table>
<pagination
@ -99,14 +109,13 @@
<script>
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`)
}
}
};
}
</script>

@ -0,0 +1,266 @@
<template>
<div class="app-container">
<el-row :gutter="20">
<el-col :span="5" :xs="24">
<div class="head-container">
<el-input
v-model="workUnitName"
placeholder="请输入统计单元名称"
clearable
size="small"
prefix-icon="el-icon-search"
style="margin-bottom: 20px"
/>
</div>
<div class="head-container">
<el-tree
:data="workUnitOptions"
:props="workUnitProps"
:expand-on-click-node="false"
:filter-node-method="filterNode"
ref="tree"
node-key="id"
default-expand-all
highlight-current
@node-click="handleNodeClick"
/>
</div>
</el-col>
<el-col :span="19" :xs="24">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
label-width="100px">
<el-form-item label="日期类型" prop="dateType">
<el-select v-model="queryParams.dateType" placeholder="请选择日期类型">
<el-option
v-for="item in dateTypeList"
:key="item.dateTypeCode"
:label="item.dateTypeName"
:value="item.dateTypeCode"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="采集日期">
<el-date-picker
v-model="daterangeCollectTime"
style="width: 240px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
>导出
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="monitorWorkUnitList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="主键标识" align="center" prop="objId" v-if="columns[0].visible" />
<el-table-column label="统计单元编号" align="center" prop="workUnitCode" v-if="columns[1].visible" />
<el-table-column label="统计单元名称" align="center" prop="workUnitName" v-if="columns[2].visible" />
<el-table-column label="统计日期" align="center" prop="pointTime" v-if="columns[3].visible" />
<el-table-column label="分时类型" align="center" prop="priceType" v-if="columns[4].visible" />
<el-table-column label="耗量(kwh)" align="center" prop="expend" v-if="columns[5].visible" />
<el-table-column label="价格" align="center" prop="price" v-if="columns[6].visible" />
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</el-col>
</el-row>
</div>
</template>
<script>
import { getWorkUnitTrees } from '@/api/ems/base/baseWorkUnit'
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import { peaksValleysConsumptionReportList } from '@//api/ems/report/reportPort.js'
import { parseTime } from '@//utils/ruoyi'
export default {
name: "PeaksValleysConsumptionReport",
components: {
Treeselect
}, data() {
return {
monitorInfoOptions: [],
workUnitOptions: [],
workUnitName: undefined,
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
monitorWorkUnitList: [],
daterangeCollectTime: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
monitorCode: null,
workUnitCode: null,
monitorStatus: null,
monitorType: null,
dateType: 10,
},
//
form: {},
workUnitProps: {
children: "children",
label: "label"
},
dateTypeList: [
{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: `统计日期`, visible: true},
{key: 4, label: `分时类型`, visible: true},
{key: 5, label: `仪表值(kwh)`, visible: true},
{key: 6, label: `价格`, visible: true},
]
};
},
created() {
const nowDate = parseTime(new Date(), '{y}-{m}-{d}')
this.daterangeCollectTime[0] = nowDate
this.daterangeCollectTime[1] = nowDate
this.getList();
this.getWorkUnitTrees();
},
watch: {
//
workUnitName(val) {
this.$refs.tree.filter(val);
}
},
methods: {
/** 转换统计单元信息数据结构 */
workUnitOptionsNormalizer(node) {
if (node.children && !node.children.length) {
delete node.children;
}
return {
id2: node.workUnitCode,
label2: node.workUnitName,
children2: node.children
};
},
/** 查询计量设备下拉树结构 */
getWorkUnitTrees() {
getWorkUnitTrees().then(response => {
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;
},
//
handleNodeClick(data) {
this.queryParams.workUnitCode = data.id;
this.handleQuery();
},
/** 查询统计计量信息列表 */
getList() {
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];
}
peaksValleysConsumptionReportList(this.queryParams).then(response => {
this.monitorWorkUnitList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
parentIds: null,
parentId: null,
objId: null,
monitorCode: null,
workUnitCode: null,
monitorStatus: 0,
monitorType: 1,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.queryParams.workUnitCode = null;
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.objId)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 导出按钮操作 */
handleExport() {
this.download('ems/report/peaksValleysConsumptionReportList/export', {
...this.queryParams
}, `峰平谷耗量报表_${new Date().getTime()}.xlsx`)
}
}
};
</script>

@ -1,87 +1,98 @@
<template>
<div class="app-container home">
<div class="dashboard-editor-container">
<!-- PanelGroup 组件绑定了 handleSetLineChartData 方法 -->
<panel-group @handleSetLineChartData="handleSetLineChartData" />
<!-- 折线图部分 -->
<el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px;">
<line-chart :chart-data="lineChartData" />
</el-row>
<!-- <el-row :gutter="32">-->
<!-- <el-col :xs="24" :sm="24" :lg="8">-->
<!-- <div class="chart-wrapper">-->
<!-- <raddar-chart />-->
<!-- </div>-->
<!-- </el-col>-->
<!-- <el-col :xs="24" :sm="24" :lg="8">-->
<!-- <div class="chart-wrapper">-->
<!-- <pie-chart />-->
<!-- </div>-->
<!-- </el-col>-->
<!-- <el-col :xs="24" :sm="24" :lg="8">-->
<!-- <div class="chart-wrapper">-->
<!-- <bar-chart />-->
<!-- </div>-->
<!-- </el-col>-->
<!-- </el-row>-->
</div>
</template>
<script>
import PanelGroup from './dashboard/PanelGroup'
import LineChart from './dashboard/LineChart'
import RaddarChart from './dashboard/RaddarChart'
import PieChart from './dashboard/PieChart'
import BarChart from './dashboard/BarChart'
const lineChartData = {
newVisitis: {
expectedData: [100, 120, 161, 134, 105, 160, 165],
actualData: [120, 82, 91, 154, 162, 140, 145]
},
messages: {
expectedData: [200, 192, 120, 144, 160, 130, 140],
actualData: [180, 160, 151, 106, 145, 150, 130]
},
purchases: {
expectedData: [80, 100, 121, 104, 105, 90, 100],
actualData: [120, 90, 100, 138, 142, 130, 130]
},
shoppings: {
expectedData: [130, 140, 141, 142, 145, 150, 160],
actualData: [120, 82, 91, 154, 162, 140, 130]
}
}
export default {
name: "Index",
name: 'Index',
components: {
PanelGroup,
LineChart,
RaddarChart,
PieChart,
BarChart
},
data() {
return {
//
version: "3.8.7"
};
lineChartData: lineChartData.newVisitis
}
},
methods: {
goTarget(href) {
window.open(href, "_blank");
}
}
};
</script>
<style scoped lang="scss">
.home {
blockquote {
padding: 10px 20px;
margin: 0 0 20px;
font-size: 17.5px;
border-left: 5px solid #eee;
}
hr {
margin-top: 20px;
margin-bottom: 20px;
border: 0;
border-top: 1px solid #eee;
}
.col-item {
margin-bottom: 20px;
}
ul {
padding: 0;
margin: 0;
}
font-family: "open sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 13px;
color: #676a6c;
overflow-x: hidden;
ul {
list-style-type: none;
}
h4 {
margin-top: 0px;
}
h2 {
margin-top: 10px;
font-size: 26px;
font-weight: 100;
}
p {
margin-top: 10px;
b {
font-weight: 700;
}
}
.update-log {
ol {
display: block;
list-style-type: decimal;
margin-block-start: 1em;
margin-block-end: 1em;
margin-inline-start: 0;
margin-inline-end: 0;
padding-inline-start: 40px;
handleSetLineChartData(type) {
this.lineChartData = lineChartData[type]
}
}
}
</style>
</script>
<style lang="scss" scoped>
.dashboard-editor-container {
padding: 32px;
background-color: rgb(240, 242, 245);
position: relative;
.chart-wrapper {
background: #fff;
padding: 16px 16px 0;
margin-bottom: 32px;
}
}
@media (max-width:1024px) {
.chart-wrapper {
padding: 8px;
}
}
</style>

@ -9,8 +9,8 @@
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="所属产线" prop="productLineCode">
<el-select v-model="queryParams.productLineCode" placeholder="请选择所属产线" clearable>
<el-form-item label="所属工位" prop="productLineCode">
<el-select v-model="queryParams.productLineCode" placeholder="请选择所属工位" clearable>
<el-option
v-for="item in productLineList"
:key="item.productLineCode"
@ -55,10 +55,10 @@
/>
</el-select>
</el-form-item>
<!-- <el-form-item label="班组编号" prop="teamCode">-->
<!-- <el-form-item label="班组名称" prop="teamCode">-->
<!-- <el-input-->
<!-- v-model="queryParams.teamCode"-->
<!-- placeholder="请输入班组编号"-->
<!-- placeholder="请输入班组名称"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
@ -131,7 +131,7 @@
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="主键标识" align="center" prop="objId" v-if="columns[0].visible"/>
<el-table-column label="设备编号" align="center" prop="deviceCode" v-if="columns[1].visible"/>
<el-table-column label="设备名称" align="center" prop="deviceName" v-if="columns[2].visible"/>
<el-table-column label="设备名称" align="center" prop="deviceName" v-if="columns[2].visible" width="180"/>
<el-table-column label="设备型号" align="center" prop="deviceModel" v-if="columns[3].visible"/>
<el-table-column label="设备类型" align="center" prop="deviceType" v-if="columns[4].visible">
<template slot-scope="scope">
@ -152,14 +152,14 @@
<span>{{ parseTime(scope.row.enableDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="所属产线" align="center" prop="productLineName" v-if="columns[11].visible"/>
<el-table-column label="所属工位" align="center" prop="productLineName" v-if="columns[11].visible"/>
<el-table-column label="启用标识" align="center" prop="isFlag" v-if="columns[12].visible">
<template slot-scope="scope">
<dict-tag :options="dict.type.is_flag" :value="scope.row.isFlag"/>
</template>
</el-table-column>
<el-table-column label="工厂编号" align="center" prop="factoryCode" v-if="columns[17].visible"/>
<el-table-column label="班组编号" align="center" prop="teamCode" v-if="columns[18].visible"/>
<el-table-column label="班组名称" align="center" prop="teamCode" v-if="columns[18].visible"/>
<el-table-column label="资产编号" align="center" prop="assetCode" v-if="columns[19].visible"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="100">
<template slot-scope="scope">
@ -244,8 +244,8 @@
>
</el-date-picker>
</el-form-item>
<el-form-item label="所属产线" prop="productLineCode">
<el-select v-model="form.productLineCode" placeholder="请选择所属产线">
<el-form-item label="所属工位" prop="productLineCode">
<el-select v-model="form.productLineCode" placeholder="请选择所属工位">
<el-option
v-for="item in productLineList"
:key="item.productLineCode"
@ -267,8 +267,8 @@
<!-- <el-form-item label="工厂编号" prop="factoryCode">-->
<!-- <el-input v-model="form.factoryCode" placeholder="请输入工厂编号"/>-->
<!-- </el-form-item>-->
<el-form-item label="班组编号" prop="teamCode">
<el-input v-model="form.teamCode" placeholder="请输入班组编号"/>
<el-form-item label="班组名称" prop="teamCode">
<el-input v-model="form.teamCode" placeholder="请输入班组名称"/>
</el-form-item>
<!-- <el-form-item label="资产编号" prop="assetCode">-->
<!-- <el-input v-model="form.assetCode" placeholder="请输入资产编号"/>-->
@ -358,14 +358,14 @@ export default {
{ key: 8, label: `成本中心`, visible: false },
{ key: 9, label: `生产厂商`, visible: true },
{ key: 10, label: `启用日期`, visible: true },
{ key: 11, label: `所属产线`, visible: true },
{ key: 12, label: `启用标识`, visible: true },
{ key: 11, label: `所属工位`, visible: true },
{ key: 12, label: `启用标识`, visible: false },
{ key: 13, label: `创建人`, visible: false },
{ key: 14, label: `创建时间`, visible: false },
{ key: 15, label: `更新人`, visible: false },
{ key: 16, label: `更新时间`, visible: false },
{ key: 17, label: `工厂编号`, visible: true },
{ key: 18, label: `班组编号`, visible: true },
{ key: 17, label: `工厂编号`, visible: false },
{ key: 18, label: `班组名称`, visible: false },
{ key: 19, label: `资产编号`, visible: false }
],
// 线
@ -373,7 +373,7 @@ export default {
}
},
created() {
getBaseProductLineList({ productLineType: 1 }).then(response => {
getBaseProductLineList({ productLineType: 2 }).then(response => {
this.productLineList = response.data
})
this.getList()

@ -191,7 +191,7 @@
</el-select>
</el-form-item>
<el-form-item label="班组名称" prop="teamCode">
<el-select v-model="form.teamCode" placeholder="请选择班组名称">
<el-select v-model="form.teamCode" placeholder="请选择班组名称" multiple>
<el-option
v-for="item in teamMembersList"
:key="item.teamCode"
@ -300,9 +300,6 @@ export default {
],
staffName: [
{ required: true, message: '员工名称不能为空', trigger: 'blur' }
],
teamCode: [
{ required: true, message: '班组编号不能为空', trigger: 'blur' }
]
},
columns: [
@ -404,6 +401,9 @@ export default {
this.reset()
const objId = row.objId || this.ids
getBaseStaffInfo(objId).then(response => {
if (response.data.teamCode && typeof response.data.teamCode === 'string') {
response.data.teamCode = response.data.teamCode.split(',');
}
this.form = response.data
this.open = true
this.title = '修改员工信息'
@ -413,6 +413,7 @@ export default {
submitForm() {
this.$refs['form'].validate(valid => {
if (valid) {
this.form.teamCode = this.form.teamCode.toString();
if (this.form.objId != null) {
updateBaseStaffInfo(this.form).then(response => {
this.$modal.msgSuccess('修改成功')
@ -431,8 +432,9 @@ export default {
},
/** 删除按钮操作 */
handleDelete(row) {
const objIds = row.objId || this.codes
this.$modal.confirm('是否确认删除员工编号为"' + objIds + '"的数据项?').then(function() {
const objNames = row.objId || this.codes
const objIds = row.objId || this.ids
this.$modal.confirm('是否确认删除员工编号为"' + objNames + '"的数据项?').then(function() {
return delBaseStaffInfo(objIds)
}).then(() => {
this.getList()

@ -17,6 +17,16 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="工序名称" prop="processCode">
<el-select v-model="queryParams.processCode" placeholder="请选择工序名称">
<el-option
v-for="item in processInfoList"
:key="item.processCode"
:label="item.processName"
:value="item.processCode"
/>
</el-select>
</el-form-item>
<!-- <el-form-item label="所属工位" prop="stationCode">-->
<!-- <el-input-->
<!-- v-model="queryParams.stationCode"-->
@ -125,6 +135,7 @@
<el-table-column label="下班时间" align="center" prop="endTime" v-if="columns[7].visible"/>
<el-table-column label="休息时间" align="center" prop="dineTime" v-if="columns[8].visible"/>
<el-table-column label="机台编号" align="center" prop="machineName" v-if="columns[14].visible"/>
<el-table-column label="工序名称" align="center" prop="processName" v-if="columns[15].visible"/>
<el-table-column label="启用标识" align="center" prop="isFlag" v-if="columns[9].visible">
<template slot-scope="scope">
<dict-tag :options="dict.type.is_flag" :value="scope.row.isFlag"/>
@ -198,6 +209,16 @@
<el-form-item label="下班时间" prop="endTime">
<el-input v-model="form.endTime" placeholder="请输入下班时间"/>
</el-form-item>
<el-form-item label="工序名称" prop="processCode">
<el-select v-model="form.processCode" placeholder="请选择工序名称">
<el-option
v-for="item in processInfoList"
:key="item.processCode"
:label="item.processName"
:value="item.processCode"
/>
</el-select>
</el-form-item>
<!-- <el-form-item label="休息时间" prop="dineTime">-->
<!-- <el-input v-model="form.dineTime" placeholder="请输入休息时间"/>-->
<!-- </el-form-item>-->
@ -240,6 +261,7 @@ import {
} from '@/api/mes/base/baseTeamMembers'
import { getBaseProductLineList } from '@/api/mes/base/baseProductLine'
import { getDeviceLedger } from '@/api/mes/base/baseDeviceLedger'
import { getProcessInfoList } from '@/api/mes/base/processInfo'
export default {
name: 'BaseTeamMembers',
@ -314,12 +336,15 @@ export default {
{ key: 11, label: `创建时间`, visible: false },
{ key: 12, label: `更新人`, visible: false },
{ key: 13, label: `更新时间`, visible: false },
{ key: 14, label: `机台编号`, visible: false }
{ key: 14, label: `机台编号`, visible: false },
{ key: 15, label: `工序名称`, visible: true },
],
//
productLineList: [],
//
deviceLedgerList: []
deviceLedgerList: [],
//
processInfoList: []
}
},
created() {
@ -329,6 +354,9 @@ export default {
getDeviceLedger().then(response => {
this.deviceLedgerList = response.data
})
getProcessInfoList().then(response => {
this.processInfoList = response.data
})
this.getList()
},
methods: {

@ -0,0 +1,427 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item label="订单编号" prop="orderCode">
<el-input
v-model="queryParams.orderCode"
placeholder="请输入订单编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="工单编号" prop="planCode">
<el-input
v-model="queryParams.planCode"
placeholder="请输入工单编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<!-- <el-form-item label="工序编号" prop="processCode">-->
<!-- <el-input-->
<!-- v-model="queryParams.processCode"-->
<!-- placeholder="请输入工序编号"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="工位名称" prop="stationCode">-->
<!-- <el-input-->
<!-- v-model="queryParams.stationCode"-->
<!-- placeholder="请输入工位名称"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="primary"-->
<!-- plain-->
<!-- icon="el-icon-plus"-->
<!-- size="mini"-->
<!-- @click="handleAdd"-->
<!-- v-hasPermi="['mes/prod:planExecuteUser:add']"-->
<!-- >新增-->
<!-- </el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="success"-->
<!-- plain-->
<!-- icon="el-icon-edit"-->
<!-- size="mini"-->
<!-- :disabled="single"-->
<!-- @click="handleUpdate"-->
<!-- v-hasPermi="['mes/prod:planExecuteUser:edit']"-->
<!-- >修改-->
<!-- </el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="danger"-->
<!-- plain-->
<!-- icon="el-icon-delete"-->
<!-- size="mini"-->
<!-- :disabled="multiple"-->
<!-- @click="handleDelete"-->
<!-- v-hasPermi="['mes/prod:planExecuteUser:remove']"-->
<!-- >删除-->
<!-- </el-button>-->
<!-- </el-col>-->
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['mes/prod:planExecuteUser:export']"
>导出
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="planExecuteUserList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="主键标识" align="center" prop="objId" v-if="columns[0].visible"/>
<el-table-column label="订单编号" align="center" prop="orderCode" width="130" v-if="columns[1].visible"/>
<el-table-column label="工单编号" align="center" prop="planCode" width="230" v-if="columns[2].visible"/>
<el-table-column label="工序编号" align="center" prop="processCode" v-if="columns[3].visible"/>
<el-table-column label="工位名称" align="center" prop="stationName" width="100" v-if="columns[4].visible"/>
<el-table-column label="员工名称" align="center" prop="staffName" v-if="columns[5].visible"/>
<el-table-column label="生产米数" align="center" prop="completeAmount" v-if="columns[6].visible"/>
<el-table-column label="工单明细开始时间" align="center" prop="planBeginDate" width="180" v-if="columns[7].visible">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.planBeginDate, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="工单明细结束时间" align="center" prop="planEndDate" width="180" v-if="columns[8].visible">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.planEndDate, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="生产次数(锅数)" align="center" prop="batchNumber" v-if="columns[14].visible"/>
<el-table-column label="启用标识" align="center" prop="isFlag" v-if="columns[9].visible">
<template slot-scope="scope">
<dict-tag :options="dict.type.is_flag" :value="scope.row.isFlag"/>
</template>
</el-table-column>
<el-table-column label="创建人" align="center" prop="createdBy" v-if="columns[10].visible"/>
<el-table-column label="创建时间" align="center" prop="createdTime" width="180" v-if="columns[11].visible">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createdTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="更新人" align="center" prop="updatedBy" v-if="columns[12].visible"/>
<el-table-column label="更新时间" align="center" prop="updatedTime" width="180" v-if="columns[13].visible">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.updatedTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="100">-->
<!-- <template slot-scope="scope">-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-edit"-->
<!-- @click="handleUpdate(scope.row)"-->
<!-- v-hasPermi="['mes/prod:planExecuteUser:edit']"-->
<!-- >修改-->
<!-- </el-button>-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['mes/prod:planExecuteUser:remove']"-->
<!-- >删除-->
<!-- </el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改生产工单执行用户对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="订单编号" prop="orderCode">
<el-input v-model="form.orderCode" placeholder="请输入订单编号"/>
</el-form-item>
<el-form-item label="工单编号" prop="planCode">
<el-input v-model="form.planCode" placeholder="请输入工单编号"/>
</el-form-item>
<el-form-item label="工序编号" prop="processCode">
<el-input v-model="form.processCode" placeholder="请输入工序编号"/>
</el-form-item>
<el-form-item label="工位名称" prop="stationCode">
<el-input v-model="form.stationCode" placeholder="请输入工位名称"/>
</el-form-item>
<el-form-item label="员工名称" prop="staffId">
<el-input v-model="form.staffId" placeholder="请输入员工名称"/>
</el-form-item>
<el-form-item label="生产米数" prop="completeAmount">
<el-input v-model="form.completeAmount" placeholder="请输入生产米数"/>
</el-form-item>
<el-form-item label="工单明细开始时间" prop="planBeginDate">
<el-date-picker clearable
v-model="form.planBeginDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择工单明细开始时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="工单明细结束时间" prop="planEndDate">
<el-date-picker clearable
v-model="form.planEndDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择工单明细结束时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="启用标识" prop="isFlag">
<el-radio-group v-model="form.isFlag">
<el-radio
v-for="dict in dict.type.is_flag"
:key="dict.value"
:label="dict.value"
>{{ dict.label }}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="创建人" prop="createdBy">
<el-input v-model="form.createdBy" placeholder="请输入创建人"/>
</el-form-item>
<el-form-item label="创建时间" prop="createdTime">
<el-date-picker clearable
v-model="form.createdTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择创建时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="更新人" prop="updatedBy">
<el-input v-model="form.updatedBy" placeholder="请输入更新人"/>
</el-form-item>
<el-form-item label="更新时间" prop="updatedTime">
<el-date-picker clearable
v-model="form.updatedTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择更新时间"
>
</el-date-picker>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listPlanExecuteUser,
getPlanExecuteUser,
delPlanExecuteUser,
addPlanExecuteUser,
updatePlanExecuteUser
} from '@/api/mes/prod/planExecuteUser'
export default {
name: 'PlanExecuteUser',
dicts: ['is_flag'],
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
planExecuteUserList: [],
//
title: '',
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
orderCode: null,
planCode: null,
processCode: null,
stationCode: null,
staffId: null,
completeAmount: null,
planBeginDate: null,
planEndDate: null,
isFlag: null,
createdBy: null,
createdTime: null,
updatedBy: null,
updatedTime: null
},
//
form: {},
//
rules: {
objId: [
{ required: true, message: '主键标识不能为空', trigger: 'blur' }
]
},
columns: [
{ key: 0, label: `主键标识`, visible: false },
{ key: 1, label: `订单编号`, visible: true },
{ key: 2, label: `工单编号`, visible: true },
{ key: 3, label: `工序编号`, visible: true },
{ key: 4, label: `工位名称`, visible: true },
{ key: 5, label: `员工名称`, visible: true },
{ key: 6, label: `生产米数`, visible: true },
{ key: 7, label: `工单明细开始时间`, visible: true },
{ key: 8, label: `工单明细结束时间`, visible: true },
{ key: 9, label: `启用标识`, visible: false },
{ key: 10, label: `创建人`, visible: false },
{ key: 11, label: `创建时间`, visible: false },
{ key: 12, label: `更新人`, visible: false },
{ key: 13, label: `更新时间`, visible: false },
{ key: 14, label: `生产次数(锅数)`, visible: true }
]
}
},
created() {
this.getList()
},
methods: {
/** 查询生产工单执行用户列表 */
getList() {
this.loading = true
listPlanExecuteUser(this.queryParams).then(response => {
this.planExecuteUserList = response.rows
this.total = response.total
this.loading = false
})
},
//
cancel() {
this.open = false
this.reset()
},
//
reset() {
this.form = {
objId: null,
orderCode: null,
planCode: null,
processCode: null,
stationCode: null,
staffId: null,
completeAmount: null,
planBeginDate: null,
planEndDate: null,
isFlag: null,
createdBy: null,
createdTime: null,
updatedBy: null,
updatedTime: null
}
this.resetForm('form')
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm('queryForm')
this.handleQuery()
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.objId)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset()
this.open = true
this.title = '添加生产工单执行用户'
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset()
const objId = row.objId || this.ids
getPlanExecuteUser(objId).then(response => {
this.form = response.data
this.open = true
this.title = '修改生产工单执行用户'
})
},
/** 提交按钮 */
submitForm() {
this.$refs['form'].validate(valid => {
if (valid) {
if (this.form.objId != null) {
updatePlanExecuteUser(this.form).then(response => {
this.$modal.msgSuccess('修改成功')
this.open = false
this.getList()
})
} else {
addPlanExecuteUser(this.form).then(response => {
this.$modal.msgSuccess('新增成功')
this.open = false
this.getList()
})
}
}
})
},
/** 删除按钮操作 */
handleDelete(row) {
const objIds = row.objId || this.ids
this.$modal.confirm('是否确认删除生产工单执行用户编号为"' + objIds + '"的数据项?').then(function() {
return delPlanExecuteUser(objIds)
}).then(() => {
this.getList()
this.$modal.msgSuccess('删除成功')
}).catch(() => {
})
},
/** 导出按钮操作 */
handleExport() {
this.download('mes/prod/planExecuteUser/export', {
...this.queryParams
}, `planExecuteUser_${new Date().getTime()}.xlsx`)
}
}
}
</script>

@ -28,30 +28,30 @@
end-placeholder="结束时间"
></el-date-picker>
</el-form-item>
<!-- <el-form-item label="交货日期" prop="DeliveryDate">-->
<!-- <el-input-->
<!-- v-model="queryParams.DeliveryDate"-->
<!-- placeholder="请输入交货日期"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="订单所属" prop="OrderOwner">-->
<!-- <el-input-->
<!-- v-model="queryParams.OrderOwner"-->
<!-- placeholder="请输入订单所属"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="输送带长度规格" prop="BeltLengthSpecifications">-->
<!-- <el-input-->
<!-- v-model="queryParams.BeltLengthSpecifications"-->
<!-- placeholder="请输入输送带长度规格"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="交货日期" prop="DeliveryDate">-->
<!-- <el-input-->
<!-- v-model="queryParams.DeliveryDate"-->
<!-- placeholder="请输入交货日期"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="订单所属" prop="OrderOwner">-->
<!-- <el-input-->
<!-- v-model="queryParams.OrderOwner"-->
<!-- placeholder="请输入订单所属"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="输送带长度规格" prop="BeltLengthSpecifications">-->
<!-- <el-input-->
<!-- v-model="queryParams.BeltLengthSpecifications"-->
<!-- placeholder="请输入输送带长度规格"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
@ -59,17 +59,17 @@
</el-form>
<el-row :gutter="10" class="mb8">
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="primary"-->
<!-- plain-->
<!-- icon="el-icon-plus"-->
<!-- size="mini"-->
<!-- @click="handleAdd"-->
<!-- v-hasPermi="['mes/prod:prodOrderDetail:add']"-->
<!-- >新增-->
<!-- </el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="primary"-->
<!-- plain-->
<!-- icon="el-icon-plus"-->
<!-- size="mini"-->
<!-- @click="handleAdd"-->
<!-- v-hasPermi="['mes/prod:prodOrderDetail:add']"-->
<!-- >新增-->
<!-- </el-button>-->
<!-- </el-col>-->
<el-col :span="1.5">
<el-button
type="success"
@ -112,22 +112,30 @@
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="主键标识" align="center" prop="objId" v-if="columns[0].visible"/>
<el-table-column label="任务编号" align="center" prop="SeqNo" v-if="columns[1].visible" fixed="left" width="130"/>
<el-table-column label="下单日期" align="center" prop="OrderDate" width="180" v-if="columns[2].visible">
<el-table-column label="下单日期" align="center" prop="OrderDate" width="100" v-if="columns[2].visible">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.OrderDate, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
<span>{{ parseTime(scope.row.OrderDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="交货日期" align="center" prop="DeliveryDate" width="100" v-if="columns[3].visible">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.DeliveryDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="交货日期" align="center" prop="DeliveryDate" v-if="columns[3].visible"/>
<el-table-column label="产品类型" align="center" prop="ProductType" v-if="columns[4].visible"/>
<el-table-column label="产品状态" align="center" prop="ProductStatus" v-if="columns[5].visible" width="100"/>
<el-table-column label="订单所属" align="center" prop="OrderOwner" v-if="columns[6].visible"/>
<el-table-column label="客户信息" align="center" prop="CustomerInfo" v-if="columns[7].visible"/>
<el-table-column label="输送带长度规格" align="center" prop="BeltLengthSpecifications" v-if="columns[8].visible" width="230"/>
<el-table-column label="输送带长度规格" align="center" prop="BeltLengthSpecifications" v-if="columns[8].visible"
width="230"
/>
<el-table-column label="面积与重量" align="center" prop="AreaAndWeight" v-if="columns[9].visible" width="200"/>
<el-table-column label="使用原材料" align="center" prop="UsingRawMaterials" v-if="columns[10].visible" width="230"/>
<el-table-column label="输送带宽度" align="center" prop="BeltWidth" v-if="columns[11].visible"/>
<el-table-column label="输送带布层" align="center" prop="BeltClothLayer" v-if="columns[12].visible"/>
<el-table-column label="客户要求输送带长度" align="center" prop="BeltRequiredLength" v-if="columns[13].visible" width="100"/>
<el-table-column label="客户要求输送带长度" align="center" prop="BeltRequiredLength" v-if="columns[13].visible"
width="100"
/>
<el-table-column label="客户要求上胶厚度" align="center" prop="GluingRequiredThickness" v-if="columns[14].visible"/>
<el-table-column label="客户要求下胶厚度" align="center" prop="LowerGlueRequiredThickness" v-if="columns[15].visible"/>
<el-table-column label="生产上胶厚度" align="center" prop="ProductionGluingThickness" v-if="columns[16].visible"/>
@ -147,26 +155,80 @@
<el-table-column label="压延生产米数" align="center" prop="RollingProductionMeters" v-if="columns[30].visible"/>
<el-table-column label="推荐垫布宽度" align="center" prop="RecommendedPadWidth" v-if="columns[31].visible"/>
<el-table-column label="大布厂家" align="center" prop="BigFabricManufacturer" v-if="columns[32].visible"/>
<el-table-column label="布料规格" align="center" prop="FabricSpecifications" v-if="columns[33].visible"/>
<el-table-column label="布料规格" align="center" prop="FabricSpecifications" v-if="columns[33].visible">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
@click="detailsSearch(scope.row,1)"
>查看详情
</el-button>
</template>
</el-table-column>
<el-table-column label="预计布料使用量" align="center" prop="EstimatedFabricUsage" v-if="columns[34].visible"/>
<el-table-column label="布宽度" align="center" prop="ClothWidth" v-if="columns[35].visible"/>
<el-table-column label="布重量" align="center" prop="ClothWeight" v-if="columns[36].visible"/>
<el-table-column label="小布使用布料规格" align="center" prop="SmallFabricSpecificationsDic" v-if="columns[37].visible"/>
<el-table-column label="小布使用布料规格" align="center" prop="SmallFabricSpecificationsDic" v-if="columns[37].visible">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
@click="detailsSearch(scope.row,2)"
>查看详情
</el-button>
</template>
</el-table-column>
<el-table-column label="小布宽度" align="center" prop="SmallClothWidth" v-if="columns[38].visible"/>
<el-table-column label="小布布料使用量" align="center" prop="SmallClothUsage" v-if="columns[39].visible"/>
<el-table-column label="小布用布重量" align="center" prop="SmallClothWeight" v-if="columns[40].visible"/>
<el-table-column label="用胶工艺" align="center" prop="GluingProcess" v-if="columns[41].visible"/>
<el-table-column label="上下胶使用胶料" align="center" prop="UpperLowerGlue" v-if="columns[42].visible"/>
<el-table-column label="上下胶使用胶料" align="center" prop="UpperLowerGlue" v-if="columns[42].visible">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
@click="detailsSearch(scope.row,3)"
>查看详情
</el-button>
</template>
</el-table-column>
<el-table-column label="上下胶系数" align="center" prop="UpperLowerGlueCoefficient" v-if="columns[43].visible"/>
<el-table-column label="上下胶标准用胶量" align="center" prop="UpperLowerGlueUsage" v-if="columns[44].visible"/>
<el-table-column label="下胶使用胶料" align="center" prop="LowerGlue" v-if="columns[45].visible"/>
<el-table-column label="下胶使用胶料" align="center" prop="LowerGlue" v-if="columns[45].visible">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
@click="detailsSearch(scope.row,4)"
>查看详情
</el-button>
</template>
</el-table-column>
<el-table-column label="下胶系数" align="center" prop="LowerGlueCoefficient" v-if="columns[46].visible"/>
<el-table-column label="下胶标准用胶量" align="center" prop="LowerGlueUsage" v-if="columns[47].visible"/>
<el-table-column label="大布胶使用胶料" align="center" prop="LargeClothGlue" v-if="columns[48].visible"/>
<el-table-column label="大布胶使用胶料" align="center" prop="LargeClothGlue" v-if="columns[48].visible">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
@click="detailsSearch(scope.row,5)"
>查看详情
</el-button>
</template>
</el-table-column>
<el-table-column label="大布胶系数" align="center" prop="LargeClothGlueCoefficient" v-if="columns[49].visible"/>
<el-table-column label="胶布标准用胶量" align="center" prop="LargeClothGlueUsage" v-if="columns[50].visible"/>
<el-table-column label="上下缓冲胶标准用胶量" align="center" prop="BufferGlueUsage" v-if="columns[51].visible" width="100"/>
<el-table-column label="中间胶" align="center" prop="MiddleGlue" v-if="columns[52].visible"/>
<el-table-column label="中间胶" align="center" prop="MiddleGlue" v-if="columns[52].visible">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
@click="detailsSearch(scope.row,6)"
>查看详情
</el-button>
</template>
</el-table-column>
<el-table-column label="中间胶系数" align="center" prop="MiddleGlueCoefficient" v-if="columns[53].visible"/>
<el-table-column label="中间胶使用量" align="center" prop="MiddleGlueUsage" v-if="columns[54].visible"/>
<el-table-column label="小条宽度" align="center" prop="SmallBarWidth" v-if="columns[55].visible"/>
@ -182,7 +244,9 @@
<el-table-column label="裙边面积" align="center" prop="SkirtArea" v-if="columns[65].visible"/>
<el-table-column label="隔板面积" align="center" prop="PartitionArea" v-if="columns[66].visible"/>
<el-table-column label="挡边带总面积" align="center" prop="EdgeBandingTotalArea" v-if="columns[67].visible"/>
<el-table-column label="钢丝绳输送带工资总面积" align="center" prop="WireropeBeltTotalArea" v-if="columns[68].visible" width="100"/>
<el-table-column label="钢丝绳输送带工资总面积" align="center" prop="WireropeBeltTotalArea" v-if="columns[68].visible"
width="100"
/>
<el-table-column label="创建者" align="center" prop="createdBy" v-if="columns[69].visible"/>
<el-table-column label="创建时间" align="center" prop="createdTime" width="180" v-if="columns[70].visible">
<template slot-scope="scope">
@ -195,26 +259,26 @@
<span>{{ parseTime(scope.row.updatedTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="100">-->
<!-- <template slot-scope="scope">-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-edit"-->
<!-- @click="handleUpdate(scope.row)"-->
<!-- v-hasPermi="['mes/prod:prodOrderDetail:edit']"-->
<!-- >修改-->
<!-- </el-button>-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['mes/prod:prodOrderDetail:remove']"-->
<!-- >删除-->
<!-- </el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="100">-->
<!-- <template slot-scope="scope">-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-edit"-->
<!-- @click="handleUpdate(scope.row)"-->
<!-- v-hasPermi="['mes/prod:prodOrderDetail:edit']"-->
<!-- >修改-->
<!-- </el-button>-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['mes/prod:prodOrderDetail:remove']"-->
<!-- >删除-->
<!-- </el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
<pagination
@ -438,6 +502,46 @@
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 布料 抽屉 -->
<el-drawer
:title="clothTitle"
:visible.sync="clothTable"
direction="rtl"
size="30%"
>
<el-form ref="form" :model="form" label-width="100px">
<el-form-item label="材料编号:">{{ clothData.MaterialNo }}</el-form-item>
<el-form-item label="材料名称:">{{ clothData.MaterialName }}</el-form-item>
<el-form-item label="材料规格:">{{ clothData.MaterialSpecification }}</el-form-item>
<el-form-item label="材料大类:">{{ clothData.MaterialLargeCategories }}</el-form-item>
<el-form-item label="材料小类:">{{ clothData.MaterialSmallCategories }}</el-form-item>
</el-form>
</el-drawer>
<!-- 胶料 抽屉 -->
<el-drawer
:title="glueTitle"
:visible.sync="glueTable"
direction="rtl"
size="50%"
>
<el-form ref="form" :model="form" label-width="150px">
<el-form-item label="加促后重量合计:">{{ glueData.AfterPromotionTotalWeight }}</el-form-item>
</el-form>
<el-table :data="glueData.MaterialList_1">
<el-table-column property="MaterialNo" label="第一次投料材料编号"></el-table-column>
<el-table-column property="MaterialName" label="材料名称"></el-table-column>
<el-table-column property="MaterialSpecification" label="材料规格"></el-table-column>
<el-table-column property="EnterSecondLaneWeight" label="进入二道时重量KG"></el-table-column>
</el-table>
<el-table :data="glueData.MaterialList_2">
<el-table-column property="MaterialNo" label="第二次投料材料编号"></el-table-column>
<el-table-column property="MaterialName" label="材料名称"></el-table-column>
<el-table-column property="MaterialSpecification" label="材料规格"></el-table-column>
<el-table-column property="ProductionRequiresWeight" label="生产需要重量kg"></el-table-column>
</el-table>
</el-drawer>
</div>
</template>
@ -454,6 +558,13 @@ export default {
name: 'ProdOrderDetail',
data() {
return {
//
clothTable: false,
clothData: {},
clothTitle: '',
glueTable: false,
glueData: {},
glueTitle: '',
//
loading: true,
//
@ -556,14 +667,14 @@ export default {
//
rules: {
objId: [
{ required: true, message: ' 主键标识不能为空', trigger: 'blur' }
{ required: true, message: '主键标识不能为空', trigger: 'blur' }
],
SeqNo: [
{ required: true, message: '任务编号不能为空', trigger: 'blur' }
]
},
columns: [
{ key: 0, label: ` 主键标识`, visible: false },
{ key: 0, label: `主键标识`, visible: false },
{ key: 1, label: `任务编号`, visible: true },
{ key: 2, label: `下单日期`, visible: true },
{ key: 3, label: `交货日期`, visible: true },
@ -640,6 +751,10 @@ export default {
}
},
created() {
const orderCode = this.$route.params && this.$route.params.orderCode;
if (orderCode != null){
this.queryParams.SeqNo = orderCode;
}
this.getList()
},
methods: {
@ -794,6 +909,53 @@ export default {
}
})
},
//
detailsSearch(row, type) {
this.clothData = {};
this.glueData = {};
if (type === 1) {
this.clothTable = true
this.clothData = JSON.parse(row.FabricSpecifications)
this.clothTitle = '布料规格|任务编号:' + row.SeqNo
return
}
if (type === 2) {
this.clothTable = true
this.clothData = JSON.parse(row.SmallFabricSpecificationsDic)
this.clothTitle = '小布使用布料规格|任务编号:' + row.SeqNo
return
}
if ([3, 4, 5, 6].includes(type)) {
if (type === 3){
this.glueData = JSON.parse(row.UpperLowerGlue)
this.glueTitle = '上下胶使用胶料|任务编号:' + row.SeqNo
} else if (type === 4) {
this.glueData = JSON.parse(row.LowerGlue)
this.glueTitle = '下胶使用胶料|任务编号:' + row.SeqNo
} else if (type === 5) {
this.glueData = JSON.parse(row.LargeClothGlue)
this.glueTitle = '大布胶使用胶料|任务编号:' + row.SeqNo
} else if (type === 6) {
this.glueData = JSON.parse(row.MiddleGlue)
this.glueTitle = '中间胶|任务编号:' + row.SeqNo
}
this.glueData.MaterialList_1.forEach(item => {
item.MaterialName = item.Material.MaterialName
item.MaterialSpecification = item.Material.MaterialSpecification
item.MaterialLargeCategories = item.Material.MaterialLargeCategories
item.MaterialSmallCategories = item.Material.MaterialSmallCategories
})
this.glueData.MaterialList_2.forEach(item => {
item.MaterialName = item.Material.MaterialName
item.MaterialSpecification = item.Material.MaterialSpecification
item.MaterialLargeCategories = item.Material.MaterialLargeCategories
item.MaterialSmallCategories = item.Material.MaterialSmallCategories
})
this.glueTable = true
}
},
/** 删除按钮操作 */
handleDelete(row) {
const objIds = row.objId || this.ids

@ -205,12 +205,19 @@
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="100" fixed="right">
<template slot-scope="scope">
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-bottom"-->
<!-- @click="handleReleasePlan(scope.row)"-->
<!-- >订单下达-->
<!-- </el-button>-->
<el-button
size="mini"
type="text"
icon="el-icon-bottom"
@click="handleReleasePlan(scope.row)"
>订单下达
icon="el-icon-right"
@click="handlePlanDetails(scope.row)"
>查看明细
</el-button>
<!-- <el-button-->
<!-- size="mini"-->
@ -465,12 +472,7 @@ export default {
isRelease: null,
workCenterCode: null,
routingCode: null,
printName: null,
isFlag: null,
createdBy: null,
createdTime: null,
updatedBy: null,
updatedTime: null
printName: null
},
//
form: {},
@ -513,7 +515,7 @@ export default {
},
created() {
if (this.$route.params != null){
this.queryParams = this.$route.params
this.queryParams.params = this.$route.params
}
this.getList()
},
@ -540,6 +542,12 @@ export default {
this.$tab.closeOpenPage(router.currentRoute);
this.$tab.openPage("订单[" + orderCode + "]下达", '/mes/release-order/index/' + objId, {});
},
/** 查看明细 */
handlePlanDetails(row) {
const params = {orderCode: row.orderCode};
// this.$tab.closeOpenPage(router.currentRoute);
this.$tab.openPage("任务[" + row.orderCode + "]订单明细", '/mes/prodOrder-detail/index/' + row.orderCode, {});
},
//
cancel() {
this.open = false

@ -0,0 +1,824 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item label="任务编号" prop="taskCode">
<el-input
v-model="queryParams.taskCode"
placeholder="请输入任务编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="计划流水号" prop="seqNo">
<el-input
v-model="queryParams.seqNo"
placeholder="请输入计划流水号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="计划开始时间">
<el-date-picker
v-model="daterangePlanStartTime"
style="width: 340px"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetimerange"
range-separator="-"
start-placeholder="开始时间"
end-placeholder="结束时间"
></el-date-picker>
</el-form-item>
<!-- <el-form-item label="计划结束时间">-->
<!-- <el-date-picker-->
<!-- v-model="daterangePlanEndTime"-->
<!-- style="width: 340px"-->
<!-- value-format="yyyy-MM-dd HH:mm:ss"-->
<!-- type="datetimerange"-->
<!-- range-separator="-"-->
<!-- start-placeholder="开始时间"-->
<!-- end-placeholder="结束时间"-->
<!-- ></el-date-picker>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="关联资源" prop="associationResource">-->
<!-- <el-input-->
<!-- v-model="queryParams.associationResource"-->
<!-- placeholder="请输入关联资源"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="班组名称" prop="teamName">
<el-input
v-model="queryParams.teamName"
placeholder="请输入班组名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="primary"-->
<!-- plain-->
<!-- icon="el-icon-plus"-->
<!-- size="mini"-->
<!-- @click="handleAdd"-->
<!-- v-hasPermi="['mes/prod:prodPlanErpInfo:add']"-->
<!-- >新增-->
<!-- </el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="success"-->
<!-- plain-->
<!-- icon="el-icon-edit"-->
<!-- size="mini"-->
<!-- :disabled="single"-->
<!-- @click="handleUpdate"-->
<!-- v-hasPermi="['mes/prod:prodPlanErpInfo:edit']"-->
<!-- >修改-->
<!-- </el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="danger"-->
<!-- plain-->
<!-- icon="el-icon-delete"-->
<!-- size="mini"-->
<!-- :disabled="multiple"-->
<!-- @click="handleDelete"-->
<!-- v-hasPermi="['mes/prod:prodPlanErpInfo:remove']"-->
<!-- >删除-->
<!-- </el-button>-->
<!-- </el-col>-->
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['mes/prod:prodPlanErpInfo:export']"
>导出
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="prodPlanErpInfoList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="主键标识" align="center" prop="objId" v-if="columns[0].visible"/>
<el-table-column label="硬件" align="center" prop="hardware" v-if="columns[1].visible"/>
<el-table-column label="软件" align="center" prop="software" v-if="columns[2].visible"/>
<el-table-column label="阶段文字" align="center" prop="stageText" v-if="columns[3].visible"/>
<el-table-column label="任务编号" align="center" prop="taskCode" v-if="columns[25].visible" width="140"/>
<el-table-column label="计划流水号" align="center" prop="seqNo" v-if="columns[4].visible" width="240"/>
<el-table-column label="计划开始时间" align="center" prop="planStartTime" width="180" v-if="columns[5].visible">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.planStartTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="计划结束时间" align="center" prop="planEndTime" width="180" v-if="columns[6].visible">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.planEndTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="关联资源" align="center" prop="associationResource" v-if="columns[7].visible"/>
<el-table-column label="工作效率" align="center" prop="workingEfficiency" v-if="columns[8].visible"/>
<el-table-column label="设备码" align="center" prop="equipmentNo" v-if="columns[9].visible" width="100"/>
<el-table-column label="准备时间" align="center" prop="preparationDuration" v-if="columns[10].visible"/>
<el-table-column label="收尾时间" align="center" prop="windUpDuration" v-if="columns[11].visible"/>
<el-table-column label="出布最小速度" align="center" prop="clothMinimumSpeed" v-if="columns[12].visible"/>
<el-table-column label="出布最大速度" align="center" prop="clothMaximumSpeed" v-if="columns[13].visible"/>
<el-table-column label="成型最小速度" align="center" prop="formingMinimumSpeed" v-if="columns[14].visible"/>
<el-table-column label="成型最大速度" align="center" prop="formingMaximumSpeed" v-if="columns[15].visible"/>
<el-table-column label="包胶最小速度" align="center" prop="glueMinimumSpeed" v-if="columns[16].visible"/>
<el-table-column label="包胶最大速度" align="center" prop="glueMaximumSpeed" v-if="columns[17].visible"/>
<el-table-column label="每锅硫化米数" align="center" prop="sulfurizationLength" v-if="columns[18].visible"/>
<el-table-column label="硫化机类型" align="center" prop="vulcanizingMachineType" v-if="columns[19].visible"/>
<el-table-column label="硫化板层数" align="center" prop="vulcanizedBoardNumber" v-if="columns[20].visible"/>
<el-table-column label="资源名称" align="center" prop="resourceName" v-if="columns[21].visible"/>
<el-table-column label="工艺阶段" align="center" prop="processStage" v-if="columns[22].visible"/>
<el-table-column label="前置工艺" align="center" prop="preProcess" v-if="columns[23].visible"/>
<el-table-column label="发布订单" align="center" prop="releaseOrder" v-if="columns[24].visible"/>
<el-table-column label="输送带长度规格" align="center" prop="conveyorLengthSpecification" v-if="columns[26].visible"/>
<el-table-column label="上胶厚度" align="center" prop="upGlueThickness" v-if="columns[27].visible"/>
<el-table-column label="上缓冲胶厚度" align="center" prop="upBufferGlueThickness" v-if="columns[28].visible"/>
<el-table-column label="下胶厚度" align="center" prop="belowGlueThickness" v-if="columns[29].visible"/>
<el-table-column label="下缓冲胶厚度" align="center" prop="belowBufferGlueThickness" v-if="columns[30].visible"/>
<el-table-column label="输送带宽度" align="center" prop="beltWidth" v-if="columns[31].visible"/>
<el-table-column label="客户要求输送带长度" align="center" prop="customerRequestConveyorLength"
v-if="columns[32].visible" width="100"
/>
<el-table-column label="压延生产米数" align="center" prop="rollingProductionMeters" v-if="columns[33].visible"/>
<el-table-column label="需要硫化米数" align="center" prop="vulcanizationMeters" v-if="columns[34].visible"/>
<el-table-column label="推荐硫化时间" align="center" prop="recommendVulcanizationTime" v-if="columns[35].visible"/>
<el-table-column label="出大布米数" align="center" prop="largeClothMeters" v-if="columns[36].visible"/>
<el-table-column label="出小布米数" align="center" prop="smallClothMeters" v-if="columns[37].visible"/>
<el-table-column label="包胶米数" align="center" prop="encapsulationMeters" v-if="columns[38].visible"/>
<el-table-column label="工作速度" align="center" prop="workSpeed" v-if="columns[39].visible"/>
<el-table-column label="需要工时" align="center" prop="workingHours" v-if="columns[40].visible"/>
<el-table-column label="出布面积" align="center" prop="distributionArea" v-if="columns[41].visible"/>
<el-table-column label="包胶面积" align="center" prop="encapsulationArea" v-if="columns[42].visible"/>
<el-table-column label="硫化面积" align="center" prop="vulcanizationArea" v-if="columns[43].visible"/>
<el-table-column label="输送带总面积" align="center" prop="conveyorTotalArea" v-if="columns[44].visible"/>
<el-table-column label="胶料工艺" align="center" prop="glueProcess" v-if="columns[45].visible"/>
<el-table-column label="上胶使用胶料" align="center" prop="upGlue" v-if="columns[46].visible"/>
<el-table-column label="上胶系数" align="center" prop="upGlueCoefficient" v-if="columns[47].visible"/>
<el-table-column label="上胶标准用胶量" align="center" prop="upGlueDosage" v-if="columns[48].visible"/>
<el-table-column label="下胶使用胶料" align="center" prop="belowGlue" v-if="columns[49].visible"/>
<el-table-column label="下胶系数" align="center" prop="belowGlueCoefficient" v-if="columns[50].visible"/>
<el-table-column label="下胶标准用胶量" align="center" prop="belowGlueDosage" v-if="columns[51].visible"/>
<el-table-column label="缓冲/布胶使用胶料" align="center" prop="bufferGlue" v-if="columns[52].visible"/>
<el-table-column label="缓冲胶系数" align="center" prop="bufferGlueCoefficient" v-if="columns[53].visible"/>
<el-table-column label="缓冲胶标准用胶量" align="center" prop="bufferGlueDosage" v-if="columns[54].visible"/>
<el-table-column label="大布布料规格" align="center" prop="largeClothSpecifications" v-if="columns[55].visible"/>
<el-table-column label="大布擦胶系数" align="center" prop="largeClothFrictioningCoefficient"
v-if="columns[56].visible"
/>
<el-table-column label="胶布标准用胶量" align="center" prop="largeClothDosage" v-if="columns[57].visible"/>
<el-table-column label="中间胶使用胶料" align="center" prop="middleGlue" v-if="columns[58].visible"/>
<el-table-column label="中间胶系数" align="center" prop="middleGlueCoefficient" v-if="columns[59].visible"/>
<el-table-column label="中间胶标准用胶量" align="center" prop="middleGlueDosage" v-if="columns[60].visible"/>
<el-table-column label="设备使用限制" align="center" prop="deviceUsageRestrictions" v-if="columns[61].visible"/>
<el-table-column label="判断工段" align="center" prop="workshopSection" v-if="columns[62].visible"/>
<el-table-column label="班次" align="center" prop="classes" v-if="columns[63].visible"/>
<el-table-column label="参加任务小组" align="center" prop="taskForce" v-if="columns[64].visible"/>
<el-table-column label="班组名称" align="center" prop="teamName" v-if="columns[65].visible"/>
<el-table-column label="组长" align="center" prop="groupLeader" v-if="columns[66].visible"/>
<el-table-column label="人员活动详情" align="center" prop="personnelOperationDetails" v-if="columns[67].visible"/>
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="100">-->
<!-- <template slot-scope="scope">-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-edit"-->
<!-- @click="handleUpdate(scope.row)"-->
<!-- v-hasPermi="['mes/prod:prodPlanErpInfo:edit']"-->
<!-- >修改-->
<!-- </el-button>-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['mes/prod:prodPlanErpInfo:remove']"-->
<!-- >删除-->
<!-- </el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改生产计划信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="硬件" prop="hardware">
<el-input v-model="form.hardware" placeholder="请输入硬件"/>
</el-form-item>
<el-form-item label="软件" prop="software">
<el-input v-model="form.software" placeholder="请输入软件"/>
</el-form-item>
<el-form-item label="阶段文字" prop="stageText">
<el-input v-model="form.stageText" placeholder="请输入阶段文字"/>
</el-form-item>
<el-form-item label="计划流水号" prop="seqNo">
<el-input v-model="form.seqNo" placeholder="请输入计划流水号" />
</el-form-item>
<el-form-item label="计划开始时间" prop="planStartTime">
<el-date-picker clearable
v-model="form.planStartTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择计划开始时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="计划结束时间" prop="planEndTime">
<el-date-picker clearable
v-model="form.planEndTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择计划结束时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="关联资源" prop="associationResource">
<el-input v-model="form.associationResource" placeholder="请输入关联资源"/>
</el-form-item>
<el-form-item label="工作效率" prop="workingEfficiency">
<el-input v-model="form.workingEfficiency" placeholder="请输入工作效率"/>
</el-form-item>
<el-form-item label="设备码" prop="equipmentNo">
<el-input v-model="form.equipmentNo" placeholder="请输入设备码"/>
</el-form-item>
<el-form-item label="准备时间" prop="preparationDuration">
<el-input v-model="form.preparationDuration" placeholder="请输入准备时间"/>
</el-form-item>
<el-form-item label="收尾时间" prop="windUpDuration">
<el-input v-model="form.windUpDuration" placeholder="请输入收尾时间"/>
</el-form-item>
<el-form-item label="出布最小速度" prop="clothMinimumSpeed">
<el-input v-model="form.clothMinimumSpeed" placeholder="请输入出布最小速度"/>
</el-form-item>
<el-form-item label="出布最大速度" prop="clothMaximumSpeed">
<el-input v-model="form.clothMaximumSpeed" placeholder="请输入出布最大速度"/>
</el-form-item>
<el-form-item label="成型最小速度" prop="formingMinimumSpeed">
<el-input v-model="form.formingMinimumSpeed" placeholder="请输入成型最小速度"/>
</el-form-item>
<el-form-item label="成型最大速度" prop="formingMaximumSpeed">
<el-input v-model="form.formingMaximumSpeed" placeholder="请输入成型最大速度"/>
</el-form-item>
<el-form-item label="包胶最小速度" prop="glueMinimumSpeed">
<el-input v-model="form.glueMinimumSpeed" placeholder="请输入包胶最小速度"/>
</el-form-item>
<el-form-item label="包胶最大速度" prop="glueMaximumSpeed">
<el-input v-model="form.glueMaximumSpeed" placeholder="请输入包胶最大速度"/>
</el-form-item>
<el-form-item label="每锅硫化米数" prop="sulfurizationLength">
<el-input v-model="form.sulfurizationLength" placeholder="请输入每锅硫化米数"/>
</el-form-item>
<el-form-item label="硫化板层数" prop="vulcanizedBoardNumber">
<el-input v-model="form.vulcanizedBoardNumber" placeholder="请输入硫化板层数"/>
</el-form-item>
<el-form-item label="资源名称" prop="resourceName">
<el-input v-model="form.resourceName" placeholder="请输入资源名称"/>
</el-form-item>
<el-form-item label="工艺阶段" prop="processStage">
<el-input v-model="form.processStage" placeholder="请输入工艺阶段"/>
</el-form-item>
<el-form-item label="前置工艺" prop="preProcess">
<el-input v-model="form.preProcess" placeholder="请输入前置工艺"/>
</el-form-item>
<el-form-item label="发布订单" prop="releaseOrder">
<el-input v-model="form.releaseOrder" placeholder="请输入发布订单"/>
</el-form-item>
<el-form-item label="任务编号" prop="taskCode">
<el-input v-model="form.taskCode" placeholder="请输入任务编号"/>
</el-form-item>
<el-form-item label="输送带长度规格" prop="conveyorLengthSpecification">
<el-input v-model="form.conveyorLengthSpecification" placeholder="请输入输送带长度规格"/>
</el-form-item>
<el-form-item label="上胶厚度" prop="upGlueThickness">
<el-input v-model="form.upGlueThickness" placeholder="请输入上胶厚度"/>
</el-form-item>
<el-form-item label="上缓冲胶厚度" prop="upBufferGlueThickness">
<el-input v-model="form.upBufferGlueThickness" placeholder="请输入上缓冲胶厚度"/>
</el-form-item>
<el-form-item label="下胶厚度" prop="belowGlueThickness">
<el-input v-model="form.belowGlueThickness" placeholder="请输入下胶厚度"/>
</el-form-item>
<el-form-item label="下缓冲胶厚度" prop="belowBufferGlueThickness">
<el-input v-model="form.belowBufferGlueThickness" placeholder="请输入下缓冲胶厚度"/>
</el-form-item>
<el-form-item label="输送带宽度" prop="beltWidth">
<el-input v-model="form.beltWidth" placeholder="请输入输送带宽度"/>
</el-form-item>
<el-form-item label="客户要求输送带长度" prop="customerRequestConveyorLength">
<el-input v-model="form.customerRequestConveyorLength" placeholder="请输入客户要求输送带长度"/>
</el-form-item>
<el-form-item label="压延生产米数" prop="rollingProductionMeters">
<el-input v-model="form.rollingProductionMeters" placeholder="请输入压延生产米数"/>
</el-form-item>
<el-form-item label="需要硫化米数" prop="vulcanizationMeters">
<el-input v-model="form.vulcanizationMeters" placeholder="请输入需要硫化米数"/>
</el-form-item>
<el-form-item label="推荐硫化时间" prop="recommendVulcanizationTime">
<el-input v-model="form.recommendVulcanizationTime" placeholder="请输入推荐硫化时间"/>
</el-form-item>
<el-form-item label="出大布米数" prop="largeClothMeters">
<el-input v-model="form.largeClothMeters" placeholder="请输入出大布米数"/>
</el-form-item>
<el-form-item label="出小布米数" prop="smallClothMeters">
<el-input v-model="form.smallClothMeters" placeholder="请输入出小布米数"/>
</el-form-item>
<el-form-item label="包胶米数" prop="encapsulationMeters">
<el-input v-model="form.encapsulationMeters" placeholder="请输入包胶米数"/>
</el-form-item>
<el-form-item label="工作速度" prop="workSpeed">
<el-input v-model="form.workSpeed" placeholder="请输入工作速度"/>
</el-form-item>
<el-form-item label="需要工时" prop="workingHours">
<el-input v-model="form.workingHours" placeholder="请输入需要工时"/>
</el-form-item>
<el-form-item label="出布面积" prop="distributionArea">
<el-input v-model="form.distributionArea" placeholder="请输入出布面积"/>
</el-form-item>
<el-form-item label="包胶面积" prop="encapsulationArea">
<el-input v-model="form.encapsulationArea" placeholder="请输入包胶面积"/>
</el-form-item>
<el-form-item label="硫化面积" prop="vulcanizationArea">
<el-input v-model="form.vulcanizationArea" placeholder="请输入硫化面积"/>
</el-form-item>
<el-form-item label="输送带总面积" prop="conveyorTotalArea">
<el-input v-model="form.conveyorTotalArea" placeholder="请输入输送带总面积"/>
</el-form-item>
<el-form-item label="胶料工艺" prop="glueProcess">
<el-input v-model="form.glueProcess" placeholder="请输入胶料工艺"/>
</el-form-item>
<el-form-item label="上胶使用胶料" prop="upGlue">
<el-input v-model="form.upGlue" placeholder="请输入上胶使用胶料"/>
</el-form-item>
<el-form-item label="上胶系数" prop="upGlueCoefficient">
<el-input v-model="form.upGlueCoefficient" placeholder="请输入上胶系数"/>
</el-form-item>
<el-form-item label="上胶标准用胶量" prop="upGlueDosage">
<el-input v-model="form.upGlueDosage" placeholder="请输入上胶标准用胶量"/>
</el-form-item>
<el-form-item label="下胶使用胶料" prop="belowGlue">
<el-input v-model="form.belowGlue" placeholder="请输入下胶使用胶料"/>
</el-form-item>
<el-form-item label="下胶系数" prop="belowGlueCoefficient">
<el-input v-model="form.belowGlueCoefficient" placeholder="请输入下胶系数"/>
</el-form-item>
<el-form-item label="下胶标准用胶量" prop="belowGlueDosage">
<el-input v-model="form.belowGlueDosage" placeholder="请输入下胶标准用胶量"/>
</el-form-item>
<el-form-item label="缓冲/布胶使用胶料" prop="bufferGlue">
<el-input v-model="form.bufferGlue" placeholder="请输入缓冲/布胶使用胶料"/>
</el-form-item>
<el-form-item label="缓冲胶系数" prop="bufferGlueCoefficient">
<el-input v-model="form.bufferGlueCoefficient" placeholder="请输入缓冲胶系数"/>
</el-form-item>
<el-form-item label="缓冲胶标准用胶量" prop="bufferGlueDosage">
<el-input v-model="form.bufferGlueDosage" placeholder="请输入缓冲胶标准用胶量"/>
</el-form-item>
<el-form-item label="大布布料规格" prop="largeClothSpecifications">
<el-input v-model="form.largeClothSpecifications" placeholder="请输入大布布料规格"/>
</el-form-item>
<el-form-item label="大布擦胶系数" prop="largeClothFrictioningCoefficient">
<el-input v-model="form.largeClothFrictioningCoefficient" placeholder="请输入大布擦胶系数"/>
</el-form-item>
<el-form-item label="胶布标准用胶量" prop="largeClothDosage">
<el-input v-model="form.largeClothDosage" placeholder="请输入胶布标准用胶量"/>
</el-form-item>
<el-form-item label="中间胶使用胶料" prop="middleGlue">
<el-input v-model="form.middleGlue" placeholder="请输入中间胶使用胶料"/>
</el-form-item>
<el-form-item label="中间胶系数" prop="middleGlueCoefficient">
<el-input v-model="form.middleGlueCoefficient" placeholder="请输入中间胶系数"/>
</el-form-item>
<el-form-item label="中间胶标准用胶量" prop="middleGlueDosage">
<el-input v-model="form.middleGlueDosage" placeholder="请输入中间胶标准用胶量"/>
</el-form-item>
<el-form-item label="设备使用限制" prop="deviceUsageRestrictions">
<el-input v-model="form.deviceUsageRestrictions" placeholder="请输入设备使用限制"/>
</el-form-item>
<el-form-item label="判断工段" prop="workshopSection">
<el-input v-model="form.workshopSection" placeholder="请输入判断工段"/>
</el-form-item>
<el-form-item label="班次" prop="classes">
<el-input v-model="form.classes" placeholder="请输入班次"/>
</el-form-item>
<el-form-item label="参加任务小组" prop="taskForce">
<el-input v-model="form.taskForce" placeholder="请输入参加任务小组"/>
</el-form-item>
<el-form-item label="班组名称" prop="teamName">
<el-input v-model="form.teamName" placeholder="请输入班组名称"/>
</el-form-item>
<el-form-item label="组长" prop="groupLeader">
<el-input v-model="form.groupLeader" placeholder="请输入组长"/>
</el-form-item>
<el-form-item label="人员活动详情" prop="personnelOperationDetails">
<el-input v-model="form.personnelOperationDetails" placeholder="请输入人员活动详情"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listProdPlanErpInfo,
getProdPlanErpInfo,
delProdPlanErpInfo,
addProdPlanErpInfo,
updateProdPlanErpInfo
} from '@/api/mes/prod/prodPlanErpInfo'
export default {
name: 'ProdPlanErpInfo',
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
prodPlanErpInfoList: [],
//
title: '',
//
open: false,
//
daterangePlanStartTime: [],
//
daterangePlanEndTime: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
hardware: null,
software: null,
stageText: null,
seqNo: null,
planStartTime: null,
planEndTime: null,
associationResource: null,
workingEfficiency: null,
equipmentNo: null,
preparationDuration: null,
windUpDuration: null,
clothMinimumSpeed: null,
clothMaximumSpeed: null,
formingMinimumSpeed: null,
formingMaximumSpeed: null,
glueMinimumSpeed: null,
glueMaximumSpeed: null,
sulfurizationLength: null,
vulcanizingMachineType: null,
vulcanizedBoardNumber: null,
resourceName: null,
processStage: null,
preProcess: null,
releaseOrder: null,
taskCode: null,
conveyorLengthSpecification: null,
upGlueThickness: null,
upBufferGlueThickness: null,
belowGlueThickness: null,
belowBufferGlueThickness: null,
beltWidth: null,
customerRequestConveyorLength: null,
rollingProductionMeters: null,
vulcanizationMeters: null,
recommendVulcanizationTime: null,
largeClothMeters: null,
smallClothMeters: null,
encapsulationMeters: null,
workSpeed: null,
workingHours: null,
distributionArea: null,
encapsulationArea: null,
vulcanizationArea: null,
conveyorTotalArea: null,
glueProcess: null,
upGlue: null,
upGlueCoefficient: null,
upGlueDosage: null,
belowGlue: null,
belowGlueCoefficient: null,
belowGlueDosage: null,
bufferGlue: null,
bufferGlueCoefficient: null,
bufferGlueDosage: null,
largeClothSpecifications: null,
largeClothFrictioningCoefficient: null,
largeClothDosage: null,
middleGlue: null,
middleGlueCoefficient: null,
middleGlueDosage: null,
deviceUsageRestrictions: null,
workshopSection: null,
classes: null,
taskForce: null,
teamName: null,
groupLeader: null,
personnelOperationDetails: null
},
//
form: {},
//
rules: {
objId: [
{ required: true, message: '主键标识不能为空', trigger: 'blur' }
],
seqNo: [
{ required: true, message: '计划流水号不能为空', trigger: 'blur' }
]
},
columns: [
{ key: 0, label: `主键标识`, visible: false },
{ key: 1, label: `硬件`, visible: true },
{ key: 2, label: `软件`, visible: true },
{ key: 3, label: `阶段文字`, visible: true },
{ key: 4, label: `计划流水号`, visible: true },
{ key: 5, label: `计划开始时间`, visible: true },
{ key: 6, label: `计划结束时间`, visible: true },
{ key: 7, label: `关联资源`, visible: true },
{ key: 8, label: `工作效率`, visible: true },
{ key: 9, label: `设备码`, visible: true },
{ key: 10, label: `准备时间`, visible: true },
{ key: 11, label: `收尾时间`, visible: true },
{ key: 12, label: `出布最小速度`, visible: true },
{ key: 13, label: `出布最大速度`, visible: true },
{ key: 14, label: `成型最小速度`, visible: true },
{ key: 15, label: `成型最大速度`, visible: true },
{ key: 16, label: `包胶最小速度`, visible: true },
{ key: 17, label: `包胶最大速度`, visible: true },
{ key: 18, label: `每锅硫化米数`, visible: true },
{ key: 19, label: `硫化机类型`, visible: true },
{ key: 20, label: `硫化板层数`, visible: true },
{ key: 21, label: `资源名称`, visible: true },
{ key: 22, label: `工艺阶段`, visible: true },
{ key: 23, label: `前置工艺`, visible: true },
{ key: 24, label: `发布订单`, visible: true },
{ key: 25, label: `任务编号`, visible: true },
{ key: 26, label: `输送带长度规格`, visible: true },
{ key: 27, label: `上胶厚度`, visible: true },
{ key: 28, label: `上缓冲胶厚度`, visible: true },
{ key: 29, label: `下胶厚度`, visible: true },
{ key: 30, label: `下缓冲胶厚度`, visible: true },
{ key: 31, label: `输送带宽度`, visible: true },
{ key: 32, label: `客户要求输送带长度`, visible: true },
{ key: 33, label: `压延生产米数`, visible: true },
{ key: 34, label: `需要硫化米数`, visible: true },
{ key: 35, label: `推荐硫化时间`, visible: true },
{ key: 36, label: `出大布米数`, visible: true },
{ key: 37, label: `出小布米数`, visible: true },
{ key: 38, label: `包胶米数`, visible: true },
{ key: 39, label: `工作速度`, visible: true },
{ key: 40, label: `需要工时`, visible: true },
{ key: 41, label: `出布面积`, visible: true },
{ key: 42, label: `包胶面积`, visible: true },
{ key: 43, label: `硫化面积`, visible: true },
{ key: 44, label: `输送带总面积`, visible: true },
{ key: 45, label: `胶料工艺`, visible: true },
{ key: 46, label: `上胶使用胶料`, visible: true },
{ key: 47, label: `上胶系数`, visible: true },
{ key: 48, label: `上胶标准用胶量`, visible: true },
{ key: 49, label: `下胶使用胶料`, visible: true },
{ key: 50, label: `下胶系数`, visible: true },
{ key: 51, label: `下胶标准用胶量`, visible: true },
{ key: 52, label: `缓冲/布胶使用胶料`, visible: true },
{ key: 53, label: `缓冲胶系数`, visible: true },
{ key: 54, label: `缓冲胶标准用胶量`, visible: true },
{ key: 55, label: `大布布料规格`, visible: true },
{ key: 56, label: `大布擦胶系数`, visible: true },
{ key: 57, label: `胶布标准用胶量`, visible: true },
{ key: 58, label: `中间胶使用胶料`, visible: true },
{ key: 59, label: `中间胶系数`, visible: true },
{ key: 60, label: `中间胶标准用胶量`, visible: true },
{ key: 61, label: `设备使用限制`, visible: true },
{ key: 62, label: `判断工段`, visible: true },
{ key: 63, label: `班次`, visible: true },
{ key: 64, label: `参加任务小组`, visible: true },
{ key: 65, label: `班组名称`, visible: true },
{ key: 66, label: `组长`, visible: true },
{ key: 67, label: `人员活动详情`, visible: true },
{ key: 68, label: `创建人`, visible: false },
{ key: 69, label: `创建时间`, visible: false },
{ key: 70, label: `更新人`, visible: false },
{ key: 71, label: `更新时间`, visible: false }
]
}
},
created() {
const planCode = this.$route.params && this.$route.params.planCode;
if (planCode != null){
this.queryParams.seqNo = planCode;
}
this.getList()
},
methods: {
/** 查询生产计划信息列表 */
getList() {
this.loading = true
this.queryParams.params = {}
if (null != this.daterangePlanStartTime && '' != this.daterangePlanStartTime) {
this.queryParams.params['beginPlanStartTime'] = this.daterangePlanStartTime[0]
this.queryParams.params['endPlanStartTime'] = this.daterangePlanStartTime[1]
}
if (null != this.daterangePlanEndTime && '' != this.daterangePlanEndTime) {
this.queryParams.params['beginPlanEndTime'] = this.daterangePlanEndTime[0]
this.queryParams.params['endPlanEndTime'] = this.daterangePlanEndTime[1]
}
listProdPlanErpInfo(this.queryParams).then(response => {
this.prodPlanErpInfoList = response.rows
this.total = response.total
this.loading = false
})
},
//
cancel() {
this.open = false
this.reset()
},
//
reset() {
this.form = {
objId: null,
hardware: null,
software: null,
stageText: null,
seqNo: null,
planStartTime: null,
planEndTime: null,
associationResource: null,
workingEfficiency: null,
equipmentNo: null,
preparationDuration: null,
windUpDuration: null,
clothMinimumSpeed: null,
clothMaximumSpeed: null,
formingMinimumSpeed: null,
formingMaximumSpeed: null,
glueMinimumSpeed: null,
glueMaximumSpeed: null,
sulfurizationLength: null,
vulcanizingMachineType: null,
vulcanizedBoardNumber: null,
resourceName: null,
processStage: null,
preProcess: null,
releaseOrder: null,
taskCode: null,
conveyorLengthSpecification: null,
upGlueThickness: null,
upBufferGlueThickness: null,
belowGlueThickness: null,
belowBufferGlueThickness: null,
beltWidth: null,
customerRequestConveyorLength: null,
rollingProductionMeters: null,
vulcanizationMeters: null,
recommendVulcanizationTime: null,
largeClothMeters: null,
smallClothMeters: null,
encapsulationMeters: null,
workSpeed: null,
workingHours: null,
distributionArea: null,
encapsulationArea: null,
vulcanizationArea: null,
conveyorTotalArea: null,
glueProcess: null,
upGlue: null,
upGlueCoefficient: null,
upGlueDosage: null,
belowGlue: null,
belowGlueCoefficient: null,
belowGlueDosage: null,
bufferGlue: null,
bufferGlueCoefficient: null,
bufferGlueDosage: null,
largeClothSpecifications: null,
largeClothFrictioningCoefficient: null,
largeClothDosage: null,
middleGlue: null,
middleGlueCoefficient: null,
middleGlueDosage: null,
deviceUsageRestrictions: null,
workshopSection: null,
classes: null,
taskForce: null,
teamName: null,
groupLeader: null,
personnelOperationDetails: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null
}
this.resetForm('form')
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.daterangePlanStartTime = []
this.daterangePlanEndTime = []
this.resetForm('queryForm')
this.handleQuery()
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.objId)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset()
this.open = true
this.title = '添加生产计划信息'
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset()
const objId = row.objId || this.ids
getProdPlanErpInfo(objId).then(response => {
this.form = response.data
this.open = true
this.title = '修改生产计划信息'
})
},
/** 提交按钮 */
submitForm() {
this.$refs['form'].validate(valid => {
if (valid) {
if (this.form.objId != null) {
updateProdPlanErpInfo(this.form).then(response => {
this.$modal.msgSuccess('修改成功')
this.open = false
this.getList()
})
} else {
addProdPlanErpInfo(this.form).then(response => {
this.$modal.msgSuccess('新增成功')
this.open = false
this.getList()
})
}
}
})
},
/** 删除按钮操作 */
handleDelete(row) {
const objIds = row.objId || this.ids
this.$modal.confirm('是否确认删除生产计划信息编号为"' + objIds + '"的数据项?').then(function() {
return delProdPlanErpInfo(objIds)
}).then(() => {
this.getList()
this.$modal.msgSuccess('删除成功')
}).catch(() => {
})
},
/** 导出按钮操作 */
handleExport() {
this.download('mes/prod/prodPlanErpInfo/export', {
...this.queryParams
}, `prodPlanErpInfo_${new Date().getTime()}.xlsx`)
}
}
}
</script>

@ -17,30 +17,30 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="物料编号" prop="materialCode">
<el-input
v-model="queryParams.materialCode"
placeholder="请输入物料编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="物料名称" prop="materialName">
<el-input
v-model="queryParams.materialName"
placeholder="请输入物料名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="计划工位" prop="stationCode">
<el-input
v-model="queryParams.stationCode"
placeholder="请输入计划工位"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<!-- <el-form-item label="物料编号" prop="materialCode">-->
<!-- <el-input-->
<!-- v-model="queryParams.materialCode"-->
<!-- placeholder="请输入物料编号"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="物料名称" prop="materialName">-->
<!-- <el-input-->
<!-- v-model="queryParams.materialName"-->
<!-- placeholder="请输入物料名称"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="计划工位" prop="stationCode">-->
<!-- <el-input-->
<!-- v-model="queryParams.stationCode"-->
<!-- placeholder="请输入计划工位"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="设备编号" prop="deviceCode">-->
<!-- <el-input-->
<!-- v-model="queryParams.deviceCode"-->
@ -49,14 +49,14 @@
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="计划班组" prop="teamCode">
<el-input
v-model="queryParams.teamCode"
placeholder="请输入计划班组"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<!-- <el-form-item label="计划班组" prop="teamCode">-->
<!-- <el-input-->
<!-- v-model="queryParams.teamCode"-->
<!-- placeholder="请输入计划班组"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="实际开始时间">
<el-date-picker
v-model="daterangeBeginTime"
@ -147,12 +147,17 @@
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="主键标识" align="center" prop="objId" v-if="columns[0].visible"/>
<el-table-column label="订单编号" align="center" prop="orderCode" v-if="columns[2].visible" width="130"/>
<el-table-column label="工单编号" align="center" prop="planCode" v-if="columns[1].visible" width="130"/>
<el-table-column label="工单编号" align="center" prop="planCode" v-if="columns[1].visible" width="230"/>
<el-table-column label="物料编号" align="center" prop="materialCode" v-if="columns[3].visible" width="130"/>
<el-table-column label="物料名称" align="center" prop="materialName" v-if="columns[4].visible" width="130"/>
<el-table-column label="计划工位" align="center" prop="stationName" v-if="columns[5].visible" width="130"/>
<el-table-column label="设备编号" align="center" prop="deviceCode" v-if="columns[6].visible"/>
<el-table-column label="计划班组" align="center" prop="teamName" v-if="columns[7].visible"/>
<el-table-column label="工单状态" align="center" prop="planStatus" v-if="columns[17].visible">
<template slot-scope="scope">
<dict-tag :options="dict.type.plan_status" :value="scope.row.planStatus"/>
</template>
</el-table-column>
<el-table-column label="计划数量" align="center" prop="planAmount" v-if="columns[8].visible"/>
<el-table-column label="完成数量" align="center" prop="completeAmount" v-if="columns[9].visible"/>
<el-table-column label="实际开始时间" align="center" prop="beginTime" width="180" v-if="columns[10].visible">
@ -182,8 +187,16 @@
<span>{{ parseTime(scope.row.updatedTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="100">-->
<!-- <template slot-scope="scope">-->
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="100">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-right"
v-if="scope.row.importFlag === '1'"
@click="handlePlanDetails(scope.row)"
>查看明细
</el-button>
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
@ -200,8 +213,8 @@
<!-- v-hasPermi="['mes/prod:prodPlanInfo:remove']"-->
<!-- >删除-->
<!-- </el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
</template>
</el-table-column>
</el-table>
<pagination
@ -314,7 +327,7 @@ import {
export default {
name: 'ProdPlanInfo',
dicts: ['finish_flag'],
dicts: ['finish_flag','plan_status'],
data() {
return {
//
@ -350,6 +363,7 @@ export default {
teamCode: null,
planAmount: null,
completeAmount: null,
importFlag: null,
beginTime: null,
endTime: null,
compFlag: null,
@ -373,11 +387,11 @@ export default {
{ key: 0, label: `主键标识`, visible: false },
{ key: 1, label: `工单编号`, visible: true },
{ key: 2, label: `订单编号`, visible: true },
{ key: 3, label: `物料编号`, visible: true },
{ key: 4, label: `物料名称`, visible: true },
{ key: 3, label: `物料编号`, visible: false },
{ key: 4, label: `物料名称`, visible: false },
{ key: 5, label: `计划工位`, visible: true },
{ key: 6, label: `设备编号`, visible: false },
{ key: 7, label: `计划班组`, visible: true },
{ key: 7, label: `计划班组`, visible: false },
{ key: 8, label: `计划数量`, visible: true },
{ key: 9, label: `完成数量`, visible: true },
{ key: 10, label: `实际开始时间`, visible: true },
@ -386,7 +400,8 @@ export default {
{ key: 13, label: `创建人`, visible: false },
{ key: 14, label: `创建时间`, visible: false },
{ key: 15, label: `更新人`, visible: false },
{ key: 16, label: `更新时间`, visible: false }
{ key: 16, label: `更新时间`, visible: false },
{ key: 17, label: `工单状态`, visible: true },
]
}
},
@ -453,6 +468,12 @@ export default {
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 查看明细 */
handlePlanDetails(row) {
// const params = {planCode: row.planCode};
// this.$tab.closeOpenPage(router.currentRoute);
this.$tab.openPage("计划[" + row.planCode + "]生产计划", '/mes/prodPlan-erpInfo/index/' + row.planCode, {});
},
/** 新增按钮操作 */
handleAdd() {
this.reset()

@ -0,0 +1,405 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item label="员工ID" prop="staffId">
<el-input
v-model="queryParams.staffId"
placeholder="请输入员工ID"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="班组编号" prop="teamCode">
<el-input
v-model="queryParams.teamCode"
placeholder="请输入班组编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="上班打卡时间">
<el-date-picker
v-model="daterangeStartWorkTime"
style="width: 340px"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetimerange"
range-separator="-"
start-placeholder="开始时间"
end-placeholder="结束时间"
></el-date-picker>
</el-form-item>
<!-- <el-form-item label="下班打卡时间">-->
<!-- <el-date-picker-->
<!-- v-model="daterangeEndWorkTime"-->
<!-- style="width: 340px"-->
<!-- value-format="yyyy-MM-dd HH:mm:ss"-->
<!-- type="datetimerange"-->
<!-- range-separator="-"-->
<!-- start-placeholder="开始时间"-->
<!-- end-placeholder="结束时间"-->
<!-- ></el-date-picker>-->
<!-- </el-form-item>-->
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['mes/record:recordStaffCommute:add']"
>新增
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['mes/record:recordStaffCommute:edit']"
>修改
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['mes/record:recordStaffCommute:remove']"
>删除
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['mes/record:recordStaffCommute:export']"
>导出
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="recordStaffCommuteList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="主键标识" align="center" prop="objId" v-if="columns[0].visible"/>
<el-table-column label="员工ID" align="center" prop="staffId" v-if="columns[1].visible"/>
<el-table-column label="员工名称" align="center" prop="staffName" v-if="columns[14].visible"/>
<el-table-column label="班组编号" align="center" prop="teamCode" v-if="columns[2].visible"/>
<el-table-column label="班组名称" align="center" prop="teamName" v-if="columns[15].visible"/>
<el-table-column label="班次" align="center" prop="classes" v-if="columns[3].visible">
<template slot-scope="scope">
<dict-tag :options="dict.type.classes" :value="scope.row.classes"/>
</template>
</el-table-column>
<el-table-column label="上班打卡时间" align="center" prop="startWorkTime" width="180" v-if="columns[4].visible">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.startWorkTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="下班打卡时间" align="center" prop="endWorkTime" width="180" v-if="columns[5].visible">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.endWorkTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="在班时长率" align="center" prop="clockingRatio" v-if="columns[6].visible"/>
<el-table-column label="备注" align="center" prop="remark" v-if="columns[7].visible"/>
<el-table-column label="是否标识" align="center" prop="isFlag" v-if="columns[8].visible"/>
<el-table-column label="机台编号" align="center" prop="machineCode" v-if="columns[13].visible"/>
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="100">-->
<!-- <template slot-scope="scope">-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-edit"-->
<!-- @click="handleUpdate(scope.row)"-->
<!-- v-hasPermi="['mes/record:recordStaffCommute:edit']"-->
<!-- >修改-->
<!-- </el-button>-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['mes/record:recordStaffCommute:remove']"-->
<!-- >删除-->
<!-- </el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改员工上下班记录对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="员工ID" prop="staffId">
<el-input v-model="form.staffId" placeholder="请输入员工ID"/>
</el-form-item>
<el-form-item label="班组编号" prop="teamCode">
<el-input v-model="form.teamCode" placeholder="请输入班组编号"/>
</el-form-item>
<el-form-item label="班次" prop="classes">
<el-input v-model="form.classes" placeholder="请输入班次"/>
</el-form-item>
<!-- <el-form-item label="上班打卡时间" prop="startWorkTime">-->
<!-- <el-date-picker clearable-->
<!-- v-model="form.startWorkTime"-->
<!-- type="date"-->
<!-- value-format="yyyy-MM-dd"-->
<!-- placeholder="请选择上班打卡时间"-->
<!-- >-->
<!-- </el-date-picker>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="下班打卡时间" prop="endWorkTime">-->
<!-- <el-date-picker clearable-->
<!-- v-model="form.endWorkTime"-->
<!-- type="date"-->
<!-- value-format="yyyy-MM-dd"-->
<!-- placeholder="请选择下班打卡时间"-->
<!-- >-->
<!-- </el-date-picker>-->
<!-- </el-form-item>-->
<el-form-item label="在班时长率" prop="clockingRatio">
<el-input v-model="form.clockingRatio" placeholder="请输入在班时长率"/>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注"/>
</el-form-item>
<el-form-item label="是否标识" prop="isFlag">
<el-input v-model="form.isFlag" placeholder="请输入是否标识"/>
</el-form-item>
<el-form-item label="机台编号" prop="machineCode">
<el-input v-model="form.machineCode" placeholder="请输入机台编号"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listRecordStaffCommute,
getRecordStaffCommute,
delRecordStaffCommute,
addRecordStaffCommute,
updateRecordStaffCommute
} from '@/api/mes/record/recordStaffCommute'
export default {
name: 'RecordStaffCommute',
dicts: ['classes', 'is_flag'],
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
recordStaffCommuteList: [],
//
title: '',
//
open: false,
//
daterangeStartWorkTime: [],
//
daterangeEndWorkTime: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
staffId: null,
teamCode: null,
classes: null,
startWorkTime: null,
endWorkTime: null,
clockingRatio: null,
isFlag: null,
machineCode: null
},
//
form: {},
//
rules: {
objId: [
{ required: true, message: '主键标识不能为空', trigger: 'blur' }
],
staffId: [
{ required: true, message: '员工ID不能为空', trigger: 'blur' }
]
},
columns: [
{ key: 0, label: `主键标识`, visible: false },
{ key: 1, label: `员工ID`, visible: true },
{ key: 2, label: `班组编号`, visible: true },
{ key: 3, label: `班次`, visible: true },
{ key: 4, label: `上班打卡时间`, visible: true },
{ key: 5, label: `下班打卡时间`, visible: true },
{ key: 6, label: `在班时长率`, visible: true },
{ key: 7, label: `备注`, visible: false },
{ key: 8, label: `是否标识`, visible: false },
{ key: 9, label: `创建人`, visible: false },
{ key: 10, label: `创建时间`, visible: false },
{ key: 11, label: `更新人`, visible: false },
{ key: 12, label: `更新时间`, visible: false },
{ key: 13, label: `机台编号`, visible: false },
{ key: 14, label: `员工名称`, visible: true },
{ key: 15, label: `班组名称`, visible: true },
]
}
},
created() {
this.getList()
},
methods: {
/** 查询员工上下班记录列表 */
getList() {
this.loading = true
this.queryParams.params = {}
if (null != this.daterangeStartWorkTime && '' != this.daterangeStartWorkTime) {
this.queryParams.params['beginStartWorkTime'] = this.daterangeStartWorkTime[0]
this.queryParams.params['endStartWorkTime'] = this.daterangeStartWorkTime[1]
}
// if (null != this.daterangeEndWorkTime && '' != this.daterangeEndWorkTime) {
// this.queryParams.params['beginEndWorkTime'] = this.daterangeEndWorkTime[0]
// this.queryParams.params['endEndWorkTime'] = this.daterangeEndWorkTime[1]
// }
listRecordStaffCommute(this.queryParams).then(response => {
this.recordStaffCommuteList = response.rows
this.total = response.total
this.loading = false
})
},
//
cancel() {
this.open = false
this.reset()
},
//
reset() {
this.form = {
objId: null,
staffId: null,
teamCode: null,
classes: null,
startWorkTime: null,
endWorkTime: null,
clockingRatio: null,
remark: null,
isFlag: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
machineCode: null
}
this.resetForm('form')
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.daterangeStartWorkTime = []
this.daterangeEndWorkTime = []
this.resetForm('queryForm')
this.handleQuery()
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.objId)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset()
this.open = true
this.title = '添加员工上下班记录'
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset()
const objId = row.objId || this.ids
getRecordStaffCommute(objId).then(response => {
this.form = response.data
this.open = true
this.title = '修改员工上下班记录'
})
},
/** 提交按钮 */
submitForm() {
this.$refs['form'].validate(valid => {
if (valid) {
if (this.form.objId != null) {
updateRecordStaffCommute(this.form).then(response => {
this.$modal.msgSuccess('修改成功')
this.open = false
this.getList()
})
} else {
addRecordStaffCommute(this.form).then(response => {
this.$modal.msgSuccess('新增成功')
this.open = false
this.getList()
})
}
}
})
},
/** 删除按钮操作 */
handleDelete(row) {
const objIds = row.objId || this.ids
this.$modal.confirm('是否确认删除员工上下班记录编号为"' + objIds + '"的数据项?').then(function() {
return delRecordStaffCommute(objIds)
}).then(() => {
this.getList()
this.$modal.msgSuccess('删除成功')
}).catch(() => {
})
},
/** 导出按钮操作 */
handleExport() {
this.download('mes/record/recordStaffCommute/export', {
...this.queryParams
}, `员工上下班记录_${new Date().getTime()}.xlsx`)
}
}
}
</script>

@ -0,0 +1,441 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item label="任务编号" prop="taskCode">
<el-input
v-model="queryParams.taskCode"
placeholder="请输入任务编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="身份证" prop="idCard">
<el-input
v-model="queryParams.idCard"
placeholder="请输入身份证"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="班组名称" prop="groupId">
<el-select v-model="queryParams.groupId" placeholder="请选择班组名称" clearable>
<el-option
v-for="item in teamMembersList"
:key="item.teamCode"
:label="item.teamName"
:value="item.teamCode"
/>
</el-select>
</el-form-item>
<el-form-item label="事件日期">
<el-date-picker
v-model="daterangeEventDate"
style="width: 240px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始时间"
end-placeholder="结束时间"
></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="primary"-->
<!-- plain-->
<!-- icon="el-icon-plus"-->
<!-- size="mini"-->
<!-- @click="handleAdd"-->
<!-- v-hasPermi="['mes/record:recordStaffSalary:add']"-->
<!-- >新增-->
<!-- </el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="success"-->
<!-- plain-->
<!-- icon="el-icon-edit"-->
<!-- size="mini"-->
<!-- :disabled="single"-->
<!-- @click="handleUpdate"-->
<!-- v-hasPermi="['mes/record:recordStaffSalary:edit']"-->
<!-- >修改-->
<!-- </el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="danger"-->
<!-- plain-->
<!-- icon="el-icon-delete"-->
<!-- size="mini"-->
<!-- :disabled="multiple"-->
<!-- @click="handleDelete"-->
<!-- v-hasPermi="['mes/record:recordStaffSalary:remove']"-->
<!-- >删除-->
<!-- </el-button>-->
<!-- </el-col>-->
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['mes/record:recordStaffSalary:export']"
>导出
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="recordStaffSalaryList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="主键标识" align="center" prop="objId" v-if="columns[0].visible"/>
<el-table-column label="员工名称" align="center" prop="staffName" v-if="columns[16].visible"/>
<el-table-column label="身份证" align="center" prop="idCard" v-if="columns[1].visible" width="200"/>
<el-table-column label="班组编号" align="center" prop="groupId" v-if="columns[2].visible" width="100"/>
<el-table-column label="班组名称" align="center" prop="teamName" v-if="columns[17].visible" width="120"/>
<el-table-column label="事件日期" align="center" prop="eventDate" width="100" v-if="columns[3].visible">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.eventDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="薪资类别" align="center" prop="salaryCategory" v-if="columns[4].visible"/>
<el-table-column label="收入大类" align="center" prop="revenueClass" v-if="columns[5].visible" width="120"/>
<el-table-column label="收入金额" align="center" prop="revenueAmount" v-if="columns[6].visible"/>
<el-table-column label="收入理由" align="center" prop="revenueReason" v-if="columns[7].visible"/>
<el-table-column label="扣罚大类" align="center" prop="fineClass" v-if="columns[8].visible"/>
<el-table-column label="扣罚金额" align="center" prop="fineAmount" v-if="columns[9].visible"/>
<el-table-column label="扣罚理由" align="center" prop="fineReason" v-if="columns[10].visible"/>
<el-table-column label="任务编号" align="center" prop="taskCode" v-if="columns[12].visible" width="120"/>
<el-table-column label="工资系数" align="center" prop="salaryCoefficient" v-if="columns[13].visible"/>
<el-table-column label="开始日期" align="center" prop="beginDate" width="100" v-if="columns[14].visible">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.beginDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="结束日期" align="center" prop="endDate" width="100" v-if="columns[15].visible">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.endDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="100">-->
<!-- <template slot-scope="scope">-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-edit"-->
<!-- @click="handleUpdate(scope.row)"-->
<!-- v-hasPermi="['mes/record:recordStaffSalary:edit']"-->
<!-- >修改-->
<!-- </el-button>-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['mes/record:recordStaffSalary:remove']"-->
<!-- >删除-->
<!-- </el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改员工工资记录对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="身份证" prop="idCard">
<el-input v-model="form.idCard" placeholder="请输入身份证"/>
</el-form-item>
<el-form-item label="班组编号" prop="groupId">
<el-input v-model="form.groupId" placeholder="请输入班组编号"/>
</el-form-item>
<el-form-item label="事件日期" prop="eventDate">
<el-date-picker clearable
v-model="form.eventDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择事件日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="薪资类别" prop="salaryCategory">
<el-input v-model="form.salaryCategory" placeholder="请输入薪资类别"/>
</el-form-item>
<el-form-item label="收入大类" prop="revenueClass">
<el-input v-model="form.revenueClass" placeholder="请输入收入大类"/>
</el-form-item>
<el-form-item label="收入金额" prop="revenueAmount">
<el-input v-model="form.revenueAmount" placeholder="请输入收入金额"/>
</el-form-item>
<el-form-item label="收入理由" prop="revenueReason">
<el-input v-model="form.revenueReason" placeholder="请输入收入理由"/>
</el-form-item>
<el-form-item label="扣罚大类" prop="fineClass">
<el-input v-model="form.fineClass" placeholder="请输入扣罚大类"/>
</el-form-item>
<el-form-item label="扣罚金额" prop="fineAmount">
<el-input v-model="form.fineAmount" placeholder="请输入扣罚金额"/>
</el-form-item>
<el-form-item label="扣罚理由" prop="fineReason">
<el-input v-model="form.fineReason" placeholder="请输入扣罚理由"/>
</el-form-item>
<el-form-item label="任务编号" prop="taskCode">
<el-input v-model="form.taskCode" placeholder="请输入任务编号"/>
</el-form-item>
<el-form-item label="工资系数" prop="salaryCoefficient">
<el-input v-model="form.salaryCoefficient" placeholder="请输入工资系数"/>
</el-form-item>
<el-form-item label="开始日期" prop="beginDate">
<el-date-picker clearable
v-model="form.beginDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择开始日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="结束日期" prop="endDate">
<el-date-picker clearable
v-model="form.endDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择结束日期"
>
</el-date-picker>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listRecordStaffSalary,
getRecordStaffSalary,
delRecordStaffSalary,
addRecordStaffSalary,
updateRecordStaffSalary
} from '@/api/mes/record/recordStaffSalary'
import { getTeamMembers } from '@/api/mes/base/baseTeamMembers'
import { parseTime } from '@/utils/ruoyi'
export default {
name: 'RecordStaffSalary',
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
recordStaffSalaryList: [],
//
title: '',
//
open: false,
//
daterangeEventDate: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
idCard: null,
groupId: null,
eventDate: null,
salaryCategory: null,
revenueClass: null,
revenueAmount: null,
revenueReason: null,
fineClass: null,
fineAmount: null,
fineReason: null,
taskCode: null,
salaryCoefficient: null,
beginDate: null,
endDate: null
},
//
form: {},
//
rules: {
objId: [
{ required: true, message: '主键标识不能为空', trigger: 'blur' }
]
},
columns: [
{ key: 0, label: `主键标识`, visible: false },
{ key: 1, label: `身份证`, visible: true },
{ key: 2, label: `班组编号`, visible: true },
{ key: 3, label: `事件日期`, visible: true },
{ key: 4, label: `薪资类别`, visible: true },
{ key: 5, label: `收入大类`, visible: true },
{ key: 6, label: `收入金额`, visible: true },
{ key: 7, label: `收入理由`, visible: true },
{ key: 8, label: `扣罚大类`, visible: true },
{ key: 9, label: `扣罚金额`, visible: true },
{ key: 10, label: `扣罚理由`, visible: true },
{ key: 11, label: `创建时间`, visible: true },
{ key: 12, label: `任务编号`, visible: true },
{ key: 13, label: `工资系数`, visible: true },
{ key: 14, label: `开始日期`, visible: true },
{ key: 15, label: `结束日期`, visible: true },
{ key: 16, label: `员工名称`, visible: true },
{ key: 17, label: `班组名称`, visible: true }
],
//
teamMembersList: []
}
},
created() {
const currentDate = new Date();
const firstDay = parseTime(new Date(currentDate.getFullYear(), currentDate.getMonth(), 1), '{y}-{m}-{d}')
const lastDay = parseTime(new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0), '{y}-{m}-{d}')
this.daterangeEventDate[0] = firstDay
this.daterangeEventDate[1] = lastDay
getTeamMembers().then(response => {
this.teamMembersList = response.data
})
this.getList()
},
methods: {
/** 查询员工工资记录列表 */
getList() {
this.loading = true
this.queryParams.params = {}
if (null != this.daterangeEventDate && '' != this.daterangeEventDate) {
this.queryParams.params['beginEventDate'] = this.daterangeEventDate[0]
this.queryParams.params['endEventDate'] = this.daterangeEventDate[1]
}
listRecordStaffSalary(this.queryParams).then(response => {
this.recordStaffSalaryList = response.rows
this.total = response.total
this.loading = false
})
},
//
cancel() {
this.open = false
this.reset()
},
//
reset() {
this.form = {
objId: null,
idCard: null,
groupId: null,
eventDate: null,
salaryCategory: null,
revenueClass: null,
revenueAmount: null,
revenueReason: null,
fineClass: null,
fineAmount: null,
fineReason: null,
createTime: null,
taskCode: null,
salaryCoefficient: null,
beginDate: null,
endDate: null
}
this.resetForm('form')
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.daterangeEventDate = []
this.resetForm('queryForm')
this.handleQuery()
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.objId)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset()
this.open = true
this.title = '添加员工工资记录'
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset()
const objId = row.objId || this.ids
getRecordStaffSalary(objId).then(response => {
this.form = response.data
this.open = true
this.title = '修改员工工资记录'
})
},
/** 提交按钮 */
submitForm() {
this.$refs['form'].validate(valid => {
if (valid) {
if (this.form.objId != null) {
updateRecordStaffSalary(this.form).then(response => {
this.$modal.msgSuccess('修改成功')
this.open = false
this.getList()
})
} else {
addRecordStaffSalary(this.form).then(response => {
this.$modal.msgSuccess('新增成功')
this.open = false
this.getList()
})
}
}
})
},
/** 删除按钮操作 */
handleDelete(row) {
const objIds = row.objId || this.ids
this.$modal.confirm('是否确认删除员工工资记录编号为"' + objIds + '"的数据项?').then(function() {
return delRecordStaffSalary(objIds)
}).then(() => {
this.getList()
this.$modal.msgSuccess('删除成功')
}).catch(() => {
})
},
/** 导出按钮操作 */
handleExport() {
this.download('mes/record/recordStaffSalary/export', {
...this.queryParams
}, `recordStaffSalary_${new Date().getTime()}.xlsx`)
}
}
}
</script>

@ -0,0 +1,396 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item label="班组名称" prop="groupId">
<el-select v-model="queryParams.groupId" placeholder="请选择班组名称" clearable>
<el-option
v-for="item in teamMembersList"
:key="item.teamCode"
:label="item.teamName"
:value="item.teamCode"
/>
</el-select>
</el-form-item>
<el-form-item label="打卡日期">
<el-date-picker
v-model="daterangeOrderDate"
style="width: 240px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<!-- <el-form-item label="下班打卡时间">-->
<!-- <el-date-picker-->
<!-- v-model="daterangeEndWorkTime"-->
<!-- style="width: 340px"-->
<!-- value-format="yyyy-MM-dd HH:mm:ss"-->
<!-- type="datetimerange"-->
<!-- range-separator="-"-->
<!-- start-placeholder="开始时间"-->
<!-- end-placeholder="结束时间"-->
<!-- ></el-date-picker>-->
<!-- </el-form-item>-->
<el-form-item>
<el-button type="primary" icon="el-icon-plus" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
>上传ERP
</el-button>
</el-col>
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="success"-->
<!-- plain-->
<!-- icon="el-icon-edit"-->
<!-- size="mini"-->
<!-- :disabled="single"-->
<!-- @click="handleUpdate"-->
<!-- >修改-->
<!-- </el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="danger"-->
<!-- plain-->
<!-- icon="el-icon-delete"-->
<!-- size="mini"-->
<!-- :disabled="multiple"-->
<!-- @click="handleDelete"-->
<!-- >删除-->
<!-- </el-button>-->
<!-- </el-col>-->
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="recordStaffSalaryList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="序号" align="center" prop="objId" v-if="columns[0].visible"/>
<el-table-column label="班组编号" align="center" prop="groupId" v-if="columns[2].visible" width="100"/>
<el-table-column label="班组名称" align="center" prop="teamName" v-if="columns[14].visible" width="160"/>
<el-table-column label="员工名称" align="center" prop="staffName" v-if="columns[15].visible" width="100"/>
<el-table-column label="事件日期" align="center" prop="eventDate" width="180" v-if="columns[3].visible">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.eventDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="薪资类别" align="center" prop="salaryCategory" v-if="columns[4].visible"/>
<el-table-column label="收入大类" align="center" prop="revenueClass" v-if="columns[5].visible" width="120"/>
<el-table-column label="收入金额" align="center" prop="revenueAmount" v-if="columns[6].visible" width="100"/>
<el-table-column label="收入理由" align="center" prop="revenueReason" v-if="columns[7].visible"/>
<el-table-column label="扣罚大类" align="center" prop="fineClass" v-if="columns[8].visible"/>
<el-table-column label="扣罚金额" align="center" prop="fineAmount" v-if="columns[9].visible"/>
<el-table-column label="扣罚理由" align="center" prop="fineReason" v-if="columns[10].visible"/>
<el-table-column label="任务编号" align="center" prop="taskCode" v-if="columns[12].visible" width="180"/>
<el-table-column label="身份证" align="center" prop="idCard" v-if="columns[1].visible" width="180"/>
<el-table-column label="工资系数" align="center" prop="salaryCoefficient" v-if="columns[13].visible"/>
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="100">-->
<!-- <template slot-scope="scope">-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-edit"-->
<!-- @click="handleUpdate(scope.row)"-->
<!-- v-hasPermi="['mes/record:recordStaffCommute:edit']"-->
<!-- >修改-->
<!-- </el-button>-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['mes/record:recordStaffCommute:remove']"-->
<!-- >删除-->
<!-- </el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
<!-- <pagination-->
<!-- v-show="total>0"-->
<!-- :total="total"-->
<!-- :page.sync="queryParams.pageNum"-->
<!-- :limit.sync="queryParams.pageSize"-->
<!-- @pagination="getList"-->
<!-- />-->
<!-- 添加或修改员工上下班记录对话框 -->
<!-- <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>-->
<!-- <el-form ref="form" :model="form" :rules="rules" label-width="100px">-->
<!-- <el-form-item label="身份证" prop="idCard">-->
<!-- <el-input v-model="form.idCard" placeholder="请输入身份证"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="班组编号" prop="groupId">-->
<!-- <el-input v-model="form.groupId" placeholder="请输入班组编号"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="事件日期" prop="eventDate">-->
<!-- <el-date-picker clearable-->
<!-- v-model="form.eventDate"-->
<!-- type="date"-->
<!-- value-format="yyyy-MM-dd"-->
<!-- placeholder="请选择事件日期"-->
<!-- >-->
<!-- </el-date-picker>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="薪资类别" prop="salaryCategory">-->
<!-- <el-input v-model="form.salaryCategory" placeholder="请输入薪资类别"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="收入大类" prop="revenueClass">-->
<!-- <el-input v-model="form.revenueClass" placeholder="请输入收入大类"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="收入金额" prop="revenueAmount">-->
<!-- <el-input v-model="form.revenueAmount" placeholder="请输入收入金额"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="收入理由" prop="revenueReason">-->
<!-- <el-input v-model="form.revenueReason" placeholder="请输入收入理由"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="扣罚大类" prop="fineClass">-->
<!-- <el-input v-model="form.fineClass" placeholder="请输入扣罚大类"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="扣罚金额" prop="fineAmount">-->
<!-- <el-input v-model="form.fineAmount" placeholder="请输入扣罚金额"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="扣罚理由" prop="fineReason">-->
<!-- <el-input v-model="form.fineReason" placeholder="请输入扣罚理由"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="任务编号" prop="taskCode">-->
<!-- <el-input v-model="form.taskCode" placeholder="请输入任务编号"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="工资系数" prop="salaryCoefficient">-->
<!-- <el-input v-model="form.salaryCoefficient" placeholder="请输入工资系数"/>-->
<!-- </el-form-item>-->
<!-- </el-form>-->
<!-- <div slot="footer" class="dialog-footer">-->
<!-- <el-button type="primary" @click="submitForm"> </el-button>-->
<!-- <el-button @click="cancel"> </el-button>-->
<!-- </div>-->
<!-- </el-dialog>-->
</div>
</template>
<script>
import {
selectTeamEmployeesWages, uploadERPStaffSalary
} from '@/api/mes/record/recordStaffSalary'
import { getTeamMembers } from '@/api/mes/base/baseTeamMembers'
import { parseTime } from '@/utils/ruoyi'
export default {
name: 'TeamEmployeesWages',
dicts: ['classes', 'is_flag'],
data() {
return {
//
loading: false,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
recordStaffSalaryList: [],
//
title: '',
//
open: false,
//
daterangeOrderDate: [],
//
daterangeEndWorkTime: [],
//
queryParams: {
staffId: null,
teamCode: null,
classes: null,
startWorkTime: null,
endWorkTime: null,
clockingRatio: null,
isFlag: null,
machineCode: null
},
//
form: {},
//
rules: {
objId: [
{ required: true, message: '主键标识不能为空', trigger: 'blur' }
],
staffId: [
{ required: true, message: '员工ID不能为空', trigger: 'blur' }
]
},
columns: [
{ key: 0, label: `序号`, visible: true },
{ key: 1, label: `身份证`, visible: true },
{ key: 2, label: `班组编号`, visible: true },
{ key: 3, label: `事件日期`, visible: true },
{ key: 4, label: `薪资类别`, visible: true },
{ key: 5, label: `收入大类`, visible: true },
{ key: 6, label: `收入金额`, visible: true },
{ key: 7, label: `收入理由`, visible: true },
{ key: 8, label: `扣罚大类`, visible: true },
{ key: 9, label: `扣罚金额`, visible: true },
{ key: 10, label: `扣罚理由`, visible: true },
{ key: 11, label: `创建时间`, visible: true },
{ key: 12, label: `任务编号`, visible: true },
{ key: 13, label: `工资系数`, visible: true },
{ key: 14, label: `班组名称`, visible: true },
{ key: 15, label: `员工名称`, visible: true },
],
//
teamMembersList: []
}
},
created() {
const currentDate = new Date();
const firstDay = parseTime(new Date(currentDate.getFullYear(), currentDate.getMonth(), 1), '{y}-{m}-{d}')
const lastDay = parseTime(new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0), '{y}-{m}-{d}')
this.daterangeOrderDate[0] = firstDay
this.daterangeOrderDate[1] = lastDay
getTeamMembers().then(response => {
this.teamMembersList = response.data
})
// this.getList()
},
methods: {
/** 查询员工上下班记录列表 */
getList() {
this.loading = true
this.queryParams.params = {}
if (null != this.daterangeOrderDate && '' != this.daterangeOrderDate) {
this.queryParams.params['beginOrderDate'] = this.daterangeOrderDate[0]
this.queryParams.params['endOrderDate'] = this.daterangeOrderDate[1]
}
selectTeamEmployeesWages(this.queryParams).then(response => {
this.recordStaffSalaryList = response.data
// this.total = response.total
this.loading = false
})
},
//
cancel() {
this.open = false
this.reset()
},
//
reset() {
this.form = {
objId: null,
staffId: null,
teamCode: null,
classes: null,
startWorkTime: null,
endWorkTime: null,
clockingRatio: null,
remark: null,
isFlag: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
machineCode: null
}
this.resetForm('form')
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.daterangeOrderDate = []
this.daterangeEndWorkTime = []
this.resetForm('queryForm')
this.recordStaffSalaryList = [];
// this.handleQuery()
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.objId)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
const dataList = this.recordStaffSalaryList;
if (dataList.length === 0){
this.$modal.msgError('请生成工资后上传!')
return
}
this.$modal.confirm('是否将员工工资上传至ERP系统').then(function() {
return uploadERPStaffSalary(dataList)
}).then(() => {
this.recordStaffSalaryList = [];
this.$modal.msgSuccess('上传ERP成功')
}).catch(() => {
})
},
/** 修改按钮操作 */
// handleUpdate(row) {
// this.reset()
// const objId = row.objId || this.ids
// getRecordStaffCommute(objId).then(response => {
// this.form = response.data
// this.open = true
// this.title = ''
// })
// },
/** 提交按钮 */
// submitForm() {
// this.$refs['form'].validate(valid => {
// if (valid) {
// if (this.form.objId != null) {
// updateRecordStaffCommute(this.form).then(response => {
// this.$modal.msgSuccess('')
// this.open = false
// this.getList()
// })
// } else {
// addRecordStaffCommute(this.form).then(response => {
// this.$modal.msgSuccess('')
// this.open = false
// this.getList()
// })
// }
// }
// })
// },
/** 删除按钮操作 */
handleDelete(row) {
const objIds = row.objId || this.ids
this.$modal.confirm('是否确认删除员工上下班记录编号为"' + objIds + '"的数据项?').then(function() {
return delRecordStaffCommute(objIds)
}).then(() => {
this.getList()
this.$modal.msgSuccess('删除成功')
}).catch(() => {
})
},
/** 导出按钮操作 */
handleExport() {
this.download('mes/record/recordStaffCommute/export', {
...this.queryParams
}, `员工上下班记录_${new Date().getTime()}.xlsx`)
}
}
}
</script>
Loading…
Cancel
Save