Compare commits

..

91 Commits

Author SHA1 Message Date
0fffed9b0e Merge pull request 'projects/mesxc-zhp' (#350) from projects/mesxc-zhp into projects/mesxc-test
Reviewed-on: #350
2024-04-23 15:26:03 +08:00
‘937886381’
d251daa3f5 修改bug 2024-04-23 15:23:43 +08:00
‘937886381’
ed5120ca97 Merge branch 'projects/mesxc-test' into projects/mesxc-zhp 2024-04-23 15:09:42 +08:00
‘937886381’
becf34d089 修改bug 2024-04-23 15:09:07 +08:00
f0d64de77b Merge pull request 'projects/mesxc-zjl' (#349) from projects/mesxc-zjl into projects/mesxc-test
Reviewed-on: #349
2024-04-23 14:44:04 +08:00
56819176b3 Merge branch 'projects/mesxc-test' into projects/mesxc-zjl 2024-04-23 14:43:32 +08:00
d302179f6f Merge pull request 'projects/mesxc-zhp' (#348) from projects/mesxc-zhp into projects/mesxc-test
Reviewed-on: #348
2024-04-23 14:42:19 +08:00
8c117fae8e 报表 2024-04-23 14:42:02 +08:00
‘937886381’
b6cf7b2ddc 剞劂冲突 2024-04-23 13:53:33 +08:00
‘937886381’
2f98b42bd2 新增报表 2024-04-23 13:52:10 +08:00
fb8ae9226a Merge pull request 'projects/mesxc-zjl' (#347) from projects/mesxc-zjl into projects/mesxc-test
Reviewed-on: #347
2024-04-23 09:13:51 +08:00
3d3763c4ef merge test 2024-04-23 09:13:29 +08:00
ea675b9dea Merge pull request 'projects/mesxc-zhp' (#346) from projects/mesxc-zhp into projects/mesxc-test
Reviewed-on: #346
2024-04-23 09:11:45 +08:00
bda065e4be 报表 2024-04-23 09:11:14 +08:00
‘937886381’
5ea4c219ed 新增报表 2024-04-22 17:14:59 +08:00
‘937886381’
29c3a9fb72 Merge branch 'projects/mesxc-test' into projects/mesxc-zhp 2024-04-22 08:55:20 +08:00
‘937886381’
1e1313d090 修改bug 2024-04-22 08:54:55 +08:00
d0eb1d84c8 Merge pull request 'projects/mesxc-zhp' (#344) from projects/mesxc-zhp into projects/mesxc-test
Reviewed-on: #344
2024-04-19 17:02:23 +08:00
‘937886381’
445d8f4818 Merge branch 'projects/mesxc-test' into projects/mesxc-zhp 2024-04-19 17:01:17 +08:00
‘937886381’
46ce982cfc 新增报表 2024-04-19 16:59:47 +08:00
391e06a382 Merge pull request 'projects/mesxc-zjl' (#342) from projects/mesxc-zjl into projects/mesxc-test
Reviewed-on: #342
2024-04-19 11:11:19 +08:00
72e1b4e8f9 Merge branch 'projects/mesxc-test' into projects/mesxc-zjl 2024-04-19 11:10:38 +08:00
b41ba04cb4 Merge pull request 'projects/mesxc-zhp' (#341) from projects/mesxc-zhp into projects/mesxc-test
Reviewed-on: #341
2024-04-19 11:09:12 +08:00
‘937886381’
4482ce0433 Merge branch 'projects/mesxc-test' into projects/mesxc-zhp 2024-04-19 11:07:43 +08:00
‘937886381’
ecf6745c8a 报表新增 2024-04-19 11:07:14 +08:00
c9128ce946 包装40% 2024-04-19 11:03:50 +08:00
ba08175de8 Merge pull request 'projects/mesxc-zhp' (#340) from projects/mesxc-zhp into projects/mesxc-test
Reviewed-on: #340
2024-04-17 16:36:22 +08:00
‘937886381’
22f8322baf Merge branch 'projects/mesxc-test' into projects/mesxc-zhp 2024-04-17 16:16:37 +08:00
‘937886381’
6f8abc9758 修改ui 2024-04-17 16:15:59 +08:00
59d53b60c7 Merge branch 'projects/mesxc-test' into projects/mesxc-zjl 2024-04-17 13:23:20 +08:00
d448280782 test 2024-04-16 15:29:39 +08:00
0337b54202 Merge pull request 'projects/mesxc-zhp' (#339) from projects/mesxc-zhp into projects/mesxc-test
Reviewed-on: #339
2024-04-16 14:07:17 +08:00
‘937886381’
9dec81e0b2 修改ui 2024-04-16 14:04:43 +08:00
‘937886381’
64de2c50b6 修改bug 2024-04-16 13:52:38 +08:00
‘937886381’
bd0f9e24fd Merge branch 'projects/mesxc-test' into projects/mesxc-zhp 2024-04-16 13:46:08 +08:00
‘937886381’
f3043ee11f 修改ui 2024-04-16 13:45:38 +08:00
5584a47575 Merge pull request 'projects/mesxc-zjl' (#337) from projects/mesxc-zjl into projects/mesxc-test
Reviewed-on: #337
2024-04-15 14:59:29 +08:00
b0078cb099 1 2024-04-15 14:49:28 +08:00
e5acd497b5 Merge branch 'projects/mesxc-test' into projects/mesxc-zjl 2024-04-15 09:35:46 +08:00
6b452dce36 能源bug 2024-04-15 09:35:00 +08:00
aacf87f6d3 Merge pull request 'projects/mesxc-zhp' (#336) from projects/mesxc-zhp into projects/mesxc-test
Reviewed-on: #336
2024-04-15 09:31:35 +08:00
‘937886381’
bfa17e422d Merge branch 'projects/mesxc-test' into projects/mesxc-zhp 2024-04-15 09:29:29 +08:00
‘937886381’
e25f872589 修改ui 2024-04-15 09:28:49 +08:00
83b834d2fc Merge pull request 'projects/mesxc-zjl' (#335) from projects/mesxc-zjl into projects/mesxc-test
Reviewed-on: #335
2024-04-12 17:02:46 +08:00
1b2c16fcdb Merge branch 'projects/mesxc-test' into projects/mesxc-zjl 2024-04-12 17:01:59 +08:00
475ec35ec5 1 2024-04-12 16:59:34 +08:00
1328da9616 Merge pull request 'projects/mesxc-lb' (#334) from projects/mesxc-lb into projects/mesxc-test
Reviewed-on: #334
2024-04-12 16:50:11 +08:00
lb
92b9ec7da7 Merge branch 'projects/mesxc-test' into projects/mesxc-lb 2024-04-12 16:46:20 +08:00
c1af47db81 Merge pull request 'projects/mesxc-zhp' (#333) from projects/mesxc-zhp into projects/mesxc-test
Reviewed-on: #333
2024-04-12 16:44:38 +08:00
lb
15afbcd612 bugfix 特殊设备权限 2024-04-12 16:40:15 +08:00
‘937886381’
dabbc6b63a 修改bug 2024-04-12 15:27:01 +08:00
‘937886381’
cfab3353d3 Merge branch 'projects/mesxc-test' into projects/mesxc-zhp 2024-04-12 15:18:43 +08:00
‘937886381’
2298fc56b6 修改bug 2024-04-12 15:17:21 +08:00
bb77d0f8c6 Merge pull request 'projects/mesxc-zhp' (#332) from projects/mesxc-zhp into projects/mesxc-test
Reviewed-on: #332
2024-04-12 14:58:10 +08:00
‘937886381’
e8938a62eb 解决冲突 2024-04-12 14:31:56 +08:00
‘937886381’
2a599d96b3 修改bug 2024-04-12 14:30:11 +08:00
‘937886381’
6050eb4df5 修改bug 2024-04-12 14:27:51 +08:00
lb
02c3b3db0d Merge branch 'projects/mesxc-test' into projects/mesxc-lb 2024-04-12 13:53:50 +08:00
3308fcbef9 Merge pull request 'projects/mesxc-zjl' (#331) from projects/mesxc-zjl into projects/mesxc-test
Reviewed-on: #331
2024-04-12 11:21:05 +08:00
cb7135bad5 merge test 2024-04-12 11:16:15 +08:00
4a56f92961 Merge pull request 'projects/mesxc-dy' (#330) from projects/mesxc-dy into projects/mesxc-test
Reviewed-on: #330
2024-04-12 11:10:01 +08:00
helloDy
8f11c2f47c Merge branch 'projects/mesxc-test' into projects/mesxc-dy 2024-04-12 11:05:44 +08:00
helloDy
b41dc9593c 权限22 2024-04-12 11:05:11 +08:00
862fe20760 能源bug 2024-04-12 08:56:32 +08:00
1ed409a98e Merge pull request 'projects/mesxc-zhp' (#329) from projects/mesxc-zhp into projects/mesxc-test
Reviewed-on: #329
2024-04-11 16:55:43 +08:00
68e738cf12 Merge pull request 'projects/mesxc-dy' (#328) from projects/mesxc-dy into projects/mesxc-test
Reviewed-on: #328
2024-04-11 16:55:03 +08:00
‘937886381’
4866198a98 Merge branch 'projects/mesxc-test' into projects/mesxc-zhp 2024-04-11 16:54:49 +08:00
‘937886381’
49df8a72bd 修改bug 2024-04-11 16:54:22 +08:00
helloDy
087af452de Merge branch 'projects/mesxc-test' into projects/mesxc-dy 2024-04-11 16:54:02 +08:00
helloDy
63a753d7d6 权限 2024-04-11 16:49:48 +08:00
b1cdf083dd Merge pull request 'projects/mesxc-zjl' (#327) from projects/mesxc-zjl into projects/mesxc-test
Reviewed-on: #327
2024-04-11 15:37:55 +08:00
673ddcb996 Merge branch 'projects/mesxc-test' into projects/mesxc-zjl 2024-04-11 15:36:54 +08:00
a9e60dbe82 Merge pull request 'projects/mesxc-zhp' (#326) from projects/mesxc-zhp into projects/mesxc-test
Reviewed-on: #326
2024-04-11 15:28:36 +08:00
‘937886381’
92d197a513 Merge branch 'projects/mesxc-test' into projects/mesxc-zhp 2024-04-11 15:27:11 +08:00
‘937886381’
e7f440a142 修改bug 2024-04-11 15:26:51 +08:00
5d3622bf62 权限 2024-04-11 15:22:09 +08:00
5ccb9297e1 4.11 2024-04-11 11:18:08 +08:00
ce528f18b6 Merge pull request 'projects/mesxc-zhp' (#325) from projects/mesxc-zhp into projects/mesxc-test
Reviewed-on: #325
2024-04-11 11:16:10 +08:00
‘937886381’
024060182e Merge branch 'projects/mesxc-test' into projects/mesxc-zhp 2024-04-11 11:04:14 +08:00
‘937886381’
4f111a95d6 修改看板 2024-04-11 11:03:48 +08:00
8fc6b73179 Merge pull request 'projects/mesxc-zjl' (#324) from projects/mesxc-zjl into projects/mesxc-test
Reviewed-on: #324
2024-04-10 17:39:29 +08:00
7f504e5cdd Merge branch 'projects/mesxc-test' into projects/mesxc-zjl 2024-04-10 17:37:50 +08:00
7c5d8bde0b 能源权限 2024-04-10 17:36:37 +08:00
‘937886381’
0b1761e83c Merge branch 'projects/mesxc-test' into projects/mesxc-zhp 2024-04-10 16:52:56 +08:00
‘937886381’
cafa156d72 更改需求 2024-04-10 16:52:18 +08:00
ed46ed7d09 Merge pull request 'projects/mesxc-zhp' (#323) from projects/mesxc-zhp into projects/mesxc-test
Reviewed-on: #323
2024-04-10 16:26:37 +08:00
‘937886381’
f89c6dfe14 Merge branch 'projects/mesxc-test' into projects/mesxc-zhp 2024-04-10 16:12:23 +08:00
‘937886381’
a3b2eae33f 深加工新需求 2024-04-10 16:11:29 +08:00
e70ff40554 Merge pull request '修改成本新的权限字段' (#322) from projects/mesxc-zwq into projects/mesxc-test
Reviewed-on: #322
2024-04-10 14:49:44 +08:00
93236f9828 移除部分监听 2024-04-10 14:17:30 +08:00
‘937886381’
fef8824844 修改bug 2024-04-09 16:05:28 +08:00
158 changed files with 10694 additions and 3450 deletions

View File

@@ -1,8 +1,8 @@
### ###
# @Author: Do not edit # @Author: zhp
# @Date: 2023-08-29 09:40:39 # @Date: 2024-04-12 14:30:48
# @LastEditTime: 2024-04-08 16:46:49 # @LastEditTime: 2024-04-23 13:52:57
# @LastEditors: DY # @LastEditors: zhp
# @Description: # @Description:
### ###
# 开发环境配置 # 开发环境配置
@@ -12,26 +12,18 @@ ENV = 'development'
VUE_APP_TITLE = MES系统 VUE_APP_TITLE = MES系统
# 芋道管理系统/开发环境 # 芋道管理系统/开发环境
# VUE_APP_BASE_API = 'http://100.64.0.26:48082'
# VUE_APP_BASE_API = 'http://10.70.2.2:8080'
# VUE_APP_BASE_API = 'http://192.168.1.20:48080'
# VUE_APP_BASE_API = 'http://192.168.2.173:48080'
# VUE_APP_BASE_API = 'http://192.168.1.49:48082'
# VUE_APP_BASE_API = 'http://192.168.1.8:48082'
# VUE_APP_BASE_API = 'http://192.168.4.173:9001'
# VUE_APP_BASE_API = 'http://192.168.1.104:48082'
VUE_APP_BASE_API = 'http://192.168.0.33:48082' VUE_APP_BASE_API = 'http://192.168.0.33:48082'
# VUE_APP_BASE_API = 'http://192.168.1.62:48082' # VUE_APP_BASE_API = 'http://192.168.1.104:48082'
# VUE_APP_BASE_API = 'http://192.168.1.78:48082'
# VUE_APP_BASE_API = 'http://192.168.1.47:48082'
# socket地址
# VUE_APP_Socket_API = 'ws://10.70.2.2:8080'
# VUE_APP_Socket_Dcs_API = 'ws://10.70.180.10:8081'
VUE_APP_Socket_API = 'ws://192.168.0.33:48082'
VUE_APP_Socket_Dcs_API = 'ws://192.168.0.33:8080'
# 积木报表指向地址 # 积木报表指向地址
VUE_APP_JIMU_API = 'http://10.70.2.22:8080' VUE_APP_JIMU_API = 'http://192.168.0.33:48082'
# socket地址(现场)
# VUE_APP_Socket_API = 'ws://10.70.2.2:8080'
# socket地址(公司线上)
VUE_APP_Socket_API = 'ws://192.168.0.33:48082'
# socket dcs地址(只有现场)
VUE_APP_Socket_Dcs_API = 'ws://10.70.180.10:8081'
# 路由懒加载 # 路由懒加载
VUE_CLI_BABEL_TRANSPILE_MODULES = true VUE_CLI_BABEL_TRANSPILE_MODULES = true

View File

@@ -1,11 +1,4 @@
### # 生产环境配置(许昌现场)
# @Author: zhp
# @Date: 2023-11-07 19:11:40
# @LastEditTime: 2023-11-16 16:40:59
# @LastEditors: zhp
# @Description:
###
# 生产环境配置
ENV = 'production' ENV = 'production'
# 页面标题 # 页面标题

View File

@@ -1,4 +1,4 @@
# 生产环境配置 # 公司线上环境33服务器
ENV = 'production' ENV = 'production'
# 页面标题 # 页面标题
@@ -7,15 +7,12 @@ VUE_APP_TITLE = MES系统
# 芋道管理系统/生产环境 # 芋道管理系统/生产环境
VUE_APP_BASE_API = '/prod-api' VUE_APP_BASE_API = '/prod-api'
# dcs地址
VUE_APP_Socket_Dcs_API = 'ws://10.70.180.10:8081'
# socket地址
VUE_APP_Socket_API = 'ws://10.70.2.2:8080'
# 积木报表指向地址 # 积木报表指向地址
VUE_APP_JIMU_API = 'http://192.168.0.33:48082' VUE_APP_JIMU_API = 'http://192.168.0.33:48082'
# socket地址 # socket地址
VUE_APP_Socket_API = 'ws://192.168.0.33:48082' VUE_APP_Socket_API = 'ws://192.168.0.33:48082'
# dcs地址只有现场的
VUE_APP_Socket_Dcs_API = 'ws://10.70.180.10:8081'
# 根据服务器或域名修改 # 根据服务器或域名修改

View File

@@ -2,7 +2,7 @@
/* /*
* @Author: zhp * @Author: zhp
* @Date: 2023-11-06 15:38:12 * @Date: 2023-11-06 15:38:12
* @LastEditTime: 2023-12-15 15:29:16 * @LastEditTime: 2024-04-11 14:57:02
* @LastEditors: zhp * @LastEditors: zhp
* @Description: * @Description:
*/ */
@@ -94,7 +94,7 @@ export function getWorkerList(query) {
export function getMaterialCheckList(query) { export function getMaterialCheckList(query) {
return request({ return request({
url: '/base/core-hot-material-check/listByMaterial', url: 'base/quality-hot-material-det/filterList',
method: 'get', method: 'get',
params: query params: query
}) })
@@ -102,7 +102,7 @@ export function getMaterialCheckList(query) {
export function createQualityHotMaterialDet(query){ export function createQualityHotMaterialDet(query){
return request({ return request({
url: '/base/quality-hot-material-det/create', url: 'base/quality-hot-material-det/createBatch',
method: 'post', method: 'post',
data: query data: query
}) })
@@ -110,7 +110,7 @@ export function createQualityHotMaterialDet(query){
export function updateQualityHotMaterialDet(query){ export function updateQualityHotMaterialDet(query){
return request({ return request({
url: '/base/quality-hot-material-det/listbyfilter', url: 'base/quality-hot-material-det/updateBatch',
method: 'put', method: 'put',
data: query data: query
}) })
@@ -118,7 +118,7 @@ export function updateQualityHotMaterialDet(query){
export function getQualityHotMaterialDetList(query){ export function getQualityHotMaterialDetList(query){
return request({ return request({
url: '/base/quality-hot-material-det/listbyfilter', url: '/base/quality-hot-material-det/filterList',
method: 'get', method: 'get',
params: query params: query
}) })

View File

@@ -1,7 +1,7 @@
/* /*
* @Author: zhp * @Author: zhp
* @Date: 2023-11-07 15:02:37 * @Date: 2023-11-07 15:02:37
* @LastEditTime: 2023-11-07 18:32:07 * @LastEditTime: 2024-04-09 15:14:42
* @LastEditors: zhp * @LastEditors: zhp
* @Description: * @Description:
*/ */

View File

@@ -1,7 +1,7 @@
/* /*
* @Author: zhp * @Author: zhp
* @Date: 2023-11-07 14:10:18 * @Date: 2023-11-07 14:10:18
* @LastEditTime: 2023-11-16 17:49:52 * @LastEditTime: 2024-04-11 16:16:05
* @LastEditors: zhp * @LastEditors: zhp
* @Description: * @Description:
*/ */
@@ -18,14 +18,14 @@ export function getStatisticalDataPage(query) {
export function getWorkOrderList(query) { export function getWorkOrderList(query) {
return request({ return request({
url: '/base/core-work-order/listbyfilter', url: 'base/core-work-order/listbyfilter',
method: 'get', method: 'get',
params: query, params: query,
}) })
} }
export function getProductList(query) { export function getProductList(query) {
return request({ return request({
url: '/base/core-product/listAll', url: 'base/core-product/listAll',
method: 'get', method: 'get',
params: query, params: query,
}) })

View File

@@ -0,0 +1,45 @@
import request from '@/utils/request'
// 原片工段数据
export function originalSection(data) {
return request({
url: '/extend/customized-reports/originalSection',
method: 'post',
data: data
})
}
// 原片产线数据
export function getOriginalLine(query) {
return request({
url: '/extend/customized-reports/getOriginalLine',
method: 'get',
params: query
})
}
// 深加工产线数据
export function getProcessingLine(query) {
return request({
url: '/extend/customized-reports/getProcessingLine',
method: 'get',
params: query
})
}
// 深加工工段数据
export function processing(data) {
return request({
url: '/extend/customized-reports/processing',
method: 'post',
data: data
})
}
// isra数据记录
export function israData(data) {
return request({
url: '/extend/customized-reports/isra',
method: 'post',
data: data
})
}

View File

@@ -0,0 +1,96 @@
/*
* @Author: zhp
* @Date: 2024-04-18 09:27:54
* @LastEditTime: 2024-04-23 15:16:12
* @LastEditors: zhp
* @Description:
*/
import request from '@/utils/request'
// 更新质量检测类型基础
export function getOriginalData(data) {
return request({
url: 'extend/customized-reports/original',
method: 'post',
data: data
})
}
export function getIngredientData(data) {
return request({
url: 'extend/customized-reports/materialCost',
method: 'post',
data: data
})
}
export function getCuttingtData(data) {
return request({
url: 'extend/customized-reports/cutting',
method: 'post',
data: data
})
}
export function getAutoDailyData(data) {
return request({
url: 'base/report-auto-daily/listAll',
method: 'post',
data: data
})
}
export function getQualityRecordReport(data) {
return request({
url: 'base/quality-inspection-record/qualityRecordReport',
method: 'post',
data: data
})
}
export function getProductChildData(data) {
return request({
url: 'base/report-auto-ydaily-det/list',
method: 'post',
data: data
})
}
export function updateAutoDailyData(data) {
return request({
url: 'base/report-auto-daily/update',
method: 'put',
data: data
})
}
export function getCWSectionList(query) {
return request({
url: 'base/core-production-line/listAll',
method: 'get',
params: query
})
}
export function getCuttingReportDataList(data) {
return request({
url: 'extend/customized-reports/cuttingReport',
method: 'post',
data: data
})
}
export function getProcessingLineDataList(data) {
return request({
url: 'extend/customized-reports/getProcessingLine',
method: 'get',
data: data
})
}
export function getOriginalLineDataList(data) {
return request({
url: 'extend/customized-reports/getOriginalLine',
method: 'get',
data: data
})
}

View File

@@ -0,0 +1,138 @@
<!--
filename: index.vue
author: liubin
date: 2024-04-02 09:49:36
description:
-->
<template>
<!-- 按钮切换 -->
<div
v-if="buttonMode"
class="button-nav">
<button
v-for="m in menus"
:key="m"
@click="currentMenu = m"
:data-text="m"
:class="[m === currentMenu ? 'active' : '']"></button>
</div>
<!-- 标签切换 -->
<div
v-else
class="custom-tabs"
style="height: 100%; width: 100%">
<el-tabs
class="tag-nav"
v-model="currentMenu"
style="height: 100%">
<el-tab-pane
v-for="(m, idx) in menus"
:key="m"
:label="idx == 0 ? `\u2002${m}\u2002` : `\u3000${m}\u3000`"
:name="m">
<slot :name="`tab${idx + 1}`"></slot>
</el-tab-pane>
</el-tabs>
</div>
</template>
<script>
export default {
name: 'ButtonNav',
props: {
menus: {
type: Array,
required: true,
default: () => [],
validator: (val) => {
return val.length > 0;
},
},
buttonMode: {
type: Boolean,
default: true,
},
},
data() {
return {
currentMenu: '',
};
},
created() {
this.currentMenu = this.menus[0];
},
watch: {
currentMenu(val) {
this.$emit('change', val);
},
},
};
</script>
<style scoped lang="scss">
.button-nav {
width: 100%;
// padding: 12px 0;
display: flex;
gap: 12px;
* {
user-select: none;
}
button {
cursor: pointer;
appearance: none;
outline: none;
border: none;
background: #fff;
border-radius: 8px;
padding: 20px;
color: #888;
letter-spacing: 2px;
flex: 1;
box-sizing: padding-box;
position: relative;
&::after {
content: attr(data-text);
position: absolute;
top: 10px;
left: 50%;
font-size: 18px;
font-weight: 500;
transform: translate(-50%);
}
&.active {
color: #111;
border-bottom: 4px solid #0b58ff;
}
}
}
</style>
<style scoped>
.custom-tabs >>> .el-tabs__header {
margin-bottom: 8px;
display: inline-block;
/* transform: translateY(-12px); */
}
.custom-tabs >>> .el-tabs__item {
padding-left: 0px !important;
padding-right: 0px !important;
line-height: 36px !important;
height: 36px;
}
.custom-tabs >>> .el-tabs__content {
height: calc(100% - 42px);
}
.custom-tabs >>> .el-tab-pane {
box-sizing: border-box;
height: 100%;
padding: 20px;
border: 10px solid #f002;
}
</style>

View File

@@ -1,7 +1,7 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2024-01-29 16:50:26 * @Date: 2024-01-29 16:50:26
* @LastEditTime: 2024-04-07 16:05:59 * @LastEditTime: 2024-04-22 09:42:45
* @LastEditors: zhp * @LastEditors: zhp
* @Description: * @Description:
--> -->
@@ -34,7 +34,7 @@
</el-col> </el-col>
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8"> <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8">
<base-container :no-content-padding="true" :title="'产量及良率统计'" :size="'small'" <base-container :show-time="true" :no-content-padding="true" :title="'产量及良率统计'" :size="'small'"
:title-icon="'energyMonitoring'"> :title-icon="'energyMonitoring'">
<!-- <div style="width: 45%;position: absolute; top: 3em; right: 3em;"> <!-- <div style="width: 45%;position: absolute; top: 3em; right: 3em;">
<top-radio-group /> <top-radio-group />
@@ -53,7 +53,8 @@
</el-col> </el-col>
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8"> <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8">
<base-container :no-content-padding="true" :title="'ISRA 缺陷数据'" :size="'small'" :title-icon="'scrap'"> <base-container :show-time="true" :no-content-padding="true" :title="'ISRA 缺陷数据'" :size="'small'"
:title-icon="'scrap'">
<!-- <base-table1 :page="1" :limit="999" :show-index="false" :table-config="ISRATableProps" <!-- <base-table1 :page="1" :limit="999" :show-index="false" :table-config="ISRATableProps"
:table-data="ISRAList" /> --> :table-data="ISRAList" /> -->
<ISRAChart ref="ISRAChart" /> <ISRAChart ref="ISRAChart" />
@@ -64,8 +65,8 @@
<el-row :style="{ padding: '0 ' + 9 + 'px' }" :gutter="10" type="flex" class="flex-1"> <el-row :style="{ padding: '0 ' + 9 + 'px' }" :gutter="10" type="flex" class="flex-1">
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12"> <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
<base-container :no-content-padding="true" :height="256" :title="'废片 缺陷数据'" :size="'eqStatus'" <base-container :show-time="true" :no-content-padding="true" :height="256" :title="'废片 缺陷数据'"
:title-icon="'scrap'"> :size="'eqStatus'" :title-icon="'scrap'">
<!-- <div style="width: 45%;position: absolute; top: 3em; right: 3em;"> <!-- <div style="width: 45%;position: absolute; top: 3em; right: 3em;">
<top-radio-group /> <top-radio-group />
</div> --> </div> -->
@@ -98,7 +99,8 @@
</base-container> </base-container>
</el-col> </el-col>
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="14"> <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="14">
<base-container :height="318 + 338 + 16" :size="'eqStatus'" :title="'设备状态监控'" :title-icon="'eqMonitoring'"> <base-container :show-time="false" :height="318 + 338 + 16" :size="'eqStatus'" :title="'设备状态监控'"
:title-icon="'eqMonitoring'">
<!-- <div style="width: 45%;position: absolute; top: 3em; right: 3em;"> <!-- <div style="width: 45%;position: absolute; top: 3em; right: 3em;">
<top-radio-group /> <top-radio-group />
</div> --> </div> -->
@@ -625,8 +627,8 @@ export default {
`<span style="color:rgba(255,255,255,0.5)">${this.getSize(item.size) || ''}</span>`, `<span style="color:rgba(255,255,255,0.5)">${this.getSize(item.size) || ''}</span>`,
`<span style="color:rgba(255,255,255,0.5)">${this.NumFormat(item.productArea) + '㎡' || ''}</span>`, `<span style="color:rgba(255,255,255,0.5)">${this.NumFormat(item.productArea) + '㎡' || ''}</span>`,
`<span style="color:rgba(255,255,255,0.5)">${this.NumFormat(item.wasteArea) + '㎡' || ''}</span>`, `<span style="color:rgba(255,255,255,0.5)">${this.NumFormat(item.wasteArea) + '㎡' || ''}</span>`,
`<div style = "${(item.product * 100).toFixed(0) > 91 ? 'display:block;color:#00FFF7' : 'display:none;'}">${(item.product * 100).toFixed(0) + '%' || ''}</div> `<div style = "${(item.product * 100).toFixed(0) >= 91 ? 'display:block;color:#00FFF7' : 'display:none;'}">${(item.product * 100).toFixed(0) + '%' || ''}</div>
<div style = "${(item.product * 100).toFixed(0) < 91 ? 'display:block; color:rgba(255, 209, 96, 1)' : 'display:none;'}">${(item.product * 100).toFixed(0) + '%' || ''}</div>` <div style = "${(item.product * 100).toFixed(0) <= 91 ? 'display:block; color:rgba(255, 209, 96, 1)' : 'display:none;'}">${(item.product * 100).toFixed(0) + '%' || ''}</div>`
]) ])
this.cutConfig.data = cutArr this.cutConfig.data = cutArr
// this.$nextTick(() => { // this.$nextTick(() => {
@@ -635,6 +637,7 @@ export default {
// this.cutConfig.data = cutArr // this.cutConfig.data = cutArr
// this.$refs['cutScrollBoard'].updateRows(cutArr) // this.$refs['cutScrollBoard'].updateRows(cutArr)
} else if (this.cutWsData.type === 'cutting' && this.cutWsData.name === 'chart' && this.cutWsData.dateType === 'day') { } else if (this.cutWsData.type === 'cutting' && this.cutWsData.name === 'chart' && this.cutWsData.dateType === 'day') {
if (this.cutWsData.coldDetData.length !== 0) {
let nameList = [] let nameList = []
let nameWasteList = [] let nameWasteList = []
let topNameList = [] let topNameList = []
@@ -651,7 +654,7 @@ export default {
wasteList.push(ele.wastArea) wasteList.push(ele.wastArea)
nameWasteList.push('缺陷面积:' + this.NumFormat(ele.wastArea) + '㎡') nameWasteList.push('缺陷面积:' + this.NumFormat(ele.wastArea) + '㎡')
sumAreaList.push(ele.sumArea) sumAreaList.push(ele.sumArea)
yieldList.push(parseFloat((ele.yield * 100).toFixed(0))) yieldList.push(parseFloat((ele.yield * 100).toFixed(2)))
}) })
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.firstPileChart.initChart(nameList, [topNameList[0]], [nameWasteList[0]], [productList[0]], [wasteList[0]]) this.$refs.firstPileChart.initChart(nameList, [topNameList[0]], [nameWasteList[0]], [productList[0]], [wasteList[0]])
@@ -662,6 +665,7 @@ export default {
this.$refs.productChart.initChart(nameList, yieldList, sumAreaList) this.$refs.productChart.initChart(nameList, yieldList, sumAreaList)
}) })
} }
}
}; };
// if (typeof (WebSocket) === 'undefined') { // if (typeof (WebSocket) === 'undefined') {
// alert('您的浏览器不支持WebSocket') // alert('您的浏览器不支持WebSocket')

View File

@@ -1,7 +1,7 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2024-01-29 13:45:56 * @Date: 2024-01-29 13:45:56
* @LastEditTime: 2024-03-13 08:58:01 * @LastEditTime: 2024-04-17 15:48:21
* @LastEditors: zhp * @LastEditors: zhp
* @Description: * @Description:
--> -->
@@ -13,6 +13,7 @@
</template> </template>
<script> <script>
import { position } from '@antv/x6-common/lib/dom/position';
import * as echarts from 'echarts'; import * as echarts from 'echarts';
// import resize from './../mixins/resize' // import resize from './../mixins/resize'
// import NotMsg from './../components/NotMsg' // import NotMsg from './../components/NotMsg'
@@ -26,7 +27,7 @@ export default {
return { return {
chart: null, chart: null,
// notMsg:true, // notMsg:true,
colors:['#2760ff', '#518eec', '#0ee8e4', '#ddb523'], colors: ['#2760ff', '#518eec', '#49FBD6', '#ddb523'],
chartData: [] chartData: []
}; };
}, },
@@ -46,7 +47,48 @@ export default {
} }
} }
}, },
mounted() {
this.chartData = [
{
name: '0904褶皱/严重',
num: 1112,
yield: 0.97,
},
{
name: '0904褶皱/严重',
num: 1112,
yield: 0.97,
},
{
name: '0904褶皱/严重',
num: 1112,
yield: 0.97,
},
{
name: '0904褶皱/严重',
num: 1112,
yield: 0.97,
}
]
this.updateChart()
},
methods: { methods: {
getEqualNewlineString(params, length) {
let text = ''
let count = Math.ceil(params.length / length) // 向上取整数
// 一行展示length个
if (count > 1) {
for (let z = 1; z <= count; z++) {
text += params.substr((z - 1) * length, length)
if (z < count) {
text += '\n'
}
}
} else {
text += params.substr(0, length)
}
return text
},
updateChart() { updateChart() {
console.log('update') console.log('update')
let num = 0 let num = 0
@@ -71,7 +113,7 @@ export default {
color:this.colors, color:this.colors,
title:{ title:{
text: num, text: num,
subtext: '总数', subtext: '总数/片',
top: '32%', top: '32%',
left: '49%', left: '49%',
textAlign: 'center', textAlign: 'center',
@@ -84,44 +126,76 @@ export default {
color: '#fff00', color: '#fff00',
}, },
}, },
legend: { grid: {
bottom: '10%', left: '1%',
left: 'center', right: '1%',
itemWidth: 12, bottom: '0',
itemHeight:12, containLabel: true
icon: 'rect',
textStyle: {
color: '#fff'
},
data:this.chartData && this.chartData.length > 0 && this.chartData.map((item,index)=>({
name:item.name,
itemStyle:{
color: this.colors[index%4]
}
}))
}, },
// legend: {
// bottom: '10%',
// left: 'center',
// itemWidth: 12,
// itemHeight:12,
// icon: 'roundRect',
// textStyle: {
// color: '#fff'
// },
// data:this.chartData && this.chartData.length > 0 && this.chartData.map((item,index)=>({
// name:item.name,
// itemStyle:{
// color: this.colors[index%4]
// }
// }))
// },
series:[{ series:[{
name: 'ISRA缺陷检测', name: 'ISRA缺陷检测',
type: 'pie', type: 'pie',
// position:outerHeight,
center: ['50%', '40%'], center: ['50%', '40%'],
radius: ['45%', '70%'], radius: ['45%', '70%'],
avoidLabelOverlap: true, avoidLabelOverlap: true,
label: { label: {
show: false show: true,
normal: {
alignTo: 'labelLine',
margin: 10,
edgeDistance: 10,
lineHeight: 16,
// 各分区的提示内容
// params: 即下面传入的data数组,通过自定义函数,展示你想要的内容和格式
formatter: function (params) {
console.log(params);
return ;
},
formatter: (params) => {
//调用自定义显示格式
return this.getEqualNewlineString(params.value + " | " + params.percent.toFixed(0) + "%");
},
textStyle: { // 提示文字的样式
// color: '#595959',
fontSize: 16
}
}
}, },
labelLine: { labelLine: {
show: true, show: true,
length: 25,
length2: 10,
}, },
data: this.chartData && this.chartData.length > 0 && this.chartData.map((item, index) => ({ data: this.chartData && this.chartData.length > 0 && this.chartData.map((item, index) => ({
name:item.name, name:item.name,
value: item.num, value: item.num,
label: {
color: this.colors[index % 4]
},
itemStyle:{ itemStyle:{
color:{ color:{
type: 'linear', type: 'linear',
x: 1, x: 0,
y: 1, y: 0,
x2: 0, x2: 0,
y2: 0, y2: 1,
global: false, global: false,
colorStops:[ colorStops:[
{offset: 0,color: this.colors[index%4]}, {offset: 0,color: this.colors[index%4]},
@@ -145,15 +219,19 @@ export default {
.isra-chart { .isra-chart {
width: 100%; width: 100%;
height: 100%; height: 100%;
position: absolute;
top: 7%;
} }
</style>
<style>
.isra-chart-tooltip { .isra-chart-tooltip {
background: #0a2b4f77 !important; background: #0a2b4f77 !important;
border: none !important; border: none !important;
backdrop-filter: blur(12px); backdrop-filter: blur(12px);
} }
.isra-chart-tooltip * { .isra-chart-tooltip * {
color: #fff !important; color: #fff !important;
} }
</style> </style>
<style>
</style>

View File

@@ -2,7 +2,7 @@
* @Author: gtz * @Author: gtz
* @Date: 2022-01-19 15:58:17 * @Date: 2022-01-19 15:58:17
* @LastEditors: zhp * @LastEditors: zhp
* @LastEditTime: 2024-03-29 14:47:29 * @LastEditTime: 2024-04-22 09:41:21
* @Description: file content * @Description: file content
* @FilePath: \mt-bus-fe\src\views\OperationalOverview\components\baseContainer\index.vue * @FilePath: \mt-bus-fe\src\views\OperationalOverview\components\baseContainer\index.vue
--> -->
@@ -30,7 +30,7 @@
<!-- <span v-if="showTime" style="font-size: 20px;color:#52FFF8;margin-left: 10px;margin-top: 2px;"> <!-- <span v-if="showTime" style="font-size: 20px;color:#52FFF8;margin-left: 10px;margin-top: 2px;">
{{ time2 +'-'+ time }} {{ time2 +'-'+ time }}
</span> --> </span> -->
<span style="font-size: 20px;color:#52FFF8;margin-left: 10px;margin-top: 2px;"> <span v-if="showTime" style="font-size: 20px;color:#52FFF8;margin-left: 10px;margin-top: 2px;">
{{ startTime + '-' + endTime }} {{ startTime + '-' + endTime }}
</span> </span>
</div> </div>
@@ -56,6 +56,10 @@ export default {
type: Boolean, type: Boolean,
default: true default: true
}, },
showTime: {
type: Boolean,
default: true
},
noPadding: { noPadding: {
type: Boolean, type: Boolean,
default: false default: false

View File

@@ -2,7 +2,7 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-09-21 09:06:28 * @Date: 2023-09-21 09:06:28
* @LastEditTime: 2024-04-03 16:28:40 * @LastEditTime: 2024-04-23 14:04:24
* @LastEditors: zhp * @LastEditors: zhp
* @Description: * @Description:
--> -->
@@ -97,7 +97,7 @@ export default {
{ offset: 0.3, color: '#1295FF' } { offset: 0.3, color: '#1295FF' }
]), ]),
label: { label: {
show: true, //开启显示 show: false, //开启显示
position: 'top', //在上方显示 position: 'top', //在上方显示
textStyle: { //数值样式 textStyle: { //数值样式
color: 'rgba(255,255,255,0.5)', // 坐标值得具体的颜色 color: 'rgba(255,255,255,0.5)', // 坐标值得具体的颜色
@@ -156,6 +156,8 @@ export default {
this.chart.setOption({ this.chart.setOption({
// color: colors, // color: colors,
tooltip: { tooltip: {
trigger: 'item',
className: "isra-chart-tooltip",
trigger: 'axis', trigger: 'axis',
axisPointer: { axisPointer: {
type: 'cross' type: 'cross'
@@ -225,6 +227,9 @@ export default {
scale: true, scale: true,
type: 'value', type: 'value',
name: '良品率/%', name: '良品率/%',
max: 100,//最大值
min: 0,//最小值
interval: 20,//间隔
nameTextStyle: {// y轴上方单位的颜色 nameTextStyle: {// y轴上方单位的颜色
color: 'rgba(255,255,255,0.5)', // 坐标值得具体的颜色 color: 'rgba(255,255,255,0.5)', // 坐标值得具体的颜色
align: "left", align: "left",
@@ -261,12 +266,9 @@ export default {
// }, // },
}, },
{ {
min: function() { // 取最小值向下取整为最小刻度 min: 0,
return 0 max: 100000,
}, minInterval: 5,//间隔
max: function(value) { // 取最大值向上取整为最大刻度
return Math.ceil(value.max)
},
scale: true, scale: true,
type: 'value', type: 'value',
name: '产量/㎡', // y轴上方的单位 name: '产量/㎡', // y轴上方的单位
@@ -315,8 +317,16 @@ export default {
} }
</script> </script>
<style> <style>
.coldProductChart{ .coldProductChart{
top: -10px; top: -10px;
} }
.isra-chart-tooltip {
background: #0a2b4f77 !important;
border: none !important;
backdrop-filter: blur(12px);
}
.isra-chart-tooltip * {
color: #fff !important;
}
</style> </style>

View File

@@ -1,7 +1,7 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-09-21 09:06:28 * @Date: 2023-09-21 09:06:28
* @LastEditTime: 2024-04-03 17:09:12 * @LastEditTime: 2024-04-23 14:06:05
* @LastEditors: zhp * @LastEditors: zhp
* @Description: * @Description:
--> -->
@@ -162,6 +162,8 @@ export default {
this.chart.setOption({ this.chart.setOption({
// color: colors, // color: colors,
tooltip: { tooltip: {
trigger: 'item',
className: "isra-chart-tooltip",
trigger: 'axis', trigger: 'axis',
axisPointer: { axisPointer: {
type: 'cross' type: 'cross'
@@ -224,6 +226,9 @@ export default {
scale: true, scale: true,
type: 'value', type: 'value',
name: '良品率/%', name: '良品率/%',
max: 100,//最大值
min: 0,//最小值
interval: 20,//间隔
nameTextStyle: {// y轴上方单位的颜色 nameTextStyle: {// y轴上方单位的颜色
color: 'rgba(255,255,255,0.5)', // 坐标值得具体的颜色 color: 'rgba(255,255,255,0.5)', // 坐标值得具体的颜色
align: "left", align: "left",
@@ -260,12 +265,9 @@ export default {
// }, // },
}, },
{ {
// min: function() { // 取最小值向下取整为最小刻度 min: 0,
// return 0 max: 100000,
// }, minInterval: 5,//间隔
// max: function(value) { // 取最大值向上取整为最大刻度
// return Math.ceil(value.max)
// },
scale: true, scale: true,
type: 'value', type: 'value',
name: '产量/片', // y轴上方的单位 name: '产量/片', // y轴上方的单位
@@ -324,4 +326,13 @@ export default {
width: 100%; width: 100%;
top: -30px; top: -30px;
} }
.isra-chart-tooltip {
background: #0a2b4f77 !important;
border: none !important;
backdrop-filter: blur(12px);
}
.isra-chart-tooltip * {
color: #fff !important;
}
</style> </style>

View File

@@ -128,6 +128,8 @@ export default {
this.chart.setOption({ this.chart.setOption({
tooltip: { tooltip: {
trigger: 'axis', trigger: 'axis',
trigger: 'item',
className: "isra-chart-tooltip",
axisPointer: { axisPointer: {
// 坐标轴指示器,坐标轴触发有效 // 坐标轴指示器,坐标轴触发有效
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow' type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
@@ -226,4 +228,13 @@ export default {
width: 100%; width: 100%;
top: -30px; top: -30px;
} }
.isra-chart-tooltip {
background: #0a2b4f77 !important;
border: none !important;
backdrop-filter: blur(12px);
}
.isra-chart-tooltip * {
color: #fff !important;
}
</style> </style>

View File

@@ -1,7 +1,7 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-12-27 13:54:52 * @Date: 2023-12-27 13:54:52
* @LastEditTime: 2024-04-03 18:12:18 * @LastEditTime: 2024-04-19 15:43:08
* @LastEditors: zhp * @LastEditors: zhp
* @Description: * @Description:
--> -->
@@ -101,6 +101,9 @@ export default {
});; });;
}, },
initChart(nameList, topNameList, nameWasteList, passRateList, wasteList) { initChart(nameList, topNameList, nameWasteList, passRateList, wasteList) {
if (topNameList.length === 0 && nameWasteList.length === 0 && passRateList === 0 && wasteList === 0) {
return
} else {
let rawData = [] let rawData = []
let colors = ['#0fdedb', '#2359ec'] let colors = ['#0fdedb', '#2359ec']
rawData.push(passRateList, wasteList) rawData.push(passRateList, wasteList)
@@ -167,7 +170,7 @@ export default {
let singleData = series.filter(function (item) { let singleData = series.filter(function (item) {
return item.name == name return item.name == name
}) })
return name + parseFloat((singleData[0].data * 100).toFixed(0)) + '%' return name + parseFloat((singleData[0].data * 100).toFixed(2)) + '%'
}, },
itemWidth: 12, itemWidth: 12,
itemHeight: 12, itemHeight: 12,
@@ -257,6 +260,8 @@ export default {
this.resize() this.resize()
}, 1000); }, 1000);
}) })
}
// this.chart.resize({ // this.chart.resize({
// width: 'auto', // width: 'auto',
// height: 90 // height: 90

View File

@@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2021-07-19 15:18:30 * @Date: 2021-07-19 15:18:30
* @LastEditors: zhp * @LastEditors: zhp
* @LastEditTime: 2024-04-03 17:14:03 * @LastEditTime: 2024-04-22 12:15:49
* @Description: * @Description:
--> -->
<template> <template>
@@ -25,25 +25,40 @@
<el-row class="container-main flex-col" type="flex"> <el-row class="container-main flex-col" type="flex">
<el-row :style="{ padding: '0 ' + 9 + 'px' }" :gutter="15" type="flex" class="flex-1" style="height: 50%"> <el-row :style="{ padding: '0 ' + 9 + 'px' }" :gutter="15" type="flex" class="flex-1" style="height: 50%">
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8" height="100%"> <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8" height="100%">
<base-container :title="'设备报警'" :size="'small'" :height="318" :title-icon="'eqAlarm'"> <base-container :show-time="true" :title="'设备报警'" :size="'small'" :height="318" :title-icon="'eqAlarm'">
<dv-scroll-board class="eqTable" :config="eqConfig" style="width: 100%; height: 350px" <dv-scroll-board class="eqTable" :config="eqConfig" style="width: 100%; height: 350px"
ref="eqScrollBoard" /> ref="eqScrollBoard" />
</base-container> </base-container>
</el-col> </el-col>
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8" height="100%"> <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8" height="100%">
<base-container :title="'各工序缺陷汇总'" :size="'small'" :title-icon="'scrap'"> <base-container :show-time="true" :title="'各工序缺陷汇总'" :size="'small'" :title-icon="'scrap'">
<dv-scroll-board :config="processConfig" style="width: 100%; height: 350px" ref="processScrollBoard" /> <dv-scroll-board :config="processConfig" style="width: 100%; height: 350px" ref="processScrollBoard" />
</base-container> </base-container>
</el-col> </el-col>
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8" height="100%"> <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8" height="100%">
<base-container :height="318" :size="'small'" :title="'工单监控'" :title-icon="'eqMonitoring'"> <base-container :show-time="true" :height="318" :size="'small'" :title="'工单监控'" :title-icon="'eqMonitoring'">
<div class="order" style="width: 100%; overflow: hidden scroll; height: 350px"> <div class="order" style="width: 100%; overflow: hidden scroll; height: 350px">
<el-row v-for="op in orderList" :key="op.id" style="margin-bottom: .5em"> <el-row v-for="op in orderList" :key="op.id" style="margin-bottom: .5em;overflow: hidden;">
<!-- <el-col :span="12"> --> <!-- <el-col :span="12"> -->
<!-- <div style="height: 34px;"> -->
<p class="now-secondary-title" style="font-size: 14px;opacity: calc(.6);">{{ op.name }}</p> <span style="display: inline-block;width: 330px;">
<el-progress style="width: 620px;" text-color="rgba(255, 255, 255, .6)" :stroke-width="10" <span class="now-secondary-title" style="font-size: 14px;opacity: calc(.6);">{{ op.name }}</span>
<el-divider class="split" v-if="op.specifications" direction="vertical"></el-divider>
<!-- <span v-if="op.size" class="split"></span> -->
<span v-if="op.specifications" class="orderSize" style="font-size: 14px;opacity: calc(.6);">{{
op.specifications }}</span>
<el-divider class="split" v-if="op.planQuantity" direction="vertical"></el-divider>
<span v-if="op.planQuantity" class="orderPlan" style="font-size: 14px;opacity: calc(.6);">{{
op.planQuantity }}</span>
</span>
<span v-if="op.actualQuantity" class="orderFinish" style="font-size: 14px;margin-left: 130px;">{{
op.actualQuantity
}}</span>
<el-divider class="split" style="background-color: rgba(0, 255, 247, 1)" v-if="op.actualQuantity"
direction="vertical"></el-divider>
<!-- </div> -->
<el-progress style="width: 620px;" text-color="rgba(0, 255, 247, 1)" :stroke-width="10"
define-back-color="rgba(32, 57, 96, 1)" :percentage="op.progressRate" class="custom-progress-bar" /> define-back-color="rgba(32, 57, 96, 1)" :percentage="op.progressRate" class="custom-progress-bar" />
</el-row> </el-row>
</div> </div>
@@ -54,8 +69,8 @@
<el-row :style="{ padding: '0 ' + 9 + 'px' }" :gutter="12" type="flex" class="flex-1"> <el-row :style="{ padding: '0 ' + 9 + 'px' }" :gutter="12" type="flex" class="flex-1">
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12"> <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
<base-container :show-yes-time="true" :no-content-padding="true" :height="256" :size="'eqStatus'" <base-container :show-time="true" :show-yes-time="true" :no-content-padding="true" :height="256"
:title="'能源监控'" :title-icon="'energyMonitoring'"> :size="'eqStatus'" :title="'能源监控'" :title-icon="'energyMonitoring'">
<el-row :gutter="9"> <el-row :gutter="9">
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="24"> <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="24">
<linear-bar-chart ref="EnergyMonitoringChart" :name-list="EnergyMonitoringNameList" <linear-bar-chart ref="EnergyMonitoringChart" :name-list="EnergyMonitoringNameList"
@@ -95,80 +110,79 @@ const qualityYearList = [
{ {
name: '翻转机', name: '翻转机',
code: 'EQ20240110112358000235', code: 'EQ20240110112358000235',
status: '运行', status: '正常',
error: '否', error: true,
}, },
{ {
name: '烘干炉', name: '烘干炉',
code: 'EQ20240110112537000241', code: 'EQ20240110112537000241',
status: '运行', status: '计划停机',
error: '否', error: true,
}, },
{ {
name: '清洗机', name: '清洗机',
code: ' EQ20240110112310000232', code: ' EQ20240110112310000232',
status: '运行', status: '正常',
error: '否', error: true,
}, },
{ {
name: '钢化清洗机', name: '钢化清洗机',
code: 'EQ20240110111700000208', code: 'EQ20240110111700000208',
status: '运行', status: '正常',
error: '否', error: true,
}, },
{ {
name: '固化机', name: '固化机',
code: 'EQ20240110111700000201', code: 'EQ20240110111700000201',
status: '运行', status: '正常',
error: '否', error: false,
}, },
{ {
name: '磨边清洗机', name: '磨边清洗机',
code: ' EQ20240110111700000208', code: ' EQ20240110111700000208',
status: '运行', status: '正常',
error: '否', error: true,
}, },
{ {
name: '预热机', name: '预热机',
code: 'EQ20240110111700000205', code: 'EQ20240110111700000205',
status: '故障', status: '故障',
error: '是', error: false,
}, },
{ {
name: '下片机', name: '下片机',
code: 'EQ20240115151435000279', code: 'EQ20240115151435000279',
status: '运行', error: true,
error: '否',
}, },
{ {
name: '冷却机', name: '冷却机',
code: 'EQ20240110111700000203', code: 'EQ20240110111700000203',
status: '运行', status: '正常',
error: '否', error: false,
}, },
{ {
name: 'A储片机106', name: 'A储片机106',
code: 'EQ20240110111700000202', code: 'EQ20240110111700000202',
status: '运行', status: '正常',
error: '否', error: true,
}, },
{ {
name: '二次清洗机', name: '二次清洗机',
code: 'EQ20240110111700000209', code: 'EQ20240110111700000209',
status: '运行', status: '正常',
error: '否', error: true,
}, },
{ {
name: '二次磨边机', name: '二次磨边机',
code: ' EQ20240110110927000181', code: ' EQ20240110110927000181',
status: '故障', status: '正常',
error: '是', error: false,
}, },
{ {
name: '测试设备', name: '测试设备',
code: 'EQ20240110111700000201', code: 'EQ20240110111700000201',
status: '运行', status: '正常',
error: '否', error: true,
}, },
]; ];
const qualityMonthList = [ const qualityMonthList = [
@@ -217,37 +231,37 @@ const qualityMonthList = [
]; ];
const orderProcessList = [ const orderProcessList = [
{ {
id: '1', id: 1,
outRate: '.8', outRate: '.8',
name: '凯盛0322', name: '凯盛0322',
}, },
{ {
id: '2', id: 2,
outRate: '.4', outRate: '.4',
name: '光伏玻璃4.0', name: '光伏玻璃4.0',
}, },
{ {
id: '3', id: 3,
outRate: '.5', outRate: '.5',
name: '光伏玻璃3.0', name: '光伏玻璃3.0',
}, },
{ {
id: '4', id: 4,
outRate: '.3', outRate: '.3',
name: '光伏玻璃2.0', name: '光伏玻璃2.0',
}, },
{ {
id: '5', id: 5,
outRate: '.5', outRate: '.5',
name: '光伏玻璃1.0', name: '光伏玻璃1.0',
}, },
{ {
id: '6', id: 6,
outRate: '.8', outRate: '.8',
name: '光伏玻璃', name: '光伏玻璃',
}, },
{ {
id: '7', id: 7,
outRate: '.8', outRate: '.8',
name: '统计订单', name: '统计订单',
}, },
@@ -365,41 +379,65 @@ export default {
id: '1', id: '1',
name: '测试工单', name: '测试工单',
progressRate: 0.933333, progressRate: 0.933333,
specifications: '1100*5554*22',
plan: 11111,
actualQuantity:111,
}, },
{ {
id: '2', id: '2',
name: '测试工单2', name: '测试工单2',
progressRate: 0.932323, progressRate: 0.932323,
size: '1100*5554*22',
plan: 11111,
actualQuantity: 111,
}, },
{ {
id: '3', id: '3',
name: '测试工单3', name: '测试工单3',
progressRate: 0.23232, progressRate: 0.23232,
size: '1100*5554*22',
plan: 11111,
actualQuantity: 111,
}, },
{ {
id: '4', id: '4',
name: '测试工单4', name: '测试工单4',
progressRate: 0.32323, progressRate: 0.32323,
size: '1100*5554*22',
plan: 11111,
actualQuantity: 111,
}, },
{ {
id: '4', id: '5',
name: '测试工单4', name: '测试工单4',
progressRate: 0.32323, progressRate: 0.32323,
size: '1100*5554*22',
plan: 11111,
actualQuantity: 111,
}, },
{ {
id: '4', id: '6',
name: '测试工单4', name: '测试工单4',
size: '1100*5554*22',
progressRate: 0.32323, progressRate: 0.32323,
plan: 11111,
actualQuantity: 111,
}, },
{ {
id: '4', id: '7',
name: '测试工单4', name: '测试工单4',
size: '1100*5554*22',
progressRate: 0.32323, progressRate: 0.32323,
plan: 11111,
actualQuantity: 111,
}, },
{ {
id: '4', id: '8',
name: '测试工单4', name: '测试工单4',
progressRate: 0.32323, progressRate: 0.32323,
size: '1100*5554*22',
plan: 11111,
actualQuantity: 111,
}, },
// { // {
// id: '5', // id: '5',
@@ -417,6 +455,9 @@ export default {
id: ele.id, id: ele.id,
name: ele.name, name: ele.name,
progressRate: parseFloat((ele.progressRate * 100).toFixed(0)), progressRate: parseFloat((ele.progressRate * 100).toFixed(0)),
specifications: ele.specifications ? '规格' + ele.specifications :null,
planQuantity: ele.plan ? '计划' + ele.plan + '片' : null,
actualQuantity: ele.actualQuantity + '片',
}; };
} }
}); });
@@ -440,8 +481,8 @@ export default {
<span style="color:rgba(255,255,255,0.5)" >${item.name || ''} <span style="color:rgba(255,255,255,0.5)" >${item.name || ''}
</span>`, </span>`,
`<span style="color:rgba(255,255,255,0.5)">${item.code || ''}</span>`, `<span style="color:rgba(255,255,255,0.5)">${item.code || ''}</span>`,
`<span style="color:rgba(255,255,255,0.5)">${item.status || ''}</span>`, `<span style="color:rgba(255,255,255,0.5)"><div style="${item.status == '正常' ? 'box-shadow: 0px 0px 2px 1px #2760FF;width:6px;height:6px;border-radius: 50%;background-color: #2760FF;float:left;margin:13px 10px 0 0 ' : 'box-shadow: 0px 0px 2px 1px #FFBD02;width:6px;height:6px;border-radius: 50%; background-color: #FFBD02;float:left;margin:13px 10px 0 0 '}"></div> ${item.status || ''}</span>`,
`<span style="color:rgba(255,255,255,0.5)">${item.error || ''}</span>`, `<span style="color:rgba(255,255,255,0.5)"><div style="${item.error == false ? 'box-shadow: 0px 0px 2px 1px #2760FF;width:6px;height:6px;border-radius: 50%;background-color: #2760FF;float:left;margin:13px 10px 0 0 ' : 'box-shadow: 0px 0px 2px 1px red;width:6px;height:6px;border-radius: 50%; background-color: red;float:left;margin:13px 10px 0 0 '}"></div> ${item.error == true ? '是' : '否' || ''}</span>`,
]); ]);
this.eqConfig.data = eqArr; this.eqConfig.data = eqArr;
let data = [ let data = [
@@ -691,6 +732,9 @@ export default {
id: ele.id, id: ele.id,
name: ele.name, name: ele.name,
progressRate: parseFloat((ele.progressRate * 100).toFixed(0)), progressRate: parseFloat((ele.progressRate * 100).toFixed(0)),
specifications: ele.specifications ? '规格' + ele.specifications :null,
planQuantity: ele.planQuantity ? '计划' + ele.planQuantity + '片' : null,
actualQuantity: ele.actualQuantity ? ele.actualQuantity + '片' : null,
}; };
} }
}); });
@@ -704,12 +748,8 @@ export default {
`<span style="color:rgba(255,255,255,0.5)">${ `<span style="color:rgba(255,255,255,0.5)">${
item.code || '' item.code || ''
}</span>`, }</span>`,
`<span style="color:rgba(255,255,255,0.5)"><span style="color:rgba(255,255,255,0.5)"></span> ${ `<span style="color:rgba(255,255,255,0.5)"><div style="${item.status == '正常' ? 'box-shadow: 0px 0px 2px 1px #2760FF;width:6px;height:6px;border-radius: 50%;background-color: #2760FF;float:left;margin:10px 10px 0 0 ' : 'box-shadow: 0px 0px 2px 1px #FFBD02;width:6px;height:6px;border-radius: 50%; background-color: #FFBD02;float:left;margin:10px 10px 0 0 '}"></div> ${item.status || ''}</span>`,
item.status || '' `<span style="color:rgba(255,255,255,0.5)"><div style="${item.error == 'false' ? 'box-shadow: 0px 0px 2px 1px #2760FF;width:6px;height:6px;border-radius: 50%;background-color: #2760FF;float:left;margin:10px 10px 0 0 ' : 'box-shadow: 0px 0px 2px 1px red;width:6px;height:6px;border-radius: 50%; background-color: red;float:left;margin:10px 10px 0 0 '}"></div> ${item.error == true ?'是' :'否' || ''}</span>`,
}</span>`,
`<span style="color:rgba(255,255,255,0.5)">${
item.error || ''
}</span>`,
]); ]);
this.eqConfig.data = eqArr; this.eqConfig.data = eqArr;
// this.$nextTick(() => { // this.$nextTick(() => {
@@ -751,7 +791,23 @@ export default {
outputNumList outputNumList
); );
}) })
} else if (this.SJGInitWebSocket === 'inspection') { } else if (this.SJGWsData.type === 'inspection') {
let processArr = this.SJGWsData.detData.map((item, index) => [
`<span style="color:rgba(255,255,255,0.5)" >${index + 1 || ''}
</span>`,
`<span style="color:rgba(255,255,255,0.5)" >${item.productionLineName || ''}
</span>`,
`<span style="color:rgba(255,255,255,0.5)">${item.sectionName || ''
}</span>`,
`<span style="color:rgba(255,255,255,0.5)">${item.count || ''
}</span>`,
`<span style="color:rgba(255,255,255,0.5)">${item.inspectionTypeName || ''
}</span>`,
]);
this.processConfig.data = processArr;
// this.$nextTick(() => {
this.$refs['processScrollBoard'].updateRows(processArr);
// })
} }
}; };
}, },
@@ -802,6 +858,18 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.split{
width: 1px;
// display: inline-block;
height: 14px;
// margin-top: 2px;
// line-height: 0;
margin-left: 8px;
opacity:calc(.6);
margin-right: 8px;
background-color: #C8CDD7;
// border: 1px solid #C8CDD7;
}
.myLegend { .myLegend {
position: absolute; position: absolute;
top: -28px; top: -28px;
@@ -902,12 +970,39 @@ export default {
} }
.now-secondary-title { .now-secondary-title {
display: inline-block;
width: 70px;
margin: 0; margin: 0;
font-size: 1em; font-size: 14px;
line-height: 2em; line-height: 2em;
color: #fff; color: #fff;
} }
.orderSize {
display: inline-block;
width: 120px;
margin: 0;
font-size: 14px;
line-height: 2em;
color: #fff;
}
.orderFinish {
display: inline-block;
width: 60px;
margin: 0;
font-size: 14px;
line-height: 2em;
text-align: right;
color: rgba(0, 255, 247, 1);
}
.orderPlan {
display: inline-block;
width: 100px;
margin: 0;
font-size: 14px;
line-height: 2em;
color: #fff;
text-align: left;
}
.now-team-content { .now-team-content {
font-size: 3em; font-size: 3em;
line-height: 1em; line-height: 1em;

View File

@@ -138,7 +138,7 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: this.$auth.hasPermi('base:core-customer:create') ? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('base:core-customer:create') ? 'button' : '', type: this.$auth.hasPermi('base:core-customer:create') ? 'button' : '',

View File

@@ -110,7 +110,7 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: this.$auth.hasPermi('base:core-department:create') ? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('base:core-department:create') ? 'button' : '', type: this.$auth.hasPermi('base:core-department:create') ? 'button' : '',

View File

@@ -156,11 +156,11 @@ export default {
prop: 'createTime', prop: 'createTime',
label: '添加时间', label: '添加时间',
fixed: true, fixed: true,
width: 180, minWidth: 180,
filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'), filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
}, },
{ prop: 'name', label: '设备名称', width: 180, showOverflowtooltip: true }, { prop: 'name', label: '设备名称', minWidth: 180, showOverflowtooltip: true },
{ width: 250, prop: 'code', label: '设备编码' }, { minWidth: 250, prop: 'code', label: '设备编码' },
{ prop: 'equipmentTypeName', label: '设备类型' }, { prop: 'equipmentTypeName', label: '设备类型' },
{ prop: 'enName', label: '英文名称' }, { prop: 'enName', label: '英文名称' },
{ prop: 'abbr', label: '缩写' }, { prop: 'abbr', label: '缩写' },
@@ -211,7 +211,7 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: (this.$auth.hasPermi('base:core-equipment:export') || this.$auth.hasPermi('base:core-equipment:create')) ? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('base:core-equipment:export') type: this.$auth.hasPermi('base:core-equipment:export')

View File

@@ -126,7 +126,8 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: this.$auth.hasPermi('base:core-equipment-bind-section:create')
? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('base:core-equipment-bind-section:create') type: this.$auth.hasPermi('base:core-equipment-bind-section:create')

View File

@@ -90,7 +90,7 @@ export default {
prop: 'createTime', prop: 'createTime',
label: '添加时间', label: '添加时间',
fixed: true, fixed: true,
width: 180, minWidth: 180,
filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'), filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
}, },
{ prop: 'name', label: '类型名称' }, { prop: 'name', label: '类型名称' },
@@ -111,7 +111,8 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: this.$auth.hasPermi('base:core-equipment-type:create')
? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('base:core-equipment-type:create') type: this.$auth.hasPermi('base:core-equipment-type:create')

View File

@@ -137,7 +137,7 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: this.$auth.hasPermi('base:core-hot-material-check:create') ? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('base:core-hot-material-check:create') ? 'button' : '', type: this.$auth.hasPermi('base:core-hot-material-check:create') ? 'button' : '',

View File

@@ -110,7 +110,7 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: this.$auth.hasPermi('base:core-major:create') ? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('base:core-major:create') ? 'button' : '', type: this.$auth.hasPermi('base:core-major:create') ? 'button' : '',

View File

@@ -14,7 +14,7 @@
<method-btn <method-btn
v-if="tableBtn.length" v-if="tableBtn.length"
slot="handleBtn" slot="handleBtn"
:width="120" :Width="120"
label="操作" label="操作"
:method-list="tableBtn" :method-list="tableBtn"
@clickBtn="handleClick" /> @clickBtn="handleClick" />
@@ -48,45 +48,45 @@ const tableProps = [
prop: 'createTime', prop: 'createTime',
label: '添加时间', label: '添加时间',
filter: parseTime, filter: parseTime,
width: 150, minWidth: 150,
showOverflowtooltip: true showOverflowtooltip: true
}, },
{ {
prop: 'name', prop: 'name',
label: '产品名称', label: '产品名称',
width: 150, minWidth: 150,
showOverflowtooltip: true showOverflowtooltip: true
}, },
{ {
prop: 'code', prop: 'code',
label: '产品编码', label: '产品编码',
width: 190, minWidth: 190,
showOverflowtooltip: true showOverflowtooltip: true
}, },
{ {
prop: 'productType', prop: 'productType',
label: '产品类型', label: '产品类型',
filter: publicFormatter('product_type'), filter: publicFormatter('product_type'),
width: 180, minWidth: 180,
showOverflowtooltip: true showOverflowtooltip: true
}, },
{ {
prop: 'specifications', prop: 'specifications',
label: '规格', label: '规格',
width: 150, minWidth: 150,
showOverflowtooltip: true showOverflowtooltip: true
}, },
{ {
prop: 'unit', prop: 'unit',
label: '单位', label: '单位',
filter: publicFormatter('unit_dict'), filter: publicFormatter('unit_dict'),
width: 90, minWidth: 90,
showOverflowtooltip: true showOverflowtooltip: true
}, },
{ {
prop: 'remark', prop: 'remark',
label: '备注', label: '备注',
width: 120, minWidth: 120,
showOverflowtooltip: true showOverflowtooltip: true
}, },
]; ];
@@ -141,7 +141,7 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: this.$auth.hasPermi('base:core-product:create') ? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('base:core-product:create') ? 'button' : '', type: this.$auth.hasPermi('base:core-product:create') ? 'button' : '',

View File

@@ -14,7 +14,7 @@
<method-btn <method-btn
v-if="tableBtn.length" v-if="tableBtn.length"
slot="handleBtn" slot="handleBtn"
:width="120" :minWidth="120"
label="操作" label="操作"
:method-list="tableBtn" :method-list="tableBtn"
@clickBtn="handleClick" /> @clickBtn="handleClick" />
@@ -30,7 +30,7 @@
@cancel="handleCancel" @cancel="handleCancel"
@confirm="handleConfirm" @confirm="handleConfirm"
:before-close="handleCancel" :before-close="handleCancel"
width="50%"> minWidth="50%">
<add-or-update <add-or-update
ref="addOrUpdate" ref="addOrUpdate"
@refreshDataList="successSubmit"></add-or-update> @refreshDataList="successSubmit"></add-or-update>
@@ -56,39 +56,39 @@ const tableProps = [
prop: 'createTime', prop: 'createTime',
label: '添加时间', label: '添加时间',
filter: parseTime, filter: parseTime,
width: 150, minWidth: 150,
showOverflowtooltip: true showOverflowtooltip: true
}, },
{ {
prop: 'factoryName', prop: 'factoryName',
label: '工厂', label: '工厂',
width: 150, minWidth: 150,
showOverflowtooltip: true showOverflowtooltip: true
}, },
{ {
prop: 'roomNameDict', prop: 'roomNameDict',
label: '车间名称', label: '车间名称',
filter: publicFormatter('workshop'), filter: publicFormatter('workshop'),
width: 120, minWidth: 120,
showOverflowtooltip: true showOverflowtooltip: true
}, },
{ {
prop: 'name', prop: 'name',
label: '产线名称', label: '产线名称',
width: 120, minWidth: 120,
showOverflowtooltip: true showOverflowtooltip: true
}, },
{ {
prop: 'code', prop: 'code',
label: '产线编码', label: '产线编码',
width: 150, minWidth: 150,
showOverflowtooltip: true showOverflowtooltip: true
}, },
{ {
prop: 'enabled', prop: 'enabled',
label: '当前状态', label: '当前状态',
filter: codeFilter('lineStatus'), filter: codeFilter('lineStatus'),
width: 120, minWidth: 120,
showOverflowtooltip: true showOverflowtooltip: true
}, },
// { // {
@@ -98,13 +98,13 @@ const tableProps = [
{ {
prop: 'description', prop: 'description',
label: '描述', label: '描述',
width: 120, minWidth: 120,
showOverflowtooltip: true showOverflowtooltip: true
}, },
{ {
prop: 'remark', prop: 'remark',
label: '备注', label: '备注',
width: 120, minWidth: 120,
showOverflowtooltip: true showOverflowtooltip: true
} }
]; ];
@@ -147,7 +147,7 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: this.$auth.hasPermi('base:core-production-line:create') ? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('base:core-production-line:create') ? 'button' : '', type: this.$auth.hasPermi('base:core-production-line:create') ? 'button' : '',

View File

@@ -132,7 +132,7 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: this.$auth.hasPermi('base:core-supplier:create') ? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('base:core-supplier:create') ? 'button' : '', type: this.$auth.hasPermi('base:core-supplier:create') ? 'button' : '',

View File

@@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2021-11-18 14:16:25 * @Date: 2021-11-18 14:16:25
* @LastEditors: DY * @LastEditors: DY
* @LastEditTime: 2024-04-08 14:27:29 * @LastEditTime: 2024-04-10 16:16:31
* @Description: * @Description:
--> -->
<template> <template>
@@ -201,6 +201,7 @@
@pagination="getList" /> --> @pagination="getList" /> -->
</div> </div>
<div v-if="$auth.hasPermiAnd(['base:material-product-bom-det:query', 'extend:process-flow:query'])">
<div class="card" style="padding-bottom: 16px;"> <div class="card" style="padding-bottom: 16px;">
<div class="boxTitle"> <div class="boxTitle">
<span class="blueTitle"></span> <span class="blueTitle"></span>
@@ -220,6 +221,7 @@
:page-sizes="[5, 10, 15]" :page-sizes="[5, 10, 15]"
@pagination="getList" /> --> @pagination="getList" /> -->
</div> </div>
</div>
<!-- <div class="drawer-body__footer"> <!-- <div class="drawer-body__footer">
<el-button type="primary" @click="goback()">关闭</el-button> <el-button type="primary" @click="goback()">关闭</el-button>
@@ -461,7 +463,7 @@ export default {
}); });
// 获取预使用原料列表 // 获取预使用原料列表
console.log('111我看看', this.dataForm.materialMethod) console.log('111我看看', this.dataForm.materialMethod)
if (this.dataForm.id) { if (this.dataForm.id && this.$auth.hasPermiAnd(['base:material-product-bom-det:query', 'extend:process-flow:query'])) {
if (this.dataForm.materialMethod === 1) { if (this.dataForm.materialMethod === 1) {
// 产品 // 产品
getlistByProductId({ getlistByProductId({

View File

@@ -157,7 +157,8 @@ export default {
// showTip: '预使用原料信息' // showTip: '预使用原料信息'
// } // }
// : undefined, // : undefined,
{ this.$auth.hasPermi(`base:core-work-order:update`)
? {
type: 'active', type: 'active',
btnName: '激活', btnName: '激活',
showParam: { showParam: {
@@ -175,8 +176,10 @@ export default {
} }
] ]
} }
}, }
{ : undefined,
this.$auth.hasPermi(`base:core-work-order:update`)
? {
type: 'pause', type: 'pause',
btnName: '暂停', btnName: '暂停',
showParam: { showParam: {
@@ -189,8 +192,10 @@ export default {
} }
] ]
} }
}, }
{ : undefined,
this.$auth.hasPermi(`base:core-work-order:update`)
? {
type: 'nullify', type: 'nullify',
btnName: '作废', btnName: '作废',
showParam: { showParam: {
@@ -203,8 +208,10 @@ export default {
} }
] ]
} }
}, }
{ : undefined,
this.$auth.hasPermi(`base:core-work-order:update`)
? {
type: 'finish', type: 'finish',
btnName: '完成', btnName: '完成',
showParam: { showParam: {
@@ -222,8 +229,10 @@ export default {
} }
] ]
} }
}, }
{ : undefined,
this.$auth.hasPermi(`base:core-work-order:update`)
? {
type: 'stop', type: 'stop',
btnName: '终止', btnName: '终止',
showParam: { showParam: {
@@ -241,8 +250,12 @@ export default {
} }
] ]
} }
}, }
this.$auth.hasPermi(`base:core-work-order:detail`) : undefined,
this.$auth.hasPermiAnd([
'base:core-work-order:query',
'base:order:query'
])
? { ? {
type: 'detail', type: 'detail',
btnName: '查看详情', btnName: '查看详情',

View File

@@ -163,7 +163,7 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: this.$auth.hasPermi('base:core-worker:create') ? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('base:core-worker:create') ? 'button' : '', type: this.$auth.hasPermi('base:core-worker:create') ? 'button' : '',

View File

@@ -52,8 +52,7 @@ const tableProps = [
{ {
prop: 'createTime', prop: 'createTime',
label: '添加时间', label: '添加时间',
filter: parseTime, filter: parseTime
}, },
{ {
prop: 'code', prop: 'code',
@@ -116,7 +115,7 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: this.$auth.hasPermi('base:core-workshop-section:create') ? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('base:core-workshop-section:create') ? 'button' : '', type: this.$auth.hasPermi('base:core-workshop-section:create') ? 'button' : '',

View File

@@ -1,6 +1,11 @@
<template> <template>
<el-drawer :visible.sync="drawer" :append-to-body="true" size="80%" > <el-drawer
<small-title slot="title" :no-padding="true"> :visible.sync="drawer"
:append-to-body="true"
size="80%">
<small-title
slot="title"
:no-padding="true">
<!-- <template v-for="demo in demoList"> --> <!-- <template v-for="demo in demoList"> -->
<!-- <el-button :key="demo.name" :type="demo.name === curDemo ? 'primary' : ' '" @click="curDemo = demo.name"> --> <!-- <el-button :key="demo.name" :type="demo.name === curDemo ? 'primary' : ' '" @click="curDemo = demo.name"> -->
<!-- {{ $t('module.packingManage.printModelDesign') }} --> <!-- {{ $t('module.packingManage.printModelDesign') }} -->
@@ -10,7 +15,7 @@
</small-title> </small-title>
<el-card> <el-card>
<el-row style="margin-bottom: 10px"> <el-row style="margin-bottom: 10px">
<el-col :span="4"> <!-- <el-col :span="4"> -->
<!-- 模板选择 --> <!-- 模板选择 -->
<!-- <el-select <!-- <el-select
@@ -25,26 +30,65 @@
{{ opt.name }} {{ opt.name }}
</el-option> </el-option>
</el-select> --> </el-select> -->
</el-col> <!-- </el-col> -->
<el-col :span="20"> <el-col :span="24">
<!-- 纸张设置 --> <!-- 纸张设置 -->
<el-button-group style="margin: 0 10px"> <el-button-group style="margin: 0 10px">
<el-button v-for="(value,type) in paperTypes" :key="type" :type="curPaperType === type ? 'primary' : ' '" <el-button
v-for="(value, type) in paperTypes"
:key="type"
:type="curPaperType === type ? 'primary' : ' '"
@click="setPaper(type, value)"> @click="setPaper(type, value)">
{{ type }} {{ type }}
</el-button> </el-button>
</el-button-group> </el-button-group>
<el-input-number style="margin:0 10px" :value="scaleValue " :precision="2" :step="0.1" :min="scaleMin" <el-input-number
:max="scaleMax" @change="changeScale" /> style="margin: 0 10px; width: 140px"
<el-popover v-model="paperPopVisible" placement="bottom" width="300" title="设置纸张宽高(mm)"> :value="scaleValue"
<div style="display: flex;align-items: center;justify-content: space-between;margin-bottom: 10px"> :precision="2"
<el-input v-model="paperWidth" type="number" style=" width: 100px; text-align: center" place="宽mm" />~ :step="0.1"
<el-input v-model="paperHeight" type="number" style=" width: 100px; text-align: center" place="高mm" /> :min="scaleMin"
:max="scaleMax"
@change="changeScale" />
<el-popover
v-model="paperPopVisible"
placement="bottom"
width="300"
title="设置纸张宽高(mm)">
<div
style="
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 10px;
">
<el-input
v-model="paperWidth"
type="number"
style="width: 100px; text-align: center"
place="宽mm" />
~
<el-input
v-model="paperHeight"
type="number"
style="width: 100px; text-align: center"
place="高mm" />
</div> </div>
<div> <div>
<el-button type="primary" style="width: 100%" size="mini" @click="otherPaper">确定</el-button> <el-button
type="primary"
style="width: 100%"
size="mini"
@click="otherPaper">
确定
</el-button>
</div> </div>
<el-button slot="reference" type="primary" style="margin:0 10px">自定义宽高</el-button> <el-button
slot="reference"
type="primary"
style="margin: 0 10px">
自定义宽高
</el-button>
</el-popover> </el-popover>
<!-- <a-button-group>--> <!-- <a-button-group>-->
@@ -72,38 +116,57 @@
<!-- 预览/打印 --> <!-- 预览/打印 -->
<el-button-group> <el-button-group>
<el-button type="primary" icon="redo" @click="rotatePaper()">旋转</el-button> <el-button
<el-button type="primary" icon="el-icon-view" @click="preView"> type="primary"
icon="redo"
@click="rotatePaper()">
旋转
</el-button>
<el-button
type="primary"
icon="el-icon-view"
@click="preView">
预览 预览
</el-button> </el-button>
<!-- <el-button type="primary" icon="el-icon-printer" @click="print"> <!-- <el-button type="primary" icon="el-icon-printer" @click="print">
直接打印 直接打印
</el-button> --> </el-button> -->
<el-button type="primary" icon="el-icon-s-management" @click="save"> <el-button
type="primary"
icon="el-icon-s-management"
@click="save">
保存 保存
</el-button> </el-button>
<el-button type="danger" icon="el-icon-delete" @click="clearPaper"> <el-button
type="danger"
icon="el-icon-delete"
@click="clearPaper">
清空 清空
</el-button> </el-button>
</el-button-group> </el-button-group>
<!-- 保存/清空 --> <!-- 保存/清空 -->
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="24"> <el-row :gutter="24">
<el-col :span="4"> <el-col :span="4">
<el-card style="height: 100vh"> <el-card style="height: 100vh">
<el-row> <el-row>
<el-col :span="24" class="rect-printElement-types hiprintEpContainer" /> <el-col
:span="24"
class="rect-printElement-types hiprintEpContainer" />
</el-row> </el-row>
</el-card> </el-card>
</el-col> </el-col>
<el-col :span="16"> <el-col :span="16">
<el-card class="card-design"> <el-card class="card-design">
<div id="hiprint-printTemplate" class="hiprint-printTemplate" /> <div
id="hiprint-printTemplate"
class="hiprint-printTemplate" />
</el-card> </el-card>
</el-col> </el-col>
<el-col :span="4" class="params_setting_container"> <el-col
:span="4"
class="params_setting_container">
<el-card> <el-card>
<el-row class="hinnn-layout-sider"> <el-row class="hinnn-layout-sider">
<div id="PrintElementOptionSetting" /> <div id="PrintElementOptionSetting" />
@@ -118,15 +181,14 @@
</template> </template>
<script> <script>
import printPreview from './preview';
import printPreview from './preview' import { MessageBox } from 'element-ui';
import { MessageBox } from 'element-ui' import { hiprint } from 'vue-plugin-hiprint';
import { hiprint } from 'vue-plugin-hiprint' import providers from './providers';
import providers from './providers'
// import printData from './print-data' // import printData from './print-data'
import $ from 'jquery' import $ from 'jquery';
import SmallTitle from './SmallTitle.vue' import SmallTitle from './SmallTitle.vue';
let hiprintTemplate = null let hiprintTemplate = null;
export default { export default {
name: 'PrintCustom', name: 'PrintCustom',
components: { printPreview, SmallTitle }, components: { printPreview, SmallTitle },
@@ -153,30 +215,34 @@ export default {
drawer: false, drawer: false,
// 纸张类型 // 纸张类型
paperTypes: { paperTypes: {
'A3': { A3: {
width: 420, width: 420,
height: 296.6 height: 296.6,
}, },
'A4': { A4: {
width: 210, width: 210,
height: 297 height: 297,
}, },
'A5': { A5: {
width: 210, width: 210,
height: 147.6 height: 147.6,
}, },
'B3': { A6: {
width: 95,
height: 125,
},
B3: {
width: 500, width: 500,
height: 352.6 height: 352.6,
}, },
'B4': { B4: {
width: 250, width: 250,
height: 352.6 height: 352.6,
}, },
'B5': { B5: {
width: 250, width: 250,
height: 175.6 height: 175.6,
} },
}, },
scaleValue: 1, scaleValue: 1,
scaleMax: 5, scaleMax: 5,
@@ -184,59 +250,59 @@ export default {
// 自定义纸张 // 自定义纸张
paperPopVisible: false, paperPopVisible: false,
paperWidth: '210', paperWidth: '210',
paperHeight: '297' paperHeight: '297',
} };
}, },
computed: { computed: {
curPaperType() { curPaperType() {
let type = 'other' let type = 'other';
const types = this.paperTypes const types = this.paperTypes;
for (const key in types) { for (const key in types) {
const item = types[key] const item = types[key];
const { width, height } = this.curPaper const { width, height } = this.curPaper;
if (item.width === width && item.height === height) { if (item.width === width && item.height === height) {
type = key type = key;
} }
} }
return type return type;
} },
}, },
created() { created() {
// $('.hiprintEpContainer').empty() // $('.hiprintEpContainer').empty()
}, },
destroyed() { destroyed() {
$('.hiprintEpContainer').empty() $('.hiprintEpContainer').empty();
console.log(11111) console.log(11111);
}, },
methods: { methods: {
// handleClose() { // handleClose() {
// $('.hiprintEpContainer').empty() // $('.hiprintEpContainer').empty()
// }, // },
closed() { closed() {
$('.hiprintEpContainer').empty() $('.hiprintEpContainer').empty();
$('.hiprint-printTemplate').empty() $('.hiprint-printTemplate').empty();
}, },
init(data) { init(data) {
this.drawer = true this.drawer = true;
this.modelData = data this.modelData = data;
this.modeList = providers.map((e) => { this.modeList = providers.map((e) => {
return { type: e.type, name: e.name, value: e.value } return { type: e.type, name: e.name, value: e.value };
}) });
this.changeMode() this.changeMode();
}, },
changeMode() { changeMode() {
// hiprintTemplate.clear() // hiprintTemplate.clear()
// console.log(this.modelData) // console.log(this.modelData)
this.$nextTick(() => { this.$nextTick(() => {
const { mode } = this const { mode } = this;
const provider = providers[mode] const provider = providers[mode];
hiprint.init({ hiprint.init({
providers: [provider.f] providers: [provider.f],
}) });
// $('#hiprint-printTemplate').empty() // $('#hiprint-printTemplate').empty()
// console.log(JSON.parse(this.modelData)) // console.log(JSON.parse(this.modelData))
hiprint.setConfig() hiprint.setConfig();
// 替换配置 // 替换配置
hiprint.setConfig({ hiprint.setConfig({
movingDistance: 2.5, movingDistance: 2.5,
@@ -244,15 +310,15 @@ export default {
supportOptions: [ supportOptions: [
{ {
name: 'styler', name: 'styler',
hidden: true hidden: true,
}, },
{ {
name: 'formatter', name: 'formatter',
hidden: true hidden: true,
} },
] ],
} },
}) });
// console.log(this.modelData) // console.log(this.modelData)
// console.log($('#hiprint-printTemplate').empty()) // console.log($('#hiprint-printTemplate').empty())
@@ -267,35 +333,38 @@ export default {
// paginationContainer: '.hiprint-printPagination' // paginationContainer: '.hiprint-printPagination'
// }) // })
// } else { // } else {
$('.hiprintEpContainer').empty() $('.hiprintEpContainer').empty();
console.log(this.modelData || {}); console.log(this.modelData || {});
hiprint.PrintElementTypeManager.build('.hiprintEpContainer', provider.value) hiprint.PrintElementTypeManager.build(
$('.hiprint-printTemplate').empty() '.hiprintEpContainer',
provider.value
);
$('.hiprint-printTemplate').empty();
// const templates = this.$ls.get('KEY_TEMPLATES', {}) // const templates = this.$ls.get('KEY_TEMPLATES', {})
const template = provider.value const template = provider.value;
// console.log(template) // console.log(template)
if (this.modelData) { if (this.modelData) {
hiprintTemplate = new hiprint.PrintTemplate({ hiprintTemplate = new hiprint.PrintTemplate({
template: JSON.parse(this.modelData), template: JSON.parse(this.modelData),
settingContainer: '#PrintElementOptionSetting', settingContainer: '#PrintElementOptionSetting',
paginationContainer: '.hiprint-printPagination' paginationContainer: '.hiprint-printPagination',
}) });
} else { } else {
hiprintTemplate = new hiprint.PrintTemplate({ hiprintTemplate = new hiprint.PrintTemplate({
template: {}, template: {},
settingContainer: '#PrintElementOptionSetting', settingContainer: '#PrintElementOptionSetting',
paginationContainer: '.hiprint-printPagination' paginationContainer: '.hiprint-printPagination',
}) });
} }
// } // }
hiprintTemplate.design('#hiprint-printTemplate') hiprintTemplate.design('#hiprint-printTemplate');
// console.log(hiprintTemplate) // console.log(hiprintTemplate)
console.log(hiprintTemplate); console.log(hiprintTemplate);
// hiprintTemplate.design('#hiprint-printTemplate', { grid: true }) // hiprintTemplate.design('#hiprint-printTemplate', { grid: true })
// 获取当前放大比例, 当zoom时传true 才会有 // 获取当前放大比例, 当zoom时传true 才会有
this.scaleValue = hiprintTemplate.editingPanel.scale || 1 this.scaleValue = hiprintTemplate.editingPanel.scale || 1;
// this.scaleValue = hiprintTemplate.editingPanel.scale || 1 // this.scaleValue = hiprintTemplate.editingPanel.scale || 1
}) });
}, },
/** /**
* 设置纸张大小 * 设置纸张大小
@@ -305,97 +374,110 @@ export default {
setPaper(type, value) { setPaper(type, value) {
try { try {
if (Object.keys(this.paperTypes).includes(type)) { if (Object.keys(this.paperTypes).includes(type)) {
this.curPaper = { type: type, width: value.width, height: value.height } this.curPaper = {
hiprintTemplate.setPaper(value.width, value.height) type: type,
width: value.width,
height: value.height,
};
hiprintTemplate.setPaper(value.width, value.height);
} else { } else {
this.curPaper = { type: 'other', width: value.width, height: value.height } this.curPaper = {
hiprintTemplate.setPaper(value.width, value.height) type: 'other',
width: value.width,
height: value.height,
};
hiprintTemplate.setPaper(value.width, value.height);
} }
} catch (error) { } catch (error) {
this.$message.error(`操作失败: ${error}`) this.$message.error(`操作失败: ${error}`);
} }
}, },
changeScale(currentValue, oldValue) { changeScale(currentValue, oldValue) {
let big = false let big = false;
currentValue <= oldValue ? big = false : big = true currentValue <= oldValue ? (big = false) : (big = true);
let scaleValue = this.scaleValue let scaleValue = this.scaleValue;
if (big) { if (big) {
scaleValue += 0.1 scaleValue += 0.1;
if (scaleValue > this.scaleMax) scaleValue = 5 if (scaleValue > this.scaleMax) scaleValue = 5;
} else { } else {
scaleValue -= 0.1 scaleValue -= 0.1;
if (scaleValue < this.scaleMin) scaleValue = 0.5 if (scaleValue < this.scaleMin) scaleValue = 0.5;
} }
if (hiprintTemplate) { if (hiprintTemplate) {
// scaleValue: 放大缩小值, false: 不保存(不传也一样), 如果传 true, 打印时也会放大 // scaleValue: 放大缩小值, false: 不保存(不传也一样), 如果传 true, 打印时也会放大
hiprintTemplate.zoom(scaleValue) hiprintTemplate.zoom(scaleValue);
this.scaleValue = scaleValue this.scaleValue = scaleValue;
} }
}, },
clearPaper() { clearPaper() {
MessageBox.confirm('是否确认清空模板信息?', '警告', { MessageBox.confirm('是否确认清空模板信息?', '警告', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning',
}).then(() => {
try {
hiprintTemplate.clear()
} catch (error) {
this.$message.error(`操作失败: ${error}`)
}
}).catch((err) => {
console.log(err)
}) })
.then(() => {
try {
hiprintTemplate.clear();
} catch (error) {
this.$message.error(`操作失败: ${error}`);
}
})
.catch((err) => {
console.log(err);
});
}, },
otherPaper() { otherPaper() {
const value = {} const value = {};
value.width = this.paperWidth value.width = this.paperWidth;
value.height = this.paperHeight value.height = this.paperHeight;
this.paperPopVisible = false this.paperPopVisible = false;
this.setPaper('other', value) this.setPaper('other', value);
}, },
rotatePaper() { rotatePaper() {
if (hiprintTemplate) { if (hiprintTemplate) {
hiprintTemplate.rotatePaper() hiprintTemplate.rotatePaper();
} }
}, },
preView() { preView() {
const { width } = this.curPaper const { width } = this.curPaper;
this.$refs.preView.show(hiprintTemplate, this.printData, width) this.$refs.preView.show(hiprintTemplate, this.printData, width);
}, },
print() { print() {
// if (window.hiwebSocket.opened) { // if (window.hiwebSocket.opened) {
const printerList = hiprintTemplate.getPrinterList() const printerList = hiprintTemplate.getPrinterList();
console.log(printerList) console.log(printerList);
hiprintTemplate.print2(this.printData, { printer: '', title: '预览打印' }) hiprintTemplate.print2(this.printData, {
printer: '',
title: '预览打印',
});
// return // return
// } // }
// this.$message.error('客户端未连接,无法直接打印') // this.$message.error('客户端未连接,无法直接打印')
}, },
save() { save() {
// console.log(hiprintTemplate.getJson()) // console.log(hiprintTemplate.getJson())
const { mode } = this const { mode } = this;
const provider = providers[mode] const provider = providers[mode];
// console.log(hiprintTemplate.getJson()) // console.log(hiprintTemplate.getJson())
this.setTemplate({ this.setTemplate({
name: provider.value, name: provider.value,
json: hiprintTemplate.getJson() json: hiprintTemplate.getJson(),
}) });
}, },
setTemplate(payload) { setTemplate(payload) {
// const templates = this.$ls.get('KEY_TEMPLATES', {}) // const templates = this.$ls.get('KEY_TEMPLATES', {})
// console.log(payload.json) // console.log(payload.json)
// templates[payload.name] = payload.json // templates[payload.name] = payload.json
// this.$ls.set('KEY_TEMPLATES', templates) // this.$ls.set('KEY_TEMPLATES', templates)
this.$message.info('保存成功') this.$message.info('保存成功');
// console.log(JSON.stringify(payload.json)) // console.log(JSON.stringify(payload.json))
this.drawer = false this.drawer = false;
this.$emit('saveData', payload.json) this.$emit('saveData', payload.json);
$('.hiprintEpContainer').empty() $('.hiprintEpContainer').empty();
// this.$parent.$parent.getModelData(payload.json) // this.$parent.$parent.getModelData(payload.json)
} },
} },
} };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@@ -413,5 +495,4 @@ export default {
overflow-x: auto; overflow-x: auto;
overflow-y: auto; overflow-y: auto;
} }
</style> </style>

View File

@@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2021-11-18 14:16:25 * @Date: 2021-11-18 14:16:25
* @LastEditors: DY * @LastEditors: DY
* @LastEditTime: 2024-03-21 15:21:32 * @LastEditTime: 2024-04-11 16:22:19
* @Description: * @Description:
--> -->
<template> <template>
@@ -122,14 +122,14 @@
</el-form> </el-form>
</div> </div>
<div class="attr-list" v-if="idAttrShow"> <div class="attr-list" v-if="idAttrShow && this.$auth.hasPermi('base:material-attr:query')">
<small-title <small-title
style="margin: 16px 0; padding-left: 8px" style="margin: 16px 0; padding-left: 8px"
:no-padding="true"> :no-padding="true">
物料属性 物料属性
</small-title> </small-title>
<div v-if="!isdetail" class="action_btn"> <div v-if="!isdetail && this.$auth.hasPermi('base:material-attr:create')" class="action_btn">
<template> <template>
<span style="display: inline-block;"> <span style="display: inline-block;">
<el-button type="text" @click="addNew()" icon="el-icon-plus">新增</el-button> <el-button type="text" @click="addNew()" icon="el-icon-plus">新增</el-button>
@@ -182,16 +182,23 @@ import { parseTime } from '../../core/mixins/code-filter';
import attrAdd from './attr-add'; import attrAdd from './attr-add';
import { getDictDatas } from "@/utils/dict"; import { getDictDatas } from "@/utils/dict";
const tableBtn = [ // const tableBtn = [
{ // this.$auth.hasPermiAnd([
type: 'edit', // 'base:material-attr:create',
btnName: '编辑', // 'base:material-attr:update'
}, // ]) ?
{ // {
type: 'delete', // type: 'edit',
btnName: '删除', // btnName: '编辑',
}, // }
]; // : undefined,
// this.$auth.hasPermi('base:material-attr:delete') ?
// {
// type: 'delete',
// btnName: '删除',
// }
// : undefined,
// ];
const tableProps = [ const tableProps = [
{ {
prop: 'createTime', prop: 'createTime',
@@ -213,7 +220,23 @@ export default {
components: { SmallTitle, attrAdd }, components: { SmallTitle, attrAdd },
data() { data() {
return { return {
tableBtn, tableBtn: [
this.$auth.hasPermiAnd([
'base:material-attr:create',
'base:material-attr:update'
]) ?
{
type: 'edit',
btnName: '编辑',
}
: undefined,
this.$auth.hasPermi('base:material-attr:delete') ?
{
type: 'delete',
btnName: '删除',
}
: undefined,
],
tableProps, tableProps,
addOrUpdateVisible: false, addOrUpdateVisible: false,
urlOptions: { urlOptions: {

View File

@@ -134,7 +134,7 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: this.$auth.hasPermi('base:material:create') ? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('base:material:create') ? 'button' : '', type: this.$auth.hasPermi('base:material:create') ? 'button' : '',

View File

@@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2021-11-18 14:16:25 * @Date: 2021-11-18 14:16:25
* @LastEditors: DY * @LastEditors: DY
* @LastEditTime: 2024-03-21 14:39:52 * @LastEditTime: 2024-04-11 16:44:41
* @Description: * @Description:
--> -->
<template> <template>
@@ -56,14 +56,14 @@
</el-row> </el-row>
</el-form> </el-form>
</div> </div>
<div class="attr-list" v-if="idAttrShow"> <div class="attr-list" v-if="idAttrShow && $auth.hasPermiAnd(['base:material-product-bom:query', 'base:material-product-bom-det:query'])">
<small-title <small-title
style="margin: 16px 0; padding-left: 8px" style="margin: 16px 0; padding-left: 8px"
:no-padding="true"> :no-padding="true">
BOM明细 BOM明细
</small-title> </small-title>
<div v-if="!isdetail" class="action_btn"> <div v-if="!isdetail && $auth.hasPermi('base:material-product-bom:create')" class="action_btn">
<template> <template>
<span style="display: inline-block;"> <span style="display: inline-block;">
<el-button type="text" @click="addNew()" icon="el-icon-plus">添加</el-button> <el-button type="text" @click="addNew()" icon="el-icon-plus">添加</el-button>
@@ -116,16 +116,16 @@ import { parseTime } from '../../core/mixins/code-filter';
import attrAdd from './attr-add'; import attrAdd from './attr-add';
import { publicFormatter } from '@/utils/dict'; import { publicFormatter } from '@/utils/dict';
const tableBtn = [ // const tableBtn = [
{ // {
type: 'edit', // type: 'edit',
btnName: '编辑', // btnName: '编辑',
}, // },
{ // {
type: 'delete', // type: 'delete',
btnName: '删除', // btnName: '删除',
}, // },
]; // ];
const tableProps = [ const tableProps = [
{ {
prop: 'createTime', prop: 'createTime',
@@ -160,7 +160,24 @@ export default {
components: { SmallTitle, attrAdd }, components: { SmallTitle, attrAdd },
data() { data() {
return { return {
tableBtn, tableBtn: [
this.$auth.hasPermiAnd([
'base:material-product-bom:update',
'base:material-product-bom-det:create',
'base:material-product-bom-det:update'
]) ?
{
type: 'edit',
btnName: '编辑',
}
: undefined,
this.$auth.hasPermi('base:material-product-bom:delete') ?
{
type: 'delete',
btnName: '删除',
}
: undefined,
],
tableProps, tableProps,
addOrUpdateVisible: false, addOrUpdateVisible: false,
urlOptions: { urlOptions: {

View File

@@ -110,7 +110,7 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: this.$auth.hasPermi('base:material:create') ? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('base:material:create') ? 'button' : '', type: this.$auth.hasPermi('base:material:create') ? 'button' : '',

View File

@@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2023-08-01 14:55:51 * @Date: 2023-08-01 14:55:51
* @LastEditors: zhp * @LastEditors: zhp
* @LastEditTime: 2024-04-08 11:49:33 * @LastEditTime: 2024-04-10 16:34:40
* @Description: * @Description:
--> -->
<template> <template>
@@ -142,7 +142,7 @@ export default {
// name: 'reset', // name: 'reset',
// }, // },
{ {
type: 'separate', type: this.$auth.hasPermi('base:packaging-print-log:create') ? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('base:packaging-print-log:create') ? 'button' : '', type: this.$auth.hasPermi('base:packaging-print-log:create') ? 'button' : '',

View File

@@ -0,0 +1,45 @@
<template>
<div class="tableInner">
<el-input
v-if="list.isEdit"
type="number"
v-model="list[itemProp]"
@blur="changeInput" />
<span v-else>{{ list[itemProp] }}</span>
</div>
</template>
<script>
export default {
name: 'InputArea',
props: {
injectData: {
type: Object,
default: () => ({}),
},
itemProp: {
type: String,
},
},
data() {
return {
list: {},
};
},
mounted() {
this.initData();
},
watch: {
injectData() {
this.initData();
},
},
methods: {
initData() {
this.list = this.injectData;
},
changeInput() {
this.$emit('emitData', this.list);
},
},
};
</script>

View File

@@ -0,0 +1,226 @@
<template>
<div class="other-msg-box">
<el-radio-group
v-model="chooseMsg"
@change="changeChoose">
<el-radio :label="1">
<div style="display: inline-block">
<el-form
:inline="true"
:model="printMsg1"
class="demo-form-inline">
<el-form-item label="客户">
<el-select
size="small"
v-model="printMsg1.customerId"
filterable
placeholder="客户">
<el-option
v-for="item in customerList"
:key="item.id"
:label="item.name"
:value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="封箱人员工号">
<el-input
v-model="printMsg1.sealWorker"
size="small"
placeholder="封箱人员工号"></el-input>
</el-form-item>
<el-form-item label="打包人员工号">
<el-input
v-model="printMsg1.packWorker"
size="small"
placeholder="打包人员工号"></el-input>
</el-form-item>
<el-form-item label="流程卡号">
<el-input
v-model="printMsg1.processCard"
size="small"
style="width: 120px"
placeholder="流程卡号"></el-input>
</el-form-item>
<el-form-item label="托盘规格">
<el-input
v-model="printMsg1.pallet"
size="small"
style="width: 120px"
placeholder="托盘规格"></el-input>
</el-form-item>
<el-form-item label="备注">
<el-input
v-model="printMsg1.remark"
size="small"
placeholder="备注"></el-input>
</el-form-item>
</el-form>
</div>
</el-radio>
<el-radio :label="2">
<div style="display: inline-block">
<el-form
:inline="true"
:model="printMsg2"
class="demo-form-inline">
<el-form-item label="客户">
<el-select
size="small"
v-model="printMsg2.customerId"
filterable
placeholder="客户">
<el-option
v-for="item in customerList"
:key="item.id"
:label="item.name"
:value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="封箱人员工号">
<el-input
v-model="printMsg2.sealWorker"
size="small"
placeholder="封箱人员工号"></el-input>
</el-form-item>
<el-form-item label="打包人员工号">
<el-input
v-model="printMsg2.packWorker"
size="small"
placeholder="打包人员工号"></el-input>
</el-form-item>
<el-form-item label="流程卡号">
<el-input
v-model="printMsg2.processCard"
size="small"
style="width: 120px"
placeholder="流程卡号"></el-input>
</el-form-item>
<el-form-item label="托盘规格">
<el-input
v-model="printMsg2.pallet"
size="small"
style="width: 120px"
placeholder="托盘规格"></el-input>
</el-form-item>
<el-form-item label="备注">
<el-input
v-model="printMsg2.remark"
size="small"
placeholder="备注"></el-input>
</el-form-item>
</el-form>
</div>
</el-radio>
<el-radio :label="3">
<div style="display: inline-block">
<el-form
:inline="true"
:model="printMsg3"
class="demo-form-inline">
<el-form-item label="客户">
<el-select
size="small"
v-model="printMsg3.customerId"
filterable
placeholder="客户">
<el-option
v-for="item in customerList"
:key="item.id"
:label="item.name"
:value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="封箱人员工号">
<el-input
v-model="printMsg3.sealWorker"
size="small"
placeholder="封箱人员工号"></el-input>
</el-form-item>
<el-form-item label="打包人员工号">
<el-input
v-model="printMsg3.packWorker"
size="small"
placeholder="打包人员工号"></el-input>
</el-form-item>
<el-form-item label="流程卡号">
<el-input
v-model="printMsg3.processCard"
size="small"
style="width: 120px"
placeholder="流程卡号"></el-input>
</el-form-item>
<el-form-item label="托盘规格">
<el-input
v-model="printMsg3.pallet"
size="small"
style="width: 120px"
placeholder="托盘规格"></el-input>
</el-form-item>
<el-form-item label="备注">
<el-input
v-model="printMsg3.remark"
size="small"
placeholder="备注"></el-input>
</el-form-item>
</el-form>
</div>
</el-radio>
</el-radio-group>
</div>
</template>
<script>
import { getCustomerList } from '@/api/base/packingInfo';
export default {
name: 'OtherMsg',
props: {
printMsg1: {
type: Object,
default: () => ({}),
},
printMsg2: {
type: Object,
default: () => ({}),
},
printMsg3: {
type: Object,
default: () => ({}),
},
},
data() {
return {
chooseMsg: 1,
customerList: [],
};
},
mounted() {
this.getCList();
},
methods: {
getCList() {
getCustomerList().then((res) => {
console.log(res);
console.log('customer');
this.customerList = res.data;
});
},
changeChoose(val) {
this.$emit('changeChoose', val);
},
},
};
</script>
<style lang="scss" scoped>
.other-msg-box {
.el-radio {
display: block;
line-height: 36px;
.demo-form-inline {
width: 100%;
white-space: normal;
}
.el-form-item {
margin-bottom: 0px;
}
}
}
</style>

View File

@@ -0,0 +1,182 @@
<template>
<div class="show-box">
<!-- 搜索工作栏 -->
<search-bar
:formConfigs="formConfig"
ref="searchBarForm"
@headBtnClick="buttonClick2" />
<!-- 列表 -->
<base-table
:page="queryParams2.pageNo"
:limit="queryParams2.pageSize"
:table-props="tableProps"
:table-data="list2">
<method-btn
v-if="tableBtn2.length"
slot="handleBtn"
:width="240"
label="操作"
:method-list="tableBtn2"
@clickBtn="handleClick2" />
</base-table>
<pagination
:page.sync="queryParams2.pageNo"
:limit.sync="queryParams2.pageSize"
:total="total2"
@pagination="getList2" />
</div>
</template>
<script>
import { parseTime } from '@/utils/ruoyi';
import { getPackingPage } from '@/api/base/packingInfo';
import { getCorePLList } from '@/api/base/coreProductionLine';
const tableProps = [
{
prop: 'packagingCode',
label: '成品周转编号',
minWidth: 180,
showOverflowtooltip: true,
},
{
prop: 'lineId',
label: '产线',
showOverflowtooltip: true,
},
{
prop: 'specifications',
label: '规格',
showOverflowtooltip: true,
},
{
prop: 'check',
label: '判定',
showOverflowtooltip: true,
},
{
prop: 'workStation',
label: '工位号',
showOverflowtooltip: true,
},
{
prop: 'num',
label: '片数',
},
{
prop: 'remark',
label: '备注1',
showOverflowtooltip: true,
},
{
prop: 'printStatus',
label: '打印状态',
filter: (val) => (val == 1 ? '未打印' : '已打印'),
},
{
prop: 'createTime',
label: '时间',
filter: parseTime,
minWidth: 160,
showOverflowtooltip: true,
},
{
prop: 'groupClass',
label: '班次',
showOverflowtooltip: true,
},
];
export default {
name: 'Printed',
data() {
return {
formConfig: [
{
type: 'select',
label: '产线',
selectOptions: [],
param: 'lineId',
filterable: true,
},
{
type: 'datePicker',
label: '时间段',
dateType: 'daterange',
format: 'yyyy-MM-dd HH:mm:ss',
valueFormat: 'yyyy-MM-dd HH:mm:ss',
rangeSeparator: '-',
startPlaceholder: '开始时间',
endPlaceholder: '结束时间',
param: 'timeVal',
defaultSelect: [],
width: 350,
},
{
type: 'button',
btnName: '查询',
name: 'search',
color: 'primary',
},
],
// 查询参数
queryParams2: {
pageNo: 1,
pageSize: 20,
printStatus: '2',
lineId: '',
createTime: [],
},
total2: 0,
tableProps,
list2: [],
tableBtn2: [
this.$auth.hasPermi('base:order-group:update')
? {
type: 'reprint',
btnName: '重打',
}
: undefined,
this.$auth.hasPermi('base:order-group:query')
? {
type: 'detail',
btnName: '详情',
}
: undefined,
this.$auth.hasPermiAnd([
'base:order-group:update',
'base:core-product:query',
'base:core-customer:query',
])
? {
type: 'edit',
btnName: '编辑',
}
: undefined,
].filter((v) => v),
};
},
mounted() {
this.getLineList();
},
methods: {
getLineList() {
getCorePLList().then((res) => {
console.log(res);
this.formConfig[0].selectOptions = res.data;
});
},
getList2() {
getPackingPage({ ...this.queryParams2 }).then((res) => {
console.log(res);
this.list2 = res.data.records || [];
this.total2 = res.data.total;
});
},
buttonClick2(val) {
console.log(val);
this.queryParams2.lineId = val.lineId;
this.queryParams2.createTime = val.timeVal;
this.getList2();
},
handleClick2() {},
},
};
</script>

View File

@@ -0,0 +1,332 @@
<template>
<div class="show-box">
<!-- 单选 -->
<other-msg
:printMsg1="printMsg1"
:printMsg2="printMsg2"
:printMsg3="printMsg3"
@changeChoose="changeChoose" />
<!-- 搜索工作栏 -->
<search-bar
:formConfigs="formConfig"
ref="searchBarForm"
@headBtnClick="buttonClick" />
<!-- 列表 -->
<base-table
:page="queryParams.pageNo"
:limit="queryParams.pageSize"
:table-props="tableProps"
:table-data="list"
@emitFun="inputChange">
<method-btn
v-if="tableBtn.length"
slot="handleBtn"
:width="260"
label="操作"
:method-list="tableBtn"
@clickBtn="handleClick" />
</base-table>
<pagination
:page.sync="queryParams.pageNo"
:limit.sync="queryParams.pageSize"
:total="total"
@pagination="getList" />
<!-- 预览 -->
<print-preview ref="preView" />
</div>
</template>
<script>
import { parseTime } from '@/utils/ruoyi';
import inputArea from './InputArea.vue';
const tableProps = [
{
prop: 'packagingCode',
label: '成品周转编号',
minWidth: 160,
showOverflowtooltip: true,
},
{
prop: 'lineId',
label: '产线',
showOverflowtooltip: true,
},
{
prop: 'specifications',
label: '规格',
showOverflowtooltip: true,
},
{
prop: 'check',
label: '判定',
showOverflowtooltip: true,
},
{
prop: 'workStation',
label: '工位号',
showOverflowtooltip: true,
},
{
prop: 'num',
label: '片数',
subcomponent: inputArea,
minWidth: 120,
},
{
prop: 'remark',
label: '备注1',
showOverflowtooltip: true,
},
{
prop: 'printStatus',
label: '打印状态',
filter: (val) => (val == 1 ? '未打印' : '已打印'),
},
{
prop: 'createTime',
label: '时间',
filter: parseTime,
minWidth: 160,
showOverflowtooltip: true,
},
{
prop: 'groupClass',
label: '班次',
showOverflowtooltip: true,
},
];
import OtherMsg from './OtherMsg';
import { getPackingPage, updatePacking } from '@/api/base/packingInfo';
import { getCorePLList } from '@/api/base/coreProductionLine';
import printPreview from './preview';
import printTemplate from '../print-template';
export default {
name: 'UnPrint',
components: { OtherMsg, printPreview },
data() {
return {
printMsg1: {
customerId: '',
sealWorker: '',
packWorker: '',
processCard: '',
pallet: '',
remark: '',
},
printMsg2: {
customerId: '',
sealWorker: '',
packWorker: '',
processCard: '',
pallet: '',
remark: '',
},
printMsg3: {
customerId: '',
sealWorker: '',
packWorker: '',
processCard: '',
pallet: '',
remark: '',
},
chooseMsg: 1, //单选
formConfig: [
{
type: 'select',
label: '产线',
selectOptions: [],
param: 'lineId',
filterable: true,
},
{
type: 'datePicker',
label: '时间段',
dateType: 'daterange',
format: 'yyyy-MM-dd HH:mm:ss',
valueFormat: 'yyyy-MM-dd HH:mm:ss',
rangeSeparator: '-',
startPlaceholder: '开始时间',
endPlaceholder: '结束时间',
param: 'timeVal',
defaultSelect: [],
width: 350,
},
{
type: 'button',
btnName: '查询',
name: 'search',
color: 'primary',
},
],
// 查询参数
queryParams: {
pageNo: 1,
pageSize: 20,
printStatus: '1',
lineId: '',
createTime: [],
},
total: 0,
tableProps,
list: [],
tableBtn: [
this.$auth.hasPermiAnd([
'base:order:query',
'base:order-con-group-order:create',
])
? {
type: 'view',
btnName: '预览',
}
: undefined,
this.$auth.hasPermi('base:order-group:update')
? {
type: 'print',
btnName: '打印',
}
: undefined,
this.$auth.hasPermi('base:order-group:update')
? {
type: 'printed',
btnName: '已打印',
}
: undefined,
this.$auth.hasPermiAnd([
'base:order-group:update',
'base:core-product:query',
'base:core-customer:query',
])
? {
type: 'edit',
btnName: '编辑',
showParam: {
type: '&',
data: [
{
type: 'unequal',
name: 'isEdit',
value: true,
},
],
},
}
: undefined,
this.$auth.hasPermiAnd([
'base:order-group:update',
'base:core-product:query',
'base:core-customer:query',
])
? {
type: 'save',
btnName: '保存',
showParam: {
type: '&',
data: [
{
type: 'equal',
name: 'isEdit',
value: true,
},
],
},
}
: undefined,
this.$auth.hasPermi('base:order-group:query')
? {
type: 'delete',
btnName: '删除',
}
: undefined,
].filter((v) => v),
printData: {},
};
},
mounted() {
this.getLineList();
console.log(printTemplate);
console.log('================printTemplate');
},
methods: {
getLineList() {
getCorePLList().then((res) => {
this.formConfig[0].selectOptions = res.data;
});
},
getList() {
getPackingPage({ ...this.queryParams }).then((res) => {
this.list = res.data.records || [];
this.total = res.data.total;
});
},
// 单选
changeChoose(val) {
this.chooseMsg = val;
},
buttonClick(val) {
this.queryParams.lineId = val.lineId;
this.queryParams.createTime = val.timeVal;
this.getList();
},
handleClick(val) {
console.log(val);
switch (val.type) {
case 'edit':
this.editNum(val.data);
break;
case 'save':
this.saveNum(val.data);
break;
case 'view':
this.preView();
break;
case 'print':
this.printTemp();
break;
default:
}
},
// 编辑
editNum(val) {
let obj = this.list[val._pageIndex - 1];
obj.isEdit = true;
this.$set(this.list, val._pageIndex - 1, obj);
},
// 保存
saveNum(val) {
// 调用修改接口
updatePacking({ id: val.id, num: val.num }).then(() => {
this.getList();
});
},
// 输入框改变num
inputChange(val) {
this.list[val._pageIndex - 1][val.prop] = val[val.prop];
},
// 预览
preView() {
var hiprintTemplate = new hiprint.PrintTemplate({
template: printTemplate,
});
this.$refs.preView.show(hiprintTemplate);
},
// 打印
printTemp() {
console.log('11');
var printData = {};
let hiprintTemplate = this.$print(
undefined,
printTemplate,
printData,
{},
{
styleHandler: () => {
let css =
'<link href="http://hiprint.io/Content/hiprint/css/print-lock.css" media="print" rel="stylesheet">';
return css;
},
}
);
console.log(hiprintTemplate);
},
},
};
</script>

View File

@@ -0,0 +1,69 @@
<template>
<el-form
ref="unPrintEdit"
:rules="rules"
label-width="130px"
:model="form">
<el-row :gutter="20">
<el-col :span="24">
<el-form-item
label="成品周转编号"
prop="packagingCode">
<el-input
readonly
v-model="form.packagingCode"></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item
label="片数"
prop="num">
<el-input-number
v-model="form.num"
:min="0"
:max="999999"
style="width: 100%"
label="片数"></el-input-number>
</el-form-item>
</el-col>
</el-row>
</el-form>
</template>
<script>
import { getPacking } from '@/api/base/packingInfo';
export default {
name: 'UnPrintEdit',
data() {
return {
form: {
id: '',
packagingCode: '',
num: null,
},
rules: {
num: [{ required: true, message: '片数不能为空', trigger: 'blur' }],
},
};
},
methods: {
init(id) {
console.log('init');
this.form.id = id;
getPacking(id).then((res) => {
console.log(res);
});
},
submitForm() {
this.$refs['unPrintEdit'].validate((valid) => {
if (valid) {
console.log('保存');
this.$emit('successSubmit');
}
});
},
formClear() {
this.$refs.unPrintEdit.resetFields();
},
},
};
</script>

View File

@@ -0,0 +1,100 @@
<template>
<base-dialog
dialogTitle="预览"
:dialogVisible="visible"
width="50%"
@cancel="hideModal"
:before-close="hideModal">
<!-- <div>
<el-button
:loading="waitShowPrinter"
type="primary"
icon="printer"
@click.stop="print">
打印
</el-button>
<el-button
type="primary"
icon="printer"
@click.stop="toPdf">
pdf
</el-button>
</div> -->
<div id="preview_content" />
<template slot="footer">
<el-button
key="close"
@click="hideModal">
关闭
</el-button>
</template>
</base-dialog>
</template>
<script>
export default {
name: 'PrintPreview',
props: {},
data() {
return {
visible: false,
spinning: true,
waitShowPrinter: false,
// 纸张宽 mm
width: 0,
// 模板
hiprintTemplate: {},
// 数据
printData: {},
};
},
computed: {},
watch: {},
created() {},
mounted() {},
methods: {
hideModal() {
this.visible = false;
},
show(hiprintTemplate, printData, width = '210') {
this.visible = true;
this.spinning = true;
this.width = width;
this.hiprintTemplate = hiprintTemplate;
this.printData = printData;
console.log(hiprintTemplate);
console.log(printData);
setTimeout(() => {
// eslint-disable-next-line no-undef
$('#preview_content').html(hiprintTemplate.getHtml(printData));
this.spinning = false;
}, 500);
},
print() {
this.waitShowPrinter = true;
this.hiprintTemplate.print(
this.printData,
{},
{
callback: () => {
console.log('callback');
this.waitShowPrinter = false;
},
}
);
},
toPdf() {
this.hiprintTemplate.toPdf({}, '打印预览');
},
},
};
</script>
<!-- <style lang="less" scoped>
/deep/ .ant-modal-body {
padding: 0px;
}
/deep/ .ant-modal-content {
margin-bottom: 24px;
}
</style> -->

View File

@@ -0,0 +1,47 @@
<template>
<div class="packagingPrintLog-box">
<div style="width: 100%">
<ButtonNav
:menus="['未打印', '已打印']"
:button-mode="true"
@change="currentMenu"></ButtonNav>
</div>
<!-- 未打印 -->
<UnPrint v-if="activeMenu == '未打印'" />
<!-- 已打印 -->
<Printed v-else />
</div>
</template>
<script>
import ButtonNav from '@/components/ButtonNav';
import UnPrint from './components/UnPrint';
import Printed from './components/Printed';
export default {
name: 'packagingPrintLog',
components: { ButtonNav, UnPrint, Printed },
data() {
return {
activeMenu: '未打印',
};
},
methods: {
currentMenu(val) {
console.log(val);
this.activeMenu = val;
},
},
};
</script>
<style lang="scss" scoped>
.packagingPrintLog-box {
min-height: calc(100vh - 120px - 8px);
background-color: #f2f4f9;
.show-box {
min-height: calc(100vh - 128px - 52px);
margin-top: 8px;
padding: 16px;
border-radius: 8px;
background-color: #fff;
}
}
</style>

View File

@@ -0,0 +1,554 @@
export default {
panels: [
{
index: 0,
name: 1,
height: 125,
width: 95,
paperHeader: 0,
paperFooter: 354.33070866141736,
printElements: [
{
options: {
left: 5,
top: 5,
height: 30,
width: 256.5,
right: 262.2421875,
bottom: 34.9921875,
vCenter: 133.9921875,
hCenter: 19.9921875,
coordinateSync: false,
widthHeightSync: false,
borderColor: 'green',
backgroundColor: 'green',
},
printElementType: { title: '矩形', type: 'rect' },
},
{
options: {
left: 35,
top: 15,
height: 20,
width: 195,
title: '厂内镀膜/钢化片周转标签',
coordinateSync: false,
widthHeightSync: false,
fontSize: 16.5,
color: '#ffffff',
qrCodeLevel: 0,
right: 232.9921875,
bottom: 35.24609375,
vCenter: 135.4921875,
hCenter: 25.24609375,
},
printElementType: { title: '文本', type: 'text' },
},
{
options: { left: 50, top: 35, height: 52.5, width: 9 },
printElementType: { title: '竖线', type: 'vline' },
},
{
options: {
left: 5,
top: 35,
height: 309,
width: 256.5,
right: 261.4921875,
bottom: 343.9921875,
vCenter: 133.2421875,
hCenter: 189.4921875,
},
printElementType: { title: '矩形', type: 'rect' },
},
{
options: {
left: 10,
top: 42.5,
height: 18,
width: 36,
title: '线别',
coordinateSync: false,
widthHeightSync: false,
fontSize: 12,
qrCodeLevel: 0,
right: 45.99609375,
bottom: 60.4921875,
vCenter: 27.99609375,
hCenter: 51.4921875,
},
printElementType: { title: '文本', type: 'text' },
},
{
options: {
left: 55,
top: 42.5,
height: 18,
width: 200,
title: '判定:良品/保留/再检',
coordinateSync: false,
widthHeightSync: false,
fontSize: 12,
qrCodeLevel: 0,
right: 93.4921875,
bottom: 59.25,
vCenter: 75.4921875,
hCenter: 50.25,
},
printElementType: { title: '文本', type: 'text' },
},
{
options: {
left: 5,
top: 62.5,
height: 9,
width: 256.5,
right: 259.9921875,
bottom: 72.4921875,
vCenter: 132.4921875,
hCenter: 67.9921875,
},
printElementType: { title: '横线', type: 'hline' },
},
{
options: {
left: 55,
top: 70,
height: 18,
width: 46,
title: '备注:',
coordinateSync: false,
widthHeightSync: false,
fontSize: 12,
qrCodeLevel: 0,
right: 91.2421875,
bottom: 86.25,
vCenter: 73.2421875,
hCenter: 77.25,
},
printElementType: { title: '文本', type: 'text' },
},
{
options: {
left: 190,
top: 87.5,
height: 169.5,
width: 9,
right: 199.74609375,
bottom: 255.75,
vCenter: 195.24609375,
hCenter: 171,
},
printElementType: { title: '竖线', type: 'vline' },
},
{
options: {
left: 5,
top: 87.5,
height: 9,
width: 256.5,
right: 260.7421875,
bottom: 96.75,
vCenter: 132.4921875,
hCenter: 92.25,
},
printElementType: { title: '横线', type: 'hline' },
},
{
options: {
left: 77.5,
top: 90,
height: 15,
width: 36,
title: '规格',
coordinateSync: false,
widthHeightSync: false,
fontSize: 12,
qrCodeLevel: 0,
right: 113.49609375,
bottom: 105.4921875,
vCenter: 95.49609375,
hCenter: 97.9921875,
},
printElementType: { title: '文本', type: 'text' },
},
{
options: {
left: 207.5,
top: 100,
height: 18,
width: 36,
title: '用户',
coordinateSync: false,
widthHeightSync: false,
fontSize: 12,
qrCodeLevel: 0,
right: 242.7421875,
bottom: 116.25,
vCenter: 224.7421875,
hCenter: 107.25,
},
printElementType: { title: '文本', type: 'text' },
},
{
options: {
left: 25,
top: 102.5,
height: 15,
width: 156,
title: '长*宽*厚度单位mm',
coordinateSync: false,
widthHeightSync: false,
fontSize: 12,
qrCodeLevel: 0,
right: 179.25,
bottom: 117.4921875,
vCenter: 101.25,
hCenter: 109.9921875,
},
printElementType: { title: '文本', type: 'text' },
},
{
options: {
left: 5,
top: 117.5,
height: 9,
width: 256.5,
right: 263.7421875,
bottom: 125.7421875,
vCenter: 135.4921875,
hCenter: 121.2421875,
},
printElementType: { title: '横线', type: 'hline' },
},
{
options: {
left: 130,
top: 145,
height: 55.5,
width: 9,
right: 138.99609375,
bottom: 199.5,
vCenter: 134.49609375,
hCenter: 171.75,
},
printElementType: { title: '竖线', type: 'vline' },
},
{
options: {
left: 5,
top: 145,
height: 9,
width: 256.5,
right: 260.25,
bottom: 154.2421875,
vCenter: 132,
hCenter: 149.7421875,
},
printElementType: { title: '横线', type: 'hline' },
},
{
options: {
left: 45,
top: 155,
height: 18,
width: 36,
title: '编号',
coordinateSync: false,
widthHeightSync: false,
fontSize: 12,
qrCodeLevel: 0,
right: 82.2421875,
bottom: 171.75,
vCenter: 64.2421875,
hCenter: 162.75,
},
printElementType: { title: '文本', type: 'text' },
},
{
options: {
left: 135,
top: 155,
height: 18,
width: 49.5,
title: '工位号',
coordinateSync: false,
widthHeightSync: false,
fontSize: 12,
qrCodeLevel: 0,
right: 186,
bottom: 172.9921875,
vCenter: 161.25,
hCenter: 163.9921875,
},
printElementType: { title: '文本', type: 'text' },
},
{
options: {
left: 197.5,
top: 155,
height: 18,
width: 60,
title: '流程卡号',
coordinateSync: false,
widthHeightSync: false,
fontSize: 12,
qrCodeLevel: 0,
right: 256.74609375,
bottom: 143.7421875,
vCenter: 226.74609375,
hCenter: 134.7421875,
},
printElementType: { title: '文本', type: 'text' },
},
{
options: {
left: 5,
top: 175,
height: 9,
width: 256.5,
right: 259.2421875,
bottom: 183.75,
vCenter: 130.9921875,
hCenter: 179.25,
},
printElementType: { title: '横线', type: 'hline' },
},
{
options: {
left: 50,
top: 200,
height: 58.5,
width: 9,
right: 58.9921875,
bottom: 259.5,
vCenter: 54.4921875,
hCenter: 230.25,
},
printElementType: { title: '竖线', type: 'vline' },
},
{
options: {
left: 110,
top: 200,
height: 58.5,
width: 9,
right: 117.75,
bottom: 256.9921875,
vCenter: 113.25,
hCenter: 227.7421875,
},
printElementType: { title: '竖线', type: 'vline' },
},
{
options: {
left: 5,
top: 200,
height: 9,
width: 256.5,
right: 262.9921875,
bottom: 210.24609375,
vCenter: 134.7421875,
hCenter: 205.74609375,
},
printElementType: { title: '横线', type: 'hline' },
},
{
options: {
left: 10,
top: 210,
height: 18,
width: 36,
title: '日期',
coordinateSync: false,
widthHeightSync: false,
fontSize: 12,
qrCodeLevel: 0,
right: 45.99609375,
bottom: 228,
vCenter: 27.99609375,
hCenter: 219,
},
printElementType: { title: '文本', type: 'text' },
},
{
options: {
left: 67.5,
top: 210,
height: 18,
width: 36,
title: '班次',
coordinateSync: false,
widthHeightSync: false,
fontSize: 12,
qrCodeLevel: 0,
right: 103.5,
bottom: 228,
vCenter: 85.5,
hCenter: 219,
},
printElementType: { title: '文本', type: 'text' },
},
{
options: {
left: 207.5,
top: 210,
height: 18,
width: 36,
title: '片数',
coordinateSync: false,
widthHeightSync: false,
fontSize: 12,
qrCodeLevel: 0,
right: 243.4921875,
bottom: 228,
vCenter: 225.4921875,
hCenter: 219,
},
printElementType: { title: '文本', type: 'text' },
},
{
options: {
left: 5,
top: 230,
height: 9,
width: 256.5,
right: 261.4921875,
bottom: 239.25,
vCenter: 133.2421875,
hCenter: 234.75,
},
printElementType: { title: '横线', type: 'hline' },
},
{
options: {
left: 5,
top: 257.5,
height: 9,
width: 256.5,
right: 261.4921875,
bottom: 266.49609375,
vCenter: 133.2421875,
hCenter: 261.99609375,
},
printElementType: { title: '横线', type: 'hline' },
},
{
options: {
left: 10,
top: 262.5,
height: 18,
width: 87,
title: '封箱人员工号:',
coordinateSync: false,
widthHeightSync: false,
fontSize: 12,
qrCodeLevel: 0,
right: 46.9921875,
bottom: 279.24609375,
vCenter: 28.9921875,
hCenter: 270.24609375,
},
printElementType: { title: '文本', type: 'text' },
},
{
options: {
left: 5,
top: 280,
height: 9,
width: 256.5,
right: 262.2421875,
bottom: 289.2421875,
vCenter: 133.9921875,
hCenter: 284.7421875,
},
printElementType: { title: '横线', type: 'hline' },
},
{
options: {
left: 10,
top: 285,
height: 18,
width: 87,
title: '打包人员工号:',
coordinateSync: false,
widthHeightSync: false,
fontSize: 12,
qrCodeLevel: 0,
right: 96.4921875,
bottom: 301.74609375,
vCenter: 52.9921875,
hCenter: 292.74609375,
},
printElementType: { title: '文本', type: 'text' },
},
{
options: {
left: 5,
top: 300,
height: 9,
width: 256.5,
right: 264.4921875,
bottom: 308.49609375,
vCenter: 136.2421875,
hCenter: 303.99609375,
},
printElementType: { title: '横线', type: 'hline' },
},
{
options: {
left: 10,
top: 305,
height: 18,
width: 247.5,
title: '备注1单层镀/双层镀/丝印打孔/打孔钢片',
coordinateSync: false,
widthHeightSync: false,
fontSize: 12,
qrCodeLevel: 0,
right: 96.99609375,
bottom: 322.9921875,
vCenter: 53.49609375,
hCenter: 313.9921875,
},
printElementType: { title: '文本', type: 'text' },
},
{
options: {
left: 5,
top: 322.5,
height: 9,
width: 256.5,
right: 262.2421875,
bottom: 332.7421875,
vCenter: 133.9921875,
hCenter: 328.2421875,
},
printElementType: { title: '横线', type: 'hline' },
},
{
options: {
left: 10,
top: 327.5,
height: 18,
width: 87,
title: '备注2',
coordinateSync: false,
widthHeightSync: false,
fontSize: 12,
qrCodeLevel: 0,
right: 97.9921875,
bottom: 343.74609375,
vCenter: 54.4921875,
hCenter: 334.74609375,
},
printElementType: { title: '文本', type: 'text' },
},
],
paperNumberLeft: 372.5,
paperNumberTop: 337.5,
paperNumberContinue: true,
watermarkOptions: {},
},
]
}

View File

@@ -6,138 +6,130 @@
* @Description: * @Description:
--> -->
<template> <template>
<el-dialog class="baseDialog" :visible.sync="visible" :show-close="false" :wrapper-closable="false" width="30%" show-close="true"> <el-dialog
<small-title slot="title" :no-padding="true"> class="baseDialog"
:visible.sync="visible"
:show-close="true"
:wrapper-closable="false"
width="50%">
<small-title
slot="title"
:no-padding="true">
{{ !dataForm.id ? '新增' : '编辑' }} {{ !dataForm.id ? '新增' : '编辑' }}
</small-title> </small-title>
<div class="content"> <div class="content">
<div class="visual-part"> <div class="visual-part">
<el-form ref="dataForm" :model="dataForm" :rules="dataRule" label-width="100px" <el-form
ref="dataForm"
:model="dataForm"
:rules="dataRule"
label-width="100px"
@keyup.enter.native="dataFormSubmit"> @keyup.enter.native="dataFormSubmit">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12">
<el-form-item label="模板名称" prop="name">
<el-input v-model="dataForm.name" clearable placeholder="请输入模板名称" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="标签类型" prop="typeId">
<el-select v-model="dataForm.typeId" style="width: 100%;" placeholder="请选择标签类型" clearable>
<el-option v-for="dict in typeList" :key="dict.id" :label="dict.name" :value="dict.id" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="打印方式" prop="printModel">
<el-select v-model="dataForm.printModel" style="width: 100%;" placeholder="请选择打印方式" clearable>
<el-option v-for="dict in printModelList" :key="dict.id" :label="dict.name" :value="dict.id" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="标签备注" prop="remark">
<el-input v-model="dataForm.remark" clearable placeholder="请输入标签备注" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="模板设计" prop="content">
<el-button icon="el-icon-edit" @click="btnClickDesign()">模板设计</el-button>
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item label="单位平方数" prop="area">
<el-input v-model="dataForm.area" placeholder="请输入单位平方数" />
</el-form-item>
</el-col> -->
</el-row>
<!-- <el-row :gutter="20">
<el-col :span="24"> <el-col :span="24">
<el-form-item label="完成单位产品用时" prop="processTime"> <el-form-item
<el-input v-model="dataForm.processTime" placeholder="请输入完成单位产品用时" /> label="模板名称"
prop="name">
<el-input
v-model="dataForm.name"
clearable
placeholder="请输入模板名称" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> --> <el-col :span="24">
</el-form> <el-form-item
label="标签类型"
<!-- <small-title prop="typeId">
style="margin: 16px 0; padding-left: 8px" <el-select
:no-padding="true"> v-model="dataForm.typeId"
产品属性列表 style="width: 100%"
</small-title> placeholder="请选择标签类型"
clearable>
<div class="attr-list"> <el-option
<base-table v-for="dict in typeList"
:table-props="tableProps" :key="dict.id"
:page="listQuery.pageNo" :label="dict.name"
:limit="listQuery.pageSize" :value="dict.id" />
:add-button-show="isdetail ? null : '添加属性'" </el-select>
@emitButtonClick="addNew()" </el-form-item>
:table-data="productAttributeList"> </el-col>
<method-btn </el-row>
v-if="!isdetail" <el-row :gutter="20">
slot="handleBtn" <el-col :span="24">
:width="120" <el-form-item
label="操作" label="打印方式"
:method-list="tableBtn" prop="printModel">
@clickBtn="handleClick" /> <el-select
</base-table> v-model="dataForm.printModel"
<pagination style="width: 100%"
v-show="listQuery.total > 0" placeholder="请选择打印方式"
:total="listQuery.total" clearable>
:page.sync="listQuery.pageNo" <el-option
:limit.sync="listQuery.pageSize" v-for="dict in printModelList"
:page-sizes="[5, 10, 15]" :key="dict.id"
@pagination="getList" /> :label="dict.name"
</div> --> :value="dict.id" />
</div> </el-select>
</div> </el-form-item>
</el-col>
<!-- <div style="position: absolute; bottom: 24px; right: 24px"> <el-col :span="24">
<el-button style="margin-right: 10px" @click="goback()">返回</el-button> <el-form-item
<el-button v-if="isdetail" type="primary" @click="goEdit()"> label="标签备注"
编辑 prop="remark">
</el-button> <el-input
<span v-if="!isdetail"> v-model="dataForm.remark"
<el-button type="primary" @click="dataFormSubmit()">保存</el-button> clearable
placeholder="请输入标签备注" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="24">
<el-form-item
label="模板设计"
prop="content">
<el-button <el-button
v-if="dataForm.id && !isdetail" icon="el-icon-edit"
type="primary" @click="btnClickDesign()">
@click="addNew()"> 模板设计
添加属性
</el-button> </el-button>
</span> </el-form-item>
</div> --> </el-col>
</el-row>
</el-form>
</div>
</div>
<template slot="footer"> <template slot="footer">
<el-button style="" @click="goback()">取消</el-button> <el-button
<!-- <el-button v-if="isdetail" type="primary" @click="goEdit()"> style=""
编辑 @click="goback()">
</el-button> --> 取消
<el-button type="primary" @click="dataFormSubmit()">确定</el-button> </el-button>
<el-button
type="primary"
@click="dataFormSubmit()">
确定
</el-button>
</template> </template>
<print-model-design v-if="modelShow" ref="printModelDesign" @saveData="getModelData" /> <print-model-design
v-if="modelShow"
ref="printModelDesign"
@saveData="getModelData" />
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import { import {
createPackingModel, createPackingModel,
updatePackingModel, updatePackingModel,
getPackingModel, getPackingModel,
// getWorkOrderList, getTypeList,
// getCode,
// getCustomerList,
getTypeList
} from '@/api/base/printModel.js'; } from '@/api/base/printModel.js';
// import productAttrAdd from './attr-add'; // import productAttrAdd from './attr-add';
import { parseTime } from '../mixins/code-filter'; import { parseTime } from '../mixins/code-filter';
import SmallTitle from './SmallTitle'; import SmallTitle from './SmallTitle';
import printModelDesign from '../custom/index' import printModelDesign from '../custom/index';
const tableBtn = [ const tableBtn = [
{ {
@@ -188,11 +180,11 @@ export default {
printModelList: [ printModelList: [
{ {
id: 1, id: 1,
name:'自动' name: '自动',
}, },
{ {
id: 2, id: 2,
name: '手动' name: '手动',
}, },
], ],
listQuery: { listQuery: {
@@ -254,17 +246,17 @@ export default {
}, },
methods: { methods: {
getModelData(data) { getModelData(data) {
console.log(data) console.log(data);
this.content = JSON.stringify(data) this.content = JSON.stringify(data);
this.dataForm.content = JSON.stringify(data) this.dataForm.content = JSON.stringify(data);
}, },
btnClickDesign() { btnClickDesign() {
console.log(11111) console.log(11111);
this.modelShow = true this.modelShow = true;
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.printModelDesign.init(this.dataForm.content) this.$refs.printModelDesign.init(this.dataForm.content);
console.log(this.dataForm.content) console.log(this.dataForm.content);
}) });
// this.$router.push({ // this.$router.push({
// path: '/printModelDesign' // path: '/printModelDesign'
// }) // })
@@ -274,7 +266,7 @@ export default {
// this.listQuery.total = 0; // this.listQuery.total = 0;
// }, // },
init(id) { init(id) {
this.getDict() this.getDict();
// this.initData(); // this.initData();
// this.isdetail = isdetail || false; // this.isdetail = isdetail || false;
this.dataForm.id = id || null; this.dataForm.id = id || null;
@@ -306,9 +298,9 @@ export default {
// }) // })
getTypeList().then((response) => { getTypeList().then((response) => {
console.log(response); console.log(response);
this.typeList = response.data this.typeList = response.data;
// this.listQuery.total = response.data.total; // this.listQuery.total = response.data.total;
}) });
// getWorkOrderList().then((response) => { // getWorkOrderList().then((response) => {
// // console.log(response); // // console.log(response);
// this.workOrderList = response.data // this.workOrderList = response.data
@@ -439,8 +431,6 @@ export default {
} }
</style> --> </style> -->
<style> <style>
.baseDialog .el-dialog__header { .baseDialog .el-dialog__header {
font-size: 16px; font-size: 16px;
color: rgba(0, 0, 0, 0.85); color: rgba(0, 0, 0, 0.85);
@@ -453,7 +443,7 @@ export default {
display: inline-block; display: inline-block;
width: 4px; width: 4px;
height: 16px; height: 16px;
background-color: #0B58FF; background-color: #0b58ff;
border-radius: 1px; border-radius: 1px;
margin-right: 8px; margin-right: 8px;
position: relative; position: relative;
@@ -468,6 +458,4 @@ export default {
padding: 9px 10px 9px 16px; padding: 9px 10px 9px 16px;
font-size: 14px; font-size: 14px;
} }
</style> </style>

View File

@@ -6,106 +6,72 @@
* @Description: * @Description:
--> -->
<template> <template>
<el-dialog class="baseDialog" :visible.sync="visible" :show-close="false" :wrapper-closable="false" width="40%" show-close="true"> <el-dialog
<small-title slot="title" :no-padding="true"> class="baseDialog"
:visible.sync="visible"
:show-close="true"
:wrapper-closable="false"
width="50%">
<small-title
slot="title"
:no-padding="true">
{{ !dataForm.id ? '新增' : '编辑' }} {{ !dataForm.id ? '新增' : '编辑' }}
</small-title> </small-title>
<div class="content"> <div class="content">
<div class="visual-part"> <div class="visual-part">
<el-form ref="dataForm" :model="dataForm" :rules="dataRule" label-width="auto" <el-form
ref="dataForm"
:model="dataForm"
:rules="dataRule"
label-width="auto"
@keyup.enter.native="dataFormSubmit"> @keyup.enter.native="dataFormSubmit">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="24">
<el-form-item label="名称" prop="name"> <el-form-item
<el-input v-model="dataForm.name" clearable placeholder="名称" /> label="名称"
prop="name">
<el-input
v-model="dataForm.name"
clearable
placeholder="名称" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="24">
<el-form-item label="类型描述" prop="description"> <el-form-item
<el-input v-model="dataForm.description" clearable placeholder="类型描述" /> label="类型描述"
prop="description">
<el-input
v-model="dataForm.description"
clearable
placeholder="类型描述" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<!-- <el-row :gutter="20">
<el-col :span="24">
<el-form-item label="完成单位产品用时" prop="processTime">
<el-input v-model="dataForm.processTime" placeholder="请输入完成单位产品用时" />
</el-form-item>
</el-col>
</el-row> -->
</el-form> </el-form>
<!-- <small-title
style="margin: 16px 0; padding-left: 8px"
:no-padding="true">
产品属性列表
</small-title>
<div class="attr-list">
<base-table
:table-props="tableProps"
:page="listQuery.pageNo"
:limit="listQuery.pageSize"
:add-button-show="isdetail ? null : '添加属性'"
@emitButtonClick="addNew()"
:table-data="productAttributeList">
<method-btn
v-if="!isdetail"
slot="handleBtn"
:width="120"
label="操作"
:method-list="tableBtn"
@clickBtn="handleClick" />
</base-table>
<pagination
v-show="listQuery.total > 0"
:total="listQuery.total"
:page.sync="listQuery.pageNo"
:limit.sync="listQuery.pageSize"
:page-sizes="[5, 10, 15]"
@pagination="getList" />
</div> -->
</div> </div>
</div> </div>
<!-- <div style="position: absolute; bottom: 24px; right: 24px">
<el-button style="margin-right: 10px" @click="goback()">返回</el-button>
<el-button v-if="isdetail" type="primary" @click="goEdit()">
编辑
</el-button>
<span v-if="!isdetail">
<el-button type="primary" @click="dataFormSubmit()">保存</el-button>
<el-button
v-if="dataForm.id && !isdetail"
type="primary"
@click="addNew()">
添加属性
</el-button>
</span>
</div> -->
<template slot="footer"> <template slot="footer">
<el-button style="" @click="goback()">取消</el-button> <el-button
<!-- <el-button v-if="isdetail" type="primary" @click="goEdit()"> style=""
编辑 @click="goback()">
</el-button> --> 取消
<el-button type="primary" @click="dataFormSubmit()">确定</el-button> </el-button>
<el-button
type="primary"
@click="dataFormSubmit()">
确定
</el-button>
</template> </template>
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import { import {
createPackingType, createPackingType,
updatePackingType, updatePackingType,
getPackingType, getPackingType,
// getWorkOrderList,
// getCode,
// getCustomerList,
// getModelList
} from '@/api/base/modelType.js'; } from '@/api/base/modelType.js';
// import productAttrAdd from './attr-add';
import { parseTime } from '../mixins/code-filter'; import { parseTime } from '../mixins/code-filter';
import SmallTitle from './SmallTitle'; import SmallTitle from './SmallTitle';
@@ -149,13 +115,8 @@ export default {
productAttributeList: [], productAttributeList: [],
dataForm: { dataForm: {
id: null, id: null,
// name: '', // 产品名称
name: '', // 产品编码 name: '', // 产品编码
// area: 0, // 单位平方数(float only)
description: null, // 产品类型id description: null, // 产品类型id
// workOrderId: null, // 单位产品用时 (s)
// customerId: '', // 规格
// content: '', // 单位id
}, },
listQuery: { listQuery: {
pageSize: 10, pageSize: 10,
@@ -171,18 +132,10 @@ export default {
}, },
], ],
}, },
// isdetail: false,
}; };
}, },
methods: { methods: {
// initData() {
// this.productAttributeList.splice(0);
// this.listQuery.total = 0;
// },
init(id) { init(id) {
// this.getDict()
// this.initData();
// this.isdetail = isdetail || false;
this.dataForm.id = id || null; this.dataForm.id = id || null;
this.visible = true; this.visible = true;
@@ -194,66 +147,10 @@ export default {
getPackingType(id).then((response) => { getPackingType(id).then((response) => {
this.dataForm = response.data; this.dataForm = response.data;
}); });
// 获取产品的属性列表
// this.getList();
} else {
// getCode().then((res) => {
// this.dataForm.packagingCode = res.data;
// });
} }
}); });
}, },
// getDict() {
// // 获取产品的属性列表
// getCustomerList().then((response) => {
// console.log(response);
// this.customerList = response.data
// // this.listQuery.total = response.data.total;
// })
// getModelList().then((response) => {
// console.log(response);
// this.modelList = response.data
// // this.listQuery.total = response.data.total;
// })
// getWorkOrderList().then((response) => {
// // console.log(response);
// this.workOrderList = response.data
// // this.listQuery.total = response.data.total;
// })
// },
// handleClick(raw) {
// if (raw.type === 'delete') {
// this.$confirm(
// `确定对${
// raw.data.name
// ? '[名称=' + raw.data.name + ']'
// : '[序号=' + raw.data._pageIndex + ']'
// }进行删除操作?`,
// '提示',
// {
// confirmButtonText: '确定',
// cancelButtonText: '取消',
// type: 'warning',
// }
// )
// .then(() => {
// deleteProductAttr(raw.data.id).then(({ data }) => {
// this.$message({
// message: '操作成功',
// type: 'success',
// duration: 1500,
// onClose: () => {
// this.getList();
// },
// });
// });
// })
// .catch(() => {});
// } else {
// this.addNew(raw.data.id);
// }
// },
// 表单提交 // 表单提交
dataFormSubmit() { dataFormSubmit() {
this.$refs['dataForm'].validate((valid) => { this.$refs['dataForm'].validate((valid) => {
@@ -294,60 +191,7 @@ export default {
}, },
}; };
</script> </script>
<!-- <style scoped>
.drawer >>> .el-drawer {
border-radius: 8px 0 0 8px;
display: flex;
flex-direction: column;
}
.drawer >>> .el-form-item__label {
padding: 0;
}
.drawer >>> .el-drawer__header {
margin: 0;
padding: 32px 32px 24px;
border-bottom: 1px solid #dcdfe6;
}
.drawer >>> .el-drawer__body {
flex: 1;
height: 1px;
display: flex;
flex-direction: column;
}
.drawer >>> .content {
padding: 30px 24px;
flex: 1;
display: flex;
flex-direction: column;
/* height: 100%; */
}
.drawer >>> .visual-part {
flex: 1 auto;
max-height: 76vh;
overflow: hidden;
overflow-y: scroll;
padding-right: 10px; /* 调整滚动条样式 */
}
.drawer >>> .el-form,
.drawer >>> .attr-list {
padding: 0 16px;
}
.drawer-body__footer {
display: flex;
justify-content: flex-end;
padding: 18px;
}
</style> -->
<style> <style>
.baseDialog .el-dialog__header { .baseDialog .el-dialog__header {
font-size: 16px; font-size: 16px;
color: rgba(0, 0, 0, 0.85); color: rgba(0, 0, 0, 0.85);
@@ -360,7 +204,7 @@ export default {
display: inline-block; display: inline-block;
width: 4px; width: 4px;
height: 16px; height: 16px;
background-color: #0B58FF; background-color: #0b58ff;
border-radius: 1px; border-radius: 1px;
margin-right: 8px; margin-right: 8px;
position: relative; position: relative;
@@ -375,7 +219,4 @@ export default {
padding: 9px 10px 9px 16px; padding: 9px 10px 9px 16px;
font-size: 14px; font-size: 14px;
} }
</style> </style>

View File

@@ -2,17 +2,28 @@
<div class="choicepart-container"> <div class="choicepart-container">
<navbar /> <navbar />
<div class="choicepart-wrapper"> <div class="choicepart-wrapper">
<div class="choicepart-box" id="choicepartBox" :style="'transform:scale('+scale+');width:1710px;height:538px;'" v-show="showItem"> <div
class="choicepart-box"
id="choicepartBox"
:style="'transform:scale(' + scale + ')'"
style="width: 1710px; height: 538px"
v-show="showItem">
<div class="choicepart-line1"> <div class="choicepart-line1">
<div <div
v-for="(item, index) in menuArr1" v-for="(item, index) in menuArr1"
:key="index" :key="index"
class="choicepart-item" class="choicepart-item"
@click="handelClick(item, item.choicepart)" @click="handelClick(item, item.choicepart)"
:style="{opacity: item.visible?1:0.4, pointerEvents:item.visible?'auto':'none'}" :style="{
> opacity: item.visible ? 1 : 0.4,
pointerEvents: item.visible ? 'auto' : 'none',
}">
<div> <div>
<img :src="require(`../../assets/images/choicepart/${item.name}.png`)" alt=""> <img
:src="
require(`../../assets/images/choicepart/${item.name}.png`)
"
alt="" />
</div> </div>
<div class="choicepart-item-title">{{ item.meta.title }}</div> <div class="choicepart-item-title">{{ item.meta.title }}</div>
</div> </div>
@@ -23,10 +34,16 @@
:key="index" :key="index"
class="choicepart-item" class="choicepart-item"
@click="handelClick(item, item.choicepart)" @click="handelClick(item, item.choicepart)"
:style="{opacity: item.visible?1:0.4, pointerEvents:item.visible?'auto':'none'}" :style="{
> opacity: item.visible ? 1 : 0.4,
pointerEvents: item.visible ? 'auto' : 'none',
}">
<div> <div>
<img :src="require(`../../assets/images/choicepart/${item.name}.png`)" alt=""> <img
:src="
require(`../../assets/images/choicepart/${item.name}.png`)
"
alt="" />
</div> </div>
<div class="choicepart-item-title">{{ item.meta.title }}</div> <div class="choicepart-item-title">{{ item.meta.title }}</div>
</div> </div>
@@ -37,14 +54,13 @@
</div> </div>
</template> </template>
<script> <script>
import Navbar from './components/Navbar' import Navbar from './components/Navbar';
import { debounce } from '@/utils/debounce' import { debounce } from '@/utils/debounce';
export default { export default {
components: { Navbar }, components: { Navbar },
name: 'choicePart', name: 'choicePart',
data() { data() {
return { return {
boxReset: '',
scale: 1, scale: 1,
menuArr1: [ menuArr1: [
{ {
@@ -52,65 +68,65 @@ export default {
title: '基础核心', title: '基础核心',
visible: false, visible: false,
meta: { meta: {
title: '' title: '',
} },
}, },
{ {
name: 'Order', name: 'Order',
title: '订单管理', title: '订单管理',
visible: false, visible: false,
meta: { meta: {
title: '' title: '',
} },
}, },
{ {
name: 'Equipment', name: 'Equipment',
title: '设备管理', title: '设备管理',
visible: false, visible: false,
meta: { meta: {
title: '' title: '',
} },
}, },
{ {
name: 'Group', name: 'Group',
title: '班组管理', title: '班组管理',
visible: false, visible: false,
meta: { meta: {
title: '' title: '',
} },
}, },
{ {
name: 'Quality', name: 'Quality',
title: '质量管理', title: '质量管理',
visible: false, visible: false,
meta: { meta: {
title: '' title: '',
} },
}, },
{ {
name: 'Warehouse', name: 'Warehouse',
title: '仓库管理', title: '仓库管理',
visible: false, visible: false,
meta: { meta: {
title: '' title: '',
} },
}, },
{ {
name: 'Energy', name: 'Energy',
title: '能源管理', title: '能源管理',
visible: false, visible: false,
meta: { meta: {
title: '' title: '',
} },
}, },
{ {
name: 'Packaging', name: 'Packaging',
title: '包装管理', title: '包装管理',
visible: false, visible: false,
meta: { meta: {
title: '' title: '',
} },
} },
], ],
menuArr2: [ menuArr2: [
{ {
@@ -118,16 +134,16 @@ export default {
title: '物料管理', title: '物料管理',
visible: false, visible: false,
meta: { meta: {
title: '' title: '',
} },
}, },
{ {
name: 'Extend', name: 'Extend',
title: '工艺管理', title: '工艺管理',
visible: false, visible: false,
meta: { meta: {
title: '' title: '',
} },
}, },
// { // {
// name: 'Delivery', // name: 'Delivery',
@@ -142,91 +158,94 @@ export default {
title: '报表管理', title: '报表管理',
visible: false, visible: false,
meta: { meta: {
title: '' title: '',
} },
}, },
{ {
name: 'Cost', name: 'Cost',
title: '成本管理', title: '成本管理',
visible: false, visible: false,
meta: { meta: {
title: '' title: '',
} },
}, },
{ {
name: 'SafetyEnvironmental', name: 'SafetyEnvironmental',
title: '安环管理', title: '安环管理',
visible: false, visible: false,
meta: { meta: {
title: '' title: '',
} },
}, },
{ {
name: 'Databoard', name: 'Databoard',
title: '数据驾驶舱', title: '数据驾驶舱',
visible: false, visible: false,
meta: { meta: {
title: '' title: '',
} },
}, },
{ {
name: 'System', name: 'System',
title: '系统管理', title: '系统管理',
visible: false, visible: false,
meta: { meta: {
title: '' title: '',
} },
} },
], ],
showItem: false showItem: false,
} };
}, },
// computed:{ // computed:{
// ...mapGetters(['sidebarRouters']) // ...mapGetters(['sidebarRouters'])
// }, // },
mounted() { mounted() {
this.getMsg() this.getMsg();
this.boxReset = debounce(() => { this.boxReset();
this.resetSize() window.addEventListener('resize', this.boxReset);
}, 300) },
this.boxReset() destroyed() {
window.addEventListener('resize', () => { window.removeEventListener('resize', this.boxReset);
this.boxReset()
})
}, },
methods: { methods: {
boxReset() {
debounce(() => {
this.resetSize();
}, 300)();
},
getMsg() { getMsg() {
let menuList = this.$store.state.permission.sidebarRouters let menuList = this.$store.state.permission.sidebarRouters;
console.log(menuList) console.log(menuList);
if (menuList.length > 0) { if (menuList.length > 0) {
for (let i = 0; i < menuList.length; i++) { for (let i = 0; i < menuList.length; i++) {
for (let k = 0; k < 8; k++) { for (let k = 0; k < 8; k++) {
if (menuList[i].name === this.menuArr1[k].name) { if (menuList[i].name === this.menuArr1[k].name) {
this.menuArr1[k].visible = true this.menuArr1[k].visible = true;
this.menuArr1[k].id = menuList[i].id this.menuArr1[k].id = menuList[i].id;
this.menuArr1[k].choicepart = i this.menuArr1[k].choicepart = i;
this.menuArr1[k].children = menuList[i].children this.menuArr1[k].children = menuList[i].children;
this.menuArr1[k].meta = menuList[i].meta this.menuArr1[k].meta = menuList[i].meta;
} }
} }
for (let j = 0; j < 7; j++) { for (let j = 0; j < 7; j++) {
if (menuList[i].name === this.menuArr2[j].name) { if (menuList[i].name === this.menuArr2[j].name) {
this.menuArr2[j].visible = true this.menuArr2[j].visible = true;
this.menuArr2[j].id = menuList[i].id this.menuArr2[j].id = menuList[i].id;
this.menuArr2[j].choicepart = i this.menuArr2[j].choicepart = i;
this.menuArr2[j].children = menuList[i].children this.menuArr2[j].children = menuList[i].children;
this.menuArr2[j].meta = menuList[i].meta this.menuArr2[j].meta = menuList[i].meta;
} }
} }
} }
} }
console.log(this.menuArr1) console.log(this.menuArr1);
console.log(this.menuArr2) console.log(this.menuArr2);
}, },
handelClick(item, index) { handelClick(item, index) {
// this.$router.push({name: 'SystemUser'}) // this.$router.push({name: 'SystemUser'})
this.$store.dispatch('app/setChoicepart', index) this.$store.dispatch('app/setChoicepart', index);
this.toRouter(item) this.toRouter(item);
// if (item.meta.unuse) { // if (item.meta.unuse) {
// this.$message.warning(this.$t('暂无数据')) // this.$message.warning(this.$t('暂无数据'))
// } else { // } else {
@@ -234,36 +253,36 @@ export default {
// } // }
}, },
toRouter(item) { toRouter(item) {
console.log(item) console.log(item);
if (item.children) { if (item.children) {
this.toRouter(item.children[0]) this.toRouter(item.children[0]);
} else { } else {
this.$router.push({ name: item.name }) this.$router.push({ name: item.name });
} }
}, },
resetSize() { resetSize() {
let _this = this let _this = this;
_this.showItem = false _this.showItem = false;
_this.loading = true _this.loading = true;
let choicepartBox = document.querySelector('#choicepartBox') let choicepartBox = document.querySelector('#choicepartBox');
let rw = parseFloat(window.innerWidth) let rw = parseFloat(window.innerWidth);
let rh = parseFloat(window.innerHeight) let rh = parseFloat(window.innerHeight);
let bw = parseFloat(choicepartBox.style.width) let bw = parseFloat(choicepartBox.style.width);
let bh = parseFloat(choicepartBox.style.height) let bh = parseFloat(choicepartBox.style.height);
let wx = 0.82/(bw / rw) let wx = 0.82 / (bw / rw);
let hx = 0.56/(bh / rh) let hx = 0.56 / (bh / rh);
_this.scale = wx > hx ? hx : wx _this.scale = wx > hx ? hx : wx;
setTimeout(_this.showItemFun, 700) setTimeout(_this.showItemFun, 700);
}, },
showItemFun() { showItemFun() {
this.loading = false this.loading = false;
this.showItem = true this.showItem = true;
} },
}, },
beforeDestroy() { beforeDestroy() {
this.showItem = false this.showItem = false;
} },
} };
</script> </script>
<style lang='scss' scoped> <style lang='scss' scoped>
.choicepart-container { .choicepart-container {
@@ -296,7 +315,8 @@ export default {
.choicepart-item { .choicepart-item {
width: 184px; width: 184px;
height: 224px; height: 224px;
background: url('../../assets/images/choicepart/choice-item-back.png') no-repeat; background: url('../../assets/images/choicepart/choice-item-back.png')
no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
border-radius: 5px; border-radius: 5px;
overflow: hidden; overflow: hidden;
@@ -334,7 +354,7 @@ export default {
.choicepart-footer { .choicepart-footer {
position: absolute; position: absolute;
width: 100%; width: 100%;
color: #C7C7C7; color: #c7c7c7;
user-select: none; user-select: none;
font-size: 12px; font-size: 12px;
letter-spacing: 1px; letter-spacing: 1px;

View File

@@ -125,7 +125,7 @@ export default {
// name: 'reset', // name: 'reset',
// }, // },
{ {
type: 'separate', type: this.$auth.hasPermi('base:core-factory:create') ? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('base:core-factory:create') ? 'button' : '', type: this.$auth.hasPermi('base:core-factory:create') ? 'button' : '',

View File

@@ -1,8 +1,11 @@
<template> <template>
<div id='deepProcessingContainerB' ref='deepProcessingContainerB' style="width: 100%;height: 100%;">
<div <div
id='deepProcessingContainer' id="deepProcessingContainerB"
ref='deepProcessingContainer' ref="deepProcessingContainerB"
style="width: 100%; height: 100%">
<div
id="deepProcessingContainer"
ref="deepProcessingContainer"
class="deepProcessingBoard" class="deepProcessingBoard"
style=" style="
position: absolute; position: absolute;
@@ -17,14 +20,13 @@
gap: 24px; gap: 24px;
" "
:style="{ transform: 'scale(' + scaleNum + ')' }"> :style="{ transform: 'scale(' + scaleNum + ')' }">
<KHeader :isFullScreen='isFullScreen' @screenfullChange='screenfullChange' topTitle='深加工生产运行驾驶舱'/> <KHeader
:isFullScreen="isFullScreen"
@screenfullChange="screenfullChange"
topTitle="深加工生产运行驾驶舱" />
<div <div
class="main-body" class="main-body"
style=" style="display: grid; gap: 16px; grid-template-rows: 462px 462px">
display: grid;
gap: 16px;
grid-template-rows: 462px 462px;
">
<TopThree /> <TopThree />
<BottomTwo /> <BottomTwo />
</div> </div>
@@ -47,16 +49,16 @@
import KHeader from '../components/Header'; import KHeader from '../components/Header';
import TopThree from './TopThree'; import TopThree from './TopThree';
import BottomTwo from './BottomTwo'; import BottomTwo from './BottomTwo';
import screenfull from 'screenfull' import screenfull from 'screenfull';
import { debounce } from '@/utils/debounce' import { debounce } from '@/utils/debounce';
import { getDcsMsg, getMesMsg } from './../utils/wsInterface' import { getDcsMsg, getMesMsg } from './../utils/wsInterface';
export default { export default {
name: 'deepProcessingBoard', name: 'deepProcessingBoard',
components: { components: {
KHeader, KHeader,
TopThree, TopThree,
BottomTwo BottomTwo,
}, },
// provide() { // provide() {
// return { // return {
@@ -66,43 +68,52 @@ export default {
data() { data() {
return { return {
isFullScreen: false, isFullScreen: false,
scaleNum: 0.8 scaleNum: 0.8,
}; };
}, },
created() { created() {
this.init() this.init();
}, },
destroy() { destroy() {
this.destroy() this.destroy();
}, },
mounted() { mounted() {
this.boxReset = debounce(() => { this.boxReset = debounce(() => {
this.resetSize() this.resetSize();
}, 300) }, 300);
this.boxReset() this.boxReset();
window.addEventListener('resize', () => { window.addEventListener('resize', () => {
this.boxReset() this.boxReset();
}) });
// closeWebsocket() // closeWebsocket()
// getDcsMsg() // getDcsMsg()
// getMesMsg() // getMesMsg()
console.log('mounted...........') },
mounted() {
this.boxReset();
window.addEventListener('resize', this.boxReset);
}, },
destroyed() { destroyed() {
console.log('destroyed...........') window.removeEventListener('resize', this.boxReset);
this.destroy();
}, },
methods: { methods: {
boxReset() {
debounce(() => {
this.resetSize();
}, 300)();
},
change() { change() {
this.isFullScreen = screenfull.isFullscreen this.isFullScreen = screenfull.isFullscreen;
}, },
init() { init() {
if (screenfull.isEnabled) { if (screenfull.isEnabled) {
screenfull.on('change', this.change) screenfull.on('change', this.change);
} }
}, },
destroy() { destroy() {
if (screenfull.isEnabled) { if (screenfull.isEnabled) {
screenfull.off('change', this.change) screenfull.off('change', this.change);
} }
}, },
// 全屏 // 全屏
@@ -110,39 +121,37 @@ export default {
if (!screenfull.isEnabled) { if (!screenfull.isEnabled) {
this.$message({ this.$message({
message: 'you browser can not work', message: 'you browser can not work',
type: 'warning' type: 'warning',
}) });
return false return false;
} }
screenfull.toggle(this.$refs.deepProcessingContainerB) screenfull.toggle(this.$refs.deepProcessingContainerB);
}, },
resetSize() { resetSize() {
let deepProcessingContainer = document.getElementById('deepProcessingContainer') let deepProcessingContainer = document.getElementById(
let rw = parseFloat(window.innerWidth) 'deepProcessingContainer'
let rh = parseFloat(window.innerHeight) );
let bw = parseFloat(deepProcessingContainer.style.width) let rw = parseFloat(window.innerWidth);
let bh = parseFloat(deepProcessingContainer.style.height) let rh = parseFloat(window.innerHeight);
let wx = 0 let bw = parseFloat(deepProcessingContainer.style.width);
let hx = 0 let bh = parseFloat(deepProcessingContainer.style.height);
let wx = 0;
let hx = 0;
if (screenfull.isFullscreen) { if (screenfull.isFullscreen) {
console.log('全屏') wx = rw / bw;
wx = rw / bw hx = rh / bh;
hx = rh / bh
console.log(this.scaleNum)
} else { } else {
console.log('非全屏')
console.log(this.$store.state.app.sidebar.opened)
if (this.$store.state.app.sidebar.opened) { if (this.$store.state.app.sidebar.opened) {
wx = (rw-280) / bw wx = (rw - 280) / bw;
hx = (rh-116) / bh hx = (rh - 116) / bh;
} else { } else {
wx = (rw-85) / bw wx = (rw - 85) / bw;
hx = (rh-116) / bh hx = (rh - 116) / bh;
}
}
this.scaleNum = wx
} }
} }
this.scaleNum = wx;
},
},
}; };
</script> </script>

View File

@@ -1,8 +1,11 @@
<template> <template>
<div id='kilnContainerB' ref='kilnContainerB' style="width: 100%;height: 100%;">
<div <div
id='kilnContainer' id="kilnContainerB"
ref='kilnContainer' ref="kilnContainerB"
style="width: 100%; height: 100%">
<div
id="kilnContainer"
ref="kilnContainer"
class="KilnDataBoard" class="KilnDataBoard"
style=" style="
position: absolute; position: absolute;
@@ -17,14 +20,21 @@
gap: 24px; gap: 24px;
" "
:style="{ transform: 'scale(' + scaleNum + ')' }"> :style="{ transform: 'scale(' + scaleNum + ')' }">
<KHeader :isFullScreen='isFullScreen' @screenfullChange='screenfullChange' topTitle='窑炉生产运行驾驶舱'/> <KHeader
:isFullScreen="isFullScreen"
@screenfullChange="screenfullChange"
topTitle="窑炉生产运行驾驶舱" />
<div <div
class="main-body" class="main-body"
style="flex: 1; display: flex; gap: 20px; padding: 0px 16px"> style="flex: 1; display: flex; gap: 20px; padding: 0px 16px">
<div class="left-side" style="flex: 2"> <div
class="left-side"
style="flex: 2">
<LeftFour /> <LeftFour />
</div> </div>
<div class="right-side" style="flex: 1"> <div
class="right-side"
style="flex: 1">
<RightTwo /> <RightTwo />
</div> </div>
</div> </div>
@@ -36,8 +46,8 @@
import KHeader from '../components/Header'; import KHeader from '../components/Header';
import LeftFour from './LeftFour'; import LeftFour from './LeftFour';
import RightTwo from './RightTwo.vue'; import RightTwo from './RightTwo.vue';
import screenfull from 'screenfull' import screenfull from 'screenfull';
import { debounce } from '@/utils/debounce' import { debounce } from '@/utils/debounce';
export default { export default {
name: 'Kiln', name: 'Kiln',
@@ -49,7 +59,7 @@ export default {
computed: { computed: {
sidebarStatus() { sidebarStatus() {
return this.$store.state.app.sidebar.opened; return this.$store.state.app.sidebar.opened;
} },
}, },
// provide() { // provide() {
// return { // return {
@@ -59,43 +69,44 @@ export default {
data() { data() {
return { return {
isFullScreen: false, isFullScreen: false,
scaleNum: 0.8 scaleNum: 0.8,
}; };
}, },
watch: { watch: {
sidebarStatus() { sidebarStatus() {
this.boxReset() this.boxReset();
}, },
}, },
created() { created() {
this.init() this.init();
},
destroy() {
this.destroy()
}, },
mounted() { mounted() {
this.boxReset = debounce(() => { this.boxReset();
this.resetSize() window.addEventListener('resize', this.boxReset);
}, 300) },
this.boxReset() destroyed() {
window.addEventListener('resize', () => { window.removeEventListener('resize', this.boxReset);
this.boxReset() this.destroy();
})
}, },
methods: { methods: {
boxReset() {
debounce(() => {
this.resetSize();
}, 300)();
},
change() { change() {
this.isFullScreen = screenfull.isFullscreen this.isFullScreen = screenfull.isFullscreen;
}, },
init() { init() {
if (screenfull.isEnabled) { if (screenfull.isEnabled) {
screenfull.on('change', this.change) screenfull.on('change', this.change);
} }
}, },
destroy() { destroy() {
if (screenfull.isEnabled) { if (screenfull.isEnabled) {
screenfull.off('change', this.change) screenfull.off('change', this.change);
} }
}, },
// 全屏 // 全屏
@@ -103,40 +114,35 @@ export default {
if (!screenfull.isEnabled) { if (!screenfull.isEnabled) {
this.$message({ this.$message({
message: 'you browser can not work', message: 'you browser can not work',
type: 'warning' type: 'warning',
}) });
return false return false;
} }
screenfull.toggle(this.$refs.kilnContainerB) screenfull.toggle(this.$refs.kilnContainerB);
}, },
resetSize() { resetSize() {
let kilnContainerBox = document.getElementById('kilnContainer') let kilnContainerBox = document.getElementById('kilnContainer');
console.log(kilnContainerBox) let rw = parseFloat(window.innerWidth);
let rw = parseFloat(window.innerWidth) let rh = parseFloat(window.innerHeight);
let rh = parseFloat(window.innerHeight) let bw = parseFloat(kilnContainerBox.style.width);
let bw = parseFloat(kilnContainerBox.style.width) let bh = parseFloat(kilnContainerBox.style.height);
let bh = parseFloat(kilnContainerBox.style.height) let wx = 0;
let wx = 0 let hx = 0;
let hx = 0
if (screenfull.isFullscreen) { if (screenfull.isFullscreen) {
console.log('全屏') wx = rw / bw;
wx = rw / bw hx = rh / bh;
hx = rh / bh
console.log(this.scaleNum)
} else { } else {
console.log('非全屏')
console.log(this.$store.state.app.sidebar.opened)
if (this.$store.state.app.sidebar.opened) { if (this.$store.state.app.sidebar.opened) {
wx = (rw-280) / bw wx = (rw - 280) / bw;
hx = (rh-116) / bh hx = (rh - 116) / bh;
} else { } else {
wx = (rw-85) / bw wx = (rw - 85) / bw;
hx = (rh-116) / bh hx = (rh - 116) / bh;
}
}
this.scaleNum = wx
} }
} }
this.scaleNum = wx;
},
},
}; };
</script> </script>

View File

@@ -1,8 +1,11 @@
<template> <template>
<div id='wholePlantContainerB' ref='wholePlantContainerB' style="width: 100%;height: 100%;">
<div <div
id='wholePlantContainer' id="wholePlantContainerB"
ref='wholePlantContainer' ref="wholePlantContainerB"
style="width: 100%; height: 100%">
<div
id="wholePlantContainer"
ref="wholePlantContainer"
class="wholePlantBoard" class="wholePlantBoard"
style=" style="
position: absolute; position: absolute;
@@ -17,17 +20,26 @@
gap: 24px; gap: 24px;
" "
:style="{ transform: 'scale(' + scaleNum + ')' }"> :style="{ transform: 'scale(' + scaleNum + ')' }">
<KHeader :isFullScreen='isFullScreen' @screenfullChange='screenfullChange' topTitle='全厂总览驾驶舱'/> <KHeader
:isFullScreen="isFullScreen"
@screenfullChange="screenfullChange"
topTitle="全厂总览驾驶舱" />
<div <div
class="main-body" class="main-body"
style="flex: 1; display: flex; gap: 20px; padding: 0px 16px"> style="flex: 1; display: flex; gap: 20px; padding: 0px 16px">
<div class="left-side" style="flex: 1"> <div
class="left-side"
style="flex: 1">
<LeftTwo /> <LeftTwo />
</div> </div>
<div class="middle-side" style="flex: 1"> <div
class="middle-side"
style="flex: 1">
<MiddleTwo /> <MiddleTwo />
</div> </div>
<div class="right-side" style="flex: 1"> <div
class="right-side"
style="flex: 1">
<RightTwo /> <RightTwo />
</div> </div>
</div> </div>
@@ -40,8 +52,8 @@ import KHeader from '../components/Header';
import LeftTwo from './LeftTwo'; import LeftTwo from './LeftTwo';
import MiddleTwo from './MiddleTwo'; import MiddleTwo from './MiddleTwo';
import RightTwo from './RightTwo'; import RightTwo from './RightTwo';
import screenfull from 'screenfull' import screenfull from 'screenfull';
import { debounce } from '@/utils/debounce' import { debounce } from '@/utils/debounce';
export default { export default {
name: 'wholePlantBoard', name: 'wholePlantBoard',
@@ -49,7 +61,7 @@ export default {
KHeader, KHeader,
LeftTwo, LeftTwo,
MiddleTwo, MiddleTwo,
RightTwo RightTwo,
}, },
// provide() { // provide() {
// return { // return {
@@ -59,40 +71,39 @@ export default {
data() { data() {
return { return {
isFullScreen: false, isFullScreen: false,
scaleNum: 0.8 scaleNum: 0.8,
}; };
}, },
created() { created() {
this.init() this.init();
}, },
destroy() { destroy() {
this.destroy() this.destroy();
}, },
mounted() { mounted() {
this.boxReset = debounce(() => { this.boxReset();
this.resetSize() window.addEventListener('resize', this.boxReset);
}, 300)
this.boxReset()
window.addEventListener('resize', () => {
this.boxReset()
})
console.log('mounted...........')
}, },
destroyed() { destroyed() {
console.log('destroyed...........') window.removeEventListener('resize', this.boxReset);
}, },
methods: { methods: {
boxReset() {
debounce(() => {
this.resetSize();
}, 300)();
},
change() { change() {
this.isFullScreen = screenfull.isFullscreen this.isFullScreen = screenfull.isFullscreen;
}, },
init() { init() {
if (screenfull.isEnabled) { if (screenfull.isEnabled) {
screenfull.on('change', this.change) screenfull.on('change', this.change);
} }
}, },
destroy() { destroy() {
if (screenfull.isEnabled) { if (screenfull.isEnabled) {
screenfull.off('change', this.change) screenfull.off('change', this.change);
} }
}, },
// 全屏 // 全屏
@@ -100,39 +111,37 @@ export default {
if (!screenfull.isEnabled) { if (!screenfull.isEnabled) {
this.$message({ this.$message({
message: 'you browser can not work', message: 'you browser can not work',
type: 'warning' type: 'warning',
}) });
return false return false;
} }
screenfull.toggle(this.$refs.wholePlantContainerB) screenfull.toggle(this.$refs.wholePlantContainerB);
}, },
resetSize() { resetSize() {
let wholePlantContainerBox = document.getElementById('wholePlantContainer') let wholePlantContainerBox = document.getElementById(
let rw = parseFloat(window.innerWidth) 'wholePlantContainer'
let rh = parseFloat(window.innerHeight) );
let bw = parseFloat(wholePlantContainerBox.style.width) let rw = parseFloat(window.innerWidth);
let bh = parseFloat(wholePlantContainerBox.style.height) let rh = parseFloat(window.innerHeight);
let wx = 0 let bw = parseFloat(wholePlantContainerBox.style.width);
let hx = 0 let bh = parseFloat(wholePlantContainerBox.style.height);
let wx = 0;
let hx = 0;
if (screenfull.isFullscreen) { if (screenfull.isFullscreen) {
console.log('全屏') wx = rw / bw;
wx = rw / bw hx = rh / bh;
hx = rh / bh
console.log(this.scaleNum)
} else { } else {
console.log('非全屏')
console.log(this.$store.state.app.sidebar.opened)
if (this.$store.state.app.sidebar.opened) { if (this.$store.state.app.sidebar.opened) {
wx = (rw-280) / bw wx = (rw - 280) / bw;
hx = (rh-116) / bh hx = (rh - 116) / bh;
} else { } else {
wx = (rw-85) / bw wx = (rw - 85) / bw;
hx = (rh-116) / bh hx = (rh - 116) / bh;
}
}
this.scaleNum = wx
} }
} }
this.scaleNum = wx;
},
},
}; };
</script> </script>

View File

@@ -76,10 +76,6 @@ export default {
name: this.chartData[i].objName + this.chartData[i].objCode, name: this.chartData[i].objName + this.chartData[i].objCode,
type: 'bar', type: 'bar',
barMaxWidth: 20, barMaxWidth: 20,
label: {
show: true,
position: 'top',
},
data: [], data: [],
}; };
legendData.push(this.chartData[i].objName + this.chartData[i].objCode); legendData.push(this.chartData[i].objName + this.chartData[i].objCode);

View File

@@ -1,8 +1,7 @@
<template> <template>
<div <div
class="searchBarBox divHeight" class="searchBarBox divHeight"
ref="searchBarRef" ref="searchBarRef">
:style="{ paddingRight: isFold ? '55px' : '0px' }">
<el-form <el-form
:inline="true" :inline="true"
class="demo-form-inline"> class="demo-form-inline">
@@ -200,13 +199,6 @@
</el-button> </el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<span
v-if="isFold"
class="foldClass"
@click="switchMode">
{{ isExpand ? '收起' : '展开' }}
<svg-icon :icon-class="isExpand ? 'upward' : 'downward'" />
</span>
</div> </div>
</template> </template>
<script> <script>
@@ -217,16 +209,8 @@ import { getFactoryList } from '@/api/core/base/factory';
import moment from 'moment'; import moment from 'moment';
export default { export default {
name: 'searchArea', name: 'searchArea',
props: {
isFold: {
// 多行模式(默认否)
type: Boolean,
default: false,
},
},
data() { data() {
return { return {
isExpand: false, // 展开收起
// 查询参数 // 查询参数
queryParams: { queryParams: {
energyTypeId: null, energyTypeId: null,
@@ -525,16 +509,6 @@ export default {
let value = new Date(newData).getTime(); let value = new Date(newData).getTime();
return value; return value;
}, },
switchMode() {
// 展开和收起切换
this.isExpand = !this.isExpand;
const element = this.$refs.searchBarRef;
if (this.isExpand) {
element.classList.remove('divHeight');
} else {
element.classList.add('divHeight');
}
},
}, },
}; };
</script> </script>
@@ -573,21 +547,6 @@ export default {
margin-bottom: 4px; margin-bottom: 4px;
} }
} }
.searchBarBox .foldClass {
position: absolute;
top: 14px;
right: 0;
cursor: pointer;
font-size: 12px;
color: #0b58ff;
}
.searchBarBox .foldClass .iconfont {
font-size: 14px;
}
.divHeight {
height: 45px;
overflow: hidden;
}
.separateStyle { .separateStyle {
display: inline-block; display: inline-block;
width: 1px; width: 1px;

View File

@@ -4,7 +4,6 @@
id="contrastAnalysisBox"> id="contrastAnalysisBox">
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<search-area <search-area
:isFold="isFold"
@submit="getList" @submit="getList"
@export="exportExl" /> @export="exportExl" />
<div v-show="chartData.length"> <div v-show="chartData.length">
@@ -38,7 +37,6 @@ export default {
mixins: [tableHeightMixin], mixins: [tableHeightMixin],
data() { data() {
return { return {
isFold: false,
chartData: [], chartData: [],
timeDim: '', timeDim: '',
tableProps: [], tableProps: [],
@@ -46,13 +44,6 @@ export default {
tableH: this.tableHeight(250) / 2, tableH: this.tableHeight(250) / 2,
}; };
}, },
mounted() {
window.addEventListener('resize', () => {
this.isFold = this.searchBarWidth('contrastAnalysisBox', 1437);
// console.log(document.getElementById("contrastAnalysisBox").offsetWidth)
});
this.isFold = this.searchBarWidth('contrastAnalysisBox', 1437);
},
methods: { methods: {
_setTableHeight() { _setTableHeight() {
this.tableH = this.tableHeight(250) / 2; this.tableH = this.tableHeight(250) / 2;

View File

@@ -2,40 +2,39 @@
<div <div
id="analysischartLine" id="analysischartLine"
style="width: 100%" style="width: 100%"
:style="{ height: chartHeight + 'px' }" :style="{ height: chartHeight + 'px' }"></div>
></div>
</template> </template>
<script> <script>
import * as echarts from 'echarts' import * as echarts from 'echarts';
import resize from '@/utils/chartMixins/resize' import resize from '@/utils/chartMixins/resize';
export default { export default {
name: "LineChart", name: 'LineChart',
mixins: [resize], mixins: [resize],
data() { data() {
return { return {
chartDom: '', chartDom: '',
chart: '', chart: '',
chartHeight: this.tableHeight(370) chartHeight: this.tableHeight(370),
} };
}, },
props: { props: {
chartData: { chartData: {
type: Array, type: Array,
required: true, required: true,
default: () => { default: () => {
return [] return [];
} },
} },
}, },
watch: { watch: {
chartData: function () { chartData: function () {
this.getChart() this.getChart();
} },
}, },
mounted() { mounted() {
window.addEventListener('resize', () => { window.addEventListener('resize', () => {
this.chartHeight = this.tableHeight(370) this.chartHeight = this.tableHeight(370);
}) });
}, },
methods: { methods: {
getChart() { getChart() {
@@ -44,44 +43,36 @@ export default {
this.chart !== '' && this.chart !== '' &&
this.chart !== undefined this.chart !== undefined
) { ) {
this.chart.dispose() // 页面多次刷新会出现警告Dom已经初始化了一个实例这是销毁实例 this.chart.dispose(); // 页面多次刷新会出现警告Dom已经初始化了一个实例这是销毁实例
} }
this.chartDom = document.getElementById('analysischartLine') this.chartDom = document.getElementById('analysischartLine');
this.chart = echarts.init(this.chartDom) this.chart = echarts.init(this.chartDom);
if (this.chartData.length === 0) { if (this.chartData.length === 0) {
return false return false;
} }
let arr = this.chartData[0].type // [水,电,煤] let arr = this.chartData[0].type; // [水,电,煤]
let keys = Object.keys(this.chartData[0]) let keys = Object.keys(this.chartData[0]);
let yData = [ let yData = [
{ {
name: '本期', name: '本期',
type: 'bar', type: 'bar',
data: [], data: [],
barWidth: 20, barWidth: 20,
label: {
show: true,
position: 'top'
}
}, },
{ {
name: '上期', name: '上期',
type: 'bar', type: 'bar',
data: [], data: [],
barWidth: 20, barWidth: 20,
label: { },
show: true, ];
position: 'top'
}
}
]
for (let j = 0; j < arr.length; j++) { for (let j = 0; j < arr.length; j++) {
for (let k = 0; k < keys.length; k++) { for (let k = 0; k < keys.length; k++) {
if (keys[k].indexOf(arr[j] + '_上期') > -1) { if (keys[k].indexOf(arr[j] + '_上期') > -1) {
yData[1].data.push(this.chartData[0][keys[k]]) yData[1].data.push(this.chartData[0][keys[k]]);
} }
if (keys[k].indexOf(arr[j] + '_能源消耗') > -1) { if (keys[k].indexOf(arr[j] + '_能源消耗') > -1) {
yData[0].data.push(this.chartData[0][keys[k]]) yData[0].data.push(this.chartData[0][keys[k]]);
} }
} }
} }
@@ -90,49 +81,51 @@ export default {
tooltip: { tooltip: {
trigger: 'axis', trigger: 'axis',
axisPointer: { axisPointer: {
type: 'shadow' type: 'shadow',
}, },
formatter: function (params) { formatter: function (params) {
return ( return (
params[0].axisValue + params[0].axisValue +
`<br>` + `<br>` +
params.map((item) => { params
let str = `<span style="display:inline-block;width:8px;height:8px;margin: 0 8px 0 -3px;border-radius:2px;background-color:${item.color};"></span>` .map((item) => {
let seriesNameStr = `<span style="display:inline-block;">${item.seriesName}</span>` let str = `<span style="display:inline-block;width:8px;height:8px;margin: 0 8px 0 -3px;border-radius:2px;background-color:${item.color};"></span>`;
let value = item.value ? item.value : '-' let seriesNameStr = `<span style="display:inline-block;">${item.seriesName}</span>`;
let valueStr = `<span style="display:inline-block;margin-left:10px;color:rgba(0,0,0,0.45);">${value}</span>` let value = item.value ? item.value : '-';
let valueStr = `<span style="display:inline-block;margin-left:10px;color:rgba(0,0,0,0.45);">${value}</span>`;
return `<span style="display:flex; justify-content:space-between; margin-bottom: 2px"> return `<span style="display:flex; justify-content:space-between; margin-bottom: 2px">
<span>${str}${seriesNameStr}</span> <span>${str}${seriesNameStr}</span>
<span>${valueStr}</span> <span>${valueStr}</span>
</span>` </span>`;
}).join(``) })
) .join(``)
} );
},
}, },
legend: { legend: {
right: '1%', right: '1%',
icon: 'rect', icon: 'rect',
itemHeight: 8, itemHeight: 8,
itemWidth: 8 itemWidth: 8,
}, },
grid: { grid: {
left: '1%', left: '1%',
right: '1%', right: '1%',
bottom: '3%', bottom: '3%',
containLabel: true containLabel: true,
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
boundaryGap: [0, 0.01] boundaryGap: [0, 0.01],
}, },
xAxis: { xAxis: {
type: 'category', type: 'category',
data: arr data: arr,
}, },
series: yData series: yData,
} };
option && this.chart.setOption(option); option && this.chart.setOption(option);
} },
} },
} };
</script> </script>

View File

@@ -68,9 +68,9 @@ export default {
var option = { var option = {
color: ['#288AFF'], color: ['#288AFF'],
// tooltip: { tooltip: {
// trigger: 'axis' trigger: 'axis',
// }, },
grid: { grid: {
left: '4%', left: '4%',
right: '1%', right: '1%',

View File

@@ -1,8 +1,7 @@
<template> <template>
<div <div
class="searchBarBox divHeight" class="searchBarBox"
ref="searchBarRef" ref="searchBarRef">
:style="{ paddingRight: isFold ? '55px' : '0px' }">
<el-form <el-form
:inline="true" :inline="true"
class="demo-form-inline"> class="demo-form-inline">
@@ -172,9 +171,9 @@
</el-button> </el-button>
<span <span
class="separateStyle" class="separateStyle"
v-hasPermi="['analysis:trend-analysis:export']"></span> v-hasPermi="['analysis:energy-analysis:query']"></span>
<el-button <el-button
v-hasPermi="['analysis:trend-analysis:export']" v-hasPermi="['analysis:energy-analysis:query']"
type="primary" type="primary"
size="small" size="small"
plain plain
@@ -183,13 +182,6 @@
</el-button> </el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<span
v-if="isFold"
class="foldClass"
@click="switchMode">
{{ isExpand ? '收起' : '展开' }}
<svg-icon :icon-class="isExpand ? 'upward' : 'downward'" />
</span>
</div> </div>
</template> </template>
<script> <script>
@@ -198,16 +190,8 @@ import { getEnergyTypeListAll } from '@/api/base/energyType';
import moment from 'moment'; import moment from 'moment';
export default { export default {
name: 'searchArea', name: 'searchArea',
props: {
isFold: {
// 多行模式(默认否)
type: Boolean,
default: false,
},
},
data() { data() {
return { return {
isExpand: false, // 展开收起
// 查询参数 // 查询参数
queryParams: { queryParams: {
energyTypeId: null, energyTypeId: null,
@@ -509,16 +493,6 @@ export default {
let value = new Date(newData).getTime(); let value = new Date(newData).getTime();
return value; return value;
}, },
switchMode() {
// 展开和收起切换
this.isExpand = !this.isExpand;
const element = this.$refs.searchBarRef;
if (this.isExpand) {
element.classList.remove('divHeight');
} else {
element.classList.add('divHeight');
}
},
}, },
}; };
</script> </script>
@@ -557,21 +531,6 @@ export default {
margin-bottom: 4px; margin-bottom: 4px;
} }
} }
.searchBarBox .foldClass {
position: absolute;
top: 14px;
right: 0;
cursor: pointer;
font-size: 12px;
color: #0b58ff;
}
.searchBarBox .foldClass .iconfont {
font-size: 14px;
}
.divHeight {
height: 45px;
overflow: hidden;
}
.separateStyle { .separateStyle {
display: inline-block; display: inline-block;
width: 1px; width: 1px;

View File

@@ -4,7 +4,6 @@
id="trendAnalysisBox"> id="trendAnalysisBox">
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<search-area <search-area
:isFold="isFold"
@submit="getList" @submit="getList"
@export="exportExl" /> @export="exportExl" />
<div v-show="chartData.length"> <div v-show="chartData.length">
@@ -33,20 +32,12 @@ export default {
components: { SearchArea, LineChart }, components: { SearchArea, LineChart },
data() { data() {
return { return {
isFold: false,
chartData: [], chartData: [],
timeDim: '', timeDim: '',
tableProps: [], tableProps: [],
list: [], list: [],
}; };
}, },
mounted() {
window.addEventListener('resize', () => {
this.tableH = this.tableHeight(260);
this.isFold = this.searchBarWidth('trendAnalysisBox', 1480);
});
this.isFold = this.searchBarWidth('trendAnalysisBox', 1480);
},
methods: { methods: {
getList(params) { getList(params) {
this.timeDim = params.timeDim; this.timeDim = params.timeDim;
@@ -66,8 +57,14 @@ export default {
let listObj = { useNum: '消耗量' }; // 数据 let listObj = { useNum: '消耗量' }; // 数据
for (let i = 0; i < arr.length; i++) { for (let i = 0; i < arr.length; i++) {
let obj = {}; let obj = {};
obj.prop = arr[i].time; if (this.timeDim === '3') {
let fName = arr[i].time.slice(0, 4);
let lName = arr[i].time.slice(4, 6);
obj.label = fName + ' 第 ' + lName + ' 周';
} else {
obj.label = arr[i].time; obj.label = arr[i].time;
}
obj.prop = arr[i].time;
obj.minWidth = 100; obj.minWidth = 100;
tempX.push(obj); tempX.push(obj);
listObj[arr[i].time] = arr[i].useNum || null; listObj[arr[i].time] = arr[i].useNum || null;
@@ -77,34 +74,17 @@ export default {
}, },
// 导出excel // 导出excel
exportExl(params) { exportExl(params) {
exportTrend({ ...params }).then((res) => { exportTrend({ ...params })
// let fileName = ''; .then((response) => {
// const contentDisposition = res.headers['content-disposition']; this.$download.excel(response, '走势分析.xls');
// if (contentDisposition) {
// fileName = decodeURIComponent(
// contentDisposition.slice(
// contentDisposition.indexOf('filename=') + 9
// )
// );
// }
const blob = new Blob([res.data]);
const reader = new FileReader();
reader.readAsDataURL(blob);
reader.onload = (e) => {
const a = document.createElement('a');
a.download = '走势分析';
a.href = e.target.result;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
this.$message.success('导出成功'); this.$message.success('导出成功');
}; })
}); .catch(() => {});
}, },
}, },
}; };
</script> </script>
<style lang='scss'> <style lang="scss">
.trendAnalysisBox { .trendAnalysisBox {
.trend-out-table { .trend-out-table {
margin-bottom: 15px; margin-bottom: 15px;

View File

@@ -89,13 +89,13 @@ export default {
param: 'name', param: 'name',
}, },
{ {
type: 'button', type: this.$auth.hasPermi('base:energy-plc:query') ? 'button' : '',
btnName: '查询', btnName: '查询',
name: 'search', name: 'search',
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: this.$auth.hasPermi('base:energy-plc:create') ? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('base:energy-plc:create') ? 'button' : '', type: this.$auth.hasPermi('base:energy-plc:create') ? 'button' : '',

View File

@@ -116,7 +116,7 @@ export default {
}, },
selectObj(val) { selectObj(val) {
this.form.bindObjectId = val[val.length - 1]; this.form.bindObjectId = val[val.length - 1];
this.form.bindObjectType = val.length - 1; this.form.bindObjectType = val.length;
}, },
submitForm() { submitForm() {
this.$refs['form'].validate((valid) => { this.$refs['form'].validate((valid) => {

View File

@@ -22,7 +22,9 @@
readonly readonly
style="width: 250px"></el-input> style="width: 250px"></el-input>
</el-form-item> </el-form-item>
<el-form-item v-if="showBtn"> <el-form-item
v-if="showBtn"
v-hasPermi="['base:energy-plc-param:create']">
<el-button <el-button
type="success" type="success"
size="small" size="small"
@@ -160,15 +162,19 @@ export default {
this.drawerTitle = '参数绑定'; this.drawerTitle = '参数绑定';
this.showBtn = true; this.showBtn = true;
this.tableBtn = [ this.tableBtn = [
{ this.$auth.hasPermi('base:energy-plc-param:update')
? {
type: 'edit', type: 'edit',
btnName: '编辑', btnName: '编辑',
}, }
{ : undefined,
this.$auth.hasPermi('base:energy-plc-param:delete')
? {
type: 'delete', type: 'delete',
btnName: '删除', btnName: '删除',
}, }
]; : undefined,
].filter((v) => v);
} }
}, },
getList() { getList() {

View File

@@ -107,13 +107,17 @@ export default {
param: 'cnName', param: 'cnName',
}, },
{ {
type: 'button', type: this.$auth.hasPermi('base:energy-plc-connect:query')
? 'button'
: '',
btnName: '查询', btnName: '查询',
name: 'search', name: 'search',
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: this.$auth.hasPermi('base:energy-plc-connect:create')
? 'separate'
: '',
}, },
{ {
type: this.$auth.hasPermi('base:energy-plc-connect:create') type: this.$auth.hasPermi('base:energy-plc-connect:create')
@@ -127,17 +131,25 @@ export default {
], ],
tableProps, tableProps,
tableBtn: [ tableBtn: [
this.$auth.hasPermi('base:energy-plc-connect:bind') this.$auth.hasPermiAnd([
'base:energy-plc-param:query',
'base:energy-type:query',
])
? { ? {
type: 'connect', type: 'connect',
btnName: '绑定', btnName: '绑定',
} }
: undefined, : undefined,
{ this.$auth.hasPermi('base:energy-plc-param:query')
? {
type: 'detail', type: 'detail',
btnName: '详情', btnName: '详情',
}, }
this.$auth.hasPermi('base:energy-plc-connect:update') : undefined,
this.$auth.hasPermiAnd([
'base:energy-plc-connect:update',
'base:energy-plc-connect:query',
])
? { ? {
type: 'edit', type: 'edit',
btnName: '编辑', btnName: '编辑',

View File

@@ -45,6 +45,7 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-button <el-button
v-show="!isEdit"
class="addButton" class="addButton"
icon="el-icon-plus" icon="el-icon-plus"
@click="emitButtonClick"> @click="emitButtonClick">
@@ -70,6 +71,13 @@ export default {
return []; return [];
}, },
}, },
isEdit: {
type: Boolean,
required: true,
default: () => {
return false;
},
},
}, },
data() { data() {
return {}; return {};

View File

@@ -42,6 +42,7 @@
<add-table <add-table
:table-data="tableData" :table-data="tableData"
:table-name-list="tableNameList" :table-name-list="tableNameList"
:isEdit="isEdit"
@emitFun="inputChange" @emitFun="inputChange"
@emitButtonClick="emitButtonClick" /> @emitButtonClick="emitButtonClick" />
</el-col> </el-col>

View File

@@ -114,13 +114,20 @@ export default {
defaultSelect: [], defaultSelect: [],
}, },
{ {
type: 'button', type: this.$auth.hasPermi('base:energy-quantity-manual:query')
? 'button'
: '',
btnName: '查询', btnName: '查询',
name: 'search', name: 'search',
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: this.$auth.hasPermiOr([
'base:energy-quantity-manual:export',
'base:energy-quantity-manual:create',
])
? 'separate'
: '',
}, },
{ {
type: this.$auth.hasPermi('base:energy-quantity-manual:export') type: this.$auth.hasPermi('base:energy-quantity-manual:export')
@@ -147,13 +154,19 @@ export default {
// 班次基础信息列表 // 班次基础信息列表
list: [], list: [],
tableBtn: [ tableBtn: [
this.$auth.hasPermi('base:energy-quantity-manual:create') this.$auth.hasPermiAnd([
'base:energy-quantity-manual:query',
'base:energy-quantity-manual:create',
])
? { ? {
type: 'meterReading', type: 'meterReading',
btnName: '抄表', btnName: '抄表',
} }
: undefined, : undefined,
this.$auth.hasPermi('base:energy-quantity-manual:update') this.$auth.hasPermiAnd([
'base:energy-quantity-manual:update',
'base:energy-quantity-manual:query',
])
? { ? {
type: 'edit', type: 'edit',
btnName: '编辑', btnName: '编辑',

View File

@@ -90,7 +90,9 @@ export default {
width: 350, width: 350,
}, },
{ {
type: 'button', type: this.$auth.hasPermi('base:energy-quantity-realtime:query')
? 'button'
: '',
btnName: '查询', btnName: '查询',
name: 'search', name: 'search',
color: 'primary', color: 'primary',

View File

@@ -52,7 +52,10 @@ export default {
return { return {
tableProps, tableProps,
tableBtn: [ tableBtn: [
this.$auth.hasPermi('base:table-name-config:edit') this.$auth.hasPermiAnd([
'base:energy-table:query',
'base:energy-table:update',
])
? { ? {
type: 'edit', type: 'edit',
btnName: '编辑', btnName: '编辑',

View File

@@ -66,7 +66,7 @@
placeholder="请选择" placeholder="请选择"
style="width: 100%"> style="width: 100%">
<el-option <el-option
v-for="item in getDictDatas(DICT_TYPE.TABLE_NAME)" v-for="item in tableNameList"
:key="item.value" :key="item.value"
:label="item.label" :label="item.label"
:value="item.value"></el-option> :value="item.value"></el-option>
@@ -154,6 +154,7 @@ import {
createEnergyLimit, createEnergyLimit,
getEnergyParamList, getEnergyParamList,
} from '@/api/monitoring/energyLimit'; } from '@/api/monitoring/energyLimit';
import { energyTableGet } from '@/api/base/energyQuantityManual';
export default { export default {
name: 'energyLimitAdd', name: 'energyLimitAdd',
props: { props: {
@@ -203,6 +204,7 @@ export default {
{ required: true, message: '指标类型不能为空', trigger: 'change' }, { required: true, message: '指标类型不能为空', trigger: 'change' },
], ],
}, },
tableNameList: [],
detailList: [], detailList: [],
}; };
}, },
@@ -214,10 +216,10 @@ export default {
getEnergyLimit(id).then((res) => { getEnergyLimit(id).then((res) => {
if (res.code === 0) { if (res.code === 0) {
this.form = res.data; this.form = res.data;
this.form.plcParamId = res.data.plcParamId || '';
this.form.tableName = this.form.tableName this.form.tableName = this.form.tableName
? this.form.tableName + '' ? this.form.tableName + ''
: ''; : '';
this.form.plcParamId = res.data.plcParamId || '';
this.form.method = this.form.method ? this.form.method + '' : ''; this.form.method = this.form.method ? this.form.method + '' : '';
this.form.limitType = this.form.limitType this.form.limitType = this.form.limitType
? this.form.limitType + '' ? this.form.limitType + ''
@@ -229,6 +231,9 @@ export default {
if (this.form.type === 2) { if (this.form.type === 2) {
this.getDetailList(); this.getDetailList();
} }
if (this.form.energyTypeId) {
this.getTableNameList(this.form.energyTypeId);
}
} }
}); });
} else { } else {
@@ -267,11 +272,22 @@ export default {
} }
}, },
toggleType() { toggleType() {
if (this.form.energyTypeId && this.form.type) { if (this.form.energyTypeId && this.form.method == 2) {
this.getDetailList(); this.form.tableName = '';
this.form.plcParamId = ''; this.getTableNameList(this.form.energyTypeId);
} }
}, },
// 获取能源表名list
getTableNameList(id) {
energyTableGet({ energyTypeId: id }).then((res) => {
this.tableNameList = res.data.tableObjs || [];
if (this.tableNameList.length === 0) {
this.$modal.msgWarning(
'当前能源类型暂无配置表名,请先到《表名配置》页面配置'
);
}
});
},
// 递归处理分类回显问题 // 递归处理分类回显问题
changeDetSelect(key, treeData) { changeDetSelect(key, treeData) {
let arr = []; // 递归时操作的数组 let arr = []; // 递归时操作的数组

View File

@@ -125,13 +125,17 @@ export default {
param: 'limitType', param: 'limitType',
}, },
{ {
type: 'button', type: this.$auth.hasPermi('monitoring:energy-limit:query')
? 'button'
: '',
btnName: '查询', btnName: '查询',
name: 'search', name: 'search',
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: this.$auth.hasPermi('monitoring:energy-limit:create')
? 'separate'
: '',
}, },
{ {
type: this.$auth.hasPermi('monitoring:energy-limit:create') type: this.$auth.hasPermi('monitoring:energy-limit:create')
@@ -262,8 +266,9 @@ export default {
}, },
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
console.log(row);
this.$modal this.$modal
.confirm('是否确认删除监控对象为"' + row.objName + '"数据项?') .confirm('是否确认删除"' + row._pageIndex + '"数据项?')
.then(function () { .then(function () {
return deleteEnergyLimit(row.id); return deleteEnergyLimit(row.id);
}) })

View File

@@ -113,7 +113,9 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: this.$auth.hasPermi('monitoring:energy-report:export')
? 'separate'
: '',
}, },
{ {
type: this.$auth.hasPermi('monitoring:energy-report:export') type: this.$auth.hasPermi('monitoring:energy-report:export')

View File

@@ -22,6 +22,7 @@
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button <el-button
v-hasPermi="['monitoring:energy-statistics-det:query']"
type="success" type="success"
size="small" size="small"
v-if="showBtn" v-if="showBtn"
@@ -30,6 +31,7 @@
新增 新增
</el-button> </el-button>
<el-button <el-button
v-hasPermi="['monitoring:energy-statistics-det:delete']"
type="danger" type="danger"
size="small" size="small"
v-if="showBtn" v-if="showBtn"
@@ -161,11 +163,13 @@ export default {
this.drawerTitle = '参数绑定'; this.drawerTitle = '参数绑定';
this.showBtn = true; this.showBtn = true;
this.tableBtn = [ this.tableBtn = [
{ this.$auth.hasPermi('monitoring:energy-statistics-det:delete')
? {
type: 'delete', type: 'delete',
btnName: '删除', btnName: '删除',
}, }
]; : undefined,
].filter((v) => v);
} }
}, },
getList() { getList() {

View File

@@ -88,7 +88,9 @@ export default {
type: 'separate', type: 'separate',
}, },
{ {
type: 'button', type: this.$auth.hasPermi('monitoring:energy-statistics-det:create')
? 'button'
: '',
btnName: '关联', btnName: '关联',
name: 'add', name: 'add',
color: 'primary', color: 'primary',

View File

@@ -103,8 +103,11 @@ export default {
name: 'search', name: 'search',
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: this.$auth.hasPermi('monitoring:energy-statistics:create')
? 'separate'
: '',
}, },
{ {
type: this.$auth.hasPermi('monitoring:energy-statistics:create') type: this.$auth.hasPermi('monitoring:energy-statistics:create')
@@ -118,17 +121,22 @@ export default {
], ],
tableProps, tableProps,
tableBtn: [ tableBtn: [
this.$auth.hasPermi('monitoring:energy-statistics:bind') this.$auth.hasPermi('monitoring:energy-statistics-det:query')
? { ? {
type: 'connect', type: 'connect',
btnName: '绑定', btnName: '绑定',
} }
: undefined, : undefined,
{ this.$auth.hasPermi('monitoring:energy-statistics:query')
? {
type: 'detail', type: 'detail',
btnName: '详情', btnName: '详情',
}, }
this.$auth.hasPermi('monitoring:energy-statistics:update') : undefined,
this.$auth.hasPermiAnd([
'monitoring:energy-statistics:update',
'monitoring:energy-statistics:query',
])
? { ? {
type: 'edit', type: 'edit',
btnName: '编辑', btnName: '编辑',

View File

@@ -130,8 +130,20 @@ export default {
{ prop: 'createTime', label: '报警时间', filter: timeFilter, width: 150, showOverflowtooltip: true }, { prop: 'createTime', label: '报警时间', filter: timeFilter, width: 150, showOverflowtooltip: true },
{ prop: 'alarmCode', label: '设备报警码', width: 180, showOverflowtooltip: true }, { prop: 'alarmCode', label: '设备报警码', width: 180, showOverflowtooltip: true },
{ prop: 'alarmContent', label: '报警内容', width: 150, showOverflowtooltip: true }, { prop: 'alarmContent', label: '报警内容', width: 150, showOverflowtooltip: true },
{ prop: 'opt1', label: '处理记录', name: '查看', subcomponent: btn }, this.$auth.hasPermiAnd([
{ prop: 'opt2', label: '处理', name: '报警处理', subcomponent: btn }, 'monitoring:equipment-alarm-log:query',
'base:equipment-alarm-hand:query'
]) ?
{ prop: 'opt1', label: '处理记录', name: '查看', subcomponent: btn } : undefined,
this.$auth.hasPermiAnd([
'monitoring:equipment-alarm-log:query',
'base:equipment-alarm-hand:query',
'base:core-worker:query',
'base:equipment-alarm-hand:create',
'base:equipment-alarm-hand:update',
'monitoring:equipment-alarm-log:update'
]) ?
{ prop: 'opt2', label: '处理', name: '报警处理', subcomponent: btn } : undefined,
// { prop: 'remark', label: '备注' }, // { prop: 'remark', label: '备注' },
], ],
searchBarFormConfig: [ searchBarFormConfig: [

View File

@@ -122,19 +122,30 @@ export default {
editMode: '', editMode: '',
searchBarKeys: ['name', 'code'], searchBarKeys: ['name', 'code'],
tableBtn: [ tableBtn: [
this.$auth.hasPermi('equipment:alarm-group:update') this.$auth.hasPermiAnd([
'base:equipment-group:query',
'base:equipment-group-alarm:query'
])
? { ? {
type: 'detail', type: 'detail',
btnName: '查看报警', btnName: '查看报警',
} }
: undefined, : undefined,
this.$auth.hasPermi('equipment:alarm-group:update') this.$auth.hasPermiAnd([
'base:equipment-group:update',
'base:equipment-group:query',
'base:equipment-group-alarm:create',
'base:equipment-group-alarm:delete',
'base:equipment-group-alarm:update',
'base:equipment-group-alarm:query',
'base:equipment-group-alarm:query'
])
? { ? {
type: 'edit', type: 'edit',
btnName: '修改', btnName: '修改',
} }
: undefined, : undefined,
this.$auth.hasPermi('equipment:alarm-group:delete') this.$auth.hasPermi('base:equipment-group:delete')
? { ? {
type: 'delete', type: 'delete',
btnName: '删除', btnName: '删除',
@@ -244,10 +255,11 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: this.$auth.hasPermi('base:equipment-group:create')
? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('equipment:alarm-group:create') type: this.$auth.hasPermi('base:equipment-group:create')
? 'button' ? 'button'
: '', : '',
btnName: '新增', btnName: '新增',

View File

@@ -123,13 +123,23 @@ export default {
return { return {
searchBarKeys: ['groupId', 'equipmentName'], searchBarKeys: ['groupId', 'equipmentName'],
tableBtn: [ tableBtn: [
this.$auth.hasPermi('equipment:bind-group:update') this.$auth.hasPermiAnd([
'base:equipment-group-alarm:query',
'base:core-equipment:query'
])
? { ? {
type: 'detail', type: 'detail',
btnName: '查看报警', btnName: '查看报警',
} }
: undefined, : undefined,
this.$auth.hasPermi('equipment:bind-group:update') this.$auth.hasPermiAnd([
'equipment:bind-group:update',
'base:core-equipment:query',
'base:equipment-group-alarm:create',
'base:equipment-group-alarm:update',
'base:equipment-group-alarm:delete',
'base:equipment-group-alarm:query'
])
? { ? {
type: 'edit', type: 'edit',
btnName: '修改', btnName: '修改',
@@ -201,11 +211,16 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: this.$auth.hasPermiAnd([
'equipment:bind-group:create',
'base:core-equipment:query'
]) ? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('equipment:bind-group:create') type: this.$auth.hasPermiAnd([
? 'button' 'equipment:bind-group:create',
'base:core-equipment:query'
]) ? 'button'
: '', : '',
btnName: '新增', btnName: '新增',
name: 'add', name: 'add',

View File

@@ -140,17 +140,28 @@ export default {
// tableBtn: [ // tableBtn: [
// ].filter((v) => v), // ].filter((v) => v),
tableBtn: [ tableBtn: [
{ this.$auth.hasPermiAnd([
'base:equipment-plc-connect:query',
'base:equipment-plc-param:query'
])
? {
type: 'detail', type: 'detail',
btnName: '参数绑定', btnName: '参数绑定',
}, } : undefined,
this.$auth.hasPermi('equipment:collection-config:update') this.$auth.hasPermiAnd([
'base:equipment-plc-connect:update',
'base:equipment-plc-connect:query',
'base:equipment-plc-param:create',
'base:equipment-plc-param:update',
'base:equipment-plc-param:delete',
'base:equipment-plc-param:query'
])
? { ? {
type: 'edit', type: 'edit',
btnName: '修改', btnName: '修改',
} }
: undefined, : undefined,
this.$auth.hasPermi('equipment:collection-config:delete') this.$auth.hasPermi('base:equipment-plc-connect:delete')
? { ? {
type: 'delete', type: 'delete',
btnName: '删除', btnName: '删除',
@@ -158,14 +169,14 @@ export default {
: undefined, : undefined,
].filter((v) => v), ].filter((v) => v),
tableProps: [ tableProps: [
{ prop: 'productionLine', label: '产线', width: 120, showOverflowtooltip: true }, { prop: 'productionLine', label: '产线', minWidth: 120, showOverflowtooltip: true },
{ prop: 'workshopSection', label: '工段', width: 120, showOverflowtooltip: true }, { prop: 'workshopSection', label: '工段', minWidth: 120, showOverflowtooltip: true },
{ prop: 'equipmentName', label: '设备名', width: 120, showOverflowtooltip: true }, { prop: 'equipmentName', label: '设备名', minWidth: 120, showOverflowtooltip: true },
{ prop: 'equipmentCode', label: '设备编码', width: 200, showOverflowtooltip: true }, { prop: 'equipmentCode', label: '设备编码', minWidth: 200, showOverflowtooltip: true },
{ prop: 'plcCode', label: '关联表编码', width: 220, showOverflowtooltip: true }, { prop: 'plcCode', label: '关联表编码', minWidth: 220, showOverflowtooltip: true },
{ prop: 'plcTableName', label: '关联表名', width: 150, showOverflowtooltip: true }, { prop: 'plcTableName', label: '关联表名', minWidth: 150, showOverflowtooltip: true },
{ prop: 'plcName', label: '标识名称', width: 150, showOverflowtooltip: true }, { prop: 'plcName', label: '标识名称', minWidth: 150, showOverflowtooltip: true },
{ prop: 'bindingParameters', label: '绑定参数数量', width: 120, showOverflowtooltip: true }, { prop: 'bindingParameters', label: '绑定参数数量', minWidth: 120, showOverflowtooltip: true },
// { // {
// _action: 'params-bind', // _action: 'params-bind',
// label: '查看绑定', // label: '查看绑定',
@@ -217,10 +228,11 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: this.$auth.hasPermi('base:equipment-plc-connect:create')
? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('equipment:collection-config:create') type: this.$auth.hasPermi('base:equipment-plc-connect:create')
? 'button' ? 'button'
: '', : '',
// type: 'button', // type: 'button',

View File

@@ -108,13 +108,16 @@ export default {
tableKey: Math.random(), tableKey: Math.random(),
searchBarKeys: ['name', 'plcTableName'], searchBarKeys: ['name', 'plcTableName'],
tableBtn: [ tableBtn: [
this.$auth.hasPermi('equipment:realtime-table-config:update') this.$auth.hasPermiAnd([
'base:equipment-plc:update',
'base:equipment-plc:query'
])
? { ? {
type: 'edit', type: 'edit',
btnName: '修改', btnName: '修改',
} }
: undefined, : undefined,
this.$auth.hasPermi('equipment:realtime-table-config:delete') this.$auth.hasPermi('base:equipment-plc:delete')
? { ? {
type: 'delete', type: 'delete',
btnName: '删除', btnName: '删除',
@@ -160,13 +163,12 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: this.$auth.hasPermi('base:equipment-plc:create')
? 'separate' : '',
}, },
{ {
// type: this.$auth.hasPermi('equipment:realtime-table-config:create') type: this.$auth.hasPermi('base:equipment-plc:create')
// ? 'button' ? 'button' : '',
// : '',
type: 'button',
btnName: '新增', btnName: '新增',
name: 'add', name: 'add',
plain: true, plain: true,
@@ -194,7 +196,7 @@ export default {
input: true, input: true,
label: '编码', label: '编码',
prop: 'code', prop: 'code',
url: '/base/equipment-group/getCode', url: '/base/energy-plc/getCode',
rules: [{ required: true, message: '编码不能为空', trigger: 'blur' }], rules: [{ required: true, message: '编码不能为空', trigger: 'blur' }],
}, },
], ],

View File

@@ -91,7 +91,7 @@
<!-- btns --> <!-- btns -->
<el-table-column width="188" label="操作"> <el-table-column width="188" label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
<el-tooltip content="确认" placement="top"> <el-tooltip v-if="$auth.hasPermi('equipment:check:update')" content="确认" placement="top">
<el-button <el-button
type="text" type="text"
style="margin: 5px 0; padding: 0" style="margin: 5px 0; padding: 0"
@@ -101,8 +101,8 @@
</el-button> </el-button>
</el-tooltip> </el-tooltip>
<!-- line --> <!-- line -->
<span style="margin: 0 4px; font-size: 18px; color: #e5e7eb">|</span> <span v-if="$auth.hasPermi('equipment:check:query')" style="margin: 0 4px; font-size: 18px; color: #e5e7eb">|</span>
<el-tooltip content="查看详情" placement="top"> <el-tooltip v-if="$auth.hasPermi('equipment:check:query')" content="查看详情" placement="top">
<el-button <el-button
type="text" type="text"
style="margin: 5px 0; padding: 0" style="margin: 5px 0; padding: 0"
@@ -111,8 +111,26 @@
</el-button> </el-button>
</el-tooltip> </el-tooltip>
<!-- line --> <!-- line -->
<span style="margin: 0 4px; font-size: 18px; color: #e5e7eb">|</span> <span v-if="$auth.hasPermiAnd([
<el-tooltip content="编辑" placement="top"> 'equipment:check:update',
'base:core-worker:query',
'base:group-classes:query',
'base:core-department:query',
'equipment:check:query',
'equipment:check:create',
'equipment:check:delete',
'base:core-equipment:query'
])" style="margin: 0 4px; font-size: 18px; color: #e5e7eb">|</span>
<el-tooltip v-if="$auth.hasPermiAnd([
'equipment:check:update',
'base:core-worker:query',
'base:group-classes:query',
'base:core-department:query',
'equipment:check:query',
'equipment:check:create',
'equipment:check:delete',
'base:core-equipment:query'
])" content="编辑" placement="top">
<el-button <el-button
type="text" type="text"
style="margin: 5px 0; padding: 0" style="margin: 5px 0; padding: 0"
@@ -121,8 +139,8 @@
</el-button> </el-button>
</el-tooltip> </el-tooltip>
<!-- line --> <!-- line -->
<span style="margin: 0 4px; font-size: 18px; color: #e5e7eb">|</span> <span v-if="$auth.hasPermi('equipment:check:delete')" style="margin: 0 4px; font-size: 18px; color: #e5e7eb">|</span>
<el-tooltip content="删除" placement="top"> <el-tooltip v-if="$auth.hasPermi('equipment:check:delete')" content="删除" placement="top">
<el-button <el-button
type="text" type="text"
style="margin: 5px 0; padding: 0" style="margin: 5px 0; padding: 0"

View File

@@ -101,10 +101,23 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: (this.$auth.hasPermiAnd([
'equipment:check:create',
'base:core-worker:query',
'base:group-classes:query',
'base:core-department:query'
]) ||
this.$auth.hasPermi('equipment:check:update') ||
this.$auth.hasPermi('equipment:check:export'))
? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('equipment:inspection-confirm:create') type: this.$auth.hasPermiAnd([
'equipment:check:create',
'base:core-worker:query',
'base:group-classes:query',
'base:core-department:query'
])
? 'button' ? 'button'
: '', : '',
btnName: '新增', btnName: '新增',
@@ -113,7 +126,7 @@ export default {
color: 'success', color: 'success',
}, },
{ {
type: this.$auth.hasPermi('equipment:inspection-confirm:confirm') type: this.$auth.hasPermi('equipment:check:update')
? 'button' ? 'button'
: '', : '',
btnName: '批量确认', btnName: '批量确认',
@@ -122,7 +135,7 @@ export default {
plain: true, plain: true,
}, },
{ {
type: this.$auth.hasPermi('equipment:inspection-confirm:export') type: this.$auth.hasPermi('equipment:check:export')
? 'button' ? 'button'
: '', : '',
btnName: '导出', btnName: '导出',

View File

@@ -100,7 +100,7 @@ export default {
addContent: false, addContent: false,
searchBarKeys: ['name', 'actualCheckTime'], searchBarKeys: ['name', 'actualCheckTime'],
tableBtn: [ tableBtn: [
this.$auth.hasPermi('equipment:check-record:detail') this.$auth.hasPermi('equipment:check:query')
? { ? {
type: 'detail', type: 'detail',
btnName: '详情', btnName: '详情',
@@ -166,10 +166,11 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: this.$auth.hasPermi('equipment:check:export')
? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('equipment:check-record:export') type: this.$auth.hasPermi('equipment:check:export')
? 'button' ? 'button'
: '', : '',
btnName: '导出', btnName: '导出',

View File

@@ -68,14 +68,23 @@ export default {
addOrEditTitle: '', addOrEditTitle: '',
searchBarKeys: ['equipmentId', 'name'], searchBarKeys: ['equipmentId', 'name'],
tableBtn: [ tableBtn: [
this.$auth.hasPermi('equipment:check-setting:addInsp') this.$auth.hasPermiAnd([
'equipment:check:create',
'equipment:check:query',
'equipment:check:update',
'equipment:check:delete'
])
? { ? {
type: 'add', type: 'add',
btnName: '添加', btnName: '添加',
showTip: '添加巡检', showTip: '添加巡检',
} }
: undefined, : undefined,
this.$auth.hasPermi('equipment:check-setting:update') this.$auth.hasPermiAnd([
'equipment:check:update',
'equipment:check:query',
'base:core-department:query'
])
? { ? {
type: 'edit', type: 'edit',
btnName: '修改', btnName: '修改',
@@ -87,7 +96,7 @@ export default {
// btnName: '查看详情', // btnName: '查看详情',
// } // }
// : undefined, // : undefined,
this.$auth.hasPermi('equipment:check-setting:delete') this.$auth.hasPermi('equipment:check:delete')
? { ? {
type: 'delete', type: 'delete',
btnName: '删除', btnName: '删除',
@@ -157,10 +166,17 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: this.$auth.hasPermiAnd([
'equipment:check:create',
'base:core-department:query'
])
? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('equipment:check-setting:create') type: this.$auth.hasPermiAnd([
'equipment:check:create',
'base:core-department:query'
])
? 'button' ? 'button'
: '', : '',
btnName: '新增', btnName: '新增',

View File

@@ -37,11 +37,11 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
v-if="selectedBox[0]" v-if="selectedBox[0]"
width="160" minWidth="160"
label="设备保养单号" label="设备保养单号"
:show-overflow-tooltip="true" :show-overflow-tooltip="true"
prop="maintainOrderNumber"></el-table-column> prop="maintainOrderNumber"></el-table-column>
<el-table-column v-if="selectedBox[1]" width="128" label="保养计划名称" prop="planName"> <el-table-column v-if="selectedBox[1]" minWidth="128" label="保养计划名称" prop="planName">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.planName || '---' }} {{ scope.row.planName || '---' }}
</template> </template>
@@ -67,7 +67,7 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
v-if="selectedBox[5]" v-if="selectedBox[5]"
width="150" minWidth="150"
label="计划结束时间" label="计划结束时间"
prop="planEndTime"> prop="planEndTime">
<template slot-scope="scope"> <template slot-scope="scope">
@@ -76,7 +76,7 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
v-if="selectedBox[6]" v-if="selectedBox[6]"
width="150" minWidth="150"
label="实际开始时间" label="实际开始时间"
prop="startTime"> prop="startTime">
<template slot-scope="scope"> <template slot-scope="scope">
@@ -85,7 +85,7 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
v-if="selectedBox[7]" v-if="selectedBox[7]"
width="150" minWidth="150"
label="实际结束时间" label="实际结束时间"
prop="endTime"> prop="endTime">
<template slot-scope="scope"> <template slot-scope="scope">
@@ -94,7 +94,7 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
v-if="selectedBox[8]" v-if="selectedBox[8]"
width="150" minWidth="150"
label="确认截止时间" label="确认截止时间"
prop="confirmDueTime"> prop="confirmDueTime">
<template slot-scope="scope"> <template slot-scope="scope">
@@ -103,7 +103,7 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
v-if="selectedBox[9]" v-if="selectedBox[9]"
width="150" minWidth="150"
label="保养计划类型" label="保养计划类型"
prop="relatePlan"> prop="relatePlan">
<template slot-scope="scope"> <template slot-scope="scope">
@@ -118,7 +118,7 @@
<!-- btns --> <!-- btns -->
<el-table-column width="188" label="操作"> <el-table-column width="188" label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
<el-tooltip content="确认" placement="top"> <el-tooltip v-if="$auth.hasPermi('equipment:maintain-record:update')" content="确认" placement="top">
<el-button <el-button
type="text" type="text"
style="margin: 5px 0; padding: 0" style="margin: 5px 0; padding: 0"
@@ -128,8 +128,8 @@
</el-button> </el-button>
</el-tooltip> </el-tooltip>
<!-- line --> <!-- line -->
<span style="margin: 0 4px; font-size: 18px; color: #e5e7eb">|</span> <span v-if="$auth.hasPermi('equipment:maintain-record:query')" style="margin: 0 4px; font-size: 18px; color: #e5e7eb">|</span>
<el-tooltip content="查看详情" placement="top"> <el-tooltip v-if="$auth.hasPermi('equipment:maintain-record:query')" content="查看详情" placement="top">
<el-button <el-button
type="text" type="text"
style="margin: 5px 0; padding: 0" style="margin: 5px 0; padding: 0"
@@ -138,18 +138,32 @@
</el-button> </el-button>
</el-tooltip> </el-tooltip>
<!-- line --> <!-- line -->
<span style="margin: 0 4px; font-size: 18px; color: #e5e7eb">|</span> <!-- <span v-if="$auth.hasPermiAnd([
<el-tooltip content="编辑" placement="top"> 'equipment:maintain-record:update',
'base:core-production-line:query',
'base:core-department:query',
'equipment:maintain-record:create',
'equipment:maintain-record:query',
'equipment:maintain-record:delete'
])" style="margin: 0 4px; font-size: 18px; color: #e5e7eb">|</span>
<el-tooltip v-if="$auth.hasPermiAnd([
'equipment:maintain-record:update',
'base:core-production-line:query',
'base:core-department:query',
'equipment:maintain-record:create',
'equipment:maintain-record:query',
'equipment:maintain-record:delete'
])" content="编辑" placement="top">
<el-button <el-button
type="text" type="text"
style="margin: 5px 0; padding: 0" style="margin: 5px 0; padding: 0"
@click="$emit('edit', scope.row)"> @click="$emit('edit', scope.row)">
<i class="iconfont icon-edit primary-color" /> <i class="iconfont icon-edit primary-color" />
</el-button> </el-button>
</el-tooltip> </el-tooltip> -->
<!-- line --> <!-- line -->
<span style="margin: 0 4px; font-size: 18px; color: #e5e7eb">|</span> <span v-if="$auth.hasPermi('equipment:maintain-record:delete')" style="margin: 0 4px; font-size: 18px; color: #e5e7eb">|</span>
<el-tooltip content="删除" placement="top"> <el-tooltip v-if="$auth.hasPermi('equipment:maintain-record:delete')" content="删除" placement="top">
<el-button <el-button
type="text" type="text"
style="margin: 5px 0; padding: 0" style="margin: 5px 0; padding: 0"

View File

@@ -157,10 +157,20 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: (this.$auth.hasPermiAnd([
'equipment:maintain-record:create',
'base:core-worker:query',
'base:core-production-line:query',
'base:core-department:query'
]) || this.$auth.hasPermi('equipment:maintain-record:update') || this.$auth.hasPermi('equipment:maintain-record:export')) ? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('equipment:maintain-confirm:create') type: this.$auth.hasPermiAnd([
'equipment:maintain-record:create',
'base:core-worker:query',
'base:core-production-line:query',
'base:core-department:query'
])
? 'button' ? 'button'
: '', : '',
btnName: '新增', btnName: '新增',
@@ -169,7 +179,7 @@ export default {
color: 'success', color: 'success',
}, },
{ {
type: this.$auth.hasPermi('equipment:maintain-confirm:confirm') type: this.$auth.hasPermi('equipment:maintain-record:update')
? 'button' ? 'button'
: '', : '',
btnName: '批量确认', btnName: '批量确认',
@@ -178,7 +188,7 @@ export default {
plain: true, plain: true,
}, },
{ {
type: this.$auth.hasPermi('equipment:maintain-confirm:export') type: this.$auth.hasPermi('equipment:maintain-record:export')
? 'button' ? 'button'
: '', : '',
btnName: '导出', btnName: '导出',

View File

@@ -131,7 +131,7 @@ export default {
// width: 180, // width: 180,
// filter: parseTime(createTime), // filter: parseTime(createTime),
// }, // },
{ prop: 'code', label: '保养计划单号', width: 150, showOverflowtooltip: true }, { prop: 'code', label: '保养计划单号', minWidth: 150, showOverflowtooltip: true },
{ prop: 'name', label: '保养计划名称', minWidth: 118, showOverflowtooltip: true }, { prop: 'name', label: '保养计划名称', minWidth: 118, showOverflowtooltip: true },
{ prop: 'departmentName', label: '部门', minWidth: 100, showOverflowtooltip: true }, { prop: 'departmentName', label: '部门', minWidth: 100, showOverflowtooltip: true },
{ prop: 'lineName', label: '产线名', minWidth: 100, showOverflowtooltip: true }, { prop: 'lineName', label: '产线名', minWidth: 100, showOverflowtooltip: true },
@@ -160,7 +160,8 @@ export default {
// filter: publicFormatter(this.DICT_TYPE.MAINTAIN_TYPE), // filter: publicFormatter(this.DICT_TYPE.MAINTAIN_TYPE),
// }, // },
// { prop: 'opt1', label: '设备保养', name: '操作', subcomponent: btn }, // { prop: 'opt1', label: '设备保养', name: '操作', subcomponent: btn },
{ prop: 'opt2', label: '保养内容', name: '详情', subcomponent: btn, width: 100 }, this.$auth.hasPermi('equipment:plan-config:query') ?
{ prop: 'opt2', label: '保养内容', name: '详情', subcomponent: btn, width: 100 } : undefined,
{ {
prop: 'remainDays', prop: 'remainDays',
label: '距离下次保养剩余时间(天)', label: '距离下次保养剩余时间(天)',
@@ -190,10 +191,11 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: this.$auth.hasPermi('equipment:plan-config:export')
? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('equipment:maintain-monitor:export') type: this.$auth.hasPermi('equipment:plan-config:export')
? 'button' ? 'button'
: '', : '',
btnName: '导出', btnName: '导出',

View File

@@ -14,7 +14,7 @@
<method-btn <method-btn
v-if="tableBtn.length" v-if="tableBtn.length"
slot="handleBtn" slot="handleBtn"
:width="120" :width="180"
label="操作" label="操作"
:method-list="tableBtn" :method-list="tableBtn"
@clickBtn="handleClick" /> @clickBtn="handleClick" />
@@ -65,57 +65,57 @@ const tableProps = [
{ {
prop: 'name', prop: 'name',
label: '保养计划名称', label: '保养计划名称',
width: 120, minWidth: 120,
showOverflowtooltip: true showOverflowtooltip: true
}, },
{ {
prop: 'departmentName', prop: 'departmentName',
label: '部门', label: '部门',
width: 120, minWidth: 120,
showOverflowtooltip: true showOverflowtooltip: true
}, },
{ {
prop: 'lineName', prop: 'lineName',
label: '产线名', label: '产线名',
width: 120, minWidth: 120,
showOverflowtooltip: true showOverflowtooltip: true
}, },
{ {
prop: 'maintenancePeriod', prop: 'maintenancePeriod',
label: '保养频率(天/次)', label: '保养频率(天/次)',
width: 150, minWidth: 150,
showOverflowtooltip: true showOverflowtooltip: true
}, },
{ {
prop: 'firstMaintenanceTime', prop: 'firstMaintenanceTime',
label: '首次保养时间', label: '首次保养时间',
filter: parseTime, filter: parseTime,
width: 150, minWidth: 150,
showOverflowtooltip: true showOverflowtooltip: true
}, },
{ {
prop: 'maintainDuration', prop: 'maintainDuration',
label: '保养时长', label: '保养时长',
width: 120, minWidth: 120,
showOverflowtooltip: true showOverflowtooltip: true
}, },
{ {
prop: 'maintainer', prop: 'maintainer',
label: '计划保养人员', label: '计划保养人员',
width: 150, minWidth: 150,
showOverflowtooltip: true showOverflowtooltip: true
}, },
{ {
prop: 'confirmTimeLimit', prop: 'confirmTimeLimit',
label: '确认时限', label: '确认时限',
filter: toDay, filter: toDay,
width: 130, minWidth: 130,
showOverflowtooltip: true showOverflowtooltip: true
}, },
{ {
prop: 'remark', prop: 'remark',
label: '备注', label: '备注',
width: 150, minWidth: 150,
showOverflowtooltip: true showOverflowtooltip: true
} }
]; ];
@@ -138,13 +138,25 @@ export default {
planName: undefined planName: undefined
}, },
tableBtn: [ tableBtn: [
this.$auth.hasPermi(`equipment:plan-config:add`) this.$auth.hasPermiAnd([
'equipment:plan-config:query',
'equipment:plan-config:create',
'equipment:plan-config:update',
'equipment:plan-config:delete',
'base:core-equipment:query'
])
? { ? {
type: 'add', type: 'add',
btnName: '添加内容', btnName: '添加内容',
} }
: undefined, : undefined,
this.$auth.hasPermi(`equipment:plan-config:update`) this.$auth.hasPermiAnd([
'equipment:plan-config:update',
'equipment:plan-config:query',
'base:core-worker:query',
'base:core-production-line:query',
'base:core-department:query'
])
? { ? {
type: 'edit', type: 'edit',
btnName: '编辑', btnName: '编辑',
@@ -172,10 +184,20 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: this.$auth.hasPermiAnd([
'equipment:plan-config:create',
'base:core-worker:query',
'base:core-production-line:query',
'base:core-department:query'
]) ? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('equipment:plan-config:create') ? 'button' : '', type: this.$auth.hasPermiAnd([
'equipment:plan-config:create',
'base:core-worker:query',
'base:core-production-line:query',
'base:core-department:query'
]) ? 'button' : '',
btnName: '新增', btnName: '新增',
name: 'add', name: 'add',
color: 'success', color: 'success',

View File

@@ -131,24 +131,25 @@ export default {
// width: 180, // width: 180,
// filter: timeFilter, // filter: timeFilter,
// }, // },
{ prop: 'maintainOrderNumber', label: '设备保养单号', width: 170, showOverflowtooltip: true }, { prop: 'maintainOrderNumber', label: '设备保养单号', minWidth: 170, showOverflowtooltip: true },
{ prop: 'planName', label: '保养计划名称', width: 150, showOverflowtooltip: true }, { prop: 'planName', label: '保养计划名称', minWidth: 150, showOverflowtooltip: true },
{ prop: 'departmentName', label: '部门', width: 120, showOverflowtooltip: true }, { prop: 'departmentName', label: '部门', minWidth: 120, showOverflowtooltip: true },
{ prop: 'lineName', label: '产线名', width: 120, showOverflowtooltip: true }, { prop: 'lineName', label: '产线名', minWidth: 120, showOverflowtooltip: true },
{ prop: 'planStartTime', label: '计划开始时间', filter: parseTime, width: 150, showOverflowtooltip: true }, { prop: 'planStartTime', label: '计划开始时间', filter: parseTime, minWidth: 150, showOverflowtooltip: true },
{ prop: 'planEndTime', label: '计划结束时间', filter: parseTime, width: 150, showOverflowtooltip: true }, { prop: 'planEndTime', label: '计划结束时间', filter: parseTime, minWidth: 150, showOverflowtooltip: true },
{ prop: 'startTime', label: '实际开始时间', filter: parseTime, width: 150, showOverflowtooltip: true }, { prop: 'startTime', label: '实际开始时间', filter: parseTime, minWidth: 150, showOverflowtooltip: true },
{ prop: 'endTime', label: '实际结束时间', filter: parseTime, width: 150, showOverflowtooltip: true }, { prop: 'endTime', label: '实际结束时间', filter: parseTime, minWidth: 150, showOverflowtooltip: true },
// { prop: 'equipmentName', label: '设备名称' }, // { prop: 'equipmentName', label: '设备名称' },
// { prop: 'maintainWorker', label: '保养人员' }, // { prop: 'maintainWorker', label: '保养人员' },
{ {
prop: 'relatePlan', prop: 'relatePlan',
label: '保养计划类型', label: '保养计划类型',
filter: (v) => (v != null ? ['', '计划型', '非计划型'][v] : ''), filter: (v) => (v != null ? ['', '计划型', '非计划型'][v] : ''),
width: 170, minWidth: 170,
showOverflowtooltip: true showOverflowtooltip: true
}, },
{ prop: 'opt', label: '详情', name: '详情', subcomponent: btn } this.$auth.hasPermi('equipment:maintain-record:query') ?
{ prop: 'opt', label: '详情', name: '详情', subcomponent: btn } : undefined
// { prop: 'maintainDuration', label: '计划保养用时(h)' }, // { prop: 'maintainDuration', label: '计划保养用时(h)' },
// { prop: 'timeUsed', label: '实际保养用时(h)' }, // { prop: 'timeUsed', label: '实际保养用时(h)' },
// { prop: 'remark', label: '备注' }, // { prop: 'remark', label: '备注' },
@@ -198,7 +199,8 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: this.$auth.hasPermi('equipment:maintain-record:export')
? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('equipment:maintain-record:export') type: this.$auth.hasPermi('equipment:maintain-record:export')

View File

@@ -71,7 +71,7 @@ export default {
addOrUpdateVisible: false, addOrUpdateVisible: false,
searchBarKeys: ['maintenanceResult', 'createTime', 'equipmentId'], searchBarKeys: ['maintenanceResult', 'createTime', 'equipmentId'],
tableBtn: [ tableBtn: [
this.$auth.hasPermi('equipment:repair:update') this.$auth.hasPermi('equipment:repair:query')
? { ? {
type: 'detail', type: 'detail',
btnName: '详情', btnName: '详情',
@@ -173,7 +173,12 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: (this.$auth.hasPermi('equipment:repair:export') ||
this.$auth.hasPermiAnd([
'equipment:repair:create',
'base:core-worker:query',
'system:user:list'
])) ? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('equipment:repair:export') ? 'button' : '', type: this.$auth.hasPermi('equipment:repair:export') ? 'button' : '',
@@ -183,7 +188,11 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: this.$auth.hasPermi('equipment:repair:create') ? 'button' : '', type: this.$auth.hasPermiAnd([
'equipment:repair:create',
'base:core-worker:query',
'system:user:list'
]) ? 'button' : '',
btnName: '新增', btnName: '新增',
name: 'add', name: 'add',
plain: true, plain: true,

View File

@@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2021-11-18 14:16:25 * @Date: 2021-11-18 14:16:25
* @LastEditors: zhp * @LastEditors: zhp
* @LastEditTime: 2024-03-22 17:11:55 * @LastEditTime: 2024-04-12 14:26:22
* @Description: * @Description:
--> -->
<template> <template>
@@ -62,7 +62,8 @@
<div v-if="!isdetail" class="action_btn"> <div v-if="!isdetail" class="action_btn">
<template> <template>
<span style="display: inline-block;"> <span style="display: inline-block;">
<el-button type="text" @click="addNew()" icon="el-icon-plus">新增</el-button> <el-button v-if="this.$auth.hasPermi('extend:process-equ-material-bom-det:add')" type="text"
@click="addNew()" icon="el-icon-plus">新增</el-button>
</span> </span>
</template> </template>
</div> </div>
@@ -99,16 +100,6 @@ import { parseTime } from '../../core/mixins/code-filter';
import attrAdd from './attr-add'; import attrAdd from './attr-add';
// import {DICT_TYPE, getDictDatas} from "@/utils/dict"; // import {DICT_TYPE, getDictDatas} from "@/utils/dict";
import { publicFormatter } from '@/utils/dict'; import { publicFormatter } from '@/utils/dict';
const tableBtn = [
{
type: 'edit',
btnName: '编辑',
},
{
type: 'delete',
btnName: '删除',
},
];
const tableProps = [ const tableProps = [
{ {
prop: 'materialName', prop: 'materialName',
@@ -132,22 +123,36 @@ const tableProps = [
label: '备注', label: '备注',
}, },
]; ];
const topBtnConfig = [
{
type: 'add',
btnName: 'btn.add'
}
]
export default { export default {
mixins: [basicAdd], mixins: [basicAdd],
components: { SmallTitle, attrAdd }, components: { SmallTitle, attrAdd },
data() { data() {
return { return {
tableBtn, tableBtn:[
{
type: this.$auth.hasPermi(
'extend:process-equ-material-bom-det:query'
)
? 'edit'
: '',
btnName: '编辑',
},
{
type: this.$auth.hasPermi('extend:process-equ-material-bom-det:delete')
? 'delete'
: '',
btnName: '删除',
},
],
tableProps, tableProps,
topBtnConfig, topBtnConfig:[
{
type: this.$auth.hasPermi('extend:process-equ-material-bom-det:add')
? 'add'
: '',
btnName: 'btn.add'
}
],
addOrUpdateVisible: false, addOrUpdateVisible: false,
urlOptions: { urlOptions: {
isGetCode: false, isGetCode: false,
@@ -237,9 +242,6 @@ export default {
// console.log(response); // console.log(response);
this.equipmentList = res.data this.equipmentList = res.data
}) })
getMaterialCode().then(res => {
this.dataForm.code = res.data
})
}, },
handleClick(raw) { handleClick(raw) {
if (raw.type === 'delete') { if (raw.type === 'delete') {
@@ -293,6 +295,9 @@ export default {
this.idAttrShow = true this.idAttrShow = true
} else { } else {
this.idAttrShow = false this.idAttrShow = false
getMaterialCode().then(res => {
this.dataForm.code = res.data
})
} }
this.$nextTick(() => { this.$nextTick(() => {

View File

@@ -118,7 +118,8 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', // type: 'separate',
type: this.$auth.hasPermi('extend:process-equ-material-bom:create') ? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('extend:process-equ-material-bom:create') ? 'button' : '', type: this.$auth.hasPermi('extend:process-equ-material-bom:create') ? 'button' : '',

View File

@@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2021-11-18 14:16:25 * @Date: 2021-11-18 14:16:25
* @LastEditors: zhp * @LastEditors: zhp
* @LastEditTime: 2024-03-25 14:07:31 * @LastEditTime: 2024-04-12 14:28:44
* @Description: * @Description:
--> -->
<template> <template>
@@ -72,7 +72,8 @@
<div v-if="!isdetail" class="action_btn"> <div v-if="!isdetail" class="action_btn">
<template> <template>
<span style="display: inline-block;"> <span style="display: inline-block;">
<el-button type="text" @click="addNew()" icon="el-icon-plus">新增</el-button> <el-button v-if="this.$auth.hasPermi('extend:process-equ-value-bom-det:add')" type="text"
@click="addNew()" icon="el-icon-plus">新增</el-button>
</span> </span>
</template> </template>
</div> </div>
@@ -109,16 +110,6 @@ import { parseTime } from '../../core/mixins/code-filter';
import attrAdd from './attr-add'; import attrAdd from './attr-add';
// import {DICT_TYPE, getDictDatas} from "@/utils/dict"; // import {DICT_TYPE, getDictDatas} from "@/utils/dict";
const tableBtn = [
{
type: 'edit',
btnName: '编辑',
},
{
type: 'delete',
btnName: '删除',
},
];
const tableProps = [ const tableProps = [
{ {
prop: 'valueName', prop: 'valueName',
@@ -152,23 +143,35 @@ const tableProps = [
prop: 'remark', prop: 'remark',
label: '备注', label: '备注',
}, },
];
const topBtnConfig = [
{
type: 'add',
btnName: 'btn.add'
}
] ]
export default { export default {
mixins: [basicAdd], mixins: [basicAdd],
components: { SmallTitle, attrAdd }, components: { SmallTitle, attrAdd },
data() { data() {
return { return {
tableBtn, tableBtn:[
{
type: this.$auth.hasPermi('extend:process-equ-value-bom-det:update')
? 'edit'
: '',
btnName: '编辑',
},
{
type: this.$auth.hasPermi('extend:process-equ-value-bom-det:delete')
? 'delete'
: '',
btnName: '删除',
},
],
tableProps, tableProps,
topBtnConfig, topBtnConfig:[
{
type: this.$auth.hasPermi('extend:process-equ-value-bom-det:add')
? 'add'
: '',
btnName: 'btn.add'
}
],
addOrUpdateVisible: false, addOrUpdateVisible: false,
enableList: [ enableList: [
{ {
@@ -246,9 +249,7 @@ export default {
// console.log(response); // console.log(response);
this.equipmentList = res.data this.equipmentList = res.data
}) })
getValueCode().then(res => {
this.dataForm.code = res.data
})
}, },
handleClick(raw) { handleClick(raw) {
if (raw.type === 'delete') { if (raw.type === 'delete') {
@@ -326,6 +327,9 @@ export default {
this.idAttrShow = true this.idAttrShow = true
} else { } else {
this.idAttrShow = false this.idAttrShow = false
getValueCode().then(res => {
this.dataForm.code = res.data
})
} }
this.$nextTick(() => { this.$nextTick(() => {

View File

@@ -119,7 +119,8 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', // type: 'separate',
type: this.$auth.hasPermi('extend:process-equ-value-bom:create') ? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('extend:process-equ-value-bom:create') ? 'button' : '', type: this.$auth.hasPermi('extend:process-equ-value-bom:create') ? 'button' : '',

View File

@@ -1,5 +1,11 @@
<template> <template>
<el-switch v-model="state" type="text" size="small" :disabled="readonly" @change="changeHandler" /> <el-switch
v-hasPermi="['base:group-team:edit-worker']"
v-model="state"
type="text"
size="small"
:disabled="readonly"
@change="changeHandler" />
</template> </template>
<script> <script>
@@ -7,40 +13,40 @@ export default {
props: { props: {
injectData: { injectData: {
type: Object, type: Object,
default: () => ({}) default: () => ({}),
} },
}, },
data() { data() {
return { return {
state: false state: false,
} };
}, },
computed: { computed: {
readonly() { readonly() {
return !!this.injectData.readonly return !!this.injectData.readonly;
} },
}, },
mounted() { mounted() {
this.mapToState() this.mapToState();
}, },
methods: { methods: {
mapToState() { mapToState() {
if (this.injectData.prop === 'enabled') { if (this.injectData.prop === 'enabled') {
this.state = this.injectData.enabled === 1 ? true : false this.state = this.injectData.enabled === 1 ? true : false;
} }
}, },
changeHandler() { changeHandler() {
let params = {} let params = {};
let payload = {} let payload = {};
params.name = 'state' params.name = 'state';
payload.id = this.injectData.id payload.id = this.injectData.id;
payload.enabled = this.state ? '1' : '0' payload.enabled = this.state ? '1' : '0';
payload.code = this.injectData.code payload.code = this.injectData.code;
payload.name = this.injectData.name payload.name = this.injectData.name;
payload.leaderId = this.injectData.leaderId payload.leaderId = this.injectData.leaderId;
params.payload = payload params.payload = payload;
this.$emit('emitData', params) this.$emit('emitData', params);
} },
} },
} };
</script> </script>

View File

@@ -1,8 +1,18 @@
<template> <template>
<div class="workerOperate"> <div class="workerOperate">
<div class="operateBtn"> <div class="operateBtn">
<span class="view" v-if="this.$auth.hasPermi('base:group-team:view-worker')" @click="emitParams('view')">查看</span> <span
<span class="edit" v-if="this.$auth.hasPermi('base:group-team:edit-worker')" @click="emitParams('edit')">编辑</span> class="view"
v-hasPermi="['base:group-team:view-worker']"
@click="emitParams('view')">
查看
</span>
<span
class="edit"
v-hasPermi="['base:group-team:edit-worker']"
@click="emitParams('edit')">
编辑
</span>
</div> </div>
</div> </div>
</template> </template>
@@ -12,23 +22,23 @@ export default {
props: { props: {
injectData: { injectData: {
type: Object, type: Object,
default: () => ({}) default: () => ({}),
} },
}, },
methods: { methods: {
emitParams(data) { emitParams(data) {
let params = {} let params = {};
params.name = data params.name = data;
params.payload = this.injectData params.payload = this.injectData;
this.$emit('emitData', params) this.$emit('emitData', params);
} },
} },
} };
</script> </script>
<style lang='scss' scoped> <style lang='scss' scoped>
.workerOperate { .workerOperate {
.operateBtn { .operateBtn {
color: #0B58FF; color: #0b58ff;
.view { .view {
margin-right: 10px; margin-right: 10px;
cursor: pointer; cursor: pointer;

View File

@@ -125,7 +125,7 @@ export default {
color: 'primary', color: 'primary',
}, },
{ {
type: 'separate', type: this.$auth.hasPermi('base:group-team:create') ? 'separate' : '',
}, },
{ {
type: this.$auth.hasPermi('base:group-team:create') ? 'button' : '', type: this.$auth.hasPermi('base:group-team:create') ? 'button' : '',

View File

@@ -1,8 +1,12 @@
<template> <template>
<div class="groupTeamScheduling"> <div class="groupTeamScheduling">
<TopTab :roomNameDict='roomNameDict' @emitFun='toggleName'/> <TopTab
:roomNameDict="roomNameDict"
@emitFun="toggleName" />
<div class="operationArea"> <div class="operationArea">
<el-form :inline="true" class="demo-form-inline"> <el-form
:inline="true"
class="demo-form-inline">
<span class="blue-block"></span> <span class="blue-block"></span>
<el-form-item label="月份选择"> <el-form-item label="月份选择">
<el-date-picker <el-date-picker
@@ -13,37 +17,81 @@
:disabled="showSetting" :disabled="showSetting"
@change="selectMonth" @change="selectMonth"
:clearable="false" :clearable="false"
style="width: 120px"> style="width: 120px"></el-date-picker>
</el-date-picker>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<span class="separateStyle" v-if="this.$auth.hasPermi('base:group-team-scheduling:set')"></span> <span
class="separateStyle"
v-if="this.$auth.hasPermi('base:group-team-scheduling:set')"></span>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" size="small" v-if="this.$auth.hasPermi('base:group-team-scheduling:set')" :disabled="showSetting || settingBtnDis" @click="settingMsg">设置</el-button> <el-button
type="primary"
size="small"
v-if="this.$auth.hasPermi('base:group-team-scheduling:set')"
:disabled="showSetting || settingBtnDis"
@click="settingMsg">
设置
</el-button>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" size="small" v-show="showSetting && autoScheduling" @click="schedulingBtn">自动排班</el-button> <el-button
type="primary"
size="small"
v-show="showSetting && autoScheduling"
@click="schedulingBtn">
自动排班
</el-button>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<span class="separateStyle" v-show="showSetting"></span> <span
class="separateStyle"
v-show="showSetting"></span>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" size="small" v-show="showSetting" @click="confirmSetting">确认</el-button> <el-button
type="primary"
size="small"
v-show="showSetting"
@click="confirmSetting">
确认
</el-button>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" size="small" plain v-show="showSetting" @click="cancelSetting">取消</el-button> <el-button
type="primary"
size="small"
plain
v-show="showSetting"
@click="cancelSetting">
取消
</el-button>
</el-form-item> </el-form-item>
<el-form-item label="请先选择查询的班组" class="rightItem"> <el-form-item
v-hasPermi="[
'base:quality-inspection-record:query',
'base:core-work-order:query',
'base:core-product:query',
]"
label="请先选择查询的班组"
class="rightItem">
<!-- <el-button type="primary" size="small" :disabled="jumpDisabled" @click="toOtherPage('1')">班组上下片查询</el-button> --> <!-- <el-button type="primary" size="small" :disabled="jumpDisabled" @click="toOtherPage('1')">班组上下片查询</el-button> -->
<el-button type="primary" size="small" :disabled="jumpDisabled" @click="toOtherPage('2')">班组能源查询</el-button> <!-- <el-button type="primary" size="small" :disabled="jumpDisabled" @click="toOtherPage('2')">班组能源查询</el-button> -->
<el-button type="primary" size="small" :disabled="jumpDisabled" @click="toOtherPage('3')">班组检测查询</el-button> <el-button
type="primary"
size="small"
:disabled="jumpDisabled"
@click="toOtherPage('3')">
班组检测查询
</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<!-- 日历区域 --> <!-- 日历区域 -->
<div class="calenderArea"> <div class="calenderArea">
<div style="font-size: 24px;font-weight: 500">{{ this.month }} {{ this.year }}</div> <div style="font-size: 24px; font-weight: 500">
{{ this.month }} {{ this.year }}
</div>
<el-calendar v-model="startDay"> <el-calendar v-model="startDay">
<!-- 这里使用的是 2.5 slot 语法,对于新项目请使用 2.6 slot 语法--> <!-- 这里使用的是 2.5 slot 语法,对于新项目请使用 2.6 slot 语法-->
<template <template
@@ -56,27 +104,64 @@
</div> </div>
<!-- 班次班组 --> <!-- 班次班组 -->
<!-- class有两个样式一个是类似class1还有个是选中红框显示 --> <!-- class有两个样式一个是类似class1还有个是选中红框显示 -->
<el-row :gutter="2" :class="'class' + (index+1) + (chooseTip === (item.startDay+item.classesId) ? ' team-active' : '')" v-for="(item, index) in list[Number(data.day.split('-')[2])]" :key='index'> <el-row
:gutter="2"
:class="
'class' +
(index + 1) +
(chooseTip === item.startDay + item.classesId
? ' team-active'
: '')
"
v-for="(item, index) in list[Number(data.day.split('-')[2])]"
:key="index">
<el-col :span="12"> <el-col :span="12">
<div class="selectDiv"> <div class="selectDiv">
<!-- 选择班组图标 --> <!-- 选择班组图标 -->
<div class="toggle-icon" v-show="showSetting && (new Date(data.day).valueOf() < new Date().valueOf() ? false: true)"> <div
class="toggle-icon"
v-show="
showSetting &&
(new Date(data.day).valueOf() < new Date().valueOf()
? false
: true)
">
<svg-icon icon-class="toggle" /> <svg-icon icon-class="toggle" />
</div> </div>
<!-- 不能选择班组 --> <!-- 不能选择班组 -->
<div class="toggle-icon-hide" v-show="!(showSetting && (new Date(data.day).valueOf() < new Date().valueOf() ? false: true))"></div> <div
<el-select v-model="item.teamId" size='small' :disabled="!showSetting || (new Date(data.day).valueOf() > new Date().valueOf() ? false: true)"> class="toggle-icon-hide"
v-show="
!(
showSetting &&
(new Date(data.day).valueOf() < new Date().valueOf()
? false
: true)
)
"></div>
<el-select
v-model="item.teamId"
size="small"
:disabled="
!showSetting ||
(new Date(data.day).valueOf() > new Date().valueOf()
? false
: true)
">
<el-option <el-option
v-for="i in teamList" v-for="i in teamList"
:key="i.id" :key="i.id"
:label="i.name" :label="i.name"
:value="i.id"> :value="i.id"></el-option>
</el-option>
</el-select> </el-select>
</div> </div>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-button class="labelClass" @click="chooseTeam(item)">{{ item.classesName }}</el-button> <el-button
class="labelClass"
@click="chooseTeam(item)">
{{ item.classesName }}
</el-button>
</el-col> </el-col>
</el-row> </el-row>
</div> </div>
@@ -87,20 +172,37 @@
</template> </template>
<script> <script>
import { getPreset, createOrUpdateList, autoSet } from "@/api/base/groupTeamScheduling"; import {
import { listEnabledByRoom } from "@/api/base/groupTeam"; getPreset,
createOrUpdateList,
autoSet,
} from '@/api/base/groupTeamScheduling';
import { listEnabledByRoom } from '@/api/base/groupTeam';
import moment from 'moment'; import moment from 'moment';
import TopTab from './components/topTab' import TopTab from './components/topTab';
export default { export default {
name: "GroupTeamScheduling", name: 'GroupTeamScheduling',
data() { data() {
return { return {
roomNameDict: null, roomNameDict: null,
startDay: '', // 查询参数 startDay: '', // 查询参数
year: '', // 2023 year: '', // 2023
month: '', // 九月 month: '', // 九月
monthList: ["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"], monthList: [
'一月',
'二月',
'三月',
'四月',
'五月',
'六月',
'七月',
'八月',
'九月',
'十月',
'十一月',
'十二月',
],
list: {}, list: {},
teamList: [], // 班组下拉 teamList: [], // 班组下拉
showSetting: false, // 设置模式。自动排班,确认,取消按钮显示 showSetting: false, // 设置模式。自动排班,确认,取消按钮显示
@@ -108,242 +210,261 @@ export default {
jumpDisabled: true, // 操作按钮控制 jumpDisabled: true, // 操作按钮控制
chooseObj: {}, //当前选中的数据,查询按钮用 chooseObj: {}, //当前选中的数据,查询按钮用
chooseTip: '', // 当前选中数据的唯一值,显示红框 chooseTip: '', // 当前选中数据的唯一值,显示红框
autoScheduling: false // 只有在当前日期后的月份才生效 autoScheduling: false, // 只有在当前日期后的月份才生效
}; };
}, },
components: { TopTab }, components: { TopTab },
created() { created() {
this.roomNameDict = this.getDictDatas('workshop')[0].value this.roomNameDict = this.getDictDatas('workshop')[0].value;
this.startDay = new Date() this.startDay = new Date();
// 设置按钮是否置灰 // 设置按钮是否置灰
this.settingBtn() this.settingBtn();
this.getTeamList() this.getTeamList();
this.toggleMonth() this.toggleMonth();
this.getList() this.getList();
}, },
methods: { methods: {
// 切换车间 // 切换车间
toggleName(val) { toggleName(val) {
this.roomNameDict = val this.roomNameDict = val;
// 如果当前在设置,则取消设置 // 如果当前在设置,则取消设置
if (this.showSetting) { if (this.showSetting) {
this.showSetting = !this.showSetting this.showSetting = !this.showSetting;
} }
// 如果红框选中,清除红框选中 // 如果红框选中,清除红框选中
if (!this.jumpDisabled) { if (!this.jumpDisabled) {
this.clearChoose() this.clearChoose();
} }
// 获取班组列表 // 获取班组列表
this.getTeamList() this.getTeamList();
// 重新获取日历数据 // 重新获取日历数据
this.getList() this.getList();
}, },
// 切换月份 // 切换月份
selectMonth() { selectMonth() {
if (this.startDay) { if (this.startDay) {
this.settingBtn() // 设置按钮状态,需在getlist前面 this.settingBtn(); // 设置按钮状态,需在getlist前面
this.toggleMonth() this.toggleMonth();
this.getList() this.getList();
this.clearChoose() this.clearChoose();
if ( moment(this.startDay).valueOf() > moment().endOf('month').valueOf()) { if (
this.autoScheduling = true moment(this.startDay).valueOf() > moment().endOf('month').valueOf()
) {
this.autoScheduling = true;
} else { } else {
this.autoScheduling = false this.autoScheduling = false;
} }
} }
}, },
// 获取班组列表 // 获取班组列表
getTeamList() { getTeamList() {
console.log(this.roomNameDict) console.log(this.roomNameDict);
listEnabledByRoom({ listEnabledByRoom({
room: this.roomNameDict room: this.roomNameDict,
}).then(res => { }).then((res) => {
this.teamList = res.data || [] this.teamList = res.data || [];
}) });
}, },
// 获取日历数据 // 获取日历数据
getList() { getList() {
let year = moment(this.startDay).format('YYYY') let year = moment(this.startDay).format('YYYY');
let month = moment(this.startDay).format('M') let month = moment(this.startDay).format('M');
getPreset({ getPreset({
year: year, year: year,
month: month, month: month,
roomNameDict: this.roomNameDict roomNameDict: this.roomNameDict,
}).then(res => { })
let obj = res.data || {} .then((res) => {
let obj = res.data || {};
if (obj) { if (obj) {
for (let item in obj) { for (let item in obj) {
for (let i = 0; i < obj[item].length; i++) { for (let i = 0; i < obj[item].length; i++) {
if (!obj[item][i].teamId) { if (!obj[item][i].teamId) {
obj[item][i].teamId = '' obj[item][i].teamId = '';
} }
} }
} }
} }
this.list = obj this.list = obj;
this.settingBtnDis = false this.settingBtnDis = false;
}).catch(() => {
this.list = {}
this.settingBtnDis = true // 禁用设置按钮
}) })
.catch(() => {
this.list = {};
this.settingBtnDis = true; // 禁用设置按钮
});
}, },
// 设置 // 设置
settingMsg() { settingMsg() {
this.showSetting = !this.showSetting this.showSetting = !this.showSetting;
this.clearChoose() this.clearChoose();
}, },
// 取消 // 取消
cancelSetting() { cancelSetting() {
this.showSetting = !this.showSetting this.showSetting = !this.showSetting;
this.getList() // 数据还原 this.getList(); // 数据还原
}, },
// 确认 // 确认
confirmSetting() { confirmSetting() {
let num = 0 let num = 0;
// 当月数据的话,今天及今天之前的不传 // 当月数据的话,今天及今天之前的不传
if (moment(this.startDay).format('YYYY-MM') === moment().format('YYYY-MM')) { if (
num = Number(moment().format('DD')) moment(this.startDay).format('YYYY-MM') === moment().format('YYYY-MM')
) {
num = Number(moment().format('DD'));
} else { } else {
num = 0 num = 0;
} }
// 下月数据全部都传 // 下月数据全部都传
// 打平数据 // 打平数据
let tempArr = Object.values(this.list) let tempArr = Object.values(this.list);
let arr = [] let arr = [];
for (let i = num; i < tempArr.length; i++) { for (let i = num; i < tempArr.length; i++) {
for (let j = 0; j < tempArr[i].length; j++) { for (let j = 0; j < tempArr[i].length; j++) {
arr.push(tempArr[i][j]) arr.push(tempArr[i][j]);
} }
} }
createOrUpdateList(arr).then(res => { createOrUpdateList(arr).then((res) => {
if (res.code === 0) { if (res.code === 0) {
this.showSetting = !this.showSetting this.showSetting = !this.showSetting;
this.$modal.msgSuccess("操作成功") this.$modal.msgSuccess('操作成功');
this.getList() // 数据更新 this.getList(); // 数据更新
} }
}) });
}, },
// 点击班次红框选中当前数据 // 点击班次红框选中当前数据
chooseTeam(value) { chooseTeam(value) {
if (this.showSetting) { if (this.showSetting) {
this.$modal.msgWarning("当前处于设置模式") this.$modal.msgWarning('当前处于设置模式');
return false return false;
} }
this.chooseObj = value this.chooseObj = value;
this.chooseTip = value.startDay + value.classesId // 匹配当前的样式 this.chooseTip = value.startDay + value.classesId; // 匹配当前的样式
this.jumpDisabled = false //查询按钮不禁用 this.jumpDisabled = false; //查询按钮不禁用
}, },
// 自动排班 // 自动排班
schedulingBtn() { schedulingBtn() {
let tempData = this.list let tempData = this.list;
// 次月1号有值前端排班 // 次月1号有值前端排班
if (this.list[1][0].teamId) { if (this.list[1][0].teamId) {
let tempArr = Object.values(this.list) let tempArr = Object.values(this.list);
let arr = [] let arr = [];
let n = 0 let n = 0;
for (let i = 0; i < tempArr.length; i++) { for (let i = 0; i < tempArr.length; i++) {
if (n > 0) { if (n > 0) {
break; break;
} }
for (let j = 0; j < tempArr[i].length; j++) { for (let j = 0; j < tempArr[i].length; j++) {
if (tempArr[i][j].teamId) { if (tempArr[i][j].teamId) {
arr.push(tempArr[i][j].teamId) arr.push(tempArr[i][j].teamId);
} else { } else {
n++ n++;
} }
} }
} }
let tempNum = 0 let tempNum = 0;
for (let k = 0; k < tempArr.length; k++) { for (let k = 0; k < tempArr.length; k++) {
for (let v = 0; v < tempArr[k].length; v++) { for (let v = 0; v < tempArr[k].length; v++) {
let t = tempNum % arr.length let t = tempNum % arr.length;
if (arr.length === 1) { if (arr.length === 1) {
tempData[k+1][v].teamId = arr[0] tempData[k + 1][v].teamId = arr[0];
} else { } else {
tempData[k+1][v].teamId = arr[t] tempData[k + 1][v].teamId = arr[t];
} }
tempNum++ tempNum++;
} }
} }
this.list = [] this.list = [];
this.list = tempData this.list = tempData;
} else { } else {
// 次月1号没有值,接口排班 // 次月1号没有值,接口排班
// console.log(moment(this.startDay).format("YYYY-MM-DD")) // console.log(moment(this.startDay).format("YYYY-MM-DD"))
autoSet({ autoSet({
year: this.year, year: this.year,
month: moment(this.startDay).month() + 1, month: moment(this.startDay).month() + 1,
roomNameDict: this.roomNameDict roomNameDict: this.roomNameDict,
}).then(res => { }).then((res) => {
this.list = res.data || {} this.list = res.data || {};
}) });
} }
}, },
// 设置按钮如果是上个月或者今天是本月最后一天,设置按钮置灰 // 设置按钮如果是上个月或者今天是本月最后一天,设置按钮置灰
settingBtn() { settingBtn() {
let nowMonth = moment().startOf('month').valueOf() let nowMonth = moment().startOf('month').valueOf();
let startMonth = moment(this.startDay).valueOf() let startMonth = moment(this.startDay).valueOf();
let nowDate = moment(new Date()).date() let nowDate = moment(new Date()).date();
let sumDate = moment().daysInMonth() let sumDate = moment().daysInMonth();
if (nowMonth > startMonth) { // 之前月 if (nowMonth > startMonth) {
this.settingBtnDis = true // 之前月
this.settingBtnDis = true;
} else { } else {
if (nowDate < sumDate) { if (nowDate < sumDate) {
this.settingBtnDis = false this.settingBtnDis = false;
} else { } else {
this.settingBtnDis = true this.settingBtnDis = true;
} }
} }
}, },
// 清除红框选中数据 // 清除红框选中数据
clearChoose() { clearChoose() {
this.chooseObj = {} this.chooseObj = {};
this.chooseTip = "" this.chooseTip = '';
this.jumpDisabled = true this.jumpDisabled = true;
}, },
// 切换月份显示 // 切换月份显示
toggleMonth() { toggleMonth() {
this.year = moment(this.startDay).format("YYYY") this.year = moment(this.startDay).format('YYYY');
let month = Number(moment(this.startDay).format("MM")) let month = Number(moment(this.startDay).format('MM'));
this.month = this.monthList[month - 1] this.month = this.monthList[month - 1];
}, },
// 3个跳转按钮 // 3个跳转按钮
toOtherPage(val) { toOtherPage(val) {
switch (val) { switch (val) {
case '1': case '1':
this.$router.push({ this.$router.push({
path: '/core/enhance/product-line-24h?startTime='+this.chooseObj.startTime+'&endTime='+this.chooseObj.endTime, path:
}) '/core/enhance/product-line-24h?startTime=' +
this.chooseObj.startTime +
'&endTime=' +
this.chooseObj.endTime,
});
break; break;
case '2': // 能源 case '2': // 能源
this.$router.push({ this.$router.push({
path: '/energy/base/energy-quantity-realtime?startTime='+this.chooseObj.startTime+'&endTime='+this.chooseObj.endTime path:
}) '/energy/base/energy-quantity-realtime?startTime=' +
this.chooseObj.startTime +
'&endTime=' +
this.chooseObj.endTime,
});
break; break;
default: default:
this.$router.push({ this.$router.push({
path: '/quality/base/quality-inspection-data/detection-information/statistical-data?startTime='+this.chooseObj.startTime+'&endTime='+this.chooseObj.endTime, path:
'/quality/base/quality-inspection-data/detection-information/statistical-data?startTime=' +
this.chooseObj.startTime +
'&endTime=' +
this.chooseObj.endTime,
// name: 'QualityStatistics', // name: 'QualityStatistics',
// params: { startTime: this.chooseObj.startTime, endTime: this.chooseObj.endTime } // params: { startTime: this.chooseObj.startTime, endTime: this.chooseObj.endTime }
}) });
}
}
}
} }
},
},
};
</script> </script>
<style lang='scss'> <style lang='scss'>
.demo-form-inline { .demo-form-inline {
.el-date-editor .el-range__icon { .el-date-editor .el-range__icon {
font-size: 16px; font-size: 16px;
color: #0B58FF; color: #0b58ff;
} }
.el-input__prefix .el-icon-date { .el-input__prefix .el-icon-date {
font-size: 16px; font-size: 16px;
color: #0B58FF; color: #0b58ff;
} }
} }
.groupTeamScheduling { .groupTeamScheduling {
background-color: #F2F4F9; background-color: #f2f4f9;
.operationArea { .operationArea {
padding: 14px 10px 0 16px; padding: 14px 10px 0 16px;
margin-bottom: 8px; margin-bottom: 8px;
@@ -353,7 +474,7 @@ export default {
display: inline-block; display: inline-block;
width: 4px; width: 4px;
height: 16px; height: 16px;
background-color: #0B58FF; background-color: #0b58ff;
border-radius: 1px; border-radius: 1px;
margin-right: 8px; margin-right: 8px;
margin-top: 10px; margin-top: 10px;
@@ -362,7 +483,7 @@ export default {
display: inline-block; display: inline-block;
width: 1px; width: 1px;
height: 24px; height: 24px;
background: #E8E8E8; background: #e8e8e8;
vertical-align: middle; vertical-align: middle;
} }
.el-form-item { .el-form-item {
@@ -394,7 +515,8 @@ export default {
} }
.el-calendar-table__row { .el-calendar-table__row {
height: 133px; height: 133px;
.prev, .next { .prev,
.next {
pointer-events: none; pointer-events: none;
} }
.el-calendar-day { .el-calendar-day {
@@ -411,10 +533,13 @@ export default {
} }
} }
} }
.team-active {// 选中班组 .team-active {
border:2px solid red // 选中班组
border: 2px solid red;
} }
.class1, .class2, .class3 { .class1,
.class2,
.class3 {
padding: 0; padding: 0;
font-weight: 600; font-weight: 600;
margin-bottom: 2px; margin-bottom: 2px;
@@ -458,47 +583,50 @@ export default {
} }
.class1 { .class1 {
.selectDiv { .selectDiv {
.toggle-icon, .toggle-icon-hide { .toggle-icon,
background-color: #FACE00; .toggle-icon-hide {
background-color: #face00;
} }
.el-input--small .el-input__inner { .el-input--small .el-input__inner {
color: #E7A200; color: #e7a200;
background-color: #FFEFC0; background-color: #ffefc0;
} }
} }
.labelClass { .labelClass {
color: #E7A200; color: #e7a200;
background-color: #FFEFC0; background-color: #ffefc0;
} }
} }
.class2 { .class2 {
.selectDiv { .selectDiv {
.toggle-icon, .toggle-icon-hide { .toggle-icon,
background-color: #3984FF; .toggle-icon-hide {
background-color: #3984ff;
} }
.el-input--small .el-input__inner { .el-input--small .el-input__inner {
color: #2D7BFF; color: #2d7bff;
background-color: #BEEAFF; background-color: #beeaff;
} }
} }
.labelClass { .labelClass {
color: #2D7BFF; color: #2d7bff;
background-color: #BEEAFF; background-color: #beeaff;
} }
} }
.class3 { .class3 {
.selectDiv { .selectDiv {
.toggle-icon, .toggle-icon-hide { .toggle-icon,
background-color: #37D97F; .toggle-icon-hide {
background-color: #37d97f;
} }
.el-input--small .el-input__inner { .el-input--small .el-input__inner {
color: #129F51; color: #129f51;
background-color: #E0FFEE; background-color: #e0ffee;
} }
} }
.labelClass { .labelClass {
color: #129F51; color: #129f51;
background-color: #E0FFEE; background-color: #e0ffee;
} }
} }
} }

View File

@@ -88,7 +88,7 @@ export default {
workOrderList: [], workOrderList: [],
workOrderName: '', workOrderName: '',
tableBtn: [ tableBtn: [
this.$auth.hasPermi('base:group-team-view:detail') this.$auth.hasPermi('monitoring:group-team-scheduling:query')
? { ? {
type: 'detail', type: 'detail',
btnName: '详情', btnName: '详情',

View File

@@ -97,7 +97,7 @@ export default {
}, },
tableProps, tableProps,
tableBtn: [ tableBtn: [
this.$auth.hasPermi('base:team-production:detail') this.$auth.hasPermi('monitoring:group-team-scheduling:query')
? { ? {
type: 'productionDetail', type: 'productionDetail',
btnName: '查看', btnName: '查看',

Some files were not shown because too many files have changed in this diff Show More