Compare commits
	
		
			201 Commits
		
	
	
		
			projects/m
			...
			89e86c31bb
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 89e86c31bb | |||
| 15738642b0 | |||
| f72cd9d68e | |||
| 99b225e3dc | |||
| 4d1b72fae7 | |||
| 67a76869e1 | |||
| ca2774ca28 | |||
| 1dd7fef171 | |||
| 9ad83f84fa | |||
| ef354732b4 | |||
| 95a4b336f8 | |||
| ed65bd7f30 | |||
| 5b40c3972c | |||
| f8c2889abc | |||
| eb0445f479 | |||
| 9f8d604456 | |||
| d5551eabb8 | |||
| 8ca1ef5624 | |||
| 564a4a42d2 | |||
| 8e081342f0 | |||
| 874e36eb50 | |||
| 66337f4aca | |||
| ade0f6745e | |||
| 441a0f5371 | |||
| f67930941f | |||
| 86996f8dd2 | |||
| 9f82aac931 | |||
| ae7b13695a | |||
| 372749e313 | |||
| d0a4dc527f | |||
| 71aab2df9a | |||
| fd7e295975 | |||
| da5596766c | |||
| 3a3e33db0e | |||
| 49afcb7666 | |||
| 4a68467d88 | |||
| 5d157505aa | |||
| 44b45a6a04 | |||
| 593c9f7d60 | |||
| b38a79eca1 | |||
| 
						 | 
					95b70b2415 | ||
| 
						 | 
					30b2d19710 | ||
| 
						 | 
					040b76d276 | ||
| 
						 | 
					f066180c26 | ||
| a2ea1ca926 | |||
| b1458827f1 | |||
| 10ad3acf9c | |||
| 2e8852f667 | |||
| 
						 | 
					ce4aabaaf3 | ||
| 
						 | 
					16551a5f9d | ||
| b7ab59d5cd | |||
| d619db3d89 | |||
| 5444c7a90e | |||
| 6b8575b29d | |||
| d42786e7ed | |||
| 8df2bbae1a | |||
| 
						 | 
					0a1bc65e79 | ||
| 
						 | 
					95c9e8501a | ||
| d21749c170 | |||
| bd1c02b24a | |||
| 6ea650e7eb | |||
| 
						 | 
					8b1dbbeeea | ||
| 522910e432 | |||
| 8c089da31b | |||
| c1142be780 | |||
| da2999e67c | |||
| 53f2b242a4 | |||
| 22f3e06585 | |||
| 9fc429bc64 | |||
| e544b91861 | |||
| e848be2a35 | |||
| bdf292654b | |||
| 3d198d83cb | |||
| d0a0eadafe | |||
| 91526eb847 | |||
| 7667903218 | |||
| 
						 | 
					05c0166003 | ||
| 
						 | 
					0e0171cc0f | ||
| 9d34ca02f1 | |||
| 
						 | 
					1c5e77258e | ||
| 
						 | 
					ebd7cb02ff | ||
| ebb8d3f184 | |||
| 0789decfd9 | |||
| e2039141e6 | |||
| 286a9a1a0a | |||
| 75aa253a29 | |||
| 14967cbf67 | |||
| 35bcb23920 | |||
| 
						 | 
					b6f801c6ce | ||
| 
						 | 
					9e2da2ddc2 | ||
| e72da57a54 | |||
| 9690ab4f70 | |||
| 41e1f46cfc | |||
| a6127657cc | |||
| 
						 | 
					60a6e86a6b | ||
| 
						 | 
					a8ca7c37f2 | ||
| 0bb434bc22 | |||
| 
						 | 
					f617597f38 | ||
| 
						 | 
					df7bc08f71 | ||
| 5974e7026e | |||
| 29e5a3d07a | |||
| d647dc0448 | |||
| d65f5f9bca | |||
| 4c99d39f8a | |||
| 220ed16c64 | |||
| 39d2c4a959 | |||
| b0bac562c3 | |||
| 60a94cd839 | |||
| a764e20bd4 | |||
| e1384a2d3e | |||
| b9db57d66a | |||
| 9561dc27e3 | |||
| cb6e3c3d5f | |||
| 
						 | 
					6d8889bbec | ||
| 
						 | 
					553d19db89 | ||
| f0536c9cf9 | |||
| c91be221dc | |||
| 069b28eeae | |||
| 84cc6dfde7 | |||
| 1d61f056b8 | |||
| eda63ee8c8 | |||
| 78e8401029 | |||
| 5ad93105b3 | |||
| 97612a13ac | |||
| d06756c6ff | |||
| 5ac17b15e1 | |||
| 4e064e4b01 | |||
| f280a92145 | |||
| aaa131cb1f | |||
| f6af441030 | |||
| cb9132abc1 | |||
| 5886875770 | |||
| ccb2808e60 | |||
| a766318e20 | |||
| 41cef952ac | |||
| ef4b31fe2b | |||
| c8219bd7ee | |||
| 20f5a0d4c7 | |||
| fd4b0088dc | |||
| e039a3992d | |||
| 
						 | 
					c8d55ff625 | ||
| 
						 | 
					83fc835c51 | ||
| 165a833088 | |||
| 8d5623bb24 | |||
| 4fa49c46ff | |||
| ae251fc428 | |||
| a2c61b86ca | |||
| 503e3442a0 | |||
| 69a65b32ea | |||
| 5ac0782b36 | |||
| 
						 | 
					3aec5ee86c | ||
| 
						 | 
					79274aa8c8 | ||
| 29ea06e5be | |||
| 
						 | 
					f5bb5f27b4 | ||
| 
						 | 
					fbe8e5c023 | ||
| 46dd33cb05 | |||
| 68898ea67f | |||
| 1299d72404 | |||
| 0f4bddc6d1 | |||
| 91d269e1ce | |||
| 4e26d49ff5 | |||
| 63b19d84e4 | |||
| 5f47cb131f | |||
| ea21f3d4bc | |||
| bdda6c9985 | |||
| ae83da6eb9 | |||
| 6c7390f61e | |||
| 1661615af4 | |||
| b62d0e4096 | |||
| 1c123fa22d | |||
| 6b3619514d | |||
| dee9f7ce8b | |||
| b4d2b69004 | |||
| 8fdaa3e968 | |||
| 54953f7bc6 | |||
| f99e979d14 | |||
| 4f64c255af | |||
| cc0d3d8b75 | |||
| f5233001e7 | |||
| f2e38b5e67 | |||
| fe0c84bc3a | |||
| 7cb88fab88 | |||
| e7263302a7 | |||
| b26e1d5a7f | |||
| 86bdabf358 | |||
| 4069e71477 | |||
| 0a53bcb57e | |||
| 1ce61f13b7 | |||
| 6c661bedd3 | |||
| 
						 | 
					4e48eae2a7 | ||
| a2ed9ed54b | |||
| 49d002142f | |||
| 
						 | 
					8399081a6f | ||
| 
						 | 
					cc6c4772d3 | ||
| ba7dad7fce | |||
| 
						 | 
					8e7e31f918 | ||
| 
						 | 
					5e4df4d849 | ||
| 
						 | 
					1d3372ed69 | ||
| 86f246eb94 | |||
| e2a16332be | |||
| 69b6942f35 | 
							
								
								
									
										23
									
								
								.env.dev
									
									
									
									
									
								
							
							
						
						@@ -1,8 +1,8 @@
 | 
			
		||||
###
 | 
			
		||||
 # @Author: Do not edit
 | 
			
		||||
 # @Date: 2023-08-29 09:40:39
 | 
			
		||||
 # @LastEditTime: 2023-11-21 10:36:47
 | 
			
		||||
 # @LastEditors: DY
 | 
			
		||||
 # @LastEditTime: 2024-01-09 16:27:57
 | 
			
		||||
 # @LastEditors: zhp
 | 
			
		||||
 # @Description:
 | 
			
		||||
###
 | 
			
		||||
# 开发环境配置
 | 
			
		||||
@@ -13,17 +13,28 @@ VUE_APP_TITLE = MES系统
 | 
			
		||||
 | 
			
		||||
# 芋道管理系统/开发环境
 | 
			
		||||
# VUE_APP_BASE_API = 'http://100.64.0.26:48082'
 | 
			
		||||
VUE_APP_BASE_API = 'http://192.168.0.33:48082'
 | 
			
		||||
# VUE_APP_BASE_API = 'http://10.70.2.2:8080'
 | 
			
		||||
VUE_APP_BASE_API = 'http://192.168.1.47:48082'
 | 
			
		||||
# VUE_APP_BASE_API = 'http://192.168.0.33:48082'
 | 
			
		||||
# VUE_APP_BASE_API = 'http://192.168.4.173: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.159:48080'
 | 
			
		||||
# VUE_APP_BASE_API = 'http://192.168.1.56:48082'
 | 
			
		||||
# VUE_APP_BASE_API = 'http://192.168.4.159:48080'
 | 
			
		||||
# 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.1.62:48082'
 | 
			
		||||
# VUE_APP_BASE_API = 'http://192.168.1.78:48082'
 | 
			
		||||
 | 
			
		||||
# VUE_APP_BASE_API = 'http://192.168.1.78:48082'
 | 
			
		||||
# socket地址
 | 
			
		||||
# 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_Socket_API = 'ws://192.168.0.33:48082'
 | 
			
		||||
# 积木报表指向地址
 | 
			
		||||
VUE_APP_JIMU_API = 'http://192.168.0.33:48082'
 | 
			
		||||
VUE_APP_JIMU_API = 'http://10.70.2.22:8080'
 | 
			
		||||
 | 
			
		||||
# 路由懒加载
 | 
			
		||||
VUE_CLI_BABEL_TRANSPILE_MODULES = true
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,7 @@ VUE_APP_JIMU_API = 'http://10.70.2.2:8080'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# 根据服务器或域名修改
 | 
			
		||||
PUBLIC_PATH = 'http://10.70.2.32'
 | 
			
		||||
PUBLIC_PATH = ''
 | 
			
		||||
 | 
			
		||||
# 二级部署路径
 | 
			
		||||
# VUE_APP_APP_NAME ='yudao-admin'
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@ VUE_APP_JIMU_API = 'http://192.168.0.33:48082'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# 根据服务器或域名修改
 | 
			
		||||
PUBLIC_PATH = 'http://192.168.0.33:8889/'
 | 
			
		||||
PUBLIC_PATH = ''
 | 
			
		||||
 | 
			
		||||
# 二级部署路径
 | 
			
		||||
# VUE_APP_APP_NAME ='yudao-admin'
 | 
			
		||||
 
 | 
			
		||||
@@ -43,12 +43,13 @@
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@antv/x6": "^2.15.3",
 | 
			
		||||
    "@babel/parser": "7.18.4",
 | 
			
		||||
    "@jiaminghi/data-view": "^2.10.0",
 | 
			
		||||
    "@riophae/vue-treeselect": "0.4.0",
 | 
			
		||||
    "axios": "0.27.2",
 | 
			
		||||
    "benz-amr-recorder": "^1.1.5",
 | 
			
		||||
    "bpmn-js-token-simulation": "0.10.0",
 | 
			
		||||
    "clipboard": "2.0.8",
 | 
			
		||||
    "code-brick-zj": "^1.0.2",
 | 
			
		||||
    "code-brick-zj": "^1.0.5",
 | 
			
		||||
    "core-js": "^3.26.0",
 | 
			
		||||
    "crypto-js": "^4.0.0",
 | 
			
		||||
    "diagram-js": "^12.3.0",
 | 
			
		||||
@@ -80,6 +81,7 @@
 | 
			
		||||
    "vue-plugin-hiprint": "0.0.54-fix",
 | 
			
		||||
    "vue-quill-editor": "^3.0.6",
 | 
			
		||||
    "vue-router": "3.4.9",
 | 
			
		||||
    "vue-seamless-scroll": "^1.1.23",
 | 
			
		||||
    "vue-video-player": "^5.0.2",
 | 
			
		||||
    "vuedraggable": "2.24.3",
 | 
			
		||||
    "vuex": "3.6.2",
 | 
			
		||||
 
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 37 KiB  | 
@@ -1,7 +1,7 @@
 | 
			
		||||
/*
 | 
			
		||||
 * @Author: Do not edit
 | 
			
		||||
 * @Date: 2023-10-21 11:50:46
 | 
			
		||||
 * @LastEditTime: 2023-11-15 15:56:14
 | 
			
		||||
 * @LastEditTime: 2023-12-14 10:57:24
 | 
			
		||||
 * @LastEditors: DY
 | 
			
		||||
 * @Description: 
 | 
			
		||||
 */
 | 
			
		||||
@@ -66,3 +66,30 @@ export function getHotMaterialList(query) {
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 创建原料质量检测条目
 | 
			
		||||
export function createHotMaterialCheck(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/core-hot-material-check/create',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 更新原料质量检测条目
 | 
			
		||||
export function updateHotMaterialCheck(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/core-hot-material-check/update',
 | 
			
		||||
    method: 'put',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得质量检测条目列表
 | 
			
		||||
export function getHotCheckList(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/core-hot-material-check/listByMaterial',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										56
									
								
								src/api/base/energyQuantityManual.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,56 @@
 | 
			
		||||
import request from '@/utils/request'
 | 
			
		||||
 | 
			
		||||
// 获得分页数据
 | 
			
		||||
export function energyQuantityManualPage(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/energy-quantity-manual/page',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 创建
 | 
			
		||||
export function energyQuantityManualCreate(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/energy-quantity-manual/create',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 更新
 | 
			
		||||
export function energyQuantityManualUpdate(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/energy-quantity-manual/update',
 | 
			
		||||
    method: 'put',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//获得能源抄表(手动)
 | 
			
		||||
export function energyQuantityManualGet(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/energy-quantity-manual/get',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//删除
 | 
			
		||||
export function energyQuantityManualDelete(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/energy-quantity-manual/delete',
 | 
			
		||||
    method: 'delete',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//导出
 | 
			
		||||
export function energyQuantityManualExport(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/energy-quantity-manual/export-excel',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: data,
 | 
			
		||||
    responseType: 'blob'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										125
									
								
								src/api/base/qualityHotMaterial.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,125 @@
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-11-06 15:38:12
 | 
			
		||||
 * @LastEditTime: 2023-12-15 15:29:16
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description:
 | 
			
		||||
 */
 | 
			
		||||
import request from '@/utils/request'
 | 
			
		||||
 | 
			
		||||
// 创建质量检测类型基础
 | 
			
		||||
export function createQualityHotMaterial(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/quality-hot-material/create',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 更新质量检测类型基础
 | 
			
		||||
export function updateQualityHotMaterial(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/quality-hot-material/update',
 | 
			
		||||
    method: 'put',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 删除质量检测类型基础
 | 
			
		||||
export function deleteQualityHotMaterial(id) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/quality-hot-material/delete?id=' + id,
 | 
			
		||||
    method: 'delete'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得质量检测类型基础
 | 
			
		||||
export function getQualityHotMaterial(id) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/quality-hot-material/get?id=' + id,
 | 
			
		||||
    method: 'get'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得质量检测类型基础分页
 | 
			
		||||
export function getQualityHotMaterialPage(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: 'base/quality-hot-material/page',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 导出质量检测类型基础 Excel
 | 
			
		||||
// export function exportQualityScrapTypeExcel(query) {
 | 
			
		||||
//   return request({
 | 
			
		||||
//     url: '/base/quality-scrap-type/export-excel',
 | 
			
		||||
//     method: 'get',
 | 
			
		||||
//     params: query,
 | 
			
		||||
//     responseType: 'blob'
 | 
			
		||||
//   })
 | 
			
		||||
// }
 | 
			
		||||
 | 
			
		||||
export function getCode(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/quality-hot-material/getCode',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
export function getHotMaterialAllList(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/core-hot-material/listAll',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function getSupplierList(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/core-supplier/listAll',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function getWorkerList(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/core-worker/listAll',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function getMaterialCheckList(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/core-hot-material-check/listByMaterial',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function createQualityHotMaterialDet(query){
 | 
			
		||||
   return request({
 | 
			
		||||
    url: '/base/quality-hot-material-det/create',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function updateQualityHotMaterialDet(query){
 | 
			
		||||
   return request({
 | 
			
		||||
    url: '/base/quality-hot-material-det/listbyfilter',
 | 
			
		||||
    method: 'put',
 | 
			
		||||
    data: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function getQualityHotMaterialDetList(query){
 | 
			
		||||
   return request({
 | 
			
		||||
    url: '/base/quality-hot-material-det/listbyfilter',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
@@ -1,10 +1,17 @@
 | 
			
		||||
/*
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-12-04 14:10:37
 | 
			
		||||
 * @LastEditTime: 2023-12-14 10:06:03
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description:
 | 
			
		||||
 */
 | 
			
		||||
import request from '@/utils/request'
 | 
			
		||||
 | 
			
		||||
// 创建安灯按钮16键对应
 | 
			
		||||
export function createQualityInspectionBoxBtn(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/quality-inspection-box-btn/create',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    url: '/base/quality-inspection-box-btn/updateBatch',
 | 
			
		||||
    method: 'put',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
@@ -12,7 +19,7 @@ export function createQualityInspectionBoxBtn(data) {
 | 
			
		||||
// 更新安灯按钮16键对应
 | 
			
		||||
export function updateQualityInspectionBoxBtn(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/quality-inspection-box-btn/update',
 | 
			
		||||
    url: '/base/quality-inspection-box-btn/updateBatch',
 | 
			
		||||
    method: 'put',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
@@ -37,7 +44,7 @@ export function getQualityInspectionBoxBtn(id) {
 | 
			
		||||
// 获得安灯按钮16键对应分页
 | 
			
		||||
export function getQualityInspectionBoxBtnPage(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/quality-inspection-box-btn/page',
 | 
			
		||||
    url: '/base/quality-inspection-box-btn/listGroupByLineSection',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
@@ -52,3 +59,19 @@ export function exportQualityInspectionBoxBtnExcel(query) {
 | 
			
		||||
    responseType: 'blob'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function getAllDetByTypeList(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/quality-scrap-det/scrapMap',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query,
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
export function getListByLineSection(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/quality-inspection-box-btn/detListByLineSection',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query,
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
/*
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-11-06 15:38:12
 | 
			
		||||
 * @LastEditTime: 2023-11-06 15:39:39
 | 
			
		||||
 * @LastEditTime: 2023-12-08 09:46:55
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description:
 | 
			
		||||
 */
 | 
			
		||||
@@ -67,3 +67,4 @@ export function getCode(query) {
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										78
									
								
								src/api/cost/costEneryAutoReport.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,78 @@
 | 
			
		||||
/*
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2023-11-23 14:57:00
 | 
			
		||||
 * @LastEditors: zwq
 | 
			
		||||
 * @LastEditTime: 2023-12-07 09:37:18
 | 
			
		||||
 * @Description:
 | 
			
		||||
 */
 | 
			
		||||
import request from '@/utils/request'
 | 
			
		||||
 | 
			
		||||
// 创建能源自动记录报
 | 
			
		||||
export function createCostEneryAutoReport(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/extend/cost-enery-auto-report/create',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 更新能源自动记录报
 | 
			
		||||
export function updateCostEneryAutoReport(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/extend/cost-enery-auto-report/update',
 | 
			
		||||
    method: 'put',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 删除能源自动记录报
 | 
			
		||||
export function deleteCostEneryAutoReport(id) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/extend/cost-enery-auto-report/delete?id=' + id,
 | 
			
		||||
    method: 'delete'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得能源自动记录报
 | 
			
		||||
export function getCostEneryAutoReport(id) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/extend/cost-enery-auto-report/get?id=' + id,
 | 
			
		||||
    method: 'get'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得能源自动记录报分页历史
 | 
			
		||||
export function getCostEneryAutoReportPage(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/extend/cost-enery-auto-report/page',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
// 获得能源查询
 | 
			
		||||
export function getCostEneryAutoPage(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/extend/cost-energy-search/getData',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
// 导出能源自动记录报 Excel
 | 
			
		||||
export function exportCostEneryAutoReportExcel(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/extend/cost-enery-auto-report/export-excel',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: data,
 | 
			
		||||
    responseType: 'blob'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 导出能源自动记录报 Excel 查询
 | 
			
		||||
export function exportCostEneryExcel(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/extend/cost-energy-search/export-excel',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: data,
 | 
			
		||||
    responseType: 'blob'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										73
									
								
								src/api/cost/costMaterialAutoReport.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,73 @@
 | 
			
		||||
import request from '@/utils/request'
 | 
			
		||||
 | 
			
		||||
// 创建原料成本自动统计报
 | 
			
		||||
export function createCostMaterialAutoReport(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/extend/cost-material-auto-report/create',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 更新原料成本自动统计报
 | 
			
		||||
export function updateCostMaterialAutoReport(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/extend/cost-material-auto-report/update',
 | 
			
		||||
    method: 'put',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 删除原料成本自动统计报
 | 
			
		||||
export function deleteCostMaterialAutoReport(id) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/extend/cost-material-auto-report/delete?id=' + id,
 | 
			
		||||
    method: 'delete'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得原料成本自动统计报
 | 
			
		||||
export function getCostMaterialAutoReport(id) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/extend/cost-material-auto-report/get?id=' + id,
 | 
			
		||||
    method: 'get'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得原料成本自动统计报分页历史
 | 
			
		||||
export function getCostMaterialAutoReportPage(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/extend/cost-material-auto-report/page',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得原料成本查询
 | 
			
		||||
export function getCostMaterialSearchPage(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/extend/cost-material-search/getData',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 导出原料成本自动统计报 Excel
 | 
			
		||||
export function exportCostMaterialAutoReportExcel(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/extend/cost-material-auto-report/export-excel',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: data,
 | 
			
		||||
    responseType: 'blob'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 导出原料成本自动统计报 Excel查询
 | 
			
		||||
export function exportCostMaterialSearch(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/extend/cost-material-search/export-excel',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: data,
 | 
			
		||||
    responseType: 'blob'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										61
									
								
								src/api/cost/costMaterialSet.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,61 @@
 | 
			
		||||
/*
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2023-11-15 09:24:30
 | 
			
		||||
 * @LastEditors: zwq
 | 
			
		||||
 * @LastEditTime: 2023-12-05 14:38:48
 | 
			
		||||
 * @Description:
 | 
			
		||||
 */
 | 
			
		||||
import request from '@/utils/request'
 | 
			
		||||
 | 
			
		||||
// 创建原料价位配置
 | 
			
		||||
export function createCostMaterialSet(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/extend/cost-material-set/create',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 更新原料价位配置
 | 
			
		||||
export function updateCostMaterialSet(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/extend/cost-material-set/update',
 | 
			
		||||
    method: 'put',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 删除原料价位配置
 | 
			
		||||
export function deleteCostMaterialSet(id) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/extend/cost-material-set/delete?id=' + id,
 | 
			
		||||
    method: 'delete'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得原料价位配置
 | 
			
		||||
export function getCostMaterialSet(id) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/extend/cost-material-set/get?id=' + id,
 | 
			
		||||
    method: 'get'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得原料价位配置分页
 | 
			
		||||
export function getCostMaterialSetPage(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/extend/cost-material-set/page',
 | 
			
		||||
    method: 'POST',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 导出原料价位配置 Excel
 | 
			
		||||
export function exportCostMaterialSetExcel(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/extend/cost-material-set/export-excel',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query,
 | 
			
		||||
    responseType: 'blob'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										63
									
								
								src/api/monitoring/qualityIsra.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,63 @@
 | 
			
		||||
/*
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-12-08 15:26:59
 | 
			
		||||
 * @LastEditTime: 2023-12-11 15:21:44
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description:
 | 
			
		||||
 */
 | 
			
		||||
import request from '@/utils/request'
 | 
			
		||||
export function getQualityIsraPage(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: 'base/quality-isra-statistics/getIsraData',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function getQualityIsraDayMap(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/quality-isra-statistics/dayMap',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function getQualityIsraWeekMap(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/quality-isra-statistics/weekMap',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function getQualityIsraMonthMap(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/quality-isra-statistics/monthMap',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function getQualityIsraDayList(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/quality-isra-statistics/dayList',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function getQualityIsraWeekList(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/quality-isra-statistics/weekList',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function getQualityIsraMonthList(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/quality-isra-statistics/monthList',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
/*
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-10-31 10:55:20
 | 
			
		||||
 * @LastEditTime: 2023-10-31 15:05:30
 | 
			
		||||
 * @LastEditTime: 2023-12-06 14:09:14
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description:
 | 
			
		||||
 */
 | 
			
		||||
@@ -33,3 +33,12 @@ export function exportEnergyPlcExcel(query) {
 | 
			
		||||
    responseType: 'blob'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function getOriginalGlassRetrace(query) {
 | 
			
		||||
   return request({
 | 
			
		||||
    url: '/base/original-glass-statistics/originalGlassRetrace',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query,
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										61
									
								
								src/api/report/glass.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,61 @@
 | 
			
		||||
/*
 | 
			
		||||
 * @Author: Do not edit
 | 
			
		||||
 * @Date: 2023-12-08 10:26:48
 | 
			
		||||
 * @LastEditTime: 2023-12-13 17:16:00
 | 
			
		||||
 * @LastEditors: DY
 | 
			
		||||
 * @Description: 
 | 
			
		||||
 */
 | 
			
		||||
import request from '@/utils/request'
 | 
			
		||||
 | 
			
		||||
// 创建原片自动报
 | 
			
		||||
export function createGlass(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/report-auto-original-glass/create',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 批量更新原片自动报
 | 
			
		||||
export function updateGlass(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/report-auto-original-glass/updatePlus',
 | 
			
		||||
    method: 'put',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
// 更新原片自动报
 | 
			
		||||
export function updateGlassRemark(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/report-auto-original-glass/update',
 | 
			
		||||
    method: 'put',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得原片自动报
 | 
			
		||||
export function getGlass(id) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/report-auto-original-glass/get?id=' + id,
 | 
			
		||||
    method: 'get'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得原片分页
 | 
			
		||||
export function getGlassPage(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/report-auto-original-glass/listPlus',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 导出原片自动报 Excel
 | 
			
		||||
export function exportGlasscExcel(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/report-auto-original-glass/export-excel',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query,
 | 
			
		||||
    responseType: 'blob'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										57
									
								
								src/api/report/production.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,57 @@
 | 
			
		||||
/*
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-12-12 13:49:02
 | 
			
		||||
 * @LastEditTime: 2023-12-14 14:21:43
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description:
 | 
			
		||||
 */
 | 
			
		||||
import request from '@/utils/request'
 | 
			
		||||
 | 
			
		||||
// 获得质量检查信息记录表分页
 | 
			
		||||
 | 
			
		||||
export function getProductionDataList(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/report-auto-production/listPlus',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    data: query,
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function updateProductionDataList(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/report-auto-production/updatePlus',
 | 
			
		||||
    method: 'put',
 | 
			
		||||
    data: query,
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
export function updateSumProductionDataList(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/report-auto-production/update',
 | 
			
		||||
    method: 'put',
 | 
			
		||||
    data: query,
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function getAutoDeliveDataList(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/report-auto-delive/listPlus',
 | 
			
		||||
    method: 'put',
 | 
			
		||||
    data: query,
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function updateAutoDeliveDataList(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/report-auto-delive/update',
 | 
			
		||||
    method: 'put',
 | 
			
		||||
    data: query,
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function updateSumAutoDeliveDataList(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/report-auto-delive/updatePlus',
 | 
			
		||||
    method: 'put',
 | 
			
		||||
    data: query,
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										92
									
								
								src/api/safetyEnvironmental/environmental.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,92 @@
 | 
			
		||||
import request from '@/utils/request'
 | 
			
		||||
 | 
			
		||||
// 获得环保检测指标实时数据
 | 
			
		||||
export function environmentalCheckRealtime(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/environmental-check/realtime',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得环保检测指标趋势数据
 | 
			
		||||
export function environmentalCheckRealtimeTrend(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/environmental-check-record/trend',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得环保检测指标分页
 | 
			
		||||
export function environmentalCheckPage(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/environmental-check/page',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 创建环保检测指标
 | 
			
		||||
export function environmentalCheckCreate(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/environmental-check/create',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 更新环保检测指标
 | 
			
		||||
export function environmentalCheckUpdate(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/environmental-check/update',
 | 
			
		||||
    method: 'put',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得环保检测指标
 | 
			
		||||
export function environmentalCheckGet(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/environmental-check/get',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 删除环保检测指标
 | 
			
		||||
export function environmentalCheckDelete(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/environmental-check/delete',
 | 
			
		||||
    method: 'delete',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得环保检测记录分页
 | 
			
		||||
export function environmentalCheckRecordPage(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/environmental-check-record/page',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 导出环保检测记录 Excel
 | 
			
		||||
export function environmentalCheckRecordExport(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/environmental-check-record/export-excel',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: data,
 | 
			
		||||
    responseType: 'blob'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获取环保检测指标code
 | 
			
		||||
export function getEnvironmentalCheckCode(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/environmental-check/getCode',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
@@ -26,6 +26,13 @@ export function getUser(userId) {
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function getUserSimple(userId) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/system/user/getSimple?id=' + praseStrEmpty(userId),
 | 
			
		||||
    method: 'get'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 新增用户
 | 
			
		||||
export function addUser(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										14
									
								
								src/assets/icons/svg/energyMonitoring.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,14 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 | 
			
		||||
    <title>能源监控</title>
 | 
			
		||||
    <g id="mes-看板/驾驶舱" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
 | 
			
		||||
        <g id="冷端看板" transform="translate(-685.000000, -149.000000)" fill-rule="nonzero">
 | 
			
		||||
            <g id="编组-26备份-4" transform="translate(661.000000, 127.000000)">
 | 
			
		||||
                <g id="能源监控" transform="translate(24.000000, 22.000000)">
 | 
			
		||||
                    <rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="24" height="24"></rect>
 | 
			
		||||
                    <path d="M5.56606392,22 L5.56606392,8.69394435 C5.56606392,8.16339333 5.15113542,7.75513729 4.65294365,7.75513729 L1.91312026,7.75513729 C1.41539106,7.75513729 1,8.20385524 1,8.69394435 L1,22 L5.56606392,22 L5.56606392,22 Z M11.3773759,22 L11.3773759,2.97972358 C11.3773759,2.44871795 10.9624474,2 10.4642557,2 L7.72443229,2 C7.22624054,2 6.81131201,2.44871795 6.81131201,2.97972358 L6.81131201,22 L11.3773759,22 Z M17.188688,22 L17.188688,13.591653 C17.188688,13.061102 16.7737595,12.6123841 16.2755677,12.6123841 L13.5362069,12.6123841 C13.0380151,12.6123841 12.622624,13.061102 12.622624,13.591653 L12.622624,22 L17.188688,22 Z M23,22 L23,8.69394435 C23,8.16339333 22.5850715,7.75513729 22.0868797,7.75513729 L19.3470564,7.75513729 C18.8493272,7.75513729 18.4339361,8.20385524 18.4339361,8.69394435 L18.4339361,22 L23,22 L23,22 Z" id="形状" fill="#59D0E2"></path>
 | 
			
		||||
                </g>
 | 
			
		||||
            </g>
 | 
			
		||||
        </g>
 | 
			
		||||
    </g>
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 1.6 KiB  | 
							
								
								
									
										14
									
								
								src/assets/icons/svg/eqAlarm.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,14 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 | 
			
		||||
    <title>报警</title>
 | 
			
		||||
    <g id="新增看板" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
 | 
			
		||||
        <g id="深加工看板" transform="translate(-64.000000, -149.000000)" fill-rule="nonzero">
 | 
			
		||||
            <g id="编组-26" transform="translate(40.000000, 127.000000)">
 | 
			
		||||
                <g id="报警" transform="translate(24.000000, 22.000000)">
 | 
			
		||||
                    <rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="24" height="24"></rect>
 | 
			
		||||
                    <path d="M20.7657338,18.1387399 L13.9284614,22.3462921 C13.4025174,22.6969215 12.8765734,22.3462921 12.8765734,21.6450334 L12.8765734,11.8274116 C12.8765734,11.6520969 13.0518881,11.3014676 13.2272027,11.1261529 L20.0644751,6.91860067 C20.5904191,6.56797132 21.1163631,6.91860067 21.1163631,7.61985938 L21.1163631,17.6127959 C21.1163631,17.7881106 20.9410485,18.1387399 20.7657338,18.1387399 Z M3.23426622,18.1387399 L10.0715386,22.3462921 C10.5974826,22.6969215 11.1234266,22.3462921 11.1234266,21.6450334 L11.1234266,11.8274116 C11.1234266,11.6520969 10.9481119,11.3014676 10.7727973,11.1261529 L3.93552492,6.91860067 C3.58489557,6.743286 2.88363686,7.09391535 2.88363686,7.61985938 L2.88363686,17.6127959 C2.88363686,17.7881106 3.05895154,18.1387399 3.23426622,18.1387399 Z M11.8246853,1.48384573 L3.93552492,4.46419521 C3.58489557,4.63950989 3.58489557,5.16545392 3.93552492,5.34076859 L11.8246853,10.2495795 C12,10.2495795 12.1753147,10.2495795 12.1753147,10.2495795 L20.2397898,5.34076859 C20.5904191,5.16545392 20.5904191,4.63950989 20.2397898,4.46419521 L12.1753147,1.48384573 C12,1.48384573 12,1.48384573 11.8246853,1.48384573 Z" id="形状" fill="#59D0E2"></path>
 | 
			
		||||
                </g>
 | 
			
		||||
            </g>
 | 
			
		||||
        </g>
 | 
			
		||||
    </g>
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 1.9 KiB  | 
							
								
								
									
										17
									
								
								src/assets/icons/svg/eqMonitoring.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,17 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<svg width="19.7127155px" height="19.7127155px" viewBox="0 0 19.7127155 19.7127155" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 | 
			
		||||
    <title>设备监控</title>
 | 
			
		||||
    <g id="mes-看板" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
 | 
			
		||||
        <g id="深加工看板" transform="translate(-1309.143642, -151.143642)">
 | 
			
		||||
            <g id="编组-26备份-4" transform="translate(1283.000000, 127.000000)">
 | 
			
		||||
                <g id="设备监控" transform="translate(24.000000, 22.000000)">
 | 
			
		||||
                    <rect id="矩形" x="0" y="0" width="24" height="24"></rect>
 | 
			
		||||
                    <g id="异常" transform="translate(2.143642, 2.143642)" fill-rule="nonzero">
 | 
			
		||||
                        <rect id="矩形" fill="#000000" opacity="0" x="0.856357767" y="0.856357767" width="17" height="17"></rect>
 | 
			
		||||
                        <path d="M9.85640228,0.000116285784 C7.94997171,-0.0106702658 6.11587607,0.729338602 4.75082135,2.0602014 C3.41793975,3.37801839 2.66584368,5.173105 2.66128994,7.04744966 L2.66128994,16.6671387 L16.9726637,16.6671387 L16.9726637,7.04743041 C16.9710126,5.1705386 16.2144177,3.37320892 14.8732566,2.06018215 C13.5319151,0.748116476 11.7327241,0.00936885323 9.85638303,0.000116285784 L9.85640228,0.000116285784 Z M9.26502002,14.3607842 L9.05803623,9.69875531 L5.52947465,9.69875531 L10.1619113,3.85402838 L10.5561661,7.61911494 L13.9073323,7.73739052 L9.22555602,14.3607842 L9.26502002,14.3607842 Z M4.37471863e-05,18.6383791 C-0.00254075641,18.3517467 0.109484124,18.0759491 0.311244358,17.8723357 C0.513004592,17.6687223 0.787767718,17.5541863 1.07441422,17.5541863 L18.6383903,17.5541863 C18.9225391,17.5577245 19.1943787,17.6707029 19.3973309,17.8696071 C19.5968337,18.0761491 19.7096866,18.3512359 19.7127155,18.6383791 C19.7127155,19.2317112 19.2317269,19.7127155 18.6383903,19.7127155 L1.07441422,19.7127155 C0.481077682,19.7127155 4.37471863e-05,19.2317112 4.37471863e-05,18.6383791 L4.37471863e-05,18.6383791 Z" id="形状" fill="#59D0E2"></path>
 | 
			
		||||
                    </g>
 | 
			
		||||
                </g>
 | 
			
		||||
            </g>
 | 
			
		||||
        </g>
 | 
			
		||||
    </g>
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 2.1 KiB  | 
							
								
								
									
										12
									
								
								src/assets/icons/svg/fullScreenView.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,12 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 | 
			
		||||
    <title>编组 54</title>
 | 
			
		||||
    <g id="驾驶舱" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
 | 
			
		||||
        <g id="运营总览_生产线监控驾驶舱" transform="translate(-1866.000000, -36.000000)">
 | 
			
		||||
            <g id="编组-54" transform="translate(1866.000000, 36.000000)">
 | 
			
		||||
                <rect id="矩形" stroke="#979797" fill="#D8D8D8" opacity="0" x="0.5" y="0.5" width="21" height="21"></rect>
 | 
			
		||||
                <path d="M18.4001211,1 L18.574731,1.00571398 C18.8641421,1.02474925 19.1451559,1.09128771 19.4122178,1.20447947 C19.7221027,1.33395436 19.9991094,1.52058631 20.2392616,1.76073844 C20.4776764,1.99915325 20.6652172,2.27804627 20.7953442,2.58736464 C20.9313506,2.90825642 21,3.24882158 21,3.59987893 L21,3.59987893 L21,18.4001211 L20.994286,18.574731 C20.9752507,18.8641421 20.9087123,19.1451559 20.7955205,19.4122178 C20.6660456,19.7221027 20.4794137,19.9991094 20.2392616,20.2392616 C20.0008468,20.4776764 19.7219537,20.6652172 19.4126354,20.7953442 C19.0917436,20.9313506 18.7511784,21 18.4001211,21 L18.4001211,21 L3.59987893,21 L3.42526905,20.994286 C3.13585794,20.9752507 2.85484405,20.9087123 2.58778224,20.7955205 C2.2778973,20.6660456 2.00089057,20.4794137 1.76073844,20.2392616 C1.52232363,20.0008468 1.33478285,19.7219537 1.20465581,19.4126354 C1.06864936,19.0917436 1,18.7511784 1,18.4001211 L1,18.4001211 L1,3.59987893 L1.00571398,3.42526905 C1.02474925,3.13585794 1.09128771,2.85484405 1.20447947,2.58778224 C1.33395436,2.2778973 1.52058631,2.00089057 1.76073844,1.76073844 C1.99915325,1.52232363 2.27804627,1.33478285 2.58736464,1.20465581 C2.90825642,1.06864936 3.24882158,1 3.59987893,1 L3.59987893,1 L18.4001211,1 Z M18.4001211,2.29539952 L3.59987893,2.29539952 L3.49797651,2.2993263 C2.82542992,2.35136056 2.29539952,2.9140495 2.29539952,3.59987893 L2.29539952,3.59987893 L2.29539952,18.4001211 L2.2993263,18.5020235 C2.35136056,19.1745701 2.9140495,19.7046005 3.59987893,19.7046005 L3.59987893,19.7046005 L18.4001211,19.7046005 L18.5020235,19.7006737 C19.1745701,19.6486394 19.7046005,19.0859505 19.7046005,18.4001211 L19.7046005,18.4001211 L19.7046005,3.59987893 L19.7006737,3.49797651 C19.6486394,2.82542992 19.0859505,2.29539952 18.4001211,2.29539952 L18.4001211,2.29539952 Z M4.56580299,11.8731508 L4.63987359,11.8789244 C4.95620444,11.9219442 5.20096852,12.1943435 5.20096852,12.5208838 L5.20096852,12.5208838 L5.20096852,15.8606113 L8.39814764,12.6634321 L8.45892035,12.6098356 C8.71226443,12.4133149 9.08161636,12.4311804 9.3138681,12.6634321 C9.56547415,12.9150382 9.56547415,13.3275466 9.3138681,13.5791526 L9.3138681,13.5791526 L6.09149511,16.7990315 L9.4155569,16.7990315 L9.49368756,16.8035151 C9.82695229,16.8420028 10.0864105,17.123441 10.081435,17.4601165 C10.0742517,17.8119637 9.78624591,18.094431 9.43371671,18.094431 L9.43371671,18.094431 L4.5691586,18.094431 L4.49163938,18.0899766 C4.16113157,18.051728 3.90556901,17.7718105 3.90556901,17.4308414 L3.90556901,17.4308414 L3.90556901,12.5367736 L3.91007171,12.4587841 C3.94871707,12.1260764 4.23118526,11.8665247 4.56580299,11.8731508 L4.56580299,11.8731508 Z M17.4353814,3.90556901 L17.512257,3.91000958 C17.8400885,3.94813523 18.094431,4.22707005 18.094431,4.56461864 L18.094431,4.56461864 L18.094431,9.46095642 L18.0899283,9.53894589 C18.0512829,9.87165361 17.7688147,10.1312053 17.434197,10.1245792 C17.0828999,10.1173731 16.7990315,9.82850504 16.7990315,9.47684625 L16.7990315,9.47684625 L16.7990315,6.13938874 L13.6018524,9.33656786 L13.5410796,9.39016441 C13.2877356,9.58668512 12.9183836,9.5688196 12.6861319,9.33656786 C12.4345258,9.08496181 12.4345258,8.67245345 12.6861319,8.4208474 L12.6861319,8.4208474 L15.9060108,5.20096852 L12.5821731,5.20096852 L12.5040246,5.19648608 C12.170734,5.1580095 11.9119308,4.876675 11.9185506,4.54071802 C11.9257483,4.18803625 12.2137541,3.90556901 12.5662833,3.90556901 L12.5662833,3.90556901 L17.4353814,3.90556901 Z" id="形状结合" fill="#52FFF1" fill-rule="nonzero" opacity="0.79078311"></path>
 | 
			
		||||
            </g>
 | 
			
		||||
        </g>
 | 
			
		||||
    </g>
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 4.1 KiB  | 
@@ -1 +0,0 @@
 | 
			
		||||
<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M38.47 52L52 38.462l-23.648-23.67L43.209 0H.035L0 43.137l14.757-14.865L38.47 52zm74.773 47.726L89.526 76 76 89.536l23.648 23.672L84.795 128h43.174L128 84.863l-14.757 14.863zM89.538 52l23.668-23.648L128 43.207V.038L84.866 0 99.73 14.76 76 38.472 89.538 52zM38.46 76L14.792 99.651 0 84.794v43.173l43.137.033-14.865-14.757L52 89.53 38.46 76z"/></svg>
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 421 B  | 
							
								
								
									
										12
									
								
								src/assets/icons/svg/menuIcon.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,12 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 | 
			
		||||
    <title>制度流程</title>
 | 
			
		||||
    <g id="页面" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
 | 
			
		||||
        <g id="栏" transform="translate(-383.000000, -639.000000)" fill="#FFFFFF" fill-rule="nonzero">
 | 
			
		||||
            <g id="制度流程" transform="translate(383.000000, 639.000000)">
 | 
			
		||||
                <rect id="矩形" opacity="0" x="0" y="0" width="24" height="24"></rect>
 | 
			
		||||
                <path d="M4.37117174,17.071929 L2.37885068,17.071929 C2.0028361,17.071929 1.69692899,17.3771995 1.69692899,17.7524526 L1.69692899,19.7475474 C1.69692899,20.1227781 2.00283612,20.428071 2.37885068,20.428071 L4.37117174,20.428071 C4.74718632,20.428071 5.05307101,20.1228005 5.05307101,19.7475474 L5.05307101,17.7524526 C5.05307101,17.3771996 4.74718632,17.071929 4.37117174,17.071929 Z M7.36536289,6.40073051 L21.8846371,6.40073051 C22.2245029,6.40073051 22.5,6.06492662 22.5,5.65073051 C22.5,5.2365344 22.2245029,4.90073051 21.8846371,4.90073051 L7.36536289,4.90073051 C7.02549709,4.90073051 6.75,5.23653442 6.75,5.65073054 C6.75,6.06492665 7.02549711,6.40073051 7.36536289,6.40073051 Z M3.14077284,5.95492436 L2.03265569,4.84248673 C1.8767502,4.68597337 1.62348469,4.6854806 1.46697133,4.84138609 C1.4665023,4.8418533 1.46603442,4.84232168 1.46556772,4.84279121 L1.18448184,5.12557972 C1.0295067,5.28149361 1.02939503,5.5332514 1.1842318,5.6893027 L2.85590574,7.37408916 C3.01150401,7.53090793 3.26476807,7.53189735 3.42158685,7.37629907 C3.42263304,7.37526103 3.42367349,7.3742172 3.42470814,7.37316765 L5.7220224,5.04277966 C5.87599957,4.88658572 5.87547971,4.63552909 5.72085699,4.47997417 L5.4403523,4.19777835 C5.28461275,4.04109986 5.0313479,4.04033871 4.87466942,4.19607825 C4.87370895,4.19703297 4.87275333,4.19799256 4.8718026,4.19895698 L3.14077284,5.95492436 L3.14077284,5.95492436 Z M21.8846371,11.25 L7.36536289,11.25 C7.02549709,11.25 6.75,11.5857972 6.75,11.999985 C6.75,12.4141729 7.02552167,12.75 7.36536289,12.75 L21.8846371,12.75 C22.2245029,12.75 22.5,12.4142028 22.5,11.999985 C22.5,11.5857672 22.2245029,11.25 21.8846371,11.25 Z M21.8846371,17.972656 L7.36536289,17.972656 C7.02549709,17.972656 6.75,18.30843 6.75,18.722656 C6.75,19.1368821 7.02552167,19.472656 7.36536289,19.472656 L21.8846371,19.472656 C22.2245029,19.472656 22.5,19.1368821 22.5,18.722656 C22.5,18.30843 22.2245029,17.972656 21.8846371,17.972656 Z M4.37117174,10.321929 L2.37885068,10.321929 C2.0028361,10.321929 1.69692899,10.6271975 1.69692899,11.0024481 L1.69692899,12.9975519 C1.69692899,13.3727801 2.00283612,13.678071 2.37885068,13.678071 L4.37117174,13.678071 C4.74718632,13.678071 5.05307101,13.3728025 5.05307101,12.9975519 L5.05307101,11.0024481 C5.05307101,10.6271975 4.74718632,10.321929 4.37117174,10.321929 Z" id="形状"></path>
 | 
			
		||||
            </g>
 | 
			
		||||
        </g>
 | 
			
		||||
    </g>
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 2.9 KiB  | 
							
								
								
									
										1
									
								
								src/assets/icons/svg/noStandards.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1 @@
 | 
			
		||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1702606455297" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1590" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="128"><path d="M614.4 59.136l238.592 137.728a204.8 204.8 0 0 1 102.4 177.3568v275.5584a204.8 204.8 0 0 1-102.4 177.3568L614.4 964.864a204.8 204.8 0 0 1-204.8 0l-238.592-137.728a204.8 204.8 0 0 1-102.4-177.3568V374.2208a204.8 204.8 0 0 1 102.4-177.3568L409.6 59.136a204.8 204.8 0 0 1 204.8 0z" fill="#EE1609" p-id="1591"></path><path d="M471.04 261.9904v315.392a40.96 40.96 0 1 0 81.92 0v-315.392a40.96 40.96 0 1 0-81.92 0z" fill="#FFFFFF" p-id="1592"></path><path d="M512 706.56m-51.2 0a51.2 51.2 0 1 0 102.4 0 51.2 51.2 0 1 0-102.4 0Z" fill="#FFFFFF" p-id="1593"></path></svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 895 B  | 
							
								
								
									
										14
									
								
								src/assets/icons/svg/productLine.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,14 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 | 
			
		||||
    <title>库存管理</title>
 | 
			
		||||
    <g id="新增看板" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
 | 
			
		||||
        <g id="周转看板" transform="translate(-64.000000, -618.000000)" fill-rule="nonzero">
 | 
			
		||||
            <g id="编组-26备份" transform="translate(40.000000, 596.000000)">
 | 
			
		||||
                <g id="库存管理" transform="translate(24.000000, 22.000000)">
 | 
			
		||||
                    <rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="24" height="24"></rect>
 | 
			
		||||
                    <path d="M17.5599807,5.95300863 L17.5599807,7.05052701 L6.39641163,7.05052701 L6.39641163,5.95300863 L5.15061552,5.95300863 C4.59833077,5.95300863 4.15061552,6.40072388 4.15061552,6.95300863 L4.15061552,21.465846 C4.15061552,22.0181307 4.59833077,22.465846 5.15061552,22.465846 L18.8493845,22.465846 C19.4016692,22.465846 19.8493845,22.0181307 19.8493845,21.465846 L19.8493845,6.95300863 C19.8493845,6.40072388 19.4016692,5.95300863 18.8493845,5.95300863 L17.5599807,5.95300863 L17.5599807,5.95300863 Z M6.35280394,9.22062017 L17.516373,9.22062017 L17.516373,11.3240808 L6.35280394,11.3240808 L6.35280394,9.22062017 Z M14.2456217,20.2200499 L6.3962372,20.2200499 L6.3962372,18.0396653 L14.2456217,18.0396653 L14.2456217,20.2200499 Z M17.5709698,15.8758516 L6.40740077,15.8758516 L6.40740077,13.6570923 L17.5709698,13.6570923 L17.5709698,15.8758516 Z M10.7650186,1.53415402 L13.234807,1.53415402 C13.7870917,1.53415402 14.234807,1.98186927 14.234807,2.53415402 L14.234807,4.82653474 L14.234807,4.82653474 L9.76501859,4.82653474 L9.76501859,2.53415402 C9.76501859,1.98186927 10.2127338,1.53415402 10.7650186,1.53415402 Z M16.4807775,4.75814629 L16.4807775,5.95300863 L16.4807775,5.95300863 L7.51922248,5.95300863 L7.51922248,4.75814629 C7.51922248,4.20586154 7.96693773,3.75814629 8.51922248,3.75814629 L15.4807775,3.75814629 C16.0330623,3.75814629 16.4807775,4.20586154 16.4807775,4.75814629 Z" id="形状" fill="#59D0E2"></path>
 | 
			
		||||
                </g>
 | 
			
		||||
            </g>
 | 
			
		||||
        </g>
 | 
			
		||||
    </g>
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 2.1 KiB  | 
							
								
								
									
										16
									
								
								src/assets/icons/svg/scrap.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,16 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<svg width="23.9999981px" height="23.9999981px" viewBox="0 0 23.9999981 23.9999981" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 | 
			
		||||
    <title>缺陷</title>
 | 
			
		||||
    <g id="mes-看板" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
 | 
			
		||||
        <g id="深加工看板" transform="translate(-686.000000, -149.000000)" fill-rule="nonzero">
 | 
			
		||||
            <g id="编组-26备份-2" transform="translate(662.000000, 127.000000)">
 | 
			
		||||
                <g id="编组-24" transform="translate(24.000000, 22.000000)">
 | 
			
		||||
                    <g id="缺陷" transform="translate(0.000000, 0.000000)">
 | 
			
		||||
                        <rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="23.9999981" height="23.9999981"></rect>
 | 
			
		||||
                        <path d="M20.2321175,10.4550863 L18.9032068,10.4550863 L18.9032068,6.47221732 C18.9010796,5.9702116 18.4935224,5.56438134 17.9915122,5.56438585 L13.108538,5.56438585 L13.108538,3.98437284 C13.1108007,3.21607553 12.8028771,2.47938539 12.2545397,1.94122931 C11.7062023,1.40307324 10.9638711,1.1090093 10.1957511,1.12566955 C8.60430329,1.19855778 7.3587693,2.52279309 7.38340516,4.11571867 L7.38340516,5.56438585 L2.5004309,5.56438585 C1.99842068,5.56438134 1.59086349,5.9702116 1.58870356,6.47221732 L1.58870356,9.53566556 C1.58667583,9.77879788 1.68181868,10.0126808 1.85301841,10.1853314 C2.02421815,10.3579819 2.25728984,10.4550951 2.5004309,10.4550863 L3.01036175,10.4550863 C4.60185595,10.4303757 5.92550348,11.6736467 6.00041086,13.2635692 C6.0149973,14.0317095 5.71894789,14.773225 5.17934105,15.3201042 C4.63973421,15.8669834 3.90224815,16.1729324 3.13398136,16.1686298 L2.5004309,16.1686298 C1.9969159,16.1686298 1.58870356,16.5768093 1.58870356,17.0803243 L1.58870356,21.9632986 C1.58870356,22.4668136 1.9969159,22.8750014 2.5004309,22.8750014 L6.47171061,22.8750014 C6.71382208,22.8760256 6.94631552,22.780304 7.11751574,22.6091037 C7.28871596,22.4379035 7.38443764,22.2054101 7.38340516,21.9632986 L7.38340516,21.5113144 C7.3587693,19.9183889 8.60430329,18.5941536 10.1957511,18.5212653 C10.9638711,18.5046051 11.7062023,18.798669 12.2545397,19.3368251 C12.8028771,19.8749812 13.1108007,20.6116713 13.108538,21.3799686 L13.108538,21.9632986 C13.1075105,22.2047391 13.202703,22.4366433 13.3730659,22.6077311 C13.5434288,22.778819 13.7749267,22.8750014 14.0163694,22.8750014 L17.9915122,22.8750014 C18.4950272,22.8750014 18.9032068,22.4668136 18.9032068,21.9632986 L18.9032068,16.1686298 L20.3596002,16.1686298 C21.127882,16.1719118 21.8649697,15.8649752 22.403851,15.3173671 C22.9427323,14.769759 23.2377892,14.027836 23.2221666,13.259706 C23.1452437,11.6713093 21.8221825,10.4302984 20.2321175,10.4550863 Z" id="路径" fill="#59D0E2"></path>
 | 
			
		||||
                    </g>
 | 
			
		||||
                </g>
 | 
			
		||||
            </g>
 | 
			
		||||
        </g>
 | 
			
		||||
    </g>
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 2.8 KiB  | 
							
								
								
									
										1
									
								
								src/assets/icons/svg/standards.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1 @@
 | 
			
		||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1702606467176" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1824" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="128"><path d="M622.812817 29.238717l258.222014 146.7694A217.658893 217.658893 0 0 1 991.847648 365.004111v293.666761c0 77.991238-42.226593 150.032365-110.812817 188.995994l-258.222014 146.7694a224.568699 224.568699 0 0 1-221.625634 0l-258.222014-146.7694A217.658893 217.658893 0 0 1 32.152352 658.670872v-293.666761c0-77.991238 42.226593-150.032365 110.812817-188.995994L401.187183 29.238717a224.568699 224.568699 0 0 1 221.625634 0z" fill="#4AA468" p-id="1825"></path><path d="M448.852049 592.899754l-124.120591-140.883269a37.108218 37.108218 0 0 0-56.877941 1.087654 51.631607 51.631607 0 0 0-0.447858 65.067342l151.567877 172.105356c15.355125 17.466454 39.987304 18.042272 55.982226 1.407553l279.39929-290.403797a50.863851 50.863851 0 0 0 12.667978-44.529861 44.84976 44.84976 0 0 0-27.511265-34.67699 36.980259 36.980259 0 0 0-39.859345 10.17277l-250.800371 260.653242z" fill="#FFFFFF" p-id="1826"></path></svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 1.2 KiB  | 
							
								
								
									
										10
									
								
								src/assets/icons/svg/unFullScreenView.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,10 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 | 
			
		||||
    <title>编组 54备份</title>
 | 
			
		||||
    <g id="驾驶舱" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
 | 
			
		||||
        <g id="编组-54备份">
 | 
			
		||||
            <rect id="矩形" stroke="#979797" fill="#D8D8D8" opacity="0" x="0.5" y="0.5" width="21" height="21"></rect>
 | 
			
		||||
            <path d="M18.4001211,1 L18.574731,1.00571398 C18.8641421,1.02474925 19.1451559,1.09128771 19.4122178,1.20447947 C19.7221027,1.33395436 19.9991094,1.52058631 20.2392616,1.76073844 C20.4776764,1.99915325 20.6652172,2.27804627 20.7953442,2.58736464 C20.9313506,2.90825642 21,3.24882158 21,3.59987893 L21,3.59987893 L21,18.4001211 L20.994286,18.574731 C20.9752507,18.8641421 20.9087123,19.1451559 20.7955205,19.4122178 C20.6660456,19.7221027 20.4794137,19.9991094 20.2392616,20.2392616 C20.0008468,20.4776764 19.7219537,20.6652172 19.4126354,20.7953442 C19.0917436,20.9313506 18.7511784,21 18.4001211,21 L18.4001211,21 L3.59987893,21 L3.42526905,20.994286 C3.13585794,20.9752507 2.85484405,20.9087123 2.58778224,20.7955205 C2.2778973,20.6660456 2.00089057,20.4794137 1.76073844,20.2392616 C1.52232363,20.0008468 1.33478285,19.7219537 1.20465581,19.4126354 C1.06864936,19.0917436 1,18.7511784 1,18.4001211 L1,18.4001211 L1,3.59987893 L1.00571398,3.42526905 C1.02474925,3.13585794 1.09128771,2.85484405 1.20447947,2.58778224 C1.33395436,2.2778973 1.52058631,2.00089057 1.76073844,1.76073844 C1.99915325,1.52232363 2.27804627,1.33478285 2.58736464,1.20465581 C2.90825642,1.06864936 3.24882158,1 3.59987893,1 L3.59987893,1 L18.4001211,1 Z M18.4001211,2.29539952 L3.59987893,2.29539952 L3.49797651,2.2993263 C2.82542992,2.35136056 2.29539952,2.9140495 2.29539952,3.59987893 L2.29539952,3.59987893 L2.29539952,18.4001211 L2.2993263,18.5020235 C2.35136056,19.1745701 2.9140495,19.7046005 3.59987893,19.7046005 L3.59987893,19.7046005 L18.4001211,19.7046005 L18.5020235,19.7006737 C19.1745701,19.6486394 19.7046005,19.0859505 19.7046005,18.4001211 L19.7046005,18.4001211 L19.7046005,3.59987893 L19.7006737,3.49797651 C19.6486394,2.82542992 19.0859505,2.29539952 18.4001211,2.29539952 L18.4001211,2.29539952 Z M9.43538136,11.905569 L9.512257,11.9100096 C9.84008849,11.9481352 10.094431,12.2270701 10.094431,12.5646186 L10.094431,12.5646186 L10.094431,17.4609564 L10.0899283,17.5389459 C10.0512829,17.8716536 9.76881474,18.1312053 9.43419701,18.1245792 C9.08289988,18.1173731 8.79903148,17.828505 8.79903148,17.4768462 L8.79903148,17.4768462 L8.79903148,14.1393887 L5.60185236,17.3365679 L5.54107965,17.3901644 C5.28773557,17.5866851 4.91838364,17.5688196 4.6861319,17.3365679 C4.43452585,17.0849618 4.43452585,16.6724534 4.6861319,16.4208474 L4.6861319,16.4208474 L7.90601077,13.2009685 L4.58217312,13.2009685 L4.50402457,13.1964861 C4.17073404,13.1580095 3.9119308,12.876675 3.91855064,12.540718 C3.92574827,12.1880363 4.21375409,11.905569 4.56628329,11.905569 L4.56628329,11.905569 L9.43538136,11.905569 Z M12.565803,3.8731508 L12.6398736,3.87892442 C12.9562044,3.92194416 13.2009685,4.19434347 13.2009685,4.52088378 L13.2009685,4.52088378 L13.2009685,7.86061126 L16.3981476,4.66343214 L16.4589204,4.60983559 C16.7122644,4.41331488 17.0816164,4.4311804 17.3138681,4.66343214 C17.5654742,4.91503819 17.5654742,5.32754655 17.3138681,5.5791526 L17.3138681,5.5791526 L14.0914951,8.79903148 L17.4155569,8.79903148 L17.4936876,8.80351509 C17.8269523,8.84200281 18.0864105,9.12344101 18.081435,9.46011654 C18.0742517,9.81196375 17.7862459,10.094431 17.4337167,10.094431 L17.4337167,10.094431 L12.5691586,10.094431 L12.4916394,10.0899766 C12.1611316,10.051728 11.905569,9.77181051 11.905569,9.4308414 L11.905569,9.4308414 L11.905569,4.53677361 L11.9100717,4.45878413 C11.9487171,4.12607641 12.2311853,3.86652471 12.565803,3.8731508 L12.565803,3.8731508 Z" id="形状结合" fill="#52FFF1" fill-rule="nonzero" opacity="0.79078311"></path>
 | 
			
		||||
        </g>
 | 
			
		||||
    </g>
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 3.9 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/images/choicepart/Cost.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 15 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/images/choicepart/Databoard.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 12 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/images/choicepart/SafetyEnvironmental.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 15 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/images/detectionData.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.6 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/img/high.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 54 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/img/logo-back.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.3 KiB  | 
| 
		 Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 7.3 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/img/middle.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 49 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/img/short.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 41 KiB  | 
| 
		 Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 5.6 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/logo/logo1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.0 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/logo/xcac.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.2 MiB  | 
@@ -139,7 +139,7 @@ $base1px: 0.15vh; // 1px / 1080px;
 | 
			
		||||
 | 
			
		||||
				.title {
 | 
			
		||||
					margin: 0;
 | 
			
		||||
					margin-left: calc(28 * 0.12vh);
 | 
			
		||||
					margin-left: calc(18px * 0.12vh);
 | 
			
		||||
					font-weight: 400;
 | 
			
		||||
					user-select: none;
 | 
			
		||||
					color: #000;
 | 
			
		||||
@@ -148,8 +148,8 @@ $base1px: 0.15vh; // 1px / 1080px;
 | 
			
		||||
					letter-spacing: calc(2 * 0.12vh);
 | 
			
		||||
 | 
			
		||||
					.cnbm_logo {
 | 
			
		||||
						height: calc(40 * 0.12vh);
 | 
			
		||||
						width: calc(40 * 0.12vh);
 | 
			
		||||
						height: calc(160 * 0.12vh);
 | 
			
		||||
						width: calc(182 * 0.12vh);
 | 
			
		||||
						position: relative;
 | 
			
		||||
						top: calc(8 * 0.12vh);
 | 
			
		||||
						right: calc(8 * 0.12vh);
 | 
			
		||||
 
 | 
			
		||||
@@ -86,8 +86,8 @@
 | 
			
		||||
						</span>
 | 
			
		||||
						<!-- :file-list="uploadedFileList" -->
 | 
			
		||||
						<el-upload
 | 
			
		||||
							class="upload-in-dialog"
 | 
			
		||||
							v-if="col.upload"
 | 
			
		||||
							class="upload-in-dialog"
 | 
			
		||||
							:key="col.prop + '__el-upload'"
 | 
			
		||||
							:action="uploadUrl"
 | 
			
		||||
							:headers="uploadHeaders"
 | 
			
		||||
@@ -101,7 +101,9 @@
 | 
			
		||||
								}
 | 
			
		||||
							"
 | 
			
		||||
							v-bind="col.bind">
 | 
			
		||||
							<el-button size="mini" :disabled="col.bind?.disabled || false">
 | 
			
		||||
							<el-button
 | 
			
		||||
								size="mini"
 | 
			
		||||
								:disabled="disabled || col.bind?.disabled || false">
 | 
			
		||||
								<svg-icon
 | 
			
		||||
									icon-class="icon-upload"
 | 
			
		||||
									style="color: inherit"></svg-icon>
 | 
			
		||||
@@ -117,6 +119,7 @@
 | 
			
		||||
							v-for="file in form[col.prop]"
 | 
			
		||||
							:file="file"
 | 
			
		||||
							:key="file.fileUrl"
 | 
			
		||||
							:disabled="disabled"
 | 
			
		||||
							@delete="!disabled && handleDeleteFile(file, col.prop)" />
 | 
			
		||||
					</div>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
@@ -143,7 +146,7 @@ function findMaxLabelWidth(rows) {
 | 
			
		||||
			if (opt.label.length > max) {
 | 
			
		||||
				max = opt.label.length;
 | 
			
		||||
				if (opt.label.includes('(')) {
 | 
			
		||||
					max = max - 3
 | 
			
		||||
					max = max - 3;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
@@ -153,7 +156,7 @@ function findMaxLabelWidth(rows) {
 | 
			
		||||
 | 
			
		||||
const uploadedFile = {
 | 
			
		||||
	name: 'UploadedFile',
 | 
			
		||||
	props: ['file'],
 | 
			
		||||
	props: ['file', 'disabled'],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {};
 | 
			
		||||
	},
 | 
			
		||||
@@ -198,13 +201,15 @@ const uploadedFile = {
 | 
			
		||||
					display: 'inline-block',
 | 
			
		||||
				}}>
 | 
			
		||||
				{this.file.fileName}
 | 
			
		||||
				<el-button
 | 
			
		||||
					type="text"
 | 
			
		||||
					icon="el-icon-close"
 | 
			
		||||
					style="float: right; position: relative; top: 2px; left: 8px; z-index: 100"
 | 
			
		||||
					class="dialog__upload_component__close"
 | 
			
		||||
					onClick={this.handleDelete}
 | 
			
		||||
				/>
 | 
			
		||||
				{!this.disabled && (
 | 
			
		||||
					<el-button
 | 
			
		||||
						type="text"
 | 
			
		||||
						icon="el-icon-close"
 | 
			
		||||
						style="float: right; position: relative; top: 2px; left: 8px; z-index: 100"
 | 
			
		||||
						class="dialog__upload_component__close"
 | 
			
		||||
						onClick={this.handleDelete}
 | 
			
		||||
					/>
 | 
			
		||||
				)}
 | 
			
		||||
			</div>
 | 
			
		||||
		);
 | 
			
		||||
	},
 | 
			
		||||
@@ -242,7 +247,7 @@ export default {
 | 
			
		||||
		size: {
 | 
			
		||||
			type: String,
 | 
			
		||||
			default: '',
 | 
			
		||||
		}
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
@@ -355,8 +360,9 @@ export default {
 | 
			
		||||
							promiseList.push(async () => {
 | 
			
		||||
								const response = await this.$axios(opt.url, {
 | 
			
		||||
									method: opt.method ?? 'get',
 | 
			
		||||
									// data: opt.method == 'post' ? opt.queryParams : null
 | 
			
		||||
								});
 | 
			
		||||
								console.log('[dialogForm:handleOptions:response]', response);
 | 
			
		||||
								// console.log('[dialogForm:handleOptions:response]', response);
 | 
			
		||||
								if (opt.select) {
 | 
			
		||||
									// 处理下拉框选项
 | 
			
		||||
									const list =
 | 
			
		||||
@@ -407,8 +413,26 @@ export default {
 | 
			
		||||
			}
 | 
			
		||||
			if (!promiseList.length) this.formLoading = false;
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		// 上传成功的特殊处理
 | 
			
		||||
		beforeUpload() {},
 | 
			
		||||
		beforeUpload(file) {
 | 
			
		||||
			const checkFileSize = () => {
 | 
			
		||||
				const isLt2M = file.size / 1024 / 1024 < 2;
 | 
			
		||||
				if (!isLt2M) {
 | 
			
		||||
					this.$modal.msgError('上传文件大小不能超过 2MB!');
 | 
			
		||||
				}
 | 
			
		||||
				return isLt2M;
 | 
			
		||||
			};
 | 
			
		||||
			const checkFileType = () => {
 | 
			
		||||
				const isJPG =
 | 
			
		||||
					file.type === 'image/jpeg' ||
 | 
			
		||||
					file.type === 'image/png' ||
 | 
			
		||||
					file.type === 'image/jpg';
 | 
			
		||||
				return isJPG;
 | 
			
		||||
			};
 | 
			
		||||
			return checkFileSize() && checkFileType();
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		// 上传前的验证规则可通过 bind 属性传入
 | 
			
		||||
		handleUploadSuccess(response, file, prop) {
 | 
			
		||||
			console.log('[handleUploadSuccess]', response, file, prop);
 | 
			
		||||
 
 | 
			
		||||
@@ -83,7 +83,7 @@ export default {
 | 
			
		||||
					],
 | 
			
		||||
				},
 | 
			
		||||
				placeholder: '请输入内容',
 | 
			
		||||
				// readOnly: false,
 | 
			
		||||
				readOnly: true,
 | 
			
		||||
			},
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
@@ -123,13 +123,9 @@ export default {
 | 
			
		||||
			const editor = this.$refs.editor;
 | 
			
		||||
			this.Quill = new Quill(editor, this.options);
 | 
			
		||||
			// 取消自动聚焦 start
 | 
			
		||||
			this.Quill?.enable(false);
 | 
			
		||||
			this.$nextTick(() => {
 | 
			
		||||
				this.Quill?.enable(true);
 | 
			
		||||
				this.Quill?.blur();
 | 
			
		||||
				// if (!this.readOnly) {
 | 
			
		||||
				// 	this.Quill?.enable();
 | 
			
		||||
				// }
 | 
			
		||||
				this.Quill?.enable(true);
 | 
			
		||||
			});
 | 
			
		||||
			// 如果设置了上传地址则自定义图片上传事件
 | 
			
		||||
			if (this.type === 'url') {
 | 
			
		||||
@@ -198,7 +194,7 @@ export default {
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
<style>
 | 
			
		||||
.editor-wrapper {
 | 
			
		||||
	position: relative;
 | 
			
		||||
  cursor: not-allowed;
 | 
			
		||||
 
 | 
			
		||||
@@ -15,6 +15,7 @@
 | 
			
		||||
        :headers="headers"
 | 
			
		||||
        :file-list="fileList"
 | 
			
		||||
        :on-preview="handlePictureCardPreview"
 | 
			
		||||
        :disabled="disabled"
 | 
			
		||||
        :class="{hide: this.fileList.length >= this.limit}"
 | 
			
		||||
    >
 | 
			
		||||
      <i class="el-icon-plus"></i>
 | 
			
		||||
@@ -44,6 +45,7 @@
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import { getAccessToken } from "@/utils/auth";
 | 
			
		||||
import { flatten } from 'min-dash';
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  props: {
 | 
			
		||||
@@ -67,6 +69,10 @@ export default {
 | 
			
		||||
    isShowTip: {
 | 
			
		||||
      type: Boolean,
 | 
			
		||||
      default: true
 | 
			
		||||
    },
 | 
			
		||||
    disabled: {
 | 
			
		||||
      type: Boolean,
 | 
			
		||||
      default: false
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  data() {
 | 
			
		||||
@@ -122,14 +128,16 @@ export default {
 | 
			
		||||
    // 上传成功回调
 | 
			
		||||
    handleUploadSuccess(res) {
 | 
			
		||||
      // edit by 芋道源码
 | 
			
		||||
      this.uploadList.push({ name: res.data, url: res.data });
 | 
			
		||||
      if (this.uploadList.length === this.number) {
 | 
			
		||||
        this.fileList = this.fileList.concat(this.uploadList);
 | 
			
		||||
        this.uploadList = [];
 | 
			
		||||
        this.number = 0;
 | 
			
		||||
        this.$emit("input", this.listToString(this.fileList));
 | 
			
		||||
        this.$modal.closeLoading();
 | 
			
		||||
      if (res.code !== 500) {
 | 
			
		||||
        this.uploadList.push({ name: res.data, url: res.data });
 | 
			
		||||
        if (this.uploadList.length === this.number) {
 | 
			
		||||
          this.fileList = this.fileList.concat(this.uploadList);
 | 
			
		||||
          this.uploadList = [];
 | 
			
		||||
          this.number = 0;
 | 
			
		||||
          this.$emit("input", this.listToString(this.fileList));
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      this.$modal.closeLoading();
 | 
			
		||||
    },
 | 
			
		||||
    // 上传前loading加载
 | 
			
		||||
    handleBeforeUpload(file) {
 | 
			
		||||
 
 | 
			
		||||
@@ -360,7 +360,6 @@ export default {
 | 
			
		||||
        ts: Date.now(), // 现在的时间戳
 | 
			
		||||
      }
 | 
			
		||||
      reqGet(data).then(res => {
 | 
			
		||||
        console.log(1)
 | 
			
		||||
        if (res.repCode === '0000') {
 | 
			
		||||
          this.backImgBase = res.repData.originalImageBase64
 | 
			
		||||
          this.blockBackImgBase = res.repData.jigsawImageBase64
 | 
			
		||||
 
 | 
			
		||||
@@ -26,7 +26,7 @@
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import moment from 'moment'
 | 
			
		||||
import { getUser } from "@/api/system/user.js";
 | 
			
		||||
import { getUserSimple } from "@/api/system/user.js";
 | 
			
		||||
import {getPath} from "@/utils/ruoyi";
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'navRight',
 | 
			
		||||
@@ -67,8 +67,8 @@ export default {
 | 
			
		||||
    },
 | 
			
		||||
    getUserMsg() {
 | 
			
		||||
      let id = this.$store.getters.userId
 | 
			
		||||
      getUser(id).then(res => {
 | 
			
		||||
        this.dept = res.data.dept ? res.data.dept.name : ''
 | 
			
		||||
      getUserSimple(id).then(res => {
 | 
			
		||||
        this.dept = res.data.deptName ? res.data.dept.deptName : '---'
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    async logout() {
 | 
			
		||||
 
 | 
			
		||||
@@ -17,7 +17,9 @@ export default {
 | 
			
		||||
    const vnodes = []
 | 
			
		||||
 | 
			
		||||
    if (icon) {
 | 
			
		||||
      vnodes.push(<svg-icon icon-class={icon}/>)
 | 
			
		||||
      vnodes.push(<svg-icon style="font-size: 18px;margin-right: 10px;vertical-align: middle;" icon-class={icon}/>)
 | 
			
		||||
    } else {
 | 
			
		||||
      vnodes.push(<span style="display: inline-block; width: 10px;"/>)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (title) {
 | 
			
		||||
 
 | 
			
		||||
@@ -15,7 +15,7 @@
 | 
			
		||||
				key="collapse"
 | 
			
		||||
				class="sidebar-logo-link"
 | 
			
		||||
				to="/">
 | 
			
		||||
				<img v-if="logo" :src="logo" class="sidebar-logo" />
 | 
			
		||||
				<img v-if="logo" :src="logo" class="sidebar-logo-close" />
 | 
			
		||||
				<h1
 | 
			
		||||
					v-else
 | 
			
		||||
					class="sidebar-title"
 | 
			
		||||
@@ -67,7 +67,7 @@ export default {
 | 
			
		||||
	},
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			title: '中建材智能化院',
 | 
			
		||||
			title: '许昌安彩新能科技有限公司',
 | 
			
		||||
			logo: logoImg,
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
@@ -98,8 +98,8 @@ export default {
 | 
			
		||||
		width: 100%;
 | 
			
		||||
 | 
			
		||||
		& .sidebar-logo {
 | 
			
		||||
			width: 32px;
 | 
			
		||||
			height: 40px;
 | 
			
		||||
			width: 67px;
 | 
			
		||||
			height: 24px;
 | 
			
		||||
			vertical-align: middle;
 | 
			
		||||
			margin-right: 12px;
 | 
			
		||||
		}
 | 
			
		||||
@@ -108,17 +108,23 @@ export default {
 | 
			
		||||
			display: inline-block;
 | 
			
		||||
			margin: 0;
 | 
			
		||||
			color: #fff;
 | 
			
		||||
			font-weight: 600;
 | 
			
		||||
			line-height: 50px;
 | 
			
		||||
			font-size: 18px;
 | 
			
		||||
			letter-spacing: 1px;
 | 
			
		||||
			font-weight: 500;
 | 
			
		||||
			width: 147px;
 | 
			
		||||
			letter-spacing: 2px;
 | 
			
		||||
			font-size: 10px;
 | 
			
		||||
			font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
 | 
			
		||||
			vertical-align: middle;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	&.collapse {
 | 
			
		||||
		.sidebar-logo {
 | 
			
		||||
		// .sidebar-logo {
 | 
			
		||||
		// 	margin-right: 0px;
 | 
			
		||||
		// }
 | 
			
		||||
		.sidebar-logo-close {
 | 
			
		||||
			width: 54px;
 | 
			
		||||
			height: 19px;
 | 
			
		||||
			vertical-align: middle;
 | 
			
		||||
			margin-right: 0px;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -3,16 +3,16 @@
 | 
			
		||||
    <template v-if="hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow">
 | 
			
		||||
      <app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path)">
 | 
			
		||||
        <el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
 | 
			
		||||
          <item :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="onlyOneChild.meta.title" />
 | 
			
		||||
          <item icon="menuIcon" :title="onlyOneChild.meta.title" />
 | 
			
		||||
        </el-menu-item>
 | 
			
		||||
      </app-link>
 | 
			
		||||
    </template>
 | 
			
		||||
 | 
			
		||||
    <el-submenu v-else ref="subMenu" :index="resolvePath(item.path)" popper-append-to-body>
 | 
			
		||||
      <template slot="title">
 | 
			
		||||
        <item v-if="item.meta" :icon="item.meta && item.meta.icon" :title="item.meta.title" />
 | 
			
		||||
        <item v-if="item.meta" icon="menuIcon" :title="item.meta.title" />
 | 
			
		||||
      </template>
 | 
			
		||||
      <sidebar-item
 | 
			
		||||
      <sidebar-item-sub
 | 
			
		||||
        v-for="(child, index) in item.children"
 | 
			
		||||
        :key="child.path + index"
 | 
			
		||||
        :is-nest="true"
 | 
			
		||||
@@ -30,10 +30,11 @@ import { isExternal } from '@/utils/validate'
 | 
			
		||||
import Item from './Item'
 | 
			
		||||
import AppLink from './Link'
 | 
			
		||||
import FixiOSBug from './FixiOSBug'
 | 
			
		||||
import SidebarItemSub from './SidebarItemSub'
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'SidebarItem',
 | 
			
		||||
  components: { Item, AppLink },
 | 
			
		||||
  components: { Item, AppLink, SidebarItemSub },
 | 
			
		||||
  mixins: [FixiOSBug],
 | 
			
		||||
  props: {
 | 
			
		||||
    // route object
 | 
			
		||||
 
 | 
			
		||||
@@ -3,16 +3,16 @@
 | 
			
		||||
    <template v-if="hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow">
 | 
			
		||||
      <app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path)">
 | 
			
		||||
        <el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
 | 
			
		||||
          <item :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="onlyOneChild.meta.title" />
 | 
			
		||||
          <item icon="" :title="onlyOneChild.meta.title" />
 | 
			
		||||
        </el-menu-item>
 | 
			
		||||
      </app-link>
 | 
			
		||||
    </template>
 | 
			
		||||
 | 
			
		||||
    <el-submenu v-else ref="subMenu" :index="resolvePath(item.path)" popper-append-to-body>
 | 
			
		||||
      <template slot="title">
 | 
			
		||||
        <item v-if="item.meta" :icon="item.meta && item.meta.icon" :title="item.meta.title" />
 | 
			
		||||
        <item v-if="item.meta" icon="" :title="item.meta.title" />
 | 
			
		||||
      </template>
 | 
			
		||||
      <sidebar-item
 | 
			
		||||
      <sidebar-item-sub
 | 
			
		||||
        v-for="(child, index) in item.children"
 | 
			
		||||
        :key="child.path + index"
 | 
			
		||||
        :is-nest="true"
 | 
			
		||||
@@ -32,7 +32,7 @@ import AppLink from './Link'
 | 
			
		||||
import FixiOSBug from './FixiOSBug'
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'SidebarItem',
 | 
			
		||||
  name: 'SidebarItemSub',
 | 
			
		||||
  components: { Item, AppLink },
 | 
			
		||||
  mixins: [FixiOSBug],
 | 
			
		||||
  props: {
 | 
			
		||||
@@ -1,71 +0,0 @@
 | 
			
		||||
<template>
 | 
			
		||||
	<div
 | 
			
		||||
		:class="{ 'has-logo': showLogo }"
 | 
			
		||||
		:style="{
 | 
			
		||||
			backgroundColor:
 | 
			
		||||
				settings.sideTheme === 'theme-dark'
 | 
			
		||||
					? variables.menuBackground
 | 
			
		||||
					: variables.menuLightBackground,
 | 
			
		||||
		}">
 | 
			
		||||
		<logo v-if="showLogo" :collapse="isCollapse" />
 | 
			
		||||
		<el-scrollbar :class="settings.sideTheme" wrap-class="scrollbar-wrapper">
 | 
			
		||||
			<el-menu
 | 
			
		||||
				:default-active="activeMenu"
 | 
			
		||||
				:collapse="isCollapse"
 | 
			
		||||
				:background-color="
 | 
			
		||||
					settings.sideTheme === 'theme-dark'
 | 
			
		||||
						? variables.menuBackground
 | 
			
		||||
						: variables.menuLightBackground
 | 
			
		||||
				"
 | 
			
		||||
				:text-color="
 | 
			
		||||
					settings.sideTheme === 'theme-dark'
 | 
			
		||||
						? variables.menuColor
 | 
			
		||||
						: variables.menuLightColor
 | 
			
		||||
				"
 | 
			
		||||
				:unique-opened="true"
 | 
			
		||||
				active-text-color="#fff"
 | 
			
		||||
				:collapse-transition="false"
 | 
			
		||||
				mode="vertical">
 | 
			
		||||
				<!-- 根据 sidebarRouters 路由,生成菜单 -->
 | 
			
		||||
				<sidebar-item
 | 
			
		||||
					v-for="(route, index) in sidebarRouters"
 | 
			
		||||
					:key="route.path + index"
 | 
			
		||||
					:item="route"
 | 
			
		||||
					:base-path="route.path" />
 | 
			
		||||
			</el-menu>
 | 
			
		||||
		</el-scrollbar>
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import { mapGetters, mapState } from 'vuex';
 | 
			
		||||
import Logo from './Logo';
 | 
			
		||||
import SidebarItem from './SidebarItem';
 | 
			
		||||
import variables from '@/assets/styles/variables.scss';
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
	components: { SidebarItem, Logo },
 | 
			
		||||
	computed: {
 | 
			
		||||
		...mapState(['settings']),
 | 
			
		||||
		...mapGetters(['sidebarRouters', 'sidebar']),
 | 
			
		||||
		activeMenu() {
 | 
			
		||||
			const route = this.$route;
 | 
			
		||||
			const { meta, path } = route;
 | 
			
		||||
			// if set path, the sidebar will highlight the path you set
 | 
			
		||||
			if (meta.activeMenu) {
 | 
			
		||||
				return meta.activeMenu;
 | 
			
		||||
			}
 | 
			
		||||
			return path;
 | 
			
		||||
		},
 | 
			
		||||
		showLogo() {
 | 
			
		||||
			return this.$store.state.settings.sidebarLogo;
 | 
			
		||||
		},
 | 
			
		||||
		variables() {
 | 
			
		||||
			return variables;
 | 
			
		||||
		},
 | 
			
		||||
		isCollapse() {
 | 
			
		||||
			return !this.sidebar.opened;
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -28,10 +28,10 @@
 | 
			
		||||
				mode="vertical">
 | 
			
		||||
				<!-- 根据 sidebarRouters 路由,生成菜单 -->
 | 
			
		||||
				<sidebar-item
 | 
			
		||||
					v-for="(route, index) in routeList"
 | 
			
		||||
					v-for="(route, index) in routeList.children"
 | 
			
		||||
					:key="route.path + index"
 | 
			
		||||
					:item="route"
 | 
			
		||||
					:base-path="route.path" />
 | 
			
		||||
					:base-path="routeList.path+ '/'+ route.path" />
 | 
			
		||||
			</el-menu>
 | 
			
		||||
		</el-scrollbar>
 | 
			
		||||
	</div>
 | 
			
		||||
@@ -49,9 +49,7 @@ export default {
 | 
			
		||||
		...mapState(['settings']),
 | 
			
		||||
		...mapGetters(['sidebarRouters', 'sidebar', 'choicepart']),
 | 
			
		||||
    routeList() {
 | 
			
		||||
      // return [this.partList[this.choicepart]]
 | 
			
		||||
			// return [this.sidebarRouters[29]]
 | 
			
		||||
			return [this.sidebarRouters[this.choicepart]]
 | 
			
		||||
			return this.sidebarRouters[this.choicepart]
 | 
			
		||||
    },
 | 
			
		||||
		activeMenu() {
 | 
			
		||||
			const route = this.$route;
 | 
			
		||||
 
 | 
			
		||||
@@ -48,6 +48,7 @@
 | 
			
		||||
<script>
 | 
			
		||||
import ScrollPane from './ScrollPane';
 | 
			
		||||
import path from 'path';
 | 
			
		||||
import { getDcsMsg, closeDcsMsg } from "@/websocket/wsInterface"
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
	components: { ScrollPane },
 | 
			
		||||
@@ -58,6 +59,7 @@ export default {
 | 
			
		||||
			left: 0,
 | 
			
		||||
			selectedTag: {},
 | 
			
		||||
			affixTags: [],
 | 
			
		||||
			wsIsOpen: false
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	computed: {
 | 
			
		||||
@@ -83,6 +85,27 @@ export default {
 | 
			
		||||
				document.body.removeEventListener('click', this.closeMenu);
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		visitedViews(newVal, oldVal){
 | 
			
		||||
			let num = 0
 | 
			
		||||
			newVal && newVal.map(item => {
 | 
			
		||||
				if (item.path === '/databoard/kiln' || item.path === '/databoard/whole-plant' || item.path === '/databoard/deep-processing') {
 | 
			
		||||
					num++
 | 
			
		||||
				}
 | 
			
		||||
			})
 | 
			
		||||
			if (num > 0) {
 | 
			
		||||
				if(!this.wsIsOpen) {
 | 
			
		||||
					getDcsMsg()
 | 
			
		||||
					this.wsIsOpen = true
 | 
			
		||||
					console.log('开启websocket==========')
 | 
			
		||||
				}
 | 
			
		||||
			}else{
 | 
			
		||||
				if (this.wsIsOpen) {
 | 
			
		||||
					closeDcsMsg()
 | 
			
		||||
					this.wsIsOpen = false
 | 
			
		||||
					console.log('关闭============')
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
	mounted() {
 | 
			
		||||
		this.initTags();
 | 
			
		||||
 
 | 
			
		||||
@@ -9,6 +9,7 @@ import store from './store';
 | 
			
		||||
import router from './router';
 | 
			
		||||
import directive from './directive'; // directive
 | 
			
		||||
import plugins from './plugins'; // plugins
 | 
			
		||||
// import { scrollBoard } from '@jiaminghi/data-view'
 | 
			
		||||
 | 
			
		||||
import './assets/icons'; // icon
 | 
			
		||||
import './permission'; // permission control
 | 
			
		||||
@@ -78,8 +79,10 @@ Vue.use(CodeBrickZj)
 | 
			
		||||
Vue.use(directive);
 | 
			
		||||
Vue.use(plugins);
 | 
			
		||||
Vue.use(VueMeta);
 | 
			
		||||
// Vue.use(scrollBoard)
 | 
			
		||||
// Vue.use(hljs.vuePlugin);
 | 
			
		||||
 | 
			
		||||
import scroll from 'vue-seamless-scroll'
 | 
			
		||||
Vue.use(scroll)
 | 
			
		||||
// bpmnProcessDesigner 需要引入
 | 
			
		||||
import MyPD from '@/components/bpmnProcessDesigner/package/index.js';
 | 
			
		||||
Vue.use(MyPD);
 | 
			
		||||
 
 | 
			
		||||
@@ -62,7 +62,7 @@ export default {
 | 
			
		||||
				url,
 | 
			
		||||
				method,
 | 
			
		||||
				params: (method === 'get' || method === 'delete') ? payload : null,
 | 
			
		||||
				data: method !== 'get' ? payload : null,
 | 
			
		||||
				data: (method === 'get' || method === 'delete') ? null : payload
 | 
			
		||||
			})
 | 
			
		||||
		},
 | 
			
		||||
		put(payload) {
 | 
			
		||||
@@ -78,7 +78,6 @@ export default {
 | 
			
		||||
			return this.http(this.infoUrl == '' ? this.infoPath : this.infoUrl, 'get', payload);
 | 
			
		||||
		},
 | 
			
		||||
		del(payload) {
 | 
			
		||||
			debugger;
 | 
			
		||||
			return this.http(this.deleteUrl == '' ? this.deletePath : this.deleteUrl, 'delete', payload);
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
@@ -107,6 +106,8 @@ export default {
 | 
			
		||||
				case 'detail':
 | 
			
		||||
					this.handleDetail(data);
 | 
			
		||||
					break;
 | 
			
		||||
				default:
 | 
			
		||||
					this.handleTableActions({data, type});
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		// 处理搜索栏按钮
 | 
			
		||||
@@ -119,9 +120,9 @@ export default {
 | 
			
		||||
							this.queryParams['startTime'] = btn.timeVal[0];
 | 
			
		||||
							this.queryParams['endTime'] = btn.timeVal[1];
 | 
			
		||||
							return;
 | 
			
		||||
						}
 | 
			
		||||
            }
 | 
			
		||||
						this.queryParams[key] = btn[key] || null;
 | 
			
		||||
					});
 | 
			
		||||
          });
 | 
			
		||||
					this.handleQuery();
 | 
			
		||||
					break;
 | 
			
		||||
				case 'add':
 | 
			
		||||
@@ -134,10 +135,13 @@ export default {
 | 
			
		||||
					this.$refs['search-bar'].resetForm();
 | 
			
		||||
					this.resetQuery();
 | 
			
		||||
					break;
 | 
			
		||||
				default:
 | 
			
		||||
					this.searchBarClicked(btn);
 | 
			
		||||
					break;
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		handleEmitFun(val) {
 | 
			
		||||
			console.log('emit unf', val);
 | 
			
		||||
			console.log('[basicPageMixin handleEmitFun]', val);
 | 
			
		||||
			switch (val.action) {
 | 
			
		||||
				// 查看详情
 | 
			
		||||
				case 'show-detail':
 | 
			
		||||
 
 | 
			
		||||
@@ -19,6 +19,9 @@ const getters = {
 | 
			
		||||
  sidebarRouters:state => state.permission.sidebarRouters,
 | 
			
		||||
  choicepart: state => state.app.choicepart,
 | 
			
		||||
  // 数据字典
 | 
			
		||||
  dict_datas: state => state.dict.dictDatas
 | 
			
		||||
  dict_datas: state => state.dict.dictDatas,
 | 
			
		||||
  //ws
 | 
			
		||||
  fanFrequencyInfo: state => state.websocket.FanFrequencyInfo,
 | 
			
		||||
  kilnInfo: state => state.websocket.kilnInfo,
 | 
			
		||||
}
 | 
			
		||||
export default getters
 | 
			
		||||
 
 | 
			
		||||
@@ -6,6 +6,7 @@ import tagsView from './modules/tagsView'
 | 
			
		||||
import permission from './modules/permission'
 | 
			
		||||
import settings from './modules/settings'
 | 
			
		||||
import dict from './modules/dict'
 | 
			
		||||
import websocket from './modules/websocket'
 | 
			
		||||
import getters from './getters'
 | 
			
		||||
 | 
			
		||||
Vue.use(Vuex)
 | 
			
		||||
@@ -17,7 +18,8 @@ const store = new Vuex.Store({
 | 
			
		||||
    tagsView,
 | 
			
		||||
    permission,
 | 
			
		||||
    settings,
 | 
			
		||||
    dict
 | 
			
		||||
    dict,
 | 
			
		||||
    websocket
 | 
			
		||||
  },
 | 
			
		||||
  getters
 | 
			
		||||
})
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										254
									
								
								src/store/modules/websocket.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,254 @@
 | 
			
		||||
const state = {
 | 
			
		||||
  fanFrequencyInfo:{},// 分机运行频率
 | 
			
		||||
  kilnInfo:{},// 窑炉信息
 | 
			
		||||
  gasInfo:{},// 天然气流量图
 | 
			
		||||
  sumGasInfo: {},// 天然气总量
 | 
			
		||||
 | 
			
		||||
  israKiln:[],// ISRA窑炉缺陷检测
 | 
			
		||||
  material:[],// 原料
 | 
			
		||||
  energyInfo: {
 | 
			
		||||
    elecQty1: '',
 | 
			
		||||
    elecQty2: '',
 | 
			
		||||
    waterQty: ''
 | 
			
		||||
  }, // 能耗
 | 
			
		||||
  energyWeekTrend:[],
 | 
			
		||||
  energyMonthTrend:[],
 | 
			
		||||
  energyYearTrend:[],// 能耗图
 | 
			
		||||
  energyMonitoring: [], // 能源监控
 | 
			
		||||
  exhaustGasInfo:{}, // 烟气
 | 
			
		||||
  gasChartDayTrend:{}, // 烟气
 | 
			
		||||
  gasChartWeekTrend:{}, // 烟气
 | 
			
		||||
  gasChartMonthTrend:{}, // 烟气
 | 
			
		||||
  gasChartYearTrend:{}, // 烟气
 | 
			
		||||
  israCheckType: [],
 | 
			
		||||
  israDayStatistic: [],//缺陷统计
 | 
			
		||||
  israWeekStatistic: [],//缺陷统计
 | 
			
		||||
  israMonthStatistic: [],//缺陷统计
 | 
			
		||||
  israYearStatistic: [],//缺陷统计
 | 
			
		||||
  productline: [{
 | 
			
		||||
		"creator": "1",
 | 
			
		||||
		"sumOutputNum": 15,
 | 
			
		||||
		"outputNum": 15,
 | 
			
		||||
		"passRate": 0.6,
 | 
			
		||||
		"lineName": "3#深加工",
 | 
			
		||||
		"updateTime": "2024-01-04T16:00:19",
 | 
			
		||||
		"updater": "1",
 | 
			
		||||
		"inputNum": 15,
 | 
			
		||||
		"deleted": false,
 | 
			
		||||
		"recordTime": "2023-12-25T20:00:00",
 | 
			
		||||
		"createTime": "2023-10-13T10:44:27",
 | 
			
		||||
		"tenantId": 1,
 | 
			
		||||
		"id": 1712660539187441666,
 | 
			
		||||
		"productionLineId": 1737313260027285506,
 | 
			
		||||
		"sumInputNum": 15
 | 
			
		||||
	}, {
 | 
			
		||||
		"creator": "1",
 | 
			
		||||
		"sumOutputNum": 49,
 | 
			
		||||
		"outputNum": 16,
 | 
			
		||||
		"passRate": 0.3,
 | 
			
		||||
		"lineName": "2#深加工",
 | 
			
		||||
		"updateTime": "2024-01-04T16:00:19",
 | 
			
		||||
		"updater": "1",
 | 
			
		||||
		"inputNum": 17,
 | 
			
		||||
		"deleted": false,
 | 
			
		||||
		"recordTime": "2023-12-25T20:00:00",
 | 
			
		||||
		"createTime": "2023-10-13T10:44:27",
 | 
			
		||||
		"tenantId": 1,
 | 
			
		||||
		"id": 1712660539187441665,
 | 
			
		||||
		"productionLineId": 1737313119178362881,
 | 
			
		||||
		"sumInputNum": 47
 | 
			
		||||
	}, {
 | 
			
		||||
		"creator": "1",
 | 
			
		||||
		"sumOutputNum": 29,
 | 
			
		||||
		"outputNum": 18,
 | 
			
		||||
		"passRate": 0.5,
 | 
			
		||||
		"lineName": "1#深加工",
 | 
			
		||||
		"updateTime": "2024-01-04T16:00:19",
 | 
			
		||||
		"updater": "1",
 | 
			
		||||
		"inputNum": 20,
 | 
			
		||||
		"deleted": false,
 | 
			
		||||
		"recordTime": "2023-12-25T20:00:00",
 | 
			
		||||
		"createTime": "2023-10-13T10:43:17",
 | 
			
		||||
		"tenantId": 1,
 | 
			
		||||
		"id": 1712660244285927426,
 | 
			
		||||
		"productionLineId": 1737312466842456065,
 | 
			
		||||
		"sumInputNum": 27
 | 
			
		||||
	}], // SJG产线产量及良品率
 | 
			
		||||
  sjgEquipment:[
 | 
			
		||||
    {name: 'sadd', error:false,code: 'EQ202312121624540000072',status: "正常"}
 | 
			
		||||
  ],// SJG设备报警
 | 
			
		||||
  workOrder: [], // 工单监控
 | 
			
		||||
  defectSum: [], // 缺陷汇总
 | 
			
		||||
  order: [],// 订单完成情况
 | 
			
		||||
  yieldRateTable: [],// 本日生产良率table
 | 
			
		||||
  cutChartDay:[],
 | 
			
		||||
  cutChartWeek:[],
 | 
			
		||||
  cutChartMonth:[],
 | 
			
		||||
  cutChartYear:[]
 | 
			
		||||
};
 | 
			
		||||
const mutations = {
 | 
			
		||||
  SET_FANFREQUENCYINFO: (state, fanFrequencyInfo) => {
 | 
			
		||||
    state.fanFrequencyInfo = fanFrequencyInfo
 | 
			
		||||
  },
 | 
			
		||||
  SET_KILNINFO: (state, kilnInfo) => {
 | 
			
		||||
    state.kilnInfo = kilnInfo
 | 
			
		||||
  },
 | 
			
		||||
  SET_GASINFO: (state, gasInfo) => {
 | 
			
		||||
    state.gasInfo = gasInfo
 | 
			
		||||
  },
 | 
			
		||||
  SET_SUMGASINFO: (state, sumGasInfo) => {
 | 
			
		||||
    state.sumGasInfo = sumGasInfo
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  SET_ISRAKILN: (state, israKiln) => {
 | 
			
		||||
    state.israKiln = israKiln
 | 
			
		||||
  },
 | 
			
		||||
  SET_MATERIAL: (state, material) => {
 | 
			
		||||
    state.material = material
 | 
			
		||||
  },
 | 
			
		||||
  SET_ENERGYINFO: (state, energyInfo) => {
 | 
			
		||||
    if (Object.keys(energyInfo).length > 1) {
 | 
			
		||||
      state.energyInfo.elecQty1 = energyInfo.elecQty1
 | 
			
		||||
      state.energyInfo.elecQty2 = energyInfo.elecQty2
 | 
			
		||||
    } else {
 | 
			
		||||
      state.energyInfo.waterQty = energyInfo.waterQty
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  SET_ENERGYTREND: (state, energyTrend) => {
 | 
			
		||||
    if (energyTrend.week.length > 0) {
 | 
			
		||||
      state.energyWeekTrend = energyTrend.week
 | 
			
		||||
    }
 | 
			
		||||
    if (energyTrend.month.length > 0) {
 | 
			
		||||
      state.energyMonthTrend = energyTrend.month
 | 
			
		||||
    }
 | 
			
		||||
    if (energyTrend.year.length > 0) {
 | 
			
		||||
      state.energyYearTrend = energyTrend.year
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  SET_ENERGY_MONITORING: (state, energyMonitoring) => {
 | 
			
		||||
    state.energyMonitoring = energyMonitoring
 | 
			
		||||
  },
 | 
			
		||||
  SET_EXHAUSTGASINFO: (state, exhaustGasInfo) => {
 | 
			
		||||
    state.exhaustGasInfo = exhaustGasInfo
 | 
			
		||||
  },
 | 
			
		||||
  SET_EXHAUSTGASCHART: (state, exhaustGasChart) => {
 | 
			
		||||
    state.gasChartDayTrend = exhaustGasChart.dayTrend
 | 
			
		||||
    state.gasChartWeekTrend = exhaustGasChart.weekTrend
 | 
			
		||||
    state.gasChartMonthTrend = exhaustGasChart.monthTrend
 | 
			
		||||
    state.gasChartYearTrend = exhaustGasChart.yearTrend
 | 
			
		||||
  },
 | 
			
		||||
  SET_DEFECTCHART: (state, israStatistic) => {
 | 
			
		||||
    state.israCheckType = israStatistic.checkType
 | 
			
		||||
    state.israDayStatistic = israStatistic.dayStatistic
 | 
			
		||||
    state.israWeekStatistic = israStatistic.weekStatistic
 | 
			
		||||
    state.israMonthStatistic = israStatistic.monthStatistic
 | 
			
		||||
    state.israYearStatistic = israStatistic.yearStatistic
 | 
			
		||||
  },
 | 
			
		||||
  SET_PRODUCTLINE: (state, productline) => {
 | 
			
		||||
    state.productline = productline
 | 
			
		||||
  },
 | 
			
		||||
  SET_SJGEQ: (state, equipment) => {
 | 
			
		||||
    state.sjgEquipment = equipment
 | 
			
		||||
  },
 | 
			
		||||
  SET_WORKORDER: (state, workOrder) => {
 | 
			
		||||
    state.workOrder = workOrder
 | 
			
		||||
  },
 | 
			
		||||
  SET_DEFECTSUM: (state, defectSum) => {
 | 
			
		||||
    state.defectSum = defectSum
 | 
			
		||||
  },
 | 
			
		||||
  SET_ORDER: (state, order) => {
 | 
			
		||||
    state.order = order
 | 
			
		||||
  },
 | 
			
		||||
  SET_YIELDRATETABLE: (state, yieldRateTable) => {
 | 
			
		||||
    state.yieldRateTable = yieldRateTable
 | 
			
		||||
  },
 | 
			
		||||
  SET_CUTCHARDAY: (state, cutChartDay) => {
 | 
			
		||||
    state.cutChartDay = cutChartDay
 | 
			
		||||
  },
 | 
			
		||||
  SET_CUTCHARWEEK: (state, cutChartWeek) => {
 | 
			
		||||
    state.cutChartWeek = cutChartWeek
 | 
			
		||||
  },
 | 
			
		||||
  SET_CUTCHARMONTH: (state, cutChartMonth) => {
 | 
			
		||||
    state.cutChartMonth = cutChartMonth
 | 
			
		||||
  },
 | 
			
		||||
  SET_CUTCHARYEAR: (state, cutChartYear) => {
 | 
			
		||||
    state.cutChartYear = cutChartYear
 | 
			
		||||
  }
 | 
			
		||||
};
 | 
			
		||||
const actions = {
 | 
			
		||||
  setFanFrequencyInfo({ commit }, fanFrequencyInfo) {
 | 
			
		||||
    commit('SET_FANFREQUENCYINFO', fanFrequencyInfo.payload)
 | 
			
		||||
  },
 | 
			
		||||
  setKilnInfo({ commit }, kilnInfo) {
 | 
			
		||||
    commit('SET_KILNINFO', kilnInfo.payload)
 | 
			
		||||
  },
 | 
			
		||||
  setGasInfo({ commit }, gasInfo) {
 | 
			
		||||
    commit('SET_GASINFO', gasInfo.payload)
 | 
			
		||||
  },
 | 
			
		||||
  setSumGasInfo({ commit }, sumGasInfo) {
 | 
			
		||||
    commit('SET_SUMGASINFO', sumGasInfo.payload)
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  setIsraKiln({ commit }, israKiln) {
 | 
			
		||||
    commit('SET_ISRAKILN', israKiln.payload)
 | 
			
		||||
  },
 | 
			
		||||
  setMaterial({ commit }, material) {
 | 
			
		||||
    commit('SET_MATERIAL', material.payload)
 | 
			
		||||
  },
 | 
			
		||||
  setEnergyInfo({ commit }, energyInfo) {
 | 
			
		||||
    commit('SET_ENERGYINFO', energyInfo.payload)
 | 
			
		||||
  },
 | 
			
		||||
  setEnergyTrend({ commit }, energyTrend) {
 | 
			
		||||
    commit('SET_ENERGYTREND', energyTrend.payload)
 | 
			
		||||
  },
 | 
			
		||||
  setEnergyMonitoring({ commit }, energyMonitoring) {
 | 
			
		||||
    commit('SET_ENERGY_MONITORING', energyMonitoring.payload)
 | 
			
		||||
  },
 | 
			
		||||
  setExhaustGasInfo({ commit }, exhaustGasInfo) {
 | 
			
		||||
    commit('SET_EXHAUSTGASINFO', exhaustGasInfo.payload)
 | 
			
		||||
  },
 | 
			
		||||
  setExhaustGasChart({ commit }, exhaustGasChart) {
 | 
			
		||||
    commit('SET_EXHAUSTGASCHART', exhaustGasChart.payload)
 | 
			
		||||
  },
 | 
			
		||||
  setDefectChart({ commit }, israStatistic) {
 | 
			
		||||
    commit('SET_DEFECTCHART', israStatistic.payload)
 | 
			
		||||
  },
 | 
			
		||||
  setProductline({ commit }, productline) {
 | 
			
		||||
    commit('SET_PRODUCTLINE', productline.payload)
 | 
			
		||||
  },
 | 
			
		||||
  setSJGEq({ commit }, equipment) {
 | 
			
		||||
    commit('SET_SJGEQ', equipment.payload)
 | 
			
		||||
  },
 | 
			
		||||
  setWorkOrder({ commit }, workOrder) {
 | 
			
		||||
    commit('SET_WORKORDER', workOrder.payload)
 | 
			
		||||
  },
 | 
			
		||||
  setDefectSum({ commit }, defectSum) {
 | 
			
		||||
    commit('SET_DEFECTSUM', defectSum.payload)
 | 
			
		||||
  },
 | 
			
		||||
  setOrder({ commit }, order) {
 | 
			
		||||
    commit('SET_ORDER', order.payload)
 | 
			
		||||
  },
 | 
			
		||||
  setYieldRateTable({ commit }, yieldRateTable) {
 | 
			
		||||
    commit('SET_YIELDRATETABLE', yieldRateTable.payload)
 | 
			
		||||
  },
 | 
			
		||||
  setCutChartDay({ commit }, cutChartDay) {
 | 
			
		||||
    commit('SET_CUTCHARDAY', cutChartDay.payload)
 | 
			
		||||
  },
 | 
			
		||||
  setCutChartWeek({ commit }, cutChartWeek) {
 | 
			
		||||
    commit('SET_CUTCHARWEEK', cutChartWeek.payload)
 | 
			
		||||
  },
 | 
			
		||||
  setCutChartMonth({ commit }, cutChartMonth) {
 | 
			
		||||
    commit('SET_CUTCHARMONTH', cutChartMonth.payload)
 | 
			
		||||
  },
 | 
			
		||||
  setCutChartYear({ commit }, cutChartYear) {
 | 
			
		||||
    commit('SET_CUTCHARYEAR', cutChartYear.payload)
 | 
			
		||||
  }
 | 
			
		||||
};
 | 
			
		||||
export default {
 | 
			
		||||
  namespaced: true,
 | 
			
		||||
  state,
 | 
			
		||||
  mutations,
 | 
			
		||||
  actions,
 | 
			
		||||
}
 | 
			
		||||
@@ -201,3 +201,11 @@ input, textarea{
 | 
			
		||||
.el-form--label-top .el-form-item__label {
 | 
			
		||||
  padding: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 大屏滚动表格
 | 
			
		||||
.dv-scroll-board .rows .ceil, .dv-scroll-board .header .header-item {
 | 
			
		||||
  border-right: 1px solid rgba(13, 23, 40, 1);
 | 
			
		||||
}
 | 
			
		||||
.dv-scroll-board .rows .ceil:last-child, .dv-scroll-board .header .header-item:last-child {
 | 
			
		||||
  border-right: none;
 | 
			
		||||
}
 | 
			
		||||
@@ -94,16 +94,25 @@ export const DICT_TYPE = {
 | 
			
		||||
  OBJECT_TYPE: 'object_type',
 | 
			
		||||
  STATISTIC_TYPE: 'statistic_type',
 | 
			
		||||
  TIME_DIM: 'time_dim',
 | 
			
		||||
  TABLE_NAME: 'table_name',
 | 
			
		||||
  METHOD: 'method',
 | 
			
		||||
 | 
			
		||||
  // ============== ORDER - 订单模块 =============
 | 
			
		||||
  ORDER_STATUS: 'order_status',
 | 
			
		||||
  ORDER_ORIGIN: 'order_Origin',
 | 
			
		||||
  ORDER_PRIORITY: 'order_priority',
 | 
			
		||||
  PACK_SPEC: 'pack_spec',
 | 
			
		||||
  WORK_ORDER_STATUS: 'work_order_status',
 | 
			
		||||
  
 | 
			
		||||
  // ============== EQUIPMENT - 设备模块 =============
 | 
			
		||||
  MAINTAIN_TYPE: 'maintain_type',
 | 
			
		||||
  FAULT_LEVEL: 'fault-level',
 | 
			
		||||
  FAULT_TYPE: 'fault-type',
 | 
			
		||||
  REPAIR_MODE: 'repair-mode',
 | 
			
		||||
  REPAIR_RESULT: 'repair-result',
 | 
			
		||||
 | 
			
		||||
  // ============== ENVIRONMENTAL - 环保模块 =============
 | 
			
		||||
  ENVIRONMENT_CHECK_UNIT: 'environment_check_unit'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
 | 
			
		||||
const baseURL = process.env.VUE_APP_BASE_API
 | 
			
		||||
 | 
			
		||||
// 日期格式化
 | 
			
		||||
// 日期格式化(通用)
 | 
			
		||||
export function parseTime(time, pattern) {
 | 
			
		||||
  if (arguments.length === 0 || !time) {
 | 
			
		||||
    return null
 | 
			
		||||
@@ -48,6 +48,51 @@ export function parseTime(time, pattern) {
 | 
			
		||||
  return time_str
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 日期格式化(仅适用表格)
 | 
			
		||||
export function parseTimeTable(pattern) {
 | 
			
		||||
  return function(time){
 | 
			
		||||
    if (arguments.length === 0 || !time) {
 | 
			
		||||
      return null
 | 
			
		||||
    }
 | 
			
		||||
    const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'
 | 
			
		||||
    let date
 | 
			
		||||
    if (typeof time === 'object') {
 | 
			
		||||
      date = time
 | 
			
		||||
    } else {
 | 
			
		||||
      if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
 | 
			
		||||
        time = parseInt(time)
 | 
			
		||||
      } else if (typeof time === 'string') {
 | 
			
		||||
        time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.\d{3}/gm),'');
 | 
			
		||||
      }
 | 
			
		||||
      if ((typeof time === 'number') && (time.toString().length === 10)) {
 | 
			
		||||
        time = time * 1000
 | 
			
		||||
      }
 | 
			
		||||
      date = new Date(time)
 | 
			
		||||
    }
 | 
			
		||||
    const formatObj = {
 | 
			
		||||
      y: date.getFullYear(),
 | 
			
		||||
      m: date.getMonth() + 1,
 | 
			
		||||
      d: date.getDate(),
 | 
			
		||||
      h: date.getHours(),
 | 
			
		||||
      i: date.getMinutes(),
 | 
			
		||||
      s: date.getSeconds(),
 | 
			
		||||
      a: date.getDay()
 | 
			
		||||
    }
 | 
			
		||||
    const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => {
 | 
			
		||||
      let value = formatObj[key]
 | 
			
		||||
      // Note: getDay() returns 0 on Sunday
 | 
			
		||||
      if (key === 'a') {
 | 
			
		||||
        return ['日', '一', '二', '三', '四', '五', '六'][value]
 | 
			
		||||
      }
 | 
			
		||||
      if (result.length > 0 && value < 10) {
 | 
			
		||||
        value = '0' + value
 | 
			
		||||
      }
 | 
			
		||||
      return value || 0
 | 
			
		||||
    })
 | 
			
		||||
    return time_str
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 表单重置
 | 
			
		||||
export function resetForm(refName) {
 | 
			
		||||
  if (this.$refs[refName]) {
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2021-07-19 15:18:30
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @LastEditTime: 2023-11-23 11:14:30
 | 
			
		||||
 * @LastEditTime: 2024-01-08 16:07:58
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
@@ -12,7 +12,7 @@
 | 
			
		||||
      lineHeight: 88 + 'px',
 | 
			
		||||
      fontSize: 31 + 'px'
 | 
			
		||||
    }">
 | 
			
		||||
      <img src="../../assets/img/logo.png" style="width:1.1em;position:relative;top:.4em" alt="">
 | 
			
		||||
      <img src="../../assets/img/logo.png" style="width:1.1em;position:relative;top:.22em" alt="">
 | 
			
		||||
      许昌安彩AGV原片周转看板
 | 
			
		||||
      <h3 class="unit">单位:河南汇融科技服务有限公司</h3>
 | 
			
		||||
      <h3 class="time">{{ times }}</h3>
 | 
			
		||||
@@ -29,13 +29,13 @@
 | 
			
		||||
    <el-row class="container-main flex-col" type="flex">
 | 
			
		||||
      <el-row :style="{ padding: '0 ' + 9 + 'px' }" :gutter="15 * beilv" type="flex" class="flex-1">
 | 
			
		||||
        <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
 | 
			
		||||
          <base-container :beilv="1" :title="'搬运任务'" :title-icon="'5_1'" :back="'energy'">
 | 
			
		||||
            <base-table1 :page="1" :limit="9" :show-index="false" :beilv="1" :table-config="qualityYearTableProps"
 | 
			
		||||
          <base-container :beilv="1" :size="'middle'" :title="'搬运任务'" :title-icon="'5_1'" :back="'energy'">
 | 
			
		||||
            <base-table1 :page="1" :limit="999" :show-index="false" :beilv="1" :table-config="qualityYearTableProps"
 | 
			
		||||
              :table-data="qualityYearList" />
 | 
			
		||||
          </base-container>
 | 
			
		||||
        </el-col>
 | 
			
		||||
        <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
 | 
			
		||||
          <base-container :beilv="1" :title="'周转进度'" :title-icon="'5_3'" :back="'energy'">
 | 
			
		||||
          <base-container :beilv="1" :size="'middle'" :title="'周转进度'" :title-icon="'5_3'" :back="'energy'">
 | 
			
		||||
            <!-- <div style="width: 45%;position: absolute; top: 3em; right: 3em;">
 | 
			
		||||
              <top-radio-group />
 | 
			
		||||
            </div> -->
 | 
			
		||||
@@ -85,16 +85,17 @@
 | 
			
		||||
 | 
			
		||||
      <el-row :style="{ padding: '0 ' + 9 + 'px' }" :gutter="12 * beilv" type="flex" class="flex-1">
 | 
			
		||||
        <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
 | 
			
		||||
          <base-container :beilv="1" :height="256" :title="'库存管理'" :title-icon="'5_5'" :back="'energy'">
 | 
			
		||||
          <base-container :beilv="1" :height="256" :size="'middle'" :title="'库存管理'" :title-icon="'5_5'"
 | 
			
		||||
            :back="'energy'">
 | 
			
		||||
            <!-- <div style="width: 45%;position: absolute; top: 3em; right: 3em;">
 | 
			
		||||
              <top-radio-group />
 | 
			
		||||
            </div> -->
 | 
			
		||||
            <!-- <el-row :gutter="9 * beilv"> -->
 | 
			
		||||
              <!-- <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="24"> -->
 | 
			
		||||
                <base-table :page="1" :limit="9" :show-index="false" :beilv="1" :table-config="inventoryTableProps"
 | 
			
		||||
                  :table-data="inventoryList" />
 | 
			
		||||
              <!-- </el-col> -->
 | 
			
		||||
              <!-- <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
 | 
			
		||||
            <!-- <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="24"> -->
 | 
			
		||||
            <base-table :page="1" :limit="999" :show-index="false" :beilv="1" :table-config="inventoryTableProps"
 | 
			
		||||
              :table-data="inventoryList" />
 | 
			
		||||
            <!-- </el-col> -->
 | 
			
		||||
            <!-- <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
 | 
			
		||||
                <base-table3
 | 
			
		||||
                  :page="2"
 | 
			
		||||
                  :limit="5"
 | 
			
		||||
@@ -107,12 +108,13 @@
 | 
			
		||||
          </base-container>
 | 
			
		||||
        </el-col>
 | 
			
		||||
        <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
 | 
			
		||||
          <base-container :beilv="1" :height="318 + 338 + 16" :title="'库位信息'" :title-icon="'5_4'" :back="'energy'">
 | 
			
		||||
          <base-container :beilv="1" :height="318 + 338 + 16" :size="'middle'" :title="'库位信息'" :title-icon="'5_4'"
 | 
			
		||||
            :back="'energy'">
 | 
			
		||||
            <!-- <div style="width: 45%;position: absolute; top: 3em; right: 3em;">
 | 
			
		||||
              <top-radio-group />
 | 
			
		||||
            </div> -->
 | 
			
		||||
            <!-- 像下面这样表格里的limit值,也许可以用js动态计算出来 -->
 | 
			
		||||
            <base-table2 :page="1" :limit="9" :show-index="false" :beilv="1" :table-config="locationTableProps"
 | 
			
		||||
            <base-table2 :page="1" :limit="999" :show-index="false" :beilv="1" :table-config="locationTableProps"
 | 
			
		||||
              :table-data="locationList" />
 | 
			
		||||
          </base-container>
 | 
			
		||||
        </el-col>
 | 
			
		||||
 
 | 
			
		||||
@@ -2,13 +2,13 @@
 | 
			
		||||
 * @Author: gtz
 | 
			
		||||
 * @Date: 2022-01-19 15:58:17
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @LastEditTime: 2023-11-14 13:28:27
 | 
			
		||||
 * @LastEditTime: 2024-01-08 16:03:05
 | 
			
		||||
 * @Description: file content
 | 
			
		||||
 * @FilePath: \mt-bus-fe\src\views\OperationalOverview\components\baseContainer\index.vue
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="base-container" ref="baseContainer" :style="{ height: '100%', fontSize: 12 + 'px', padding: 12 + 'px' }"
 | 
			
		||||
    :class="{ 'no-padding': noPadding, 'border-none': !showLine }">
 | 
			
		||||
    :class="[{ 'no-padding': noPadding, 'border-none': !showLine }, 'base-container__' + size]">
 | 
			
		||||
    <!-- <div class="base-container" :style="{height: height + 'px', fontSize: 12 + 'px', padding: 12 + 'px'}"> -->
 | 
			
		||||
    <template v-if="showLine">
 | 
			
		||||
      <div class="line" />
 | 
			
		||||
@@ -74,6 +74,10 @@ export default {
 | 
			
		||||
    beilv: {
 | 
			
		||||
      type: Number,
 | 
			
		||||
      default: 1
 | 
			
		||||
    },
 | 
			
		||||
    size: {
 | 
			
		||||
      type: String,
 | 
			
		||||
      default: ''
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  data() {
 | 
			
		||||
@@ -106,8 +110,25 @@ export default {
 | 
			
		||||
  // background-color: rgba($color: #061027, $alpha: 0.15);
 | 
			
		||||
  position: relative;
 | 
			
		||||
  // border: 2px solid;
 | 
			
		||||
    background: url('../../../../assets/img/energy.png') no-repeat;
 | 
			
		||||
    background-size: 100% 100%;
 | 
			
		||||
    // background: url('../../../../assets/img/energy.png') no-repeat;
 | 
			
		||||
    // background-size: 100% 100%;
 | 
			
		||||
      &__small {
 | 
			
		||||
          background: url(../../../../assets/img/short.png) no-repeat;
 | 
			
		||||
          background-size: 100% 100%;
 | 
			
		||||
          // background-position: 0 0;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        &__middle {
 | 
			
		||||
          background: url(../../../../assets/img/middle.png) no-repeat;
 | 
			
		||||
          background-size: 100% 100%;
 | 
			
		||||
          // background-position: 0 0;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        &__large {
 | 
			
		||||
          background: url(../../../../assets/img/high.png) no-repeat;
 | 
			
		||||
          background-size: 100% 100%;
 | 
			
		||||
          // background-position: 0 0;
 | 
			
		||||
        }
 | 
			
		||||
  //   border-radius: 40px 0px 40px 0px;
 | 
			
		||||
  // border-image: linear-gradient(360deg, rgba(157, 246, 254, 0.05), rgba(100, 233, 252, 0.9)) 2 2;
 | 
			
		||||
  // .line {
 | 
			
		||||
@@ -170,8 +191,8 @@ export default {
 | 
			
		||||
 | 
			
		||||
  .bar-title {
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    color: #52fff1;
 | 
			
		||||
    font-size: 1.5em;
 | 
			
		||||
    color: #ffffff;
 | 
			
		||||
    font-size: 1.6em;
 | 
			
		||||
    padding: 0.67em;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,47 +1,44 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Date: 2020-12-14 09:07:03
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @LastEditTime: 2023-11-14 10:11:09
 | 
			
		||||
 * @LastEditTime: 2024-01-08 14:09:05
 | 
			
		||||
 * @FilePath: \mt-bus-fe\src\views\OperationalOverview\components\baseTable.vue
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="visual-base-table-container">
 | 
			
		||||
    <el-table
 | 
			
		||||
      v-loading="isLoading"
 | 
			
		||||
      :header-cell-style="{background:'rgba(4, 74, 132, .19)',color:'#fff'}"
 | 
			
		||||
      :row-style="setRowStyle"
 | 
			
		||||
      :data="renderData"
 | 
			
		||||
      border
 | 
			
		||||
      style="width: 100%; background: transparent"
 | 
			
		||||
    >
 | 
			
		||||
      <el-table-column
 | 
			
		||||
        v-if="page && limit && showIndex"
 | 
			
		||||
        prop="_pageIndex"
 | 
			
		||||
        :label="'tableHeader.index' | i18nFilter"
 | 
			
		||||
        :width="70"
 | 
			
		||||
        align="center"
 | 
			
		||||
      />
 | 
			
		||||
      <el-table-column
 | 
			
		||||
        v-for="item in renderTableHeadList"
 | 
			
		||||
        :key="item.prop"
 | 
			
		||||
        :show-overflow-tooltip="showOverflow"
 | 
			
		||||
        v-bind="item"
 | 
			
		||||
      >
 | 
			
		||||
        <template slot-scope="scope">
 | 
			
		||||
 | 
			
		||||
          <component
 | 
			
		||||
            :is="item.subcomponent"
 | 
			
		||||
            v-if="item.subcomponent"
 | 
			
		||||
            :inject-data="{...scope.row, ...item}"
 | 
			
		||||
            @emitData="emitData"
 | 
			
		||||
          />
 | 
			
		||||
          <span v-else>{{ scope.row[item.prop] | commonFilter(item.filter) }}</span>
 | 
			
		||||
 | 
			
		||||
        </template>
 | 
			
		||||
      </el-table-column>
 | 
			
		||||
      <slot name="content" />
 | 
			
		||||
    </el-table>
 | 
			
		||||
  <div class="visual-base-table-container scroll_table">
 | 
			
		||||
    <div style="display: inline-block; width: 100%">
 | 
			
		||||
      <el-table class="top" v-loading="isLoading"
 | 
			
		||||
        :header-cell-style="{ background: 'rgba(32, 55, 96, 1)', color: '#fff', height: '33px', }"
 | 
			
		||||
        :row-style="setRowStyle" :data="renderData" border style="width: 100%; background: transparent">
 | 
			
		||||
        <el-table-column prop="_pageIndex" label="序号" :width="50" align="center" />
 | 
			
		||||
        <el-table-column v-for="item in renderTableHeadList" :key="item.prop" :show-overflow-tooltip="showOverflow"
 | 
			
		||||
          v-bind="item">
 | 
			
		||||
          <template slot-scope="scope">
 | 
			
		||||
            <component :is="item.subcomponent" v-if="item.subcomponent" :inject-data="{...scope.row, ...item}"
 | 
			
		||||
              @emitData="emitData" />
 | 
			
		||||
            <span v-else>{{ scope.row[item.prop] | commonFilter(item.filter) }}</span>
 | 
			
		||||
          </template>
 | 
			
		||||
        </el-table-column>
 | 
			
		||||
        <slot name="content" />
 | 
			
		||||
      </el-table>
 | 
			
		||||
      <vue-seamless-scroll :data="renderData" class="seamless-warp" style="width: 100%" :class-option="classOption">
 | 
			
		||||
        <el-table class="bottom" v-loading="isLoading"
 | 
			
		||||
          :header-cell-style="{background:'rgba(4, 74, 132, .19)',color:'#fff',}" :row-style="setRowStyle"
 | 
			
		||||
          :data="renderData" border style="width: 100%; background: transparent">
 | 
			
		||||
          <el-table-column prop="_pageIndex" label="序号" :width="50" align="center" />
 | 
			
		||||
          <el-table-column v-for="item in renderTableHeadList" :key="item.prop" :show-overflow-tooltip="showOverflow"
 | 
			
		||||
            v-bind="item">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <component :is="item.subcomponent" v-if="item.subcomponent" :inject-data="{...scope.row, ...item}"
 | 
			
		||||
                @emitData="emitData" />
 | 
			
		||||
              <span v-else>{{ scope.row[item.prop] | commonFilter(item.filter) }}</span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
          <slot name="content" />
 | 
			
		||||
        </el-table>
 | 
			
		||||
      </vue-seamless-scroll>
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
@@ -110,7 +107,19 @@ export default {
 | 
			
		||||
      return this.tableConfig.filter((item, index) => {
 | 
			
		||||
        return this.selectedBox[index]
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
    },
 | 
			
		||||
    classOption() {
 | 
			
		||||
      return {
 | 
			
		||||
        step: 0.3, // 数值越大速度滚动越快
 | 
			
		||||
        limitMoveNum: 1, // 开始无缝滚动的数据量 this.list
 | 
			
		||||
        hoverStop: true, // 是否开启鼠标悬停stop
 | 
			
		||||
        direction: 1, // 0向下 1向上 2向左 3向右
 | 
			
		||||
        openWatch: true, // 开启数据实时监控刷新dom
 | 
			
		||||
        singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
 | 
			
		||||
        singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
 | 
			
		||||
        waitTime: 1000, // 单步运动停止的时间(默认值1000ms)
 | 
			
		||||
      };
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  beforeMount() {
 | 
			
		||||
    this.selectedBox = new Array(100).fill(true)
 | 
			
		||||
@@ -172,16 +181,23 @@ export default {
 | 
			
		||||
    background-color: rgba(79,114,136,0.29) !important;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
// .setting {
 | 
			
		||||
//   text-align: right;
 | 
			
		||||
//   padding: 15px;
 | 
			
		||||
//   .setting-box {
 | 
			
		||||
//     width: 100px;
 | 
			
		||||
//   }
 | 
			
		||||
//   i {
 | 
			
		||||
//     color: #aaa;
 | 
			
		||||
//     @extend .pointer;
 | 
			
		||||
//   }
 | 
			
		||||
// }
 | 
			
		||||
</style>
 | 
			
		||||
 | 
			
		||||
<style lang="scss">
 | 
			
		||||
 .seamless-warp {
 | 
			
		||||
  height: 308px;
 | 
			
		||||
  overflow: hidden;
 | 
			
		||||
}
 | 
			
		||||
 .min {
 | 
			
		||||
  display: flex;
 | 
			
		||||
  width: 100%;
 | 
			
		||||
}
 | 
			
		||||
 .top  .el-table__body-wrapper {
 | 
			
		||||
  display: none;
 | 
			
		||||
}
 | 
			
		||||
 .bottom .el-table__header-wrapper {
 | 
			
		||||
  display: none;
 | 
			
		||||
  width: 100%;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
</style>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										44
									
								
								src/views/OperationalOverview/components/colorDiv.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,44 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Date: 2021-02-20 10:45:21
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @LastEditTime: 2024-01-09 16:16:43
 | 
			
		||||
 * @FilePath: \basic-admin\src\views\EquipmentManager\TypeParamSetting\ColorSqua.vue
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <span :class="[injectData.product <= 91 ? 'orange' : 'white']" >
 | 
			
		||||
    {{ injectData.product + "%" }}
 | 
			
		||||
  </span>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
export default {
 | 
			
		||||
  props: {
 | 
			
		||||
    injectData: {
 | 
			
		||||
      type: Object,
 | 
			
		||||
      default: () => ({})
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      color: 'rgba(255,255,255,0.5)',
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  mounted() {
 | 
			
		||||
    this.product = this.injectData.product
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    emitClick() {
 | 
			
		||||
      console.log(this.injectData)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
<style  scoped>
 | 
			
		||||
.orange{
 | 
			
		||||
  color:rgba(255, 209, 96, 1)
 | 
			
		||||
}
 | 
			
		||||
.white{
 | 
			
		||||
  color:rgba(255, 255, 255, 0.5)
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-09-21 09:06:28
 | 
			
		||||
 * @LastEditTime: 2023-10-16 14:20:45
 | 
			
		||||
 * @LastEditTime: 2024-01-09 14:42:02
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
@@ -60,98 +60,16 @@ export default {
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      chart: null,
 | 
			
		||||
      series: []
 | 
			
		||||
      series: [{
 | 
			
		||||
        type: 'bar',
 | 
			
		||||
        data: [],
 | 
			
		||||
        barWidth: 6
 | 
			
		||||
      }]
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  mounted() {
 | 
			
		||||
    console.log('mounted')
 | 
			
		||||
    console.log('borderRadius: ', this.borderRadius)
 | 
			
		||||
 | 
			
		||||
    this.series = [
 | 
			
		||||
      {
 | 
			
		||||
        name: this.dataList[0].name,
 | 
			
		||||
        type: 'bar',
 | 
			
		||||
        itemStyle: {
 | 
			
		||||
          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
 | 
			
		||||
            { offset: 0, color: this.dataList[0].topColor },
 | 
			
		||||
            { offset: 1, color: this.dataList[0].bottomColor }
 | 
			
		||||
          ]),
 | 
			
		||||
          barBorderRadius: this.borderRadius
 | 
			
		||||
        },
 | 
			
		||||
        data: this.dataList[0].data,
 | 
			
		||||
        barWidth: 6
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        name: this.dataList[1].name,
 | 
			
		||||
        type: 'bar',
 | 
			
		||||
        itemStyle: {
 | 
			
		||||
          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
 | 
			
		||||
            { offset: 0, color: this.dataList[1].topColor },
 | 
			
		||||
            { offset: 1, color: this.dataList[1].bottomColor }
 | 
			
		||||
          ]),
 | 
			
		||||
          barBorderRadius: this.borderRadius
 | 
			
		||||
        },
 | 
			
		||||
        data: this.dataList[1].data,
 | 
			
		||||
        barWidth: 6
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        name: this.dataList[2].name,
 | 
			
		||||
        type: 'bar',
 | 
			
		||||
        itemStyle: {
 | 
			
		||||
          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
 | 
			
		||||
            { offset: 0, color: this.dataList[2].topColor },
 | 
			
		||||
            { offset: 1, color: this.dataList[2].bottomColor }
 | 
			
		||||
          ]),
 | 
			
		||||
          // borderRadius: [5, 5, 0, 0]
 | 
			
		||||
          barBorderRadius: this.borderRadius
 | 
			
		||||
        },
 | 
			
		||||
        data: this.dataList[2].data,
 | 
			
		||||
        barWidth: 6
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        name: this.dataList[3].name,
 | 
			
		||||
        type: 'bar',
 | 
			
		||||
        itemStyle: {
 | 
			
		||||
          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
 | 
			
		||||
            { offset: 0, color: this.dataList[3].topColor },
 | 
			
		||||
            { offset: 1, color: this.dataList[3].bottomColor }
 | 
			
		||||
          ]),
 | 
			
		||||
          // borderRadius: [5, 5, 0, 0]
 | 
			
		||||
          barBorderRadius: this.borderRadius
 | 
			
		||||
        },
 | 
			
		||||
        data: this.dataList[3].data,
 | 
			
		||||
        barWidth: 6
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        name: this.dataList[4].name,
 | 
			
		||||
        type: 'bar',
 | 
			
		||||
        itemStyle: {
 | 
			
		||||
          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
 | 
			
		||||
            { offset: 0, color: this.dataList[4].topColor },
 | 
			
		||||
            { offset: 1, color: this.dataList[4].bottomColor }
 | 
			
		||||
          ]),
 | 
			
		||||
          // borderRadius: [5, 5, 0, 0]
 | 
			
		||||
          barBorderRadius: this.borderRadius
 | 
			
		||||
        },
 | 
			
		||||
        data: this.dataList[4].data,
 | 
			
		||||
        barWidth: 6
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        name: this.dataList[5].name,
 | 
			
		||||
        type: 'bar',
 | 
			
		||||
        itemStyle: {
 | 
			
		||||
          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
 | 
			
		||||
            { offset: 0, color: this.dataList[5].topColor },
 | 
			
		||||
            { offset: 1, color: this.dataList[5].bottomColor }
 | 
			
		||||
          ]),
 | 
			
		||||
          // borderRadius: [5, 5, 0, 0]
 | 
			
		||||
          barBorderRadius: this.borderRadius
 | 
			
		||||
        },
 | 
			
		||||
        data: this.dataList[5].data,
 | 
			
		||||
        barWidth: 6
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    this.$nextTick(() => {
 | 
			
		||||
      this.initChart()
 | 
			
		||||
    })
 | 
			
		||||
@@ -164,12 +82,65 @@ export default {
 | 
			
		||||
    this.chart = null
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    initChart() {
 | 
			
		||||
      console.log(1)
 | 
			
		||||
      const colors = ['#5470C6', '#91CC75', '#EE6666']
 | 
			
		||||
    initChart(nameList, passRateList, outputNumList) {
 | 
			
		||||
     let  series= [
 | 
			
		||||
        {
 | 
			
		||||
          name: '产线产量',
 | 
			
		||||
          type: 'bar',
 | 
			
		||||
          yAxisIndex: 1,
 | 
			
		||||
         itemStyle: {
 | 
			
		||||
           normal: {
 | 
			
		||||
             color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
 | 
			
		||||
               { offset: 0, color: '#9DD5FF' },
 | 
			
		||||
               { offset: 0.3, color: '#1295FF' }
 | 
			
		||||
             ]),
 | 
			
		||||
             label: {
 | 
			
		||||
               show: true,		//开启显示
 | 
			
		||||
               position: 'top',	//在上方显示
 | 
			
		||||
               textStyle: {	    //数值样式
 | 
			
		||||
                 color: '#ced1d5',
 | 
			
		||||
                 fontSize: 12
 | 
			
		||||
               }
 | 
			
		||||
             },
 | 
			
		||||
            }
 | 
			
		||||
            // barBorderRadius: this.borderRadius
 | 
			
		||||
          },
 | 
			
		||||
          barWidth: 12,
 | 
			
		||||
         data: outputNumList
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          name: '产线良品率',
 | 
			
		||||
          symbol: 'circle', //变为实心圆
 | 
			
		||||
          type: 'line',
 | 
			
		||||
          yAxisIndex: 0,
 | 
			
		||||
          areaStyle: {
 | 
			
		||||
            opacity: 0.8,
 | 
			
		||||
            color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
 | 
			
		||||
              {
 | 
			
		||||
                offset: 0,
 | 
			
		||||
                color: 'rgba(255, 209, 96, 0.18)'
 | 
			
		||||
              },
 | 
			
		||||
              {
 | 
			
		||||
                offset: 1,
 | 
			
		||||
                color: 'rgba(255, 234, 153, 0)'
 | 
			
		||||
              }
 | 
			
		||||
            ])
 | 
			
		||||
          },
 | 
			
		||||
          itemStyle: {
 | 
			
		||||
            normal: {
 | 
			
		||||
              color: 'rgba(255, 209, 96, 1)', //改变折线点的颜色
 | 
			
		||||
              lineStyle: {
 | 
			
		||||
                color: 'rgba(255, 209, 96, 1)' //改变折线颜色
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
          },
 | 
			
		||||
          data: passRateList
 | 
			
		||||
        }
 | 
			
		||||
      ]
 | 
			
		||||
      // const colors = ['#5470C6', '#91CC75', '#EE6666']
 | 
			
		||||
      this.chart = echarts.init(document.getElementById(this.id))
 | 
			
		||||
      this.chart.setOption({
 | 
			
		||||
        color: colors,
 | 
			
		||||
        // color: colors,
 | 
			
		||||
        tooltip: {
 | 
			
		||||
          trigger: 'axis',
 | 
			
		||||
          axisPointer: {
 | 
			
		||||
@@ -177,7 +148,12 @@ export default {
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        grid: {
 | 
			
		||||
          right: '20%'
 | 
			
		||||
          left: "3%",
 | 
			
		||||
          right: "5%",
 | 
			
		||||
          bottom: "3%",
 | 
			
		||||
          width: 'auto',
 | 
			
		||||
          height: "auto",
 | 
			
		||||
          containLabel: true
 | 
			
		||||
        },
 | 
			
		||||
        legend: {
 | 
			
		||||
          data: ['产线产量', '产线良品率'],
 | 
			
		||||
@@ -205,7 +181,7 @@ export default {
 | 
			
		||||
              color: '#213259'
 | 
			
		||||
            }
 | 
			
		||||
          },
 | 
			
		||||
          data: ['钢一线', '钢二线', '钢三线', '钢四线', '钢五线', '钢六线', '钢七线', '钢八线']
 | 
			
		||||
          data: nameList
 | 
			
		||||
        },
 | 
			
		||||
        // yAxis: {
 | 
			
		||||
 | 
			
		||||
@@ -222,11 +198,13 @@ export default {
 | 
			
		||||
            type: 'value',
 | 
			
		||||
            name: '良品率/%',
 | 
			
		||||
            nameTextStyle: {// y轴上方单位的颜色
 | 
			
		||||
              color: '#fff'
 | 
			
		||||
              color: '#fff',
 | 
			
		||||
              align: "left",
 | 
			
		||||
            },
 | 
			
		||||
            position: 'right',
 | 
			
		||||
            alignTicks: true,
 | 
			
		||||
            axisLine: {
 | 
			
		||||
              show: true,
 | 
			
		||||
              lineStyle: {
 | 
			
		||||
                type: 'solid',
 | 
			
		||||
                color: '#213259', // 左边线的颜色
 | 
			
		||||
@@ -236,8 +214,7 @@ export default {
 | 
			
		||||
            axisLabel: {
 | 
			
		||||
              textStyle: {
 | 
			
		||||
                color: '#ced1d5', // 坐标值得具体的颜色
 | 
			
		||||
                formatter: '{value} 片'
 | 
			
		||||
 | 
			
		||||
                formatter: '{value}%'
 | 
			
		||||
              }
 | 
			
		||||
            },
 | 
			
		||||
            splitLine: {
 | 
			
		||||
@@ -262,13 +239,16 @@ export default {
 | 
			
		||||
            },
 | 
			
		||||
            scale: true,
 | 
			
		||||
            type: 'value',
 | 
			
		||||
            name: '产量/片', // y轴上方的单位
 | 
			
		||||
            nameTextStyle: {// y轴上方单位的颜色
 | 
			
		||||
              color: '#fff'
 | 
			
		||||
            name: '产量/㎡', // y轴上方的单位
 | 
			
		||||
            nameTextStyle: {
 | 
			
		||||
              color: "#fff",
 | 
			
		||||
              // fontSize: 10,
 | 
			
		||||
              align: "right",
 | 
			
		||||
            },
 | 
			
		||||
            position: 'left',
 | 
			
		||||
            alignTicks: true,
 | 
			
		||||
            axisLine: {
 | 
			
		||||
              show: true,
 | 
			
		||||
              lineStyle: {
 | 
			
		||||
                type: 'solid',
 | 
			
		||||
                color: '#213259', // 左边线的颜色
 | 
			
		||||
@@ -295,29 +275,7 @@ export default {
 | 
			
		||||
            // },
 | 
			
		||||
          }
 | 
			
		||||
        ],
 | 
			
		||||
        series: [
 | 
			
		||||
          {
 | 
			
		||||
            name: '产线产量',
 | 
			
		||||
            type: 'bar',
 | 
			
		||||
            yAxisIndex: 1,
 | 
			
		||||
            itemStyle: {
 | 
			
		||||
              color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
 | 
			
		||||
                { offset: 0, color: '#9DD5FF' },
 | 
			
		||||
                { offset: 1, color: '#1295FF' }
 | 
			
		||||
              ])
 | 
			
		||||
              // barBorderRadius: this.borderRadius
 | 
			
		||||
            },
 | 
			
		||||
            data: [
 | 
			
		||||
              2032, 3032, 1802, 2932, 2322, 2613, 2873, 2561
 | 
			
		||||
            ]
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            name: '产线良品率',
 | 
			
		||||
            type: 'line',
 | 
			
		||||
            yAxisIndex: 0,
 | 
			
		||||
            data: [98, 97, 94, 97.6, 98.2, 98.2, 97.4, 98.5]
 | 
			
		||||
          }
 | 
			
		||||
        ]
 | 
			
		||||
        series: series
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
@@ -41,113 +41,39 @@ export default {
 | 
			
		||||
      type: Boolean,
 | 
			
		||||
      default: false
 | 
			
		||||
    },
 | 
			
		||||
    nameList: {
 | 
			
		||||
      type: Array,
 | 
			
		||||
      default: () => []
 | 
			
		||||
    },
 | 
			
		||||
    dataList: {
 | 
			
		||||
      type: Array,
 | 
			
		||||
      default: () => []
 | 
			
		||||
    }
 | 
			
		||||
    // nameList: {
 | 
			
		||||
    //   type: Array,
 | 
			
		||||
    //   default: () => []
 | 
			
		||||
    // },
 | 
			
		||||
    // dataList: {
 | 
			
		||||
    //   type: Array,
 | 
			
		||||
    //   default: () => []
 | 
			
		||||
    // }
 | 
			
		||||
  },
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      chart: null,
 | 
			
		||||
      series: []
 | 
			
		||||
      nameList: [],
 | 
			
		||||
      series: [{
 | 
			
		||||
        type: 'bar',
 | 
			
		||||
        data: [],
 | 
			
		||||
        barWidth: 6
 | 
			
		||||
 | 
			
		||||
      }]
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  mounted() {
 | 
			
		||||
    console.log('mounted')
 | 
			
		||||
    console.log('borderRadius: ', this.borderRadius)
 | 
			
		||||
 | 
			
		||||
    this.series = [
 | 
			
		||||
      {
 | 
			
		||||
        name: this.dataList[0].name,
 | 
			
		||||
        type: 'bar',
 | 
			
		||||
        itemStyle: {
 | 
			
		||||
          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
 | 
			
		||||
            { offset: 0, color: this.dataList[0].topColor },
 | 
			
		||||
            { offset: 1, color: this.dataList[0].bottomColor }
 | 
			
		||||
          ]),
 | 
			
		||||
          barBorderRadius: this.borderRadius
 | 
			
		||||
        },
 | 
			
		||||
        data: this.dataList[0].data,
 | 
			
		||||
        barWidth: 6
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        name: this.dataList[1].name,
 | 
			
		||||
        type: 'bar',
 | 
			
		||||
        itemStyle: {
 | 
			
		||||
          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
 | 
			
		||||
            { offset: 0, color: this.dataList[1].topColor },
 | 
			
		||||
            { offset: 1, color: this.dataList[1].bottomColor }
 | 
			
		||||
          ]),
 | 
			
		||||
          barBorderRadius: this.borderRadius
 | 
			
		||||
        },
 | 
			
		||||
        data: this.dataList[1].data,
 | 
			
		||||
        barWidth: 6
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        name: this.dataList[2].name,
 | 
			
		||||
        type: 'bar',
 | 
			
		||||
        itemStyle: {
 | 
			
		||||
          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
 | 
			
		||||
            { offset: 0, color: this.dataList[2].topColor },
 | 
			
		||||
            { offset: 1, color: this.dataList[2].bottomColor }
 | 
			
		||||
          ]),
 | 
			
		||||
          // borderRadius: [5, 5, 0, 0]
 | 
			
		||||
          barBorderRadius: this.borderRadius
 | 
			
		||||
        },
 | 
			
		||||
        data: this.dataList[2].data,
 | 
			
		||||
        barWidth: 6
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        name: this.dataList[3].name,
 | 
			
		||||
        type: 'bar',
 | 
			
		||||
        itemStyle: {
 | 
			
		||||
          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
 | 
			
		||||
            { offset: 0, color: this.dataList[3].topColor },
 | 
			
		||||
            { offset: 1, color: this.dataList[3].bottomColor }
 | 
			
		||||
          ]),
 | 
			
		||||
          // borderRadius: [5, 5, 0, 0]
 | 
			
		||||
          barBorderRadius: this.borderRadius
 | 
			
		||||
        },
 | 
			
		||||
        data: this.dataList[3].data,
 | 
			
		||||
        barWidth: 6
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        name: this.dataList[4].name,
 | 
			
		||||
        type: 'bar',
 | 
			
		||||
        itemStyle: {
 | 
			
		||||
          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
 | 
			
		||||
            { offset: 0, color: this.dataList[4].topColor },
 | 
			
		||||
            { offset: 1, color: this.dataList[4].bottomColor }
 | 
			
		||||
          ]),
 | 
			
		||||
          // borderRadius: [5, 5, 0, 0]
 | 
			
		||||
          barBorderRadius: this.borderRadius
 | 
			
		||||
        },
 | 
			
		||||
        data: this.dataList[4].data,
 | 
			
		||||
        barWidth: 6
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        name: this.dataList[5].name,
 | 
			
		||||
        type: 'bar',
 | 
			
		||||
        itemStyle: {
 | 
			
		||||
          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
 | 
			
		||||
            { offset: 0, color: this.dataList[5].topColor },
 | 
			
		||||
            { offset: 1, color: this.dataList[5].bottomColor }
 | 
			
		||||
          ]),
 | 
			
		||||
          // borderRadius: [5, 5, 0, 0]
 | 
			
		||||
          barBorderRadius: this.borderRadius
 | 
			
		||||
        },
 | 
			
		||||
        data: this.dataList[5].data,
 | 
			
		||||
        barWidth: 6
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    this.$nextTick(() => {
 | 
			
		||||
      this.initChart()
 | 
			
		||||
    })
 | 
			
		||||
    // console.log('33333', this.dataList)
 | 
			
		||||
    // let arr = []
 | 
			
		||||
    // this.dataList.forEach(ele => {
 | 
			
		||||
      // console.log(ele);
 | 
			
		||||
    // this.series = []
 | 
			
		||||
    this.initChart()
 | 
			
		||||
    // this.$nextTick(() => {
 | 
			
		||||
    //   // this.initChart()
 | 
			
		||||
    // })
 | 
			
		||||
  },
 | 
			
		||||
  beforeDestroy() {
 | 
			
		||||
    if (!this.chart) {
 | 
			
		||||
@@ -157,9 +83,20 @@ export default {
 | 
			
		||||
    this.chart = null
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    initChart() {
 | 
			
		||||
      console.log(1)
 | 
			
		||||
    initChart(nameList,dataList) {
 | 
			
		||||
      // console.log(1)
 | 
			
		||||
      this.chart = echarts.init(document.getElementById(this.id))
 | 
			
		||||
      if (dataList.length !== 0) {
 | 
			
		||||
        // this.$set(this.series, "data", dataList);
 | 
			
		||||
        this.series = [{
 | 
			
		||||
          type: 'bar',
 | 
			
		||||
          data: dataList,
 | 
			
		||||
          barWidth: 6
 | 
			
		||||
        }]
 | 
			
		||||
      }
 | 
			
		||||
      if (nameList.length !== 0) {
 | 
			
		||||
        this.nameList = nameList
 | 
			
		||||
      }
 | 
			
		||||
      this.chart.setOption({
 | 
			
		||||
        tooltip: {
 | 
			
		||||
          trigger: 'axis',
 | 
			
		||||
@@ -205,6 +142,7 @@ export default {
 | 
			
		||||
            }
 | 
			
		||||
          },
 | 
			
		||||
          axisLabel: {
 | 
			
		||||
            show: true,    // 是否显示 y 轴
 | 
			
		||||
            textStyle: {
 | 
			
		||||
              color: 'rgba(255,255,255,0.5)' // 坐标值得具体的颜色
 | 
			
		||||
            }
 | 
			
		||||
@@ -216,19 +154,19 @@ export default {
 | 
			
		||||
          },
 | 
			
		||||
          type: 'value'
 | 
			
		||||
        },
 | 
			
		||||
        legend: {
 | 
			
		||||
          itemHeight: 10,
 | 
			
		||||
          itemWidth: 10,
 | 
			
		||||
          x: 'center', // 可设定图例在左、右、居中
 | 
			
		||||
          y: 'top', // 可设定图例在上、下、居中
 | 
			
		||||
          show: this.showLegend,
 | 
			
		||||
          data: this.dataList,
 | 
			
		||||
          right: '1%',
 | 
			
		||||
          textStyle: {
 | 
			
		||||
            fontSize: 12 * this.beilv,
 | 
			
		||||
            color: '#ced1d5'
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        // legend: {
 | 
			
		||||
        //   itemHeight: 10,
 | 
			
		||||
        //   itemWidth: 10,
 | 
			
		||||
        //   x: 'center', // 可设定图例在左、右、居中
 | 
			
		||||
        //   y: 'top', // 可设定图例在上、下、居中
 | 
			
		||||
        //   show: this.showLegend,
 | 
			
		||||
        //   data: this.dataList,
 | 
			
		||||
        //   right: '1%',
 | 
			
		||||
        //   textStyle: {
 | 
			
		||||
        //     fontSize: 12 * this.beilv,
 | 
			
		||||
        //     color: '#ced1d5'
 | 
			
		||||
        //   }
 | 
			
		||||
        // },
 | 
			
		||||
        series: this.series
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										215
									
								
								src/views/OperationalOverview/components/pileBarChart.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,215 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-12-27 13:54:52
 | 
			
		||||
 * @LastEditTime: 2023-12-29 16:28:26
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <div>
 | 
			
		||||
    <div :id="id" :class="className" :style="{ height: height + 'px', width: width }" />
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import * as echarts from 'echarts';
 | 
			
		||||
import 'echarts/theme/macarons' // echarts theme
 | 
			
		||||
import resize from './mixins/resize'
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'OverviewBar',
 | 
			
		||||
  mixins: [resize],
 | 
			
		||||
  props: {
 | 
			
		||||
    id: {
 | 
			
		||||
      type: String,
 | 
			
		||||
      default: 'linearBarChart'
 | 
			
		||||
    },
 | 
			
		||||
    className: {
 | 
			
		||||
      type: String,
 | 
			
		||||
      default: 'chart'
 | 
			
		||||
    },
 | 
			
		||||
    width: {
 | 
			
		||||
      type: String,
 | 
			
		||||
      default: '100%'
 | 
			
		||||
    },
 | 
			
		||||
    borderRadius: {
 | 
			
		||||
      type: Array,
 | 
			
		||||
      default: () => [9, 9, 0, 0]
 | 
			
		||||
    },
 | 
			
		||||
    beilv: {
 | 
			
		||||
      type: Number,
 | 
			
		||||
      default: 1
 | 
			
		||||
    },
 | 
			
		||||
    height: {
 | 
			
		||||
      type: Number,
 | 
			
		||||
      default: 200
 | 
			
		||||
    },
 | 
			
		||||
    showLegend: {
 | 
			
		||||
      type: Boolean,
 | 
			
		||||
      default: false
 | 
			
		||||
    },
 | 
			
		||||
    // nameList: {
 | 
			
		||||
    //   type: Array,
 | 
			
		||||
    //   default: () => []
 | 
			
		||||
    // },
 | 
			
		||||
    // dataList: {
 | 
			
		||||
    //   type: Array,
 | 
			
		||||
    //   default: () => []
 | 
			
		||||
    // }
 | 
			
		||||
  },
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      chart: null,
 | 
			
		||||
      nameList: [],
 | 
			
		||||
      series: [{
 | 
			
		||||
        type: 'bar',
 | 
			
		||||
        data: [],
 | 
			
		||||
        barWidth: 6
 | 
			
		||||
 | 
			
		||||
      }]
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  mounted() {
 | 
			
		||||
    console.log('mounted')
 | 
			
		||||
    // console.log('borderRadius: ', this.borderRadius)
 | 
			
		||||
    // console.log('33333', this.dataList)
 | 
			
		||||
    // let arr = []
 | 
			
		||||
    // this.dataList.forEach(ele => {
 | 
			
		||||
      // console.log(ele);
 | 
			
		||||
    // this.series = []
 | 
			
		||||
    this.initChart()
 | 
			
		||||
    // this.$nextTick(() => {
 | 
			
		||||
    //   // this.initChart()
 | 
			
		||||
    // })
 | 
			
		||||
  },
 | 
			
		||||
  beforeDestroy() {
 | 
			
		||||
    if (!this.chart) {
 | 
			
		||||
      return
 | 
			
		||||
    }
 | 
			
		||||
    this.chart.dispose()
 | 
			
		||||
    this.chart = null
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    initChart(nameList, topNameList, nameWasteList, passRateList, wasteList) {
 | 
			
		||||
      // console.log(1)
 | 
			
		||||
      this.chart = echarts.init(document.getElementById(this.id))
 | 
			
		||||
      let series = [
 | 
			
		||||
        {
 | 
			
		||||
          // 辅助系列
 | 
			
		||||
          name: '良品',
 | 
			
		||||
          type: 'bar',
 | 
			
		||||
          stack: 'total',
 | 
			
		||||
          // silent: true,
 | 
			
		||||
          // itemStyle: {
 | 
			
		||||
            color: '#0fdedb',
 | 
			
		||||
          // },
 | 
			
		||||
          barWidth: 10,
 | 
			
		||||
          data: passRateList
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'bar',
 | 
			
		||||
          stack: 'total',
 | 
			
		||||
          name: '废品',
 | 
			
		||||
          data: wasteList,
 | 
			
		||||
          barWidth: 10,
 | 
			
		||||
          // barWidth: 15,
 | 
			
		||||
          // label: {
 | 
			
		||||
          //   position: [10, 10],
 | 
			
		||||
          //   normal: {
 | 
			
		||||
          //     position: [800, -24],
 | 
			
		||||
          //     show: true,
 | 
			
		||||
          //     textStyle: {
 | 
			
		||||
          //       color: '#2359ec',
 | 
			
		||||
          //       fontSize: 16,
 | 
			
		||||
          //     },
 | 
			
		||||
          //   },
 | 
			
		||||
          // },
 | 
			
		||||
        }
 | 
			
		||||
      ]
 | 
			
		||||
      // for (i = 0; i < 5; i++) {
 | 
			
		||||
      //   series.push({
 | 
			
		||||
 | 
			
		||||
      //   })
 | 
			
		||||
      // }
 | 
			
		||||
      this.chart.setOption({
 | 
			
		||||
        legend: {
 | 
			
		||||
          textStyle: {
 | 
			
		||||
            color: '#ffffff'
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        grid: {
 | 
			
		||||
          left: '3%',
 | 
			
		||||
          right: '4%',
 | 
			
		||||
          bottom: '3%',
 | 
			
		||||
          width: 'auto',
 | 
			
		||||
          height: 'auto',
 | 
			
		||||
          containLabel: true
 | 
			
		||||
        },
 | 
			
		||||
        yAxis: [
 | 
			
		||||
          {
 | 
			
		||||
            type: 'category',
 | 
			
		||||
            inverse: true,
 | 
			
		||||
            splitLine: {
 | 
			
		||||
              show: false
 | 
			
		||||
            },
 | 
			
		||||
            axisTick: {
 | 
			
		||||
              show: false
 | 
			
		||||
            },
 | 
			
		||||
            axisLine: {
 | 
			
		||||
              show: false
 | 
			
		||||
            },
 | 
			
		||||
            axisLabel: {
 | 
			
		||||
              show: true,
 | 
			
		||||
              inside: true,
 | 
			
		||||
              interval: 0, //横轴信息全部显
 | 
			
		||||
              splitNumber: 50,
 | 
			
		||||
              // boundaryGap: [20, 20],
 | 
			
		||||
              textStyle: {
 | 
			
		||||
                color: '#ffffff',
 | 
			
		||||
                verticalAlign: 'bottom',
 | 
			
		||||
                fontSize: 12,
 | 
			
		||||
                align: 'left',
 | 
			
		||||
                padding: [0, 0, 15, -5]
 | 
			
		||||
              }
 | 
			
		||||
            },
 | 
			
		||||
            data: topNameList
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            type: 'category',
 | 
			
		||||
            inverse: true,
 | 
			
		||||
            splitLine: {
 | 
			
		||||
              show: false
 | 
			
		||||
            },
 | 
			
		||||
            axisTick: {
 | 
			
		||||
              show: false
 | 
			
		||||
            },
 | 
			
		||||
            axisLine: {
 | 
			
		||||
              show: false
 | 
			
		||||
            },
 | 
			
		||||
            axisLabel: {
 | 
			
		||||
              show: true,
 | 
			
		||||
              inside: true,
 | 
			
		||||
              interval: 0, //横轴信息全部显
 | 
			
		||||
              splitNumber: 50,
 | 
			
		||||
              // boundaryGap: [20, 20],
 | 
			
		||||
              textStyle: {
 | 
			
		||||
                color: '#ffffff',
 | 
			
		||||
                verticalAlign: 'bottom',
 | 
			
		||||
                fontSize: 12,
 | 
			
		||||
                align: 'right',
 | 
			
		||||
                padding: [0, 0, 15, -5]
 | 
			
		||||
              }
 | 
			
		||||
            },
 | 
			
		||||
            data: nameWasteList
 | 
			
		||||
          }
 | 
			
		||||
        ],
 | 
			
		||||
        xAxis: {
 | 
			
		||||
          // max: 120,
 | 
			
		||||
          show: false,
 | 
			
		||||
        },
 | 
			
		||||
        series:series
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
@@ -2,21 +2,20 @@
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2021-07-19 15:18:30
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @LastEditTime: 2023-11-23 11:11:35
 | 
			
		||||
 * @LastEditTime: 2024-01-08 16:06:49
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <div id="container" ref="container" class="visual-container" :style="styles">
 | 
			
		||||
    <el-row
 | 
			
		||||
      class="container-title"
 | 
			
		||||
      :style="{
 | 
			
		||||
        height: 88 + 'px',
 | 
			
		||||
        lineHeight: 88 + 'px',
 | 
			
		||||
        fontSize: 31 + 'px'
 | 
			
		||||
      }"
 | 
			
		||||
    >
 | 
			
		||||
      <img src="../../assets/img/logo.png" style="width:1.1em;position:relative;top:.4em" alt="">
 | 
			
		||||
    <el-row class="container-title" :style="{
 | 
			
		||||
      height: 88 + 'px',
 | 
			
		||||
      lineHeight: 88 + 'px',
 | 
			
		||||
      fontSize: 31 + 'px'
 | 
			
		||||
    }">
 | 
			
		||||
      <img src="../../assets/img/logo.png" style="width:1.1em;position:relative;top:.22em" alt="">
 | 
			
		||||
      许昌安彩深加工看板
 | 
			
		||||
      <h3 class="unit">单位:河南汇融科技服务有限公司</h3>
 | 
			
		||||
      <h3 class="time">{{ times }}</h3>
 | 
			
		||||
      <!-- <el-button
 | 
			
		||||
        type="text"
 | 
			
		||||
        class="title-button"
 | 
			
		||||
@@ -28,39 +27,23 @@
 | 
			
		||||
      </el-button> -->
 | 
			
		||||
    </el-row>
 | 
			
		||||
    <el-row class="container-main flex-col" type="flex">
 | 
			
		||||
      <el-row :style="{ padding: '0 ' + 9 + 'px' }" :gutter="15" type="flex" class="flex-1">
 | 
			
		||||
        <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8">
 | 
			
		||||
          <base-container  :title="'设备报警'" :title-icon="'5_1'">
 | 
			
		||||
            <base-table1
 | 
			
		||||
              :page="1"
 | 
			
		||||
              :limit="9"
 | 
			
		||||
              :show-index="false"
 | 
			
		||||
              :table-config="qualityYearTableProps"
 | 
			
		||||
              :table-data="qualityYearList"
 | 
			
		||||
            />
 | 
			
		||||
      <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%">
 | 
			
		||||
          <base-container :title="'设备报警'" :size="'small'" :height="318" :title-icon="'eqAlarm'">
 | 
			
		||||
            <base-table1 :page="1" :limit="999" :show-index="false" :table-config="qualityYearTableProps"
 | 
			
		||||
              :table-data="equipmentList" />
 | 
			
		||||
          </base-container>
 | 
			
		||||
        </el-col>
 | 
			
		||||
 | 
			
		||||
        <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8">
 | 
			
		||||
          <base-container :title="'各工序缺陷汇总'" :title-icon="'5_2'">
 | 
			
		||||
            <div class="visual-select">
 | 
			
		||||
              <el-select class="coldSelect" v-model="modelMonth" size="mini" placeholder="">
 | 
			
		||||
                <el-option key="1" value="钢1线" label="钢1线" default />
 | 
			
		||||
              </el-select>
 | 
			
		||||
            </div>
 | 
			
		||||
            <base-table1
 | 
			
		||||
              :page="1"
 | 
			
		||||
              :limit="9"
 | 
			
		||||
              :show-index="false"
 | 
			
		||||
 | 
			
		||||
              :table-config="qualityMonthTableProps"
 | 
			
		||||
              :table-data="qualityMonthList"
 | 
			
		||||
            />
 | 
			
		||||
        <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8" height="100%">
 | 
			
		||||
          <base-container :title="'各工序缺陷汇总'" :size="'small'" :title-icon="'scrap'">
 | 
			
		||||
            <base-table1 :page="1" :limit="999" :show-index="false" :table-config="qualityMonthTableProps"
 | 
			
		||||
              :table-data="qualityMonthList" />
 | 
			
		||||
          </base-container>
 | 
			
		||||
        </el-col>
 | 
			
		||||
 | 
			
		||||
        <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8">
 | 
			
		||||
          <base-container  :title="'设备监控'" :title-icon="'5_3'">
 | 
			
		||||
        <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8" height="100%">
 | 
			
		||||
          <base-container :height="318" :size="'small'" :title="'工单监控'" :title-icon="'eqMonitoring'">
 | 
			
		||||
            <!-- <div style="width: 45%;position: absolute; top: 3em; right: 3em;">
 | 
			
		||||
              <top-radio-group />
 | 
			
		||||
            </div> -->
 | 
			
		||||
@@ -71,13 +54,15 @@
 | 
			
		||||
              <!-- <el-row style="margin-bottom: 1em">
 | 
			
		||||
                    <p class="now-team-title">加工工单进度</p>
 | 
			
		||||
                  </el-row> -->
 | 
			
		||||
              <el-row v-for="op in orderProcessList" :key="op.id" style="margin-bottom: 1em">
 | 
			
		||||
                <el-progress :percentage="op.outRate * 100" class="custom-progress-bar" />
 | 
			
		||||
                <p v-if="op.outRate === 1" class="now-secondary-title" style="color:#4679FD">
 | 
			
		||||
              <el-row v-for="op in orderList" :key="op.id" style="margin-bottom: 1em">
 | 
			
		||||
                <!-- <el-col :span="12"> -->
 | 
			
		||||
                <el-progress :percentage="op.progressRate * 100" class="custom-progress-bar" />
 | 
			
		||||
                <!-- <p v-if="op.progressRate === 1" class="now-secondary-title" style="color:#4679FD">
 | 
			
		||||
                  <i class="el-icon-check" />
 | 
			
		||||
                  {{ op.name }}
 | 
			
		||||
                </p>
 | 
			
		||||
                <p v-else class="now-secondary-title">{{ op.name }}</p>
 | 
			
		||||
                </p> -->
 | 
			
		||||
                <p class="now-secondary-title">{{ op.name }}</p>
 | 
			
		||||
                <!-- </el-col> -->
 | 
			
		||||
              </el-row>
 | 
			
		||||
              <!-- <el-row>
 | 
			
		||||
                    <el-progress :percentage="100" class="custom-progress-bar" />
 | 
			
		||||
@@ -110,19 +95,14 @@
 | 
			
		||||
 | 
			
		||||
      <el-row :style="{ padding: '0 ' + 9 + 'px' }" :gutter="12" type="flex" class="flex-1">
 | 
			
		||||
        <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
 | 
			
		||||
          <base-container  :height="256" :title="'能源监控'" :title-icon="'5_5'">
 | 
			
		||||
            <div style="width: 45%;position: absolute; top: 3em; right: 3em;">
 | 
			
		||||
          <base-container :height="256" :size="'middle'" :title="'能源监控'" :title-icon="'energyMonitoring'">
 | 
			
		||||
            <!-- <div style="width: 45%;position: absolute; top: 3em; right: 3em;">
 | 
			
		||||
              <top-radio-group />
 | 
			
		||||
            </div>
 | 
			
		||||
            </div> -->
 | 
			
		||||
            <el-row :gutter="9">
 | 
			
		||||
              <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="24">
 | 
			
		||||
                <linear-bar-chart
 | 
			
		||||
                  :name-list="cxNameList"
 | 
			
		||||
                  :data-list="cxDataList"
 | 
			
		||||
                  :height="359"
 | 
			
		||||
 | 
			
		||||
                  :show-legend="true"
 | 
			
		||||
                />
 | 
			
		||||
                <linear-bar-chart ref="EnergyMonitoringChart" :name-list="EnergyMonitoringNameList"
 | 
			
		||||
                  :data-list="EnergyMonitoringList" :height="359" />
 | 
			
		||||
              </el-col>
 | 
			
		||||
              <!-- <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
 | 
			
		||||
                <base-table3
 | 
			
		||||
@@ -137,19 +117,13 @@
 | 
			
		||||
          </base-container>
 | 
			
		||||
        </el-col>
 | 
			
		||||
        <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
 | 
			
		||||
          <base-container  :height="318 + 338 + 16" :title="'产线产量及良品率'" :title-icon="'5_4'">
 | 
			
		||||
            <div style="width: 45%;position: absolute; top: 3em; right: 3em;">
 | 
			
		||||
          <base-container :height="318 + 338 + 16" :size="'middle'" :title="'产线产量及良品率'" :title-icon="'productLine'">
 | 
			
		||||
            <!-- <div style="width: 45%;position: absolute; top: 3em; right: 3em;">
 | 
			
		||||
              <top-radio-group />
 | 
			
		||||
            </div>
 | 
			
		||||
            </div> -->
 | 
			
		||||
            <!-- 像下面这样表格里的limit值,也许可以用js动态计算出来 -->
 | 
			
		||||
            <double-y-chart
 | 
			
		||||
              :id=" 'doubleYChart' "
 | 
			
		||||
              :name-list="cxNameList"
 | 
			
		||||
              :data-list="cxDataList"
 | 
			
		||||
              :height="359"
 | 
			
		||||
 | 
			
		||||
              :show-legend="true"
 | 
			
		||||
            />
 | 
			
		||||
            <double-y-chart ref="productLineChart" :id=" 'doubleYChart' " :name-list="cxNameList"
 | 
			
		||||
              :data-list="cxDataList" :height="359" :show-legend="true" />
 | 
			
		||||
          </base-container>
 | 
			
		||||
        </el-col>
 | 
			
		||||
      </el-row>
 | 
			
		||||
@@ -424,22 +398,22 @@ const legendData3 = [
 | 
			
		||||
]
 | 
			
		||||
const qualityYearTableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'eqName',
 | 
			
		||||
    prop: 'name',
 | 
			
		||||
    label: '设备名称'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'eqCode',
 | 
			
		||||
    prop: 'code',
 | 
			
		||||
    label: '设备编码'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'level',
 | 
			
		||||
    label: '报警级别',
 | 
			
		||||
    subcomponent: alarmLevel,
 | 
			
		||||
    prop: 'status',
 | 
			
		||||
    label: '设备状态',
 | 
			
		||||
    // subcomponent: alarmLevel,
 | 
			
		||||
    align: 'center'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'content',
 | 
			
		||||
    label: '报警内容'
 | 
			
		||||
    prop: 'error',
 | 
			
		||||
    label: '是否故障'
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
@@ -463,206 +437,39 @@ const qualityYearList = [
 | 
			
		||||
]
 | 
			
		||||
const qualityMonthTableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'lineName',
 | 
			
		||||
    prop: 'productionLineName',
 | 
			
		||||
    label: '产线名'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'process',
 | 
			
		||||
    prop: 'sectionName',
 | 
			
		||||
    label: '工序'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'eqName',
 | 
			
		||||
    label: '设备名'
 | 
			
		||||
    prop: 'count',
 | 
			
		||||
    label: '损耗片数'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'eqCode',
 | 
			
		||||
    label: '设备编码'
 | 
			
		||||
    prop: 'inspectionTypeName',
 | 
			
		||||
    label: '缺陷类型'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'long',
 | 
			
		||||
    label: '总运行时长(h)'
 | 
			
		||||
  },
 | 
			
		||||
  // {
 | 
			
		||||
  //   prop: 'createTime',
 | 
			
		||||
  //   label: '保养时间'
 | 
			
		||||
  // },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'status',
 | 
			
		||||
    label: '设备状态'
 | 
			
		||||
  }
 | 
			
		||||
  // {
 | 
			
		||||
  //   prop: 'nextCreateTime',
 | 
			
		||||
  //   label: '下次保养时间'
 | 
			
		||||
  // }
 | 
			
		||||
  // {
 | 
			
		||||
  //   prop: 'nextLong',
 | 
			
		||||
  //   label: '距离保养时间(天)',
 | 
			
		||||
  //   // subcomponent: nextDay,
 | 
			
		||||
  //   align: 'center'
 | 
			
		||||
  // }
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
const qualityMonthList = [
 | 
			
		||||
  {
 | 
			
		||||
    lineName: '钢一线',
 | 
			
		||||
    process: '41',
 | 
			
		||||
    eqName: '二次清洗机',
 | 
			
		||||
    eqCode: '2312312',
 | 
			
		||||
    long: '200',
 | 
			
		||||
    // createTime: '2021-02-25 12:00:01',
 | 
			
		||||
    status: '报警'
 | 
			
		||||
    // nextCreateTime: '2022-12-25 12:00:01',
 | 
			
		||||
    // nextLong: 365
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    lineName: '钢二线',
 | 
			
		||||
    process: '41',
 | 
			
		||||
    eqName: '锻造机',
 | 
			
		||||
    eqCode: '43434',
 | 
			
		||||
    long: '252',
 | 
			
		||||
    // createTime: '2021-11-25 12:00:01',
 | 
			
		||||
    status: '正常'
 | 
			
		||||
    // nextCreateTime: '2022-12-25 12:00:01',
 | 
			
		||||
    // nextLong: 4
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    lineName: '钢三线',
 | 
			
		||||
    process: '41',
 | 
			
		||||
    eqName: '设备3',
 | 
			
		||||
    eqCode: '23213212',
 | 
			
		||||
    long: '100',
 | 
			
		||||
    // createTime: '2021-10-25 12:00:01',
 | 
			
		||||
    status: '故障停机'
 | 
			
		||||
    // nextCreateTime: '2022-12-25 12:00:01',
 | 
			
		||||
    // nextLong: 24
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    lineName: '钢四线',
 | 
			
		||||
    process: '41',
 | 
			
		||||
    eqName: '设备4',
 | 
			
		||||
    eqCode: '23213',
 | 
			
		||||
    long: '322',
 | 
			
		||||
    // createTime: '2021-02-25 12:00:01',
 | 
			
		||||
    status: '故障停机'
 | 
			
		||||
    // nextCreateTime: '2022-12-25 12:00:01',
 | 
			
		||||
    // nextLong: -36
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    lineName: '钢五线',
 | 
			
		||||
    process: '41',
 | 
			
		||||
    eqName: '设备5',
 | 
			
		||||
    eqCode: '23121312',
 | 
			
		||||
    long: '232',
 | 
			
		||||
    // createTime: '2021-06-25 12:00:01',
 | 
			
		||||
    status: '待机'
 | 
			
		||||
    // nextCreateTime: '2022-12-25 12:00:01',
 | 
			
		||||
    // nextLong: 111
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    lineName: '钢五线',
 | 
			
		||||
    process: '41',
 | 
			
		||||
    eqName: '设备5',
 | 
			
		||||
    eqCode: '23121312',
 | 
			
		||||
    long: '212',
 | 
			
		||||
    // createTime: '2021-06-25 12:00:01',
 | 
			
		||||
    status: '待机'
 | 
			
		||||
    // nextCreateTime: '2022-12-25 12:00:01',
 | 
			
		||||
    // nextLong: 111
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    lineName: '钢五线',
 | 
			
		||||
    process: '41',
 | 
			
		||||
    eqName: '设备5',
 | 
			
		||||
    eqCode: '23121312',
 | 
			
		||||
    long: '123',
 | 
			
		||||
    // createTime: '2021-06-25 12:00:01',
 | 
			
		||||
    status: '镀膜机'
 | 
			
		||||
    // nextCreateTime: '2022-12-25 12:00:01',
 | 
			
		||||
    // nextLong: 111
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    lineName: '钢五线',
 | 
			
		||||
    process: '41',
 | 
			
		||||
    eqName: '清洗机',
 | 
			
		||||
    eqCode: '23121312',
 | 
			
		||||
    long: '322',
 | 
			
		||||
    // createTime: '2021-06-25 12:00:01',
 | 
			
		||||
    status: 'Remote'
 | 
			
		||||
    // nextCreateTime: '2022-12-25 12:00:01',
 | 
			
		||||
    // nextLong: 111
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    lineName: '钢五线',
 | 
			
		||||
    process: '41',
 | 
			
		||||
    eqName: '磨边机',
 | 
			
		||||
    eqCode: '23121312',
 | 
			
		||||
    long: '232',
 | 
			
		||||
    // createTime: '2021-06-25 12:00:01',
 | 
			
		||||
    status: 'Non-scheduled'
 | 
			
		||||
    // nextCreateTime: '2022-12-25 12:00:01',
 | 
			
		||||
    // nextLong: 111
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    lineName: '钢五线',
 | 
			
		||||
    process: '41',
 | 
			
		||||
    eqName: '磨边机',
 | 
			
		||||
    eqCode: '23121312',
 | 
			
		||||
    long: '232',
 | 
			
		||||
    // createTime: '2021-06-25 12:00:01',
 | 
			
		||||
    status: 'Non-scheduled'
 | 
			
		||||
    // nextCreateTime: '2022-12-25 12:00:01',
 | 
			
		||||
    // nextLong: 111
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    lineName: '钢五线',
 | 
			
		||||
    process: '41',
 | 
			
		||||
    eqName: '磨边机',
 | 
			
		||||
    eqCode: '23121312',
 | 
			
		||||
    long: '232',
 | 
			
		||||
    // createTime: '2021-06-25 12:00:01',
 | 
			
		||||
    status: 'Non-scheduled'
 | 
			
		||||
    // nextCreateTime: '2022-12-25 12:00:01',
 | 
			
		||||
    // nextLong: 111
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    lineName: '钢五线',
 | 
			
		||||
    process: '41',
 | 
			
		||||
    eqName: '磨边机',
 | 
			
		||||
    eqCode: '23121312',
 | 
			
		||||
    long: '232',
 | 
			
		||||
    // createTime: '2021-06-25 12:00:01',
 | 
			
		||||
    status: 'Non-scheduled'
 | 
			
		||||
    // nextCreateTime: '2022-12-25 12:00:01',
 | 
			
		||||
    // nextLong: 111
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    lineName: '钢五线',
 | 
			
		||||
    process: '41',
 | 
			
		||||
    eqName: '磨边机',
 | 
			
		||||
    eqCode: '23121312',
 | 
			
		||||
    long: '232',
 | 
			
		||||
    // createTime: '2021-06-25 12:00:01',
 | 
			
		||||
    status: 'Non-scheduled'
 | 
			
		||||
    // nextCreateTime: '2022-12-25 12:00:01',
 | 
			
		||||
    // nextLong: 111
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
const orderProcessList = [
 | 
			
		||||
  {
 | 
			
		||||
    id: '1', outRate: '.8', name: '凯盛0322'
 | 
			
		||||
  }, {
 | 
			
		||||
    id: '1', outRate: '.4', name: '光伏玻璃4.0'
 | 
			
		||||
    id: '2', outRate: '.4', name: '光伏玻璃4.0'
 | 
			
		||||
  }, {
 | 
			
		||||
    id: '1', outRate: '.5', name: '光伏玻璃3.0'
 | 
			
		||||
    id: '3', outRate: '.5', name: '光伏玻璃3.0'
 | 
			
		||||
  }, {
 | 
			
		||||
    id: '1', outRate: '.3', name: '光伏玻璃2.0'
 | 
			
		||||
    id: '4', outRate: '.3', name: '光伏玻璃2.0'
 | 
			
		||||
  }, {
 | 
			
		||||
    id: '1', outRate: '.5', name: '光伏玻璃1.0'
 | 
			
		||||
    id: '5', outRate: '.5', name: '光伏玻璃1.0'
 | 
			
		||||
  }, {
 | 
			
		||||
    id: '1', outRate: '.8', name: '光伏玻璃'
 | 
			
		||||
    id: '6', outRate: '.8', name: '光伏玻璃'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    id: '1', outRate: '.8', name: '统计订单'
 | 
			
		||||
    id: '7', outRate: '.8', name: '统计订单'
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
export default {
 | 
			
		||||
@@ -685,10 +492,16 @@ export default {
 | 
			
		||||
      beilv2: 1,
 | 
			
		||||
      beilv: 1,
 | 
			
		||||
      value: 100,
 | 
			
		||||
      orderList:[],
 | 
			
		||||
      times: '',
 | 
			
		||||
      EnergyMonitoringNameList: [],
 | 
			
		||||
      equipmentList:[],
 | 
			
		||||
      EnergyMonitoringList: [],
 | 
			
		||||
      // offsetWidth: null,
 | 
			
		||||
      qualityYearTableProps,
 | 
			
		||||
      cxNameList,
 | 
			
		||||
      cxDataList,
 | 
			
		||||
      productLineList:[],
 | 
			
		||||
      qualityYearList,
 | 
			
		||||
      clientWidth: 0,
 | 
			
		||||
      containerWidth: 111111,
 | 
			
		||||
@@ -696,7 +509,7 @@ export default {
 | 
			
		||||
      // orderProcessList: [],
 | 
			
		||||
      orderProcessList,
 | 
			
		||||
      qualityTableProps1,
 | 
			
		||||
      qualityMonthList,
 | 
			
		||||
      qualityMonthList:[],
 | 
			
		||||
      qualityMonthTableProps,
 | 
			
		||||
      modelMonth: '',
 | 
			
		||||
      qualityList1,
 | 
			
		||||
@@ -742,7 +555,18 @@ export default {
 | 
			
		||||
    this.init()
 | 
			
		||||
  },
 | 
			
		||||
  mounted() {
 | 
			
		||||
    this.windowWidth(document.documentElement.clientWidth)
 | 
			
		||||
    this.getList()
 | 
			
		||||
    this.initWebSocket()
 | 
			
		||||
    this.SJGInitWebSocket()
 | 
			
		||||
    this.getTimes()
 | 
			
		||||
    const _this = this;
 | 
			
		||||
    _this.beilv2 = document.documentElement.clientWidth / 1920
 | 
			
		||||
    window.onresize = () => {
 | 
			
		||||
      return (() => {
 | 
			
		||||
        _this.clientWidth = `${document.documentElement.clientWidth}`
 | 
			
		||||
        this.beilv2 = _this.clientWidth / 1920
 | 
			
		||||
      })()
 | 
			
		||||
    }
 | 
			
		||||
    // const _this = this;
 | 
			
		||||
    // window.onresize = () => {
 | 
			
		||||
    //   return (() => {
 | 
			
		||||
@@ -768,6 +592,215 @@ export default {
 | 
			
		||||
  //   removeEventListener('resize', resizeFun)
 | 
			
		||||
  // },
 | 
			
		||||
  methods: {
 | 
			
		||||
    getList() {
 | 
			
		||||
      this.$axios.get(
 | 
			
		||||
        'base/core-production-line/listAll',
 | 
			
		||||
        'get',
 | 
			
		||||
        this.queryParams
 | 
			
		||||
      ).then((res) => {
 | 
			
		||||
        // console.log('11111', res);
 | 
			
		||||
        this.productLineList = res.data
 | 
			
		||||
      })
 | 
			
		||||
      this.$axios.get(
 | 
			
		||||
        'base/quality-inspection-record/dayStatistics',
 | 
			
		||||
        'get',
 | 
			
		||||
      ).then((res) => {
 | 
			
		||||
        // console.log('11111', res);
 | 
			
		||||
        this.qualityMonthList = res.data ? res.data : []
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    getTimes() {
 | 
			
		||||
      setInterval(this.getTimesInterval, 1000);
 | 
			
		||||
    },
 | 
			
		||||
    getTimesInterval: function () {
 | 
			
		||||
      let _this = this;
 | 
			
		||||
      let year = new Date().getFullYear(); //获取当前时间的年份
 | 
			
		||||
      let month = new Date().getMonth() + 1; //获取当前时间的月份
 | 
			
		||||
      let day = new Date().getDate(); //获取当前时间的天数
 | 
			
		||||
      let hours = new Date().getHours(); //获取当前时间的小时
 | 
			
		||||
      let minutes = new Date().getMinutes(); //获取当前时间的分数
 | 
			
		||||
      let seconds = new Date().getSeconds(); //获取当前时间的秒数
 | 
			
		||||
      //当小于 10 的是时候,在前面加 0
 | 
			
		||||
      if (hours < 10) {
 | 
			
		||||
        hours = "0" + hours;
 | 
			
		||||
      }
 | 
			
		||||
      if (minutes < 10) {
 | 
			
		||||
        minutes = "0" + minutes;
 | 
			
		||||
      }
 | 
			
		||||
      if (seconds < 10) {
 | 
			
		||||
        seconds = "0" + seconds;
 | 
			
		||||
      }
 | 
			
		||||
      //拼接格式化当前时间
 | 
			
		||||
      this.times = year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;
 | 
			
		||||
    },
 | 
			
		||||
    initWebSocket() {
 | 
			
		||||
      if (typeof (WebSocket) === 'undefined') {
 | 
			
		||||
        alert('您的浏览器不支持WebSocket')
 | 
			
		||||
      } else {
 | 
			
		||||
        let date = new Date().valueOf()
 | 
			
		||||
        const wsUrl = process.env.VUE_APP_Socket_API + `/websocket/message?userId=EN${date}`
 | 
			
		||||
        // const wsUrl = 'ws://192.168.1.104:48082/websocket/message?userId=SJG'
 | 
			
		||||
        // const wsUrl = 'ws://10.70.2.2:8080/websocket/message?userId=EN111'
 | 
			
		||||
        // 实例化 WebSocket
 | 
			
		||||
        this.websocket = new WebSocket(wsUrl)
 | 
			
		||||
        // 监听 WebSocket 连接
 | 
			
		||||
        this.websocket.onopen = this.websocketOnOpen
 | 
			
		||||
        // 监听 WebSocket 错误信息
 | 
			
		||||
        this.websocket.onerror = this.websocketOnError
 | 
			
		||||
        // 监听 WebSocket 消息
 | 
			
		||||
        this.websocket.onmessage = this.websocketOnMessage
 | 
			
		||||
        // 监听 webSocket 断开信息
 | 
			
		||||
        this.websocket.onclose = this.websocketClose
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    SJGInitWebSocket() {
 | 
			
		||||
      if (typeof (WebSocket) === 'undefined') {
 | 
			
		||||
        alert('您的浏览器不支持WebSocket')
 | 
			
		||||
      } else {
 | 
			
		||||
        // const wsUrl = `ws://10.70.2.2:8080/websocket/message?userId=EN${date}`
 | 
			
		||||
        // const wsUrl = 'ws://192.168.1.104:48082/websocket/message?userId=SJG'
 | 
			
		||||
        let date = new Date().valueOf()
 | 
			
		||||
        // console.log(date);
 | 
			
		||||
        console.log(process.env);
 | 
			
		||||
        const SJGWsUrl = process.env.VUE_APP_Socket_API + `/websocket/message?userId=SJG${date}`
 | 
			
		||||
        this.SJGWebsocket = new WebSocket(SJGWsUrl)
 | 
			
		||||
        // 监听 WebSocket 连接
 | 
			
		||||
        this.SJGWebsocket.onopen = this.SJGWebsocketOnOpen
 | 
			
		||||
        // 监听 WebSocket 错误信息
 | 
			
		||||
        this.SJGWebsocket.onerror = this.SJGWebsocketOnError
 | 
			
		||||
        // 监听 WebSocket 消息
 | 
			
		||||
        this.SJGWebsocket.onmessage = this.SJGWebsocketOnMessage
 | 
			
		||||
        // 监听 webSocket 断开信息
 | 
			
		||||
        this.SJGWebsocket.onclose = this.SJGWebsocketClose
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    SJGWebsocketOnOpen() {
 | 
			
		||||
      console.log('socket连接成功')
 | 
			
		||||
      // console.log(this.SJGWebsocket.onmessage);
 | 
			
		||||
      this.SJGWebsocket.onmessage()
 | 
			
		||||
    },
 | 
			
		||||
    // 连接建立失败重连
 | 
			
		||||
    SJGWebsocketOnError(e) {
 | 
			
		||||
      // console.log('11111', e)
 | 
			
		||||
      this.SJGInitWebSocket()
 | 
			
		||||
    },
 | 
			
		||||
    // 数据接收
 | 
			
		||||
    SJGWebsocketOnMessage(e) {
 | 
			
		||||
      // console.log(1111, e)
 | 
			
		||||
      this.SJGWsData = e?.data ? JSON.parse(e?.data) : {}
 | 
			
		||||
      // console.log(this.wsData.detData);
 | 
			
		||||
      // console.log('22222', this.wsData.data)
 | 
			
		||||
      if (this.SJGWsData.type === 'order') {
 | 
			
		||||
        this.orderList = this.SJGWsData.detData.map((ele, index) => {
 | 
			
		||||
          if (ele.progressRate != 1) {
 | 
			
		||||
            return {
 | 
			
		||||
              id: ele.id,
 | 
			
		||||
              name: ele.name,
 | 
			
		||||
              progressRate: ele.progressRate.toFixed(3)
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        });
 | 
			
		||||
        console.log(this.orderList)
 | 
			
		||||
      } else if (this.SJGWsData.type === 'equipment') {
 | 
			
		||||
        this.equipmentList = this.SJGWsData.detData.map((ele, index) => {
 | 
			
		||||
          // if (ele.progressRate != 1) {
 | 
			
		||||
            return {
 | 
			
		||||
              id: ele.id,
 | 
			
		||||
              name: ele.name,
 | 
			
		||||
              code: ele.code,
 | 
			
		||||
              status: ele.status,
 | 
			
		||||
              error: ele.error=== true ? '是' : '否'
 | 
			
		||||
            }
 | 
			
		||||
          // }
 | 
			
		||||
        });
 | 
			
		||||
        // console.log(SJGWsData.orderList)
 | 
			
		||||
      } else if (this.SJGWsData.type === 'productline') {
 | 
			
		||||
        // console.log(this.wsData.detData);
 | 
			
		||||
        let nameList = []
 | 
			
		||||
        let passRateList = []
 | 
			
		||||
        let outputNumList = []
 | 
			
		||||
 | 
			
		||||
        // console.log('2222222222', this.productLineList);
 | 
			
		||||
        this.productLineList.forEach((item) => {
 | 
			
		||||
          this.SJGWsData.detData.forEach((ele) => {
 | 
			
		||||
            if (item.id == ele.productionLineId) {
 | 
			
		||||
              nameList.push(item.name)
 | 
			
		||||
            }
 | 
			
		||||
          })
 | 
			
		||||
        })
 | 
			
		||||
        // progressRateList = EnergyNameList
 | 
			
		||||
        // let EnergyDataList = []
 | 
			
		||||
        this.SJGWsData.detData.forEach((ele) => {
 | 
			
		||||
          passRateList.push(ele.passRate *100
 | 
			
		||||
          )
 | 
			
		||||
        })
 | 
			
		||||
        this.SJGWsData.detData.forEach((ele) => {
 | 
			
		||||
          outputNumList.push(ele.outputNum
 | 
			
		||||
          )
 | 
			
		||||
        })
 | 
			
		||||
        // console.log(this.EnergyMonitoringNameList)
 | 
			
		||||
        // console.log(this.EnergyMonitoringList)
 | 
			
		||||
        // this.$nextTick(() => {
 | 
			
		||||
        this.$refs.productLineChart.initChart(Array.from(new Set(nameList)), passRateList, outputNumList)
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    // 数据发送
 | 
			
		||||
    // SJGWebsocketSend() {
 | 
			
		||||
    //   this.websocket.send('11111')
 | 
			
		||||
    // },
 | 
			
		||||
    // // 关闭
 | 
			
		||||
    // SJGWebsocketClose(e) {
 | 
			
		||||
    //   console.log('WebSocket 断开连接', e)
 | 
			
		||||
    // },
 | 
			
		||||
    // // 连接建立之后执行send方法发送数据
 | 
			
		||||
    websocketOnOpen() {
 | 
			
		||||
      console.log('socket连接成功')
 | 
			
		||||
      this.websocket.onmessage()
 | 
			
		||||
    },
 | 
			
		||||
    // 连接建立失败重连
 | 
			
		||||
    websocketOnError(e) {
 | 
			
		||||
      console.log('11111', e)
 | 
			
		||||
      this.initWebSocket()
 | 
			
		||||
    },
 | 
			
		||||
    // 数据接收
 | 
			
		||||
    websocketOnMessage(e) {
 | 
			
		||||
      // console.log(1111, e)
 | 
			
		||||
      this.wsData = e?.data ? JSON.parse(e?.data) : {}
 | 
			
		||||
      // console.log('22222', this.wsData.data)
 | 
			
		||||
      if (this.wsData.type === 'EnergyMonitoring') {
 | 
			
		||||
        let EnergyNameList = []
 | 
			
		||||
        this.wsData.data.forEach((ele) => {
 | 
			
		||||
          EnergyNameList.push(ele.lineName)
 | 
			
		||||
        })
 | 
			
		||||
        this.EnergyMonitoringNameList = EnergyNameList
 | 
			
		||||
        let EnergyDataList = []
 | 
			
		||||
        this.wsData.data.forEach((ele) => {
 | 
			
		||||
          EnergyDataList.push(ele.useQuantity
 | 
			
		||||
            // {
 | 
			
		||||
            //   type: 'bar',
 | 
			
		||||
            //   data: ele.useQuantity,
 | 
			
		||||
            //   barWidth: 6
 | 
			
		||||
 | 
			
		||||
            // }
 | 
			
		||||
          )
 | 
			
		||||
        })
 | 
			
		||||
        this.EnergyMonitoringList = EnergyDataList
 | 
			
		||||
        console.log(EnergyDataList)
 | 
			
		||||
        // console.log(this.EnergyMonitoringNameList)
 | 
			
		||||
        // console.log(this.EnergyMonitoringList)
 | 
			
		||||
        // this.$nextTick(() => {
 | 
			
		||||
        this.$refs.EnergyMonitoringChart.initChart(this.EnergyMonitoringNameList, this.EnergyMonitoringList)
 | 
			
		||||
        // })
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    // 数据发送
 | 
			
		||||
    websocketSend() {
 | 
			
		||||
      this.websocket.send('11111')
 | 
			
		||||
    },
 | 
			
		||||
    // 关闭
 | 
			
		||||
    websocketClose(e) {
 | 
			
		||||
      // console.log('WebSocket 断开连接', e)
 | 
			
		||||
    },
 | 
			
		||||
    windowWidth(value) {
 | 
			
		||||
      this.clientWidth = value
 | 
			
		||||
      this.beilv2 = this.clientWidth / 1920
 | 
			
		||||
@@ -838,7 +871,19 @@ export default {
 | 
			
		||||
    background-size: 100% 100%;
 | 
			
		||||
    color: #00fff0;
 | 
			
		||||
    text-align: center;
 | 
			
		||||
      .unit {
 | 
			
		||||
          position: absolute;
 | 
			
		||||
          left: 260px;
 | 
			
		||||
          top: 25px;
 | 
			
		||||
          font-size: 20px;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        .time {
 | 
			
		||||
          position: absolute;
 | 
			
		||||
          left: 1360px;
 | 
			
		||||
          top: 25px;
 | 
			
		||||
          font-size: 20px;
 | 
			
		||||
        }
 | 
			
		||||
    .title-button {
 | 
			
		||||
      color: #00fff0;
 | 
			
		||||
      font-size: 20px;
 | 
			
		||||
@@ -881,17 +926,19 @@ export default {
 | 
			
		||||
  background-color: unset;
 | 
			
		||||
  background-image: linear-gradient(to right, #4573fe, #47f8dc);
 | 
			
		||||
}
 | 
			
		||||
// ::v-deep .el-progress-bar__outer {
 | 
			
		||||
//   background-color:rgba(71, 248, 220, 1);
 | 
			
		||||
//   // background-image: rgba(71, 248, 220, 1))
 | 
			
		||||
// }
 | 
			
		||||
 .visual-select {
 | 
			
		||||
   position: absolute;
 | 
			
		||||
   right: 1em;
 | 
			
		||||
   top: 2em;
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
//  .container-main {
 | 
			
		||||
//    padding: 0px;
 | 
			
		||||
// .container-main {
 | 
			
		||||
//    padding: 5px;
 | 
			
		||||
//  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
</style>
 | 
			
		||||
 | 
			
		||||
<style lang="scss">
 | 
			
		||||
 
 | 
			
		||||
@@ -90,7 +90,7 @@ export default {
 | 
			
		||||
				{
 | 
			
		||||
          type: 'datePicker',
 | 
			
		||||
          label: '时间段',
 | 
			
		||||
          dateType: 'datetimerange',
 | 
			
		||||
          dateType: 'daterange',
 | 
			
		||||
          format: 'yyyy-MM-dd',
 | 
			
		||||
          valueFormat: 'yyyy-MM-dd HH:mm:ss',
 | 
			
		||||
          rangeSeparator: '-',
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2021-11-18 14:16:25
 | 
			
		||||
 * @LastEditors: DY
 | 
			
		||||
 * @LastEditTime: 2023-11-22 10:27:50
 | 
			
		||||
 * @LastEditTime: 2023-12-12 16:04:44
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
@@ -15,25 +15,26 @@
 | 
			
		||||
		<el-row :gutter="20">
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item label="客户编号" prop="code">
 | 
			
		||||
					<el-input v-model="dataForm.code" clearable placeholder="请输入客户编号" />
 | 
			
		||||
					<el-input v-model="dataForm.code" :disabled="isdetail" clearable placeholder="请输入客户编号" />
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item label="客户名称" prop="name">
 | 
			
		||||
					<el-input v-model="dataForm.name" clearable placeholder="请输入客户名称" />
 | 
			
		||||
					<el-input v-model="dataForm.name" :disabled="isdetail" clearable placeholder="请输入客户名称" />
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
		</el-row>
 | 
			
		||||
		<el-row :gutter="20">
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item label="联系人" prop="contact">
 | 
			
		||||
					<el-input v-model="dataForm.contact" clearable placeholder="请输入联系人" />
 | 
			
		||||
					<el-input v-model="dataForm.contact" :disabled="isdetail" clearable placeholder="请输入联系人" />
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item label="联系电话" prop="telephone">
 | 
			
		||||
					<el-input
 | 
			
		||||
						v-model="dataForm.telephone"
 | 
			
		||||
						:disabled="isdetail"
 | 
			
		||||
						maxlength="11"
 | 
			
		||||
						placeholder="请输入联系电话" />
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
@@ -42,22 +43,34 @@
 | 
			
		||||
		<el-form-item label="地址" prop="address">
 | 
			
		||||
			<el-input
 | 
			
		||||
				v-model="dataForm.address"
 | 
			
		||||
				:disabled="isdetail"
 | 
			
		||||
				placeholder="请输入地址" />
 | 
			
		||||
		</el-form-item>
 | 
			
		||||
		<el-form-item label="备注" prop="remark">
 | 
			
		||||
			<el-input
 | 
			
		||||
				v-model="dataForm.remark"
 | 
			
		||||
				:disabled="isdetail"
 | 
			
		||||
				placeholder="请输入备注" />
 | 
			
		||||
		</el-form-item>
 | 
			
		||||
		<el-form-item label="特殊要求" prop="specialRequirements">
 | 
			
		||||
			<el-input
 | 
			
		||||
				type="textarea"
 | 
			
		||||
				v-model="dataForm.specialRequirements"
 | 
			
		||||
				:disabled="isdetail"
 | 
			
		||||
				placeholder="请输入备注" />
 | 
			
		||||
				<imageUpload v-model="files" :disabled="isdetail" :limit="5"/>
 | 
			
		||||
		</el-form-item>
 | 
			
		||||
	</el-form>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import basicAdd from '../../core/mixins/basic-add';
 | 
			
		||||
import { createCustomer, updateCustomer, getCustomer, getCode } from "@/api/base/coreCustomer";
 | 
			
		||||
import ImageUpload from '@/components/ImageUpload';
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
	mixins: [basicAdd],
 | 
			
		||||
	components: { ImageUpload },
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			urlOptions: {
 | 
			
		||||
@@ -67,6 +80,8 @@ export default {
 | 
			
		||||
				updateURL: updateCustomer,
 | 
			
		||||
				infoURL: getCustomer
 | 
			
		||||
			},
 | 
			
		||||
			files: [],
 | 
			
		||||
			isdetail: false,
 | 
			
		||||
			dataForm: {
 | 
			
		||||
        id: undefined,
 | 
			
		||||
        code: undefined,
 | 
			
		||||
@@ -74,7 +89,9 @@ export default {
 | 
			
		||||
        telephone: undefined,
 | 
			
		||||
				contact: undefined,
 | 
			
		||||
				address: undefined,
 | 
			
		||||
        remark: undefined
 | 
			
		||||
        remark: undefined,
 | 
			
		||||
				specialRequirements: undefined,
 | 
			
		||||
				files: []
 | 
			
		||||
			},
 | 
			
		||||
			dataRule: {
 | 
			
		||||
        code: [{ required: true, message: "客户编号不能为空", trigger: "blur" }],
 | 
			
		||||
@@ -100,6 +117,66 @@ export default {
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	mounted() {},
 | 
			
		||||
	methods: {}
 | 
			
		||||
	methods: {
 | 
			
		||||
		init(id, isdetail) {
 | 
			
		||||
      this.dataForm.id = id || "";
 | 
			
		||||
			this.isdetail = isdetail || false;
 | 
			
		||||
      this.visible = true;
 | 
			
		||||
      if (this.urlOptions.getOption) {
 | 
			
		||||
        this.getArr()
 | 
			
		||||
      }
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs["dataForm"].resetFields();
 | 
			
		||||
        if (this.dataForm.id) {
 | 
			
		||||
          this.urlOptions.infoURL(id).then(response => {
 | 
			
		||||
            this.dataForm = response.data;
 | 
			
		||||
            if (this.setData) {
 | 
			
		||||
              this.setDataForm()
 | 
			
		||||
            }
 | 
			
		||||
          });
 | 
			
		||||
        } else {
 | 
			
		||||
          if (this.urlOptions.isGetCode) {
 | 
			
		||||
            this.getCode()
 | 
			
		||||
          }
 | 
			
		||||
				}
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
		// 表单提交
 | 
			
		||||
    dataFormSubmit() {
 | 
			
		||||
			console.log('122', this.files)
 | 
			
		||||
      this.$refs["dataForm"].validate((valid) => {
 | 
			
		||||
        if (!valid) {
 | 
			
		||||
          return false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
				this.dataForm.files = []
 | 
			
		||||
				if (this.files.length > 0) {
 | 
			
		||||
					this.files.forEach(item => {
 | 
			
		||||
						const temp = {
 | 
			
		||||
							fileType: 1,
 | 
			
		||||
							fileUrl: item
 | 
			
		||||
						}
 | 
			
		||||
						this.dataForm.files.push(temp)
 | 
			
		||||
					})
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
        // 修改的提交
 | 
			
		||||
        if (this.dataForm.id) {
 | 
			
		||||
          this.urlOptions.updateURL(this.dataForm).then(response => {
 | 
			
		||||
            this.$modal.msgSuccess("修改成功");
 | 
			
		||||
            this.visible = false; 
 | 
			
		||||
            this.$emit("refreshDataList");
 | 
			
		||||
          });
 | 
			
		||||
          return;
 | 
			
		||||
        }
 | 
			
		||||
        // 添加的提交
 | 
			
		||||
        this.urlOptions.createURL(this.dataForm).then(response => {
 | 
			
		||||
          this.$modal.msgSuccess("新增成功");
 | 
			
		||||
          this.visible = false;
 | 
			
		||||
          this.$emit("refreshDataList");
 | 
			
		||||
        });
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
	}
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
 
 | 
			
		||||
@@ -88,13 +88,19 @@ export default {
 | 
			
		||||
			},
 | 
			
		||||
			tableProps,
 | 
			
		||||
			tableBtn: [
 | 
			
		||||
				this.$auth.hasPermi(`base:core-customer:detail`)
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'detail',
 | 
			
		||||
							btnName: '详情',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
				this.$auth.hasPermi(`base:core-customer:update`)
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'edit',
 | 
			
		||||
							btnName: '编辑',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
          this.$auth.hasPermi(`base:core-customer:delete`)
 | 
			
		||||
        this.$auth.hasPermi(`base:core-customer:delete`)
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'delete',
 | 
			
		||||
							btnName: '删除',
 | 
			
		||||
@@ -171,6 +177,13 @@ export default {
 | 
			
		||||
					console.log(val);
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		otherMethods(val) {
 | 
			
		||||
			this.addOrUpdateVisible = true;
 | 
			
		||||
			this.addOrEditTitle = "详情";
 | 
			
		||||
			this.$nextTick(() => {
 | 
			
		||||
				this.$refs.addOrUpdate.init(val.data.id, true);
 | 
			
		||||
			});
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
 
 | 
			
		||||
@@ -248,6 +248,9 @@ export default {
 | 
			
		||||
						label: '设备编码',
 | 
			
		||||
						prop: 'code',
 | 
			
		||||
						url: '/base/core-equipment/getCode',
 | 
			
		||||
						rules: [
 | 
			
		||||
							{ required: true, message: '设备编码不能为空', trigger: 'blur' },
 | 
			
		||||
						],
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						input: true,
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										266
									
								
								src/views/base/coreEquipmentLineBind/dialogForm.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,266 @@
 | 
			
		||||
<!-- 
 | 
			
		||||
    filename: dialogForm.vue
 | 
			
		||||
    author: liubin
 | 
			
		||||
    date: 2023-09-11 15:55:13
 | 
			
		||||
    description: DialogForm for equipmentBindSection only
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
<template>
 | 
			
		||||
	<el-form
 | 
			
		||||
		ref="form"
 | 
			
		||||
		:model="dataForm"
 | 
			
		||||
		label-width="128px"
 | 
			
		||||
		v-loading="formLoading">
 | 
			
		||||
		<el-row :gutter="20">
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item
 | 
			
		||||
					label="产线"
 | 
			
		||||
					prop="productionLineId"
 | 
			
		||||
					:rules="[
 | 
			
		||||
						{ required: true, message: '产线不能为空', trigger: 'blur' },
 | 
			
		||||
					]">
 | 
			
		||||
					<el-select
 | 
			
		||||
						v-model="dataForm.productionLineId"
 | 
			
		||||
						placeholder="请选择产线"
 | 
			
		||||
						filterable
 | 
			
		||||
						clearable
 | 
			
		||||
						@change="handleProductlineChange">
 | 
			
		||||
						<el-option
 | 
			
		||||
							v-for="opt in productionLineList"
 | 
			
		||||
							:key="opt.value"
 | 
			
		||||
							:label="opt.label"
 | 
			
		||||
							:value="opt.value" />
 | 
			
		||||
					</el-select>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item
 | 
			
		||||
					label="工段"
 | 
			
		||||
					prop="workshopSectionId"
 | 
			
		||||
					:rules="[
 | 
			
		||||
						{ required: true, message: '工段不能为空', trigger: 'blur' },
 | 
			
		||||
					]">
 | 
			
		||||
					<el-select
 | 
			
		||||
						v-model="dataForm.workshopSectionId"
 | 
			
		||||
						filterable
 | 
			
		||||
						clearable
 | 
			
		||||
						placeholder="请选择工段"
 | 
			
		||||
						@change="$emit('update', dataForm)">
 | 
			
		||||
						<el-option
 | 
			
		||||
							v-for="opt in worksectionList"
 | 
			
		||||
							:key="opt.value"
 | 
			
		||||
							:label="opt.label"
 | 
			
		||||
							:value="opt.value" />
 | 
			
		||||
					</el-select>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
		</el-row>
 | 
			
		||||
		<el-row :gutter="20">
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item
 | 
			
		||||
					label="设备"
 | 
			
		||||
					prop="equipmentId"
 | 
			
		||||
					clearable
 | 
			
		||||
					filterable
 | 
			
		||||
					:rules="[
 | 
			
		||||
						{ required: true, message: '设备不能为空', trigger: 'blur' },
 | 
			
		||||
					]">
 | 
			
		||||
					<el-select
 | 
			
		||||
						v-model="dataForm.equipmentId"
 | 
			
		||||
						filterable
 | 
			
		||||
						placeholder="请选择设备"
 | 
			
		||||
						@change="$emit('update', dataForm)">
 | 
			
		||||
						<el-option
 | 
			
		||||
							v-for="opt in equipmentList"
 | 
			
		||||
							:key="opt.value"
 | 
			
		||||
							:label="opt.label"
 | 
			
		||||
							:value="opt.value" />
 | 
			
		||||
					</el-select>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item
 | 
			
		||||
					label="工段排序"
 | 
			
		||||
					prop="sort"
 | 
			
		||||
					:rules="[
 | 
			
		||||
						{
 | 
			
		||||
							type: 'number',
 | 
			
		||||
							trigger: 'change',
 | 
			
		||||
							message: '请输入正确的数字类型',
 | 
			
		||||
							transform: (val) => Number(val),
 | 
			
		||||
						},
 | 
			
		||||
					]">
 | 
			
		||||
					<el-input
 | 
			
		||||
						v-model="dataForm.sort"
 | 
			
		||||
						clearable
 | 
			
		||||
						@change="$emit('update', dataForm)"
 | 
			
		||||
						placeholder="请输入工段排序" />
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
		</el-row>
 | 
			
		||||
		<el-row :gutter="20">
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item
 | 
			
		||||
					label="产线统计类型"
 | 
			
		||||
					prop="lineDataType"
 | 
			
		||||
					:rules="[
 | 
			
		||||
						{
 | 
			
		||||
							required: true,
 | 
			
		||||
							message: '产线统计类型不能为空',
 | 
			
		||||
							trigger: 'change',
 | 
			
		||||
						},
 | 
			
		||||
					]">
 | 
			
		||||
					<el-select
 | 
			
		||||
						v-model="dataForm.lineDataType"
 | 
			
		||||
						placeholder="请选择产线统计类型"
 | 
			
		||||
						clearable
 | 
			
		||||
						filterable
 | 
			
		||||
						@change="$emit('update', dataForm)">
 | 
			
		||||
						<el-option
 | 
			
		||||
							v-for="opt in [
 | 
			
		||||
								{ label: '无类型', value: 0 },
 | 
			
		||||
								{ label: '进口统计', value: 1 },
 | 
			
		||||
								{ label: '出口统计', value: 2 },
 | 
			
		||||
							]"
 | 
			
		||||
							:key="opt.value"
 | 
			
		||||
							:label="opt.label"
 | 
			
		||||
							:value="opt.value" />
 | 
			
		||||
					</el-select>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item
 | 
			
		||||
					label="工段统计类型"
 | 
			
		||||
					prop="sectionDataType"
 | 
			
		||||
					:rules="[
 | 
			
		||||
						{
 | 
			
		||||
							required: true,
 | 
			
		||||
							message: '工段统计类型不能为空',
 | 
			
		||||
							trigger: 'change',
 | 
			
		||||
						},
 | 
			
		||||
					]">
 | 
			
		||||
					<el-select
 | 
			
		||||
						v-model="dataForm.sectionDataType"
 | 
			
		||||
						placeholder="请选择工段统计类型"
 | 
			
		||||
						clearable
 | 
			
		||||
						filterable
 | 
			
		||||
						@change="$emit('update', dataForm)">
 | 
			
		||||
						<el-option
 | 
			
		||||
							v-for="opt in [
 | 
			
		||||
								{ label: '无类型', value: 0 },
 | 
			
		||||
								{ label: '进口统计', value: 1 },
 | 
			
		||||
								{ label: '出口统计', value: 2 },
 | 
			
		||||
							]"
 | 
			
		||||
							:key="opt.value"
 | 
			
		||||
							:label="opt.label"
 | 
			
		||||
							:value="opt.value" />
 | 
			
		||||
					</el-select>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
		</el-row>
 | 
			
		||||
	</el-form>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
export default {
 | 
			
		||||
	name: 'DialogForm',
 | 
			
		||||
	model: {
 | 
			
		||||
		prop: 'dataForm',
 | 
			
		||||
		event: 'update',
 | 
			
		||||
	},
 | 
			
		||||
	emits: ['update'],
 | 
			
		||||
	components: {},
 | 
			
		||||
	props: {
 | 
			
		||||
		dataForm: {
 | 
			
		||||
			type: Object,
 | 
			
		||||
			default: () => ({}),
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			formLoading: true,
 | 
			
		||||
			productionLineList: [],
 | 
			
		||||
			equipmentList: [],
 | 
			
		||||
			worksectionList: [],
 | 
			
		||||
			dataFormCache: null,
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	mounted() {
 | 
			
		||||
		Promise.all([this.getProductLineList(), this.getEquipmentList()]).then(
 | 
			
		||||
			() => {
 | 
			
		||||
				this.formLoading = false;
 | 
			
		||||
			}
 | 
			
		||||
		);
 | 
			
		||||
	},
 | 
			
		||||
	watch: {
 | 
			
		||||
		'dataForm.productionLineId': {
 | 
			
		||||
			handler: async function (plId) {
 | 
			
		||||
				if (plId) await this.getWorksectionList(plId);
 | 
			
		||||
			},
 | 
			
		||||
			immediate: true,
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		/** 模拟透传 ref  */
 | 
			
		||||
		validate(cb) {
 | 
			
		||||
			return this.$refs.form.validate(cb);
 | 
			
		||||
		},
 | 
			
		||||
		resetFields(args) {
 | 
			
		||||
			return this.$refs.form.resetFields(args);
 | 
			
		||||
		},
 | 
			
		||||
		async handleProductlineChange(id) {
 | 
			
		||||
			await this.getWorksectionList(id);
 | 
			
		||||
			this.dataForm.workshopSectionId = null;
 | 
			
		||||
			this.$emit('update', this.dataForm);
 | 
			
		||||
		},
 | 
			
		||||
		// getCode
 | 
			
		||||
		async getCode(url) {
 | 
			
		||||
			const response = await this.$axios(url);
 | 
			
		||||
			return response.data;
 | 
			
		||||
		},
 | 
			
		||||
		// 获取产线列表
 | 
			
		||||
		async getProductLineList() {
 | 
			
		||||
			const response = await this.$axios('/base/core-production-line/listAll');
 | 
			
		||||
			this.productionLineList = response.data.map((item) => ({
 | 
			
		||||
				label: item.name,
 | 
			
		||||
				value: item.id,
 | 
			
		||||
			}));
 | 
			
		||||
		},
 | 
			
		||||
		// 获取设备列表
 | 
			
		||||
		async getEquipmentList() {
 | 
			
		||||
			const response = await this.$axios(
 | 
			
		||||
				// '/base/core-equipment/page?pageNo=1&pageSize=100'
 | 
			
		||||
				'/base/core-equipment/listAll'
 | 
			
		||||
			);
 | 
			
		||||
			this.equipmentList = response.data.map((item) => ({
 | 
			
		||||
				label: item.name,
 | 
			
		||||
				value: item.id,
 | 
			
		||||
			}));
 | 
			
		||||
		},
 | 
			
		||||
		// 获取工段列表
 | 
			
		||||
		async getWorksectionList(plId) {
 | 
			
		||||
			const response = await this.$axios(
 | 
			
		||||
				'/base/core-workshop-section/listByParentId',
 | 
			
		||||
				{
 | 
			
		||||
					params: {
 | 
			
		||||
						id: plId,
 | 
			
		||||
					},
 | 
			
		||||
				}
 | 
			
		||||
			);
 | 
			
		||||
			this.worksectionList = response.data.map((item) => ({
 | 
			
		||||
				label: item.name,
 | 
			
		||||
				value: item.id,
 | 
			
		||||
			}));
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style scoped lang="scss">
 | 
			
		||||
.el-date-editor,
 | 
			
		||||
.el-select {
 | 
			
		||||
	width: 100%;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
@@ -50,12 +50,13 @@
 | 
			
		||||
<script>
 | 
			
		||||
import moment from 'moment';
 | 
			
		||||
import basicPageMixin from '@/mixins/lb/basicPageMixin';
 | 
			
		||||
import DialogForm from './dialogForm.vue';
 | 
			
		||||
 | 
			
		||||
// import { getAccessToken } from '@/utils/auth';
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
	name: 'EquipmentLineBind',
 | 
			
		||||
	components: {},
 | 
			
		||||
	components: { DialogForm },
 | 
			
		||||
	mixins: [basicPageMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
@@ -149,7 +150,9 @@ export default {
 | 
			
		||||
						select: true,
 | 
			
		||||
						label: '产线',
 | 
			
		||||
						prop: 'productionLineId',
 | 
			
		||||
						rules: [{ required: true, message: '产线名不能为空', trigger: 'blur' }],
 | 
			
		||||
						rules: [
 | 
			
		||||
							{ required: true, message: '产线名不能为空', trigger: 'blur' },
 | 
			
		||||
						],
 | 
			
		||||
						url: '/base/core-production-line/listAll',
 | 
			
		||||
						bind: { clearable: true, filterable: true },
 | 
			
		||||
						// watch: 'workshopSectionId'
 | 
			
		||||
@@ -159,7 +162,9 @@ export default {
 | 
			
		||||
						label: '工段',
 | 
			
		||||
						prop: 'workshopSectionId',
 | 
			
		||||
						depends: 'productionLineId',
 | 
			
		||||
						rules: [{ required: true, message: '工段不能为空', trigger: 'blur' }],
 | 
			
		||||
						rules: [
 | 
			
		||||
							{ required: true, message: '工段不能为空', trigger: 'blur' },
 | 
			
		||||
						],
 | 
			
		||||
						bind: { clearable: true, filterable: true },
 | 
			
		||||
						url: '/base/core-workshop-section/listByParentId',
 | 
			
		||||
					},
 | 
			
		||||
@@ -169,7 +174,9 @@ export default {
 | 
			
		||||
						select: true,
 | 
			
		||||
						label: '设备',
 | 
			
		||||
						prop: 'equipmentId',
 | 
			
		||||
						rules: [{ required: true, message: '设备名不能为空', trigger: 'blur' }],
 | 
			
		||||
						rules: [
 | 
			
		||||
							{ required: true, message: '设备名不能为空', trigger: 'blur' },
 | 
			
		||||
						],
 | 
			
		||||
						bind: { clearable: true, filterable: true },
 | 
			
		||||
						url: '/base/core-equipment/listAll',
 | 
			
		||||
					},
 | 
			
		||||
@@ -190,9 +197,16 @@ export default {
 | 
			
		||||
						label: '产线统计类型',
 | 
			
		||||
						prop: 'lineDataType',
 | 
			
		||||
						bind: {
 | 
			
		||||
							clearable: true, filterable: true
 | 
			
		||||
							clearable: true,
 | 
			
		||||
							filterable: true,
 | 
			
		||||
						},
 | 
			
		||||
						rules: [{ required: true, message: '产线统计类型不能为空', trigger: 'change' }],
 | 
			
		||||
						rules: [
 | 
			
		||||
							{
 | 
			
		||||
								required: true,
 | 
			
		||||
								message: '产线统计类型不能为空',
 | 
			
		||||
								trigger: 'change',
 | 
			
		||||
							},
 | 
			
		||||
						],
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						select: true,
 | 
			
		||||
@@ -204,9 +218,16 @@ export default {
 | 
			
		||||
						label: '工段统计类型',
 | 
			
		||||
						prop: 'sectionDataType',
 | 
			
		||||
						bind: {
 | 
			
		||||
							clearable: true, filterable: true
 | 
			
		||||
							clearable: true,
 | 
			
		||||
							filterable: true,
 | 
			
		||||
						},
 | 
			
		||||
						rules: [{ required: true, message: '工段统计类型不能为空', trigger: 'change' }],
 | 
			
		||||
						rules: [
 | 
			
		||||
							{
 | 
			
		||||
								required: true,
 | 
			
		||||
								message: '工段统计类型不能为空',
 | 
			
		||||
								trigger: 'change',
 | 
			
		||||
							},
 | 
			
		||||
						],
 | 
			
		||||
					},
 | 
			
		||||
				],
 | 
			
		||||
			],
 | 
			
		||||
@@ -335,15 +356,21 @@ export default {
 | 
			
		||||
		handleDelete(row) {
 | 
			
		||||
			const id = row.id;
 | 
			
		||||
			this.$modal
 | 
			
		||||
				.confirm('是否确认删除绑定"' + row.name + '"?')
 | 
			
		||||
				.then(function () {
 | 
			
		||||
					return deleteEquipmentType(id);
 | 
			
		||||
				.confirm(
 | 
			
		||||
					'是否确认删除绑定"' +
 | 
			
		||||
						(row.equipmentName == null ? '这条记录' : row.equipmentName) +
 | 
			
		||||
						'"?'
 | 
			
		||||
				)
 | 
			
		||||
				.then(() => {
 | 
			
		||||
					return this.del({ id });
 | 
			
		||||
				})
 | 
			
		||||
				.then(() => {
 | 
			
		||||
					this.getList();
 | 
			
		||||
					this.$modal.msgSuccess('删除成功');
 | 
			
		||||
				})
 | 
			
		||||
				.catch(() => {});
 | 
			
		||||
				.catch((err) => {
 | 
			
		||||
					console.error(err);
 | 
			
		||||
				});
 | 
			
		||||
		},
 | 
			
		||||
		/** 导出按钮操作 */
 | 
			
		||||
		handleExport() {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										65
									
								
								src/views/base/coreHotMaterial/SmallTitle.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,65 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2023-08-01 15:27:31
 | 
			
		||||
 * @LastEditors: zwq
 | 
			
		||||
 * @LastEditTime: 2023-08-01 16:25:54
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
	<div :class="[className, { 'p-0': noPadding }]">
 | 
			
		||||
		<slot />
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
export default {
 | 
			
		||||
	props: {
 | 
			
		||||
		size: {
 | 
			
		||||
			// 取值范围:  xl lg md sm
 | 
			
		||||
			type: String,
 | 
			
		||||
			default: 'de',
 | 
			
		||||
			validator: function (val) {
 | 
			
		||||
				return ['xl', 'lg', 'de', 'md', 'sm'].indexOf(val) !== -1;
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		noPadding: {
 | 
			
		||||
			type: Boolean,
 | 
			
		||||
			default: false,
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
	computed: {
 | 
			
		||||
		className: function () {
 | 
			
		||||
			return `${this.size}-title`;
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
$pxls: (xl, 28px) (lg, 24px) (de, 20px) (md, 18px) (sm, 16px);
 | 
			
		||||
$mgr: 8px;
 | 
			
		||||
@each $size, $height in $pxls {
 | 
			
		||||
	.#{$size}-title {
 | 
			
		||||
		font-size: 18px;
 | 
			
		||||
		line-height: $height;
 | 
			
		||||
		color: #000;
 | 
			
		||||
		font-weight: 500;
 | 
			
		||||
		font-family: '微软雅黑', 'Microsoft YaHei', Arial, Helvetica, sans-serif;
 | 
			
		||||
 | 
			
		||||
		&::before {
 | 
			
		||||
			content: '';
 | 
			
		||||
			display: inline-block;
 | 
			
		||||
			vertical-align: top;
 | 
			
		||||
			width: 4px;
 | 
			
		||||
			height: $height + 2px;
 | 
			
		||||
			border-radius: 1px;
 | 
			
		||||
			margin-right: $mgr;
 | 
			
		||||
			background-color: #0b58ff;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.p-0 {
 | 
			
		||||
	padding: 0;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2021-11-18 14:16:25
 | 
			
		||||
 * @LastEditors: DY
 | 
			
		||||
 * @LastEditTime: 2023-11-27 20:12:00
 | 
			
		||||
 * @LastEditTime: 2023-12-14 13:52:42
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
@@ -15,19 +15,19 @@
 | 
			
		||||
		<el-row :gutter="20">
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item label="原料名称" prop="name">
 | 
			
		||||
					<el-input v-model="dataForm.name" clearable placeholder="请输入原料名称" />
 | 
			
		||||
					<el-input v-model="dataForm.name" :disabled="isdetail" clearable placeholder="请输入原料名称" />
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item label="原料编号" prop="code">
 | 
			
		||||
					<el-input v-model="dataForm.code" clearable placeholder="请输入原料编号" />
 | 
			
		||||
					<el-input v-model="dataForm.code" :disabled="isdetail" clearable placeholder="请输入原料编号" />
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
		</el-row>
 | 
			
		||||
		<el-row :gutter="20">
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item label="每日消耗量" prop="dailyCost">
 | 
			
		||||
					<el-input-number v-model="dataForm.dailyCost" controls-position="right" clearable placeholder="请输入每日消耗量" style="width: 100%" />
 | 
			
		||||
					<el-input-number v-model="dataForm.dailyCost" :disabled="isdetail" :min="0" controls-position="right" clearable placeholder="请输入每日消耗量" style="width: 100%" />
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
@@ -35,6 +35,7 @@
 | 
			
		||||
					<el-select
 | 
			
		||||
						v-model="dataForm.unit"
 | 
			
		||||
						filterable
 | 
			
		||||
						:disabled="isdetail"
 | 
			
		||||
						style="width: 100%"
 | 
			
		||||
						placeholder="请选择单位">
 | 
			
		||||
						<el-option
 | 
			
		||||
@@ -47,17 +48,58 @@
 | 
			
		||||
			</el-col>
 | 
			
		||||
		</el-row>
 | 
			
		||||
		<el-form-item label="备注" prop="remark">
 | 
			
		||||
			<el-input v-model="dataForm.remark" clearable placeholder="请输入备注" />
 | 
			
		||||
			<el-input v-model="dataForm.remark" :disabled="isdetail" clearable placeholder="请输入备注" />
 | 
			
		||||
		</el-form-item>
 | 
			
		||||
 | 
			
		||||
		<small-title
 | 
			
		||||
		  :size="'sm'"
 | 
			
		||||
			style="margin: 16px 0; padding-left: 8px; font-size: 14px"
 | 
			
		||||
			:no-padding="true">
 | 
			
		||||
			质量信息
 | 
			
		||||
		</small-title>
 | 
			
		||||
		<div v-if="!isdetail" class="action_btn">
 | 
			
		||||
			<template>
 | 
			
		||||
				<span style="display: inline-block;">
 | 
			
		||||
					<el-button type="text" @click="addNew()" icon="el-icon-plus">新增</el-button>
 | 
			
		||||
				</span>
 | 
			
		||||
			</template>
 | 
			
		||||
		</div>
 | 
			
		||||
		<el-row :gutter="20" v-for="(item, index) in test" :key="index">
 | 
			
		||||
			<el-col :span="9">
 | 
			
		||||
				<el-form-item label="成分" label-width="50px" prop="name1">
 | 
			
		||||
					<el-input v-model="item.name" :disabled="isdetail" :min="0" controls-position="right" clearable placeholder="请输入成分" style="width: 100%" />
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
			<el-col :span="15">
 | 
			
		||||
				<el-form-item label="标准含量" prop="unit1">
 | 
			
		||||
					<el-row :gutter="5">
 | 
			
		||||
						<el-col :span="1">
 | 
			
		||||
							<el-tooltip content="如果标准含量不是一个范围,而是一个值,在最大值、最小值中填入相同数字即可。" placement="top">
 | 
			
		||||
								<span style="margin-left: -15px"><i class="el-icon-question"></i></span>
 | 
			
		||||
							</el-tooltip>
 | 
			
		||||
						</el-col>
 | 
			
		||||
						<el-col :span="11">
 | 
			
		||||
							<el-input-number v-model="item.minValue" :disabled="isdetail" :min="0" controls-position="right" clearable placeholder="最小值" style="width: 100%" />
 | 
			
		||||
						</el-col>
 | 
			
		||||
						<el-col :span="11">
 | 
			
		||||
							<el-input-number v-model="item.maxValue" :disabled="isdetail" :min="0" controls-position="right" clearable placeholder="最大值" style="width: 100%" />
 | 
			
		||||
						</el-col>
 | 
			
		||||
					</el-row>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
		</el-row>
 | 
			
		||||
 | 
			
		||||
	</el-form>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import basicAdd from '../../core/mixins/basic-add';
 | 
			
		||||
import { createHotMaterial, updateHotMaterial, getHotMaterial, getCode } from "@/api/base/coreHotMaterial";
 | 
			
		||||
import { createHotMaterial, updateHotMaterial, getHotMaterial, getCode, createHotMaterialCheck, updateHotMaterialCheck, getHotCheckList } from "@/api/base/coreHotMaterial";
 | 
			
		||||
import { getDictDatas} from "@/utils/dict";
 | 
			
		||||
import SmallTitle from './SmallTitle';
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
	components: { SmallTitle },
 | 
			
		||||
	mixins: [basicAdd],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
@@ -76,8 +118,10 @@ export default {
 | 
			
		||||
        dailyCost: undefined,
 | 
			
		||||
				remark: undefined
 | 
			
		||||
			},
 | 
			
		||||
			test: [],
 | 
			
		||||
			departmentlList: [],
 | 
			
		||||
			menuOptions: [],
 | 
			
		||||
			isdetail: false,
 | 
			
		||||
			dataRule: {
 | 
			
		||||
        code: [{ required: true, message: "原料编码不能为空", trigger: "blur" }],
 | 
			
		||||
        name: [{ required: true, message: "原料名称不能为空", trigger: "blur" }]
 | 
			
		||||
@@ -85,6 +129,100 @@ export default {
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	mounted() {},
 | 
			
		||||
	methods: {}
 | 
			
		||||
	methods: {
 | 
			
		||||
		init(id, isdetail) {
 | 
			
		||||
			this.test = []
 | 
			
		||||
      this.dataForm.id = id || "";
 | 
			
		||||
			this.isdetail = isdetail || false;
 | 
			
		||||
      this.visible = true;
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs["dataForm"].resetFields();
 | 
			
		||||
        if (this.dataForm.id) {
 | 
			
		||||
          this.urlOptions.infoURL(id).then(response => {
 | 
			
		||||
            this.dataForm = response.data;
 | 
			
		||||
          });
 | 
			
		||||
					getHotCheckList({
 | 
			
		||||
						materialId: this.dataForm.id
 | 
			
		||||
					}).then(res => {
 | 
			
		||||
						this.test = res.data
 | 
			
		||||
					})
 | 
			
		||||
        } else {
 | 
			
		||||
					this.test = [
 | 
			
		||||
						{
 | 
			
		||||
							name: null,
 | 
			
		||||
							minValue: undefined,
 | 
			
		||||
							maxValue: undefined
 | 
			
		||||
						}
 | 
			
		||||
					]
 | 
			
		||||
          if (this.urlOptions.isGetCode) {
 | 
			
		||||
            this.getCode()
 | 
			
		||||
          }
 | 
			
		||||
				}
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
		// 表单提交
 | 
			
		||||
    dataFormSubmit() {
 | 
			
		||||
      this.$refs["dataForm"].validate((valid) => {
 | 
			
		||||
        if (!valid) {
 | 
			
		||||
          return false;
 | 
			
		||||
        }
 | 
			
		||||
        // 修改的提交
 | 
			
		||||
        if (this.dataForm.id) {
 | 
			
		||||
          this.urlOptions.updateURL(this.dataForm).then(response => {
 | 
			
		||||
						if (this.test.length > 1 || this.test[0].name) {
 | 
			
		||||
							this.test.forEach(check => {
 | 
			
		||||
								check.hotMaterialId = this.dataForm.id
 | 
			
		||||
								if (check.id) {
 | 
			
		||||
									updateHotMaterialCheck(check).then(res => {
 | 
			
		||||
										console.log(res)
 | 
			
		||||
									})
 | 
			
		||||
								} else {
 | 
			
		||||
									createHotMaterialCheck(check).then(res1 => {
 | 
			
		||||
										console.log(res1)
 | 
			
		||||
									})
 | 
			
		||||
								}
 | 
			
		||||
							})
 | 
			
		||||
						}
 | 
			
		||||
            this.$modal.msgSuccess("修改成功");
 | 
			
		||||
            this.visible = false; 
 | 
			
		||||
            this.$emit("refreshDataList");
 | 
			
		||||
          });
 | 
			
		||||
          return;
 | 
			
		||||
        }
 | 
			
		||||
        // 添加的提交
 | 
			
		||||
        this.urlOptions.createURL(this.dataForm).then(response => {
 | 
			
		||||
					if (this.test.length > 1 || this.test[0].name) {
 | 
			
		||||
						this.test.forEach(check => {
 | 
			
		||||
							check.hotMaterialId = response.data
 | 
			
		||||
							createHotMaterialCheck(check).then(res => {
 | 
			
		||||
								console.log(res)
 | 
			
		||||
							})
 | 
			
		||||
						})
 | 
			
		||||
					}
 | 
			
		||||
          this.$modal.msgSuccess("新增成功");
 | 
			
		||||
          this.visible = false;
 | 
			
		||||
          this.$emit("refreshDataList");
 | 
			
		||||
        });
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
		addNew() {
 | 
			
		||||
			this.test.push({
 | 
			
		||||
				name: null,
 | 
			
		||||
				minValue: undefined,
 | 
			
		||||
				maxValue: undefined
 | 
			
		||||
			})
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style scoped>
 | 
			
		||||
.action_btn {
 | 
			
		||||
  float: right;
 | 
			
		||||
  margin: -40px 15px;
 | 
			
		||||
  font-size: 14px;
 | 
			
		||||
}
 | 
			
		||||
.add {
 | 
			
		||||
	color: #0b58ff;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
 
 | 
			
		||||
@@ -83,13 +83,19 @@ export default {
 | 
			
		||||
			},
 | 
			
		||||
			tableProps,
 | 
			
		||||
			tableBtn: [
 | 
			
		||||
				this.$auth.hasPermi(`base:core-hot-material:update`)
 | 
			
		||||
				this.$auth.hasPermi(`base:core-hot-material-check:detail`)
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'detail',
 | 
			
		||||
							btnName: '详情',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
				this.$auth.hasPermi(`base:core-hot-material-check:update`)
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'edit',
 | 
			
		||||
							btnName: '编辑',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
          this.$auth.hasPermi(`base:core-hot-material:delete`)
 | 
			
		||||
          this.$auth.hasPermi(`base:core-hot-material-check:delete`)
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'delete',
 | 
			
		||||
							btnName: '删除',
 | 
			
		||||
@@ -120,7 +126,7 @@ export default {
 | 
			
		||||
					type: 'separate',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: this.$auth.hasPermi('base:core-hot-material:create') ? 'button' : '',
 | 
			
		||||
					type: this.$auth.hasPermi('base:core-hot-material-check:create') ? 'button' : '',
 | 
			
		||||
					btnName: '新增',
 | 
			
		||||
					name: 'add',
 | 
			
		||||
					color: 'success',
 | 
			
		||||
@@ -143,6 +149,14 @@ export default {
 | 
			
		||||
    //     this.dataListLoading = false;
 | 
			
		||||
    //   });
 | 
			
		||||
    // },
 | 
			
		||||
		otherMethods(val) {
 | 
			
		||||
			// 详情
 | 
			
		||||
			this.addOrUpdateVisible = true;
 | 
			
		||||
			this.addOrEditTitle = "详情";
 | 
			
		||||
			this.$nextTick(() => {
 | 
			
		||||
				this.$refs.addOrUpdate.init(val.data.id, true);
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		buttonClick(val) {
 | 
			
		||||
			switch (val.btnName) {
 | 
			
		||||
				case 'search':
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2021-11-18 14:16:25
 | 
			
		||||
 * @LastEditors: DY
 | 
			
		||||
 * @LastEditTime: 2023-11-27 20:07:09
 | 
			
		||||
 * @LastEditTime: 2024-01-08 16:11:03
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
@@ -91,27 +91,30 @@
 | 
			
		||||
						</el-col>
 | 
			
		||||
						<el-col :span="8">
 | 
			
		||||
							<el-form-item label="单位平方数" prop="area">
 | 
			
		||||
								<el-input-number v-model="dataForm.area" :precision="2" style="width: 100%" :disabled="isdetail" clearable placeholder="请输入单位平方数" />
 | 
			
		||||
								<el-input-number v-model="dataForm.area" :precision="6" :min="0" style="width: 100%" :disabled="isdetail" clearable placeholder="请输入单位平方数" />
 | 
			
		||||
							</el-form-item>
 | 
			
		||||
						</el-col>
 | 
			
		||||
					</el-row>
 | 
			
		||||
					<el-row :gutter="20">
 | 
			
		||||
						<el-col :span="8">
 | 
			
		||||
							<el-form-item label="规格" prop="specifications">
 | 
			
		||||
								<el-input v-model="dataForm.specifications" :disabled="isdetail" clearable placeholder="请输入规格" />
 | 
			
		||||
								<el-input v-model="dataForm.specifications" :disabled="isdetail" @blur="setArea" @clear="clearArea" clearable placeholder="请输入规格" />
 | 
			
		||||
							</el-form-item>
 | 
			
		||||
						</el-col>
 | 
			
		||||
						<el-col :span="8">
 | 
			
		||||
							<el-form-item label="产线生产单位用时(S)" prop="processTime">
 | 
			
		||||
								<el-input v-model.number="dataForm.processTime" type="number" :disabled="isdetail" clearable placeholder="请输入产线生产单位用时" />
 | 
			
		||||
								<el-input v-model.number="dataForm.processTime" :precision="4" :min="0" type="number" :disabled="isdetail" clearable placeholder="请输入产线生产单位用时" />
 | 
			
		||||
							</el-form-item>
 | 
			
		||||
						</el-col>
 | 
			
		||||
						<el-col :span="8">
 | 
			
		||||
							<el-form-item label="备注" prop="remark">
 | 
			
		||||
								<el-input v-model="dataForm.remark" :disabled="isdetail" clearable placeholder="请输入备注" />
 | 
			
		||||
							<el-form-item label="重量" prop="weight">
 | 
			
		||||
								<el-input-number v-model="dataForm.weight" :precision="6" :min="0" style="width: 100%" :disabled="isdetail" clearable placeholder="请输入重量" />
 | 
			
		||||
							</el-form-item>
 | 
			
		||||
						</el-col>
 | 
			
		||||
					</el-row>
 | 
			
		||||
					<el-form-item label="备注" prop="remark">
 | 
			
		||||
						<el-input v-model="dataForm.remark" :disabled="isdetail" clearable placeholder="请输入备注" />
 | 
			
		||||
					</el-form-item>
 | 
			
		||||
				</el-form>
 | 
			
		||||
			</div>
 | 
			
		||||
 | 
			
		||||
@@ -240,7 +243,8 @@ export default {
 | 
			
		||||
				specifications: undefined,
 | 
			
		||||
				processTime: 0,
 | 
			
		||||
        remark: undefined,
 | 
			
		||||
				unit: undefined
 | 
			
		||||
				unit: undefined,
 | 
			
		||||
				weight: undefined
 | 
			
		||||
			},
 | 
			
		||||
			productAttrList: [],
 | 
			
		||||
			visible: false,
 | 
			
		||||
@@ -249,6 +253,7 @@ export default {
 | 
			
		||||
			dataRule: {
 | 
			
		||||
        code: [{ required: true, message: "产品编码不能为空", trigger: "blur" }],
 | 
			
		||||
        name: [{ required: true, message: "产品名称不能为空", trigger: "blur" }],
 | 
			
		||||
				specifications: [{ required: true, message: "规格不能为空", trigger: "blur" }],
 | 
			
		||||
				materialType: [{ required: true, message: "物料类型不能为空", trigger: "change" }],
 | 
			
		||||
				productType: [{ required: true, message: "产品类型不能为空", trigger: "change" }],
 | 
			
		||||
				processTime: [{ required: true, message: "产线生产单位用时不能为空", trigger: "blur" }]
 | 
			
		||||
@@ -257,6 +262,24 @@ export default {
 | 
			
		||||
	},
 | 
			
		||||
	mounted() {},
 | 
			
		||||
	methods: {
 | 
			
		||||
		clearArea() {
 | 
			
		||||
			this.$set(this.dataForm, 'area', 0)
 | 
			
		||||
			this.$set(this.dataForm, 'weight', 0)
 | 
			
		||||
		},
 | 
			
		||||
		setArea() {
 | 
			
		||||
			if (this.dataForm.specifications) {
 | 
			
		||||
				const height = Number(this.dataForm.specifications.slice(2,4))
 | 
			
		||||
				const length = Number(this.dataForm.specifications.slice(4,8))
 | 
			
		||||
				const width = Number(this.dataForm.specifications.slice(8))
 | 
			
		||||
				// this.dataForm.area = length * width
 | 
			
		||||
				// this.dataForm.weight = 2.5 * height * length * width
 | 
			
		||||
				this.$set(this.dataForm, 'area', length * width)
 | 
			
		||||
				this.$set(this.dataForm, 'weight', 2.5 * height * length * width)
 | 
			
		||||
			} else {
 | 
			
		||||
				this.dataForm.area = 0
 | 
			
		||||
				this.dataForm.weight = 0
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		initData() {
 | 
			
		||||
			this.productAttrList.splice(0);
 | 
			
		||||
			this.listQuery.total = 0;
 | 
			
		||||
@@ -317,6 +340,10 @@ export default {
 | 
			
		||||
					// 获取产品详情
 | 
			
		||||
					this.urlOptions.infoURL(id).then(response => {
 | 
			
		||||
            this.dataForm = response.data
 | 
			
		||||
						// this.dataForm.area = response.data.area || 0
 | 
			
		||||
						// this.dataForm.weight = response.data.weight || 0
 | 
			
		||||
						// this.dataForm.specifications = response.data.specifications || undefined
 | 
			
		||||
						console.log('11res112', this.dataForm.specifications, this.dataForm.weight, this.dataForm.area)
 | 
			
		||||
						if (this.dataForm.unit !== undefined) {
 | 
			
		||||
							this.dataForm.unit = String(this.dataForm.unit)
 | 
			
		||||
						}
 | 
			
		||||
@@ -339,7 +366,7 @@ export default {
 | 
			
		||||
		goback() {
 | 
			
		||||
			this.$emit('refreshDataList');
 | 
			
		||||
			this.visible = false;
 | 
			
		||||
			// this.initData();
 | 
			
		||||
			this.initData();
 | 
			
		||||
		},
 | 
			
		||||
		goEdit() {
 | 
			
		||||
			this.isdetail = false;
 | 
			
		||||
@@ -370,6 +397,7 @@ export default {
 | 
			
		||||
        this.urlOptions.createURL(this.dataForm).then(response => {
 | 
			
		||||
          this.$modal.msgSuccess("新增成功");
 | 
			
		||||
					this.idAttrShow = true
 | 
			
		||||
					this.dataForm.id = response.data
 | 
			
		||||
          // this.visible = false;
 | 
			
		||||
          this.$emit("refreshDataList");
 | 
			
		||||
        });
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2021-11-18 14:16:25
 | 
			
		||||
 * @LastEditors: DY
 | 
			
		||||
 * @LastEditTime: 2023-11-23 18:45:15
 | 
			
		||||
 * @LastEditTime: 2023-12-26 16:59:25
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
@@ -12,86 +12,162 @@
 | 
			
		||||
		:wrapper-closable="false"
 | 
			
		||||
		class="drawer"
 | 
			
		||||
		size="50%"> -->
 | 
			
		||||
	<div class="app-container">
 | 
			
		||||
	<div class="container">
 | 
			
		||||
		<!-- <small-title slot="title" :no-padding="true">
 | 
			
		||||
			{{ isdetail ? '详情' : !dataForm.id ? '新增' : '编辑' }}
 | 
			
		||||
		</small-title> -->
 | 
			
		||||
		<el-button style="float: right" type="primary" @click="goback()">返回</el-button>
 | 
			
		||||
		<div v-show="workOrderButton.length">
 | 
			
		||||
			<el-button  v-for="(work, index) in workOrderButton" :key="index" type="primary" @click="init(work.id, true)">{{ work.name }}</el-button>
 | 
			
		||||
		<div v-show="workOrderButton.length" class="buttonDiv">
 | 
			
		||||
			<div style="display: flex; width: 100%;">
 | 
			
		||||
				<el-button v-show="showScroll" type="text" style="width: 30px; background: white; margin-right: 8px" @click="scrollLeft" icon="el-icon-caret-left"></el-button>
 | 
			
		||||
				<div ref="content" class="scrollDiv">
 | 
			
		||||
					<el-button style="border: none" v-for="(work, index) in workOrderButton" :key="index" @click="init(work.id, true)">{{ work.name }}</el-button>
 | 
			
		||||
				</div>
 | 
			
		||||
				<el-button v-show="showScroll" type="text" @click="scrolRight" style="width: 30px; background: white; margin-left: 8px" icon="el-icon-caret-right"></el-button>
 | 
			
		||||
				<el-button style="float: right" type="primary" size="small" plain @click="goback()">
 | 
			
		||||
					<svg-icon icon-class="return"/>返回
 | 
			
		||||
				</el-button>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div class="content">
 | 
			
		||||
			<div>
 | 
			
		||||
				<h1>工单编码:{{ dataForm.code }}</h1>
 | 
			
		||||
			</div>
 | 
			
		||||
			<small-title
 | 
			
		||||
					style="margin: 16px 0; padding-left: 8px"
 | 
			
		||||
					:no-padding="true">
 | 
			
		||||
					基本信息
 | 
			
		||||
			</small-title>
 | 
			
		||||
			<div class="formContent">
 | 
			
		||||
				<el-row :gutter="20">
 | 
			
		||||
					<el-col :span="8">工单名称:{{ dataForm.name }}</el-col>
 | 
			
		||||
					<el-col :span="8">工单来源:{{ dataForm.triggerOrigin === 1 ? 'MES' : dataForm.triggerOrigin === 2 ? 'ERP' : ''}}</el-col>
 | 
			
		||||
					<el-col :span="8">所属订单:
 | 
			
		||||
						<span v-for="(item, index) in orderList" :key="index" style="margin-right: 10px">{{ item.orderName }}</span>
 | 
			
		||||
					</el-col>
 | 
			
		||||
				</el-row>
 | 
			
		||||
				<el-row :gutter="20">
 | 
			
		||||
					<el-col :span="8">产品名称:{{ dataForm.productName }}</el-col>
 | 
			
		||||
					<el-col :span="8">规  格:{{ dataForm.specifications }}</el-col>
 | 
			
		||||
					<el-col :span="8">计划生产数量:{{ dataForm.planQuantity }}</el-col>
 | 
			
		||||
				</el-row>
 | 
			
		||||
				<el-row :gutter="20">
 | 
			
		||||
					<el-col :span="8">预计用时(小时):{{ dataForm.remainingTime }}</el-col>
 | 
			
		||||
					<el-col :span="8">计划投入数量:{{ dataForm.planAssignQuantity }}</el-col>
 | 
			
		||||
					<el-col :span="8">优先级:{{ fitlerP(dataForm.priority) }}</el-col>
 | 
			
		||||
				</el-row>
 | 
			
		||||
				<el-row :gutter="20">
 | 
			
		||||
					<el-col :span="8">负责人:{{ dataForm.workers }}</el-col>
 | 
			
		||||
					<el-col :span="8">关联产线:
 | 
			
		||||
						<span v-for="(item, index) in dataForm.productLineNames" :key="index" style="margin-right: 10px">{{ item }}</span>
 | 
			
		||||
					</el-col>
 | 
			
		||||
					<el-col :span="8">物料计算方式:{{ dataForm.materialMethod === 1 ? '产品基础' : dataForm.materialMethod === 2 ? '工艺扩展' : '' }}</el-col>
 | 
			
		||||
				</el-row>
 | 
			
		||||
				<el-row :gutter="20">
 | 
			
		||||
					<el-col :span="8">关联工艺:{{ dataForm.processFlowName }}</el-col>
 | 
			
		||||
				</el-row>
 | 
			
		||||
			<div class="card">
 | 
			
		||||
				<div class="boxTitle">
 | 
			
		||||
					<span class="blueTitle"></span>
 | 
			
		||||
					<span>工单编码:{{ dataForm.code }}</span>
 | 
			
		||||
				</div>
 | 
			
		||||
				<el-button v-if="!workOrderButton.length" style="float: right" type="primary" size="small" plain @click="goback()">
 | 
			
		||||
					<svg-icon icon-class="return"/>返回
 | 
			
		||||
				</el-button>
 | 
			
		||||
				<div class="formContent">
 | 
			
		||||
					<el-row :gutter="20">
 | 
			
		||||
						<el-col :span="3">
 | 
			
		||||
							<div class="blodTip">工单名称</div>
 | 
			
		||||
							<div class="lightTip">{{ dataForm.name }}</div>
 | 
			
		||||
						</el-col>
 | 
			
		||||
						<el-col :span="3">
 | 
			
		||||
							<div class="blodTip">工单来源</div>
 | 
			
		||||
							<div class="lightTip">{{ dataForm.triggerOrigin === 1 ? 'MES' : dataForm.triggerOrigin === 2 ? 'ERP' : ''}}</div>
 | 
			
		||||
						</el-col>
 | 
			
		||||
						<el-col :span="3">
 | 
			
		||||
							<div class="blodTip">所属订单</div>
 | 
			
		||||
							<div class="lightTip">
 | 
			
		||||
								<span v-for="(item, index) in orderList" :key="index" style="margin-right: 10px">{{ item.orderName }}</span>
 | 
			
		||||
							</div>
 | 
			
		||||
						</el-col>
 | 
			
		||||
						<el-col :span="3">
 | 
			
		||||
							<div class="blodTip">产品名称</div>
 | 
			
		||||
							<div class="lightTip">{{ dataForm.productName }}</div>
 | 
			
		||||
						</el-col>
 | 
			
		||||
						<el-col :span="3">
 | 
			
		||||
							<div class="blodTip">规  格</div>
 | 
			
		||||
							<div class="lightTip">{{ dataForm.specifications }}</div>
 | 
			
		||||
						</el-col>
 | 
			
		||||
						<el-col :span="3">
 | 
			
		||||
							<div class="blodTip">计划生产数量</div>
 | 
			
		||||
							<div class="lightTip">{{ dataForm.planQuantity }}</div>
 | 
			
		||||
						</el-col>
 | 
			
		||||
						<el-col :span="3">
 | 
			
		||||
							<div class="blodTip">预计用时(小时)</div>
 | 
			
		||||
							<div class="lightTip">{{ dataForm.remainingTime }}</div>
 | 
			
		||||
						</el-col>
 | 
			
		||||
						<el-col :span="3">
 | 
			
		||||
							<div class="blodTip">计划投入数量</div>
 | 
			
		||||
							<div class="lightTip">{{ dataForm.planAssignQuantity }}</div>
 | 
			
		||||
						</el-col>
 | 
			
		||||
					</el-row>
 | 
			
		||||
					<el-row :gutter="20">
 | 
			
		||||
						<el-col :span="3">
 | 
			
		||||
							<div class="blodTip">优先级</div>
 | 
			
		||||
							<div class="lightTip">{{ fitlerP(dataForm.priority) }}</div>
 | 
			
		||||
						</el-col>
 | 
			
		||||
						<el-col :span="3">
 | 
			
		||||
							<div class="blodTip">负责人</div>
 | 
			
		||||
							<div class="lightTip">{{ dataForm.workers }}</div>
 | 
			
		||||
						</el-col>
 | 
			
		||||
						<el-col :span="3">
 | 
			
		||||
							<div class="blodTip">关联产线</div>
 | 
			
		||||
							<div class="lightTip">
 | 
			
		||||
								<span v-for="(item, index) in dataForm.productLineNames" :key="index" style="margin-right: 10px">{{ item }}</span>
 | 
			
		||||
							</div>
 | 
			
		||||
						</el-col>
 | 
			
		||||
						<el-col :span="3">
 | 
			
		||||
							<div class="blodTip">物料计算方式</div>
 | 
			
		||||
							<div class="lightTip">{{ dataForm.materialMethod === 1 ? '产品基础' : dataForm.materialMethod === 2 ? '工艺扩展' : '' }}</div>
 | 
			
		||||
						</el-col>
 | 
			
		||||
						<el-col :span="3">
 | 
			
		||||
							<div class="blodTip">关联工艺</div>
 | 
			
		||||
							<div class="lightTip">{{ dataForm.processFlowName }}</div>
 | 
			
		||||
						</el-col>
 | 
			
		||||
					</el-row>
 | 
			
		||||
				</div>
 | 
			
		||||
			</div>
 | 
			
		||||
 | 
			
		||||
			<small-title
 | 
			
		||||
					style="margin: 16px 0; padding-left: 8px"
 | 
			
		||||
					:no-padding="true">
 | 
			
		||||
					生产信息
 | 
			
		||||
			</small-title>
 | 
			
		||||
			<div class="formContent">
 | 
			
		||||
				<el-row :gutter="20">
 | 
			
		||||
					<el-col :span="8">工单创建时间:{{ parseTime(dataForm.createTime) }}</el-col>
 | 
			
		||||
					<el-col :span="8">计划开始时间:{{ parseTime(dataForm.planStartTime) }}</el-col>
 | 
			
		||||
					<el-col :span="8">计划完成时间:{{ parseTime(dataForm.planFinishTime) }}</el-col>
 | 
			
		||||
				</el-row>
 | 
			
		||||
				<el-row :gutter="20">
 | 
			
		||||
					<el-col :span="8">预计结束时间:{{ parseTime(dataForm.computeFinishTime) }}</el-col>
 | 
			
		||||
					<el-col :span="8">实际开始时间:{{ parseTime(dataForm.startProduceTime) }}</el-col>
 | 
			
		||||
					<el-col :span="8">实际完成时间:{{ parseTime(dataForm.finishProduceTime) }}</el-col>
 | 
			
		||||
				</el-row>
 | 
			
		||||
				<el-row :gutter="20">
 | 
			
		||||
					<el-col :span="8">工单状态:{{ fitlerS(dataForm.status) }}</el-col>
 | 
			
		||||
					<el-col :span="8">实际投入数量:{{ dataForm.assignQuantity }}</el-col>
 | 
			
		||||
					<el-col :span="8">实际生产数量:{{ dataForm.actualQuantity }}</el-col>
 | 
			
		||||
				</el-row>
 | 
			
		||||
				<el-row :gutter="20">
 | 
			
		||||
					<el-col :span="8">废片数量:{{ dataForm.nokQuantity }}</el-col>
 | 
			
		||||
					<el-col :span="8">检测瑕疵数:{{ }}</el-col>
 | 
			
		||||
				</el-row>
 | 
			
		||||
			<div class="card">
 | 
			
		||||
				<!-- <small-title
 | 
			
		||||
						style="margin: 16px 0; padding-left: 8px"
 | 
			
		||||
						:no-padding="true">
 | 
			
		||||
						生产信息
 | 
			
		||||
				</small-title> -->
 | 
			
		||||
				<div class="boxTitle">
 | 
			
		||||
					<span class="blueTitle"></span>
 | 
			
		||||
					<span>生产信息</span>
 | 
			
		||||
				</div>
 | 
			
		||||
				<div class="formContent">
 | 
			
		||||
					<el-row :gutter="20">
 | 
			
		||||
						<el-col :span="3">
 | 
			
		||||
							<div class="blodTip">工单创建时间</div>
 | 
			
		||||
							<div class="lightTip">{{ parseTime(dataForm.createTime) }}</div>
 | 
			
		||||
						</el-col>
 | 
			
		||||
						<el-col :span="3">
 | 
			
		||||
							<div class="blodTip">计划开始时间</div>
 | 
			
		||||
							<div class="lightTip">{{ parseTime(dataForm.planStartTime) }}</div>
 | 
			
		||||
						</el-col>
 | 
			
		||||
						<el-col :span="3">
 | 
			
		||||
							<div class="blodTip">计划完成时间</div>
 | 
			
		||||
							<div class="lightTip">{{ parseTime(dataForm.planFinishTime) }}</div>
 | 
			
		||||
						</el-col>
 | 
			
		||||
						<el-col :span="3">
 | 
			
		||||
							<div class="blodTip">预计结束时间</div>
 | 
			
		||||
							<div class="lightTip">{{ parseTime(dataForm.computeFinishTime) }}</div>
 | 
			
		||||
						</el-col>
 | 
			
		||||
						<el-col :span="3">
 | 
			
		||||
							<div class="blodTip">实际开始时间</div>
 | 
			
		||||
							<div class="lightTip">{{ parseTime(dataForm.startProduceTime) }}</div>
 | 
			
		||||
						</el-col>
 | 
			
		||||
						<el-col :span="3">
 | 
			
		||||
							<div class="blodTip">实际完成时间</div>
 | 
			
		||||
							<div class="lightTip">{{ parseTime(dataForm.finishProduceTime) }}</div>
 | 
			
		||||
						</el-col>
 | 
			
		||||
						<el-col :span="3">
 | 
			
		||||
							<div class="blodTip">工单状态</div>
 | 
			
		||||
							<div class="lightTip">{{ fitlerS(dataForm.status) }}</div>
 | 
			
		||||
						</el-col>
 | 
			
		||||
						<el-col :span="3">
 | 
			
		||||
							<div class="blodTip">实际投入数量</div>
 | 
			
		||||
							<div class="lightTip">{{ dataForm.assignQuantity }}</div>
 | 
			
		||||
						</el-col>
 | 
			
		||||
					</el-row>
 | 
			
		||||
					<el-row :gutter="20">
 | 
			
		||||
						<el-col :span="3">
 | 
			
		||||
							<div class="blodTip">实际生产数量</div>
 | 
			
		||||
							<div class="lightTip">{{ dataForm.actualQuantity }}</div>
 | 
			
		||||
						</el-col>
 | 
			
		||||
						<el-col :span="3">
 | 
			
		||||
							<div class="blodTip">废片数量</div>
 | 
			
		||||
							<div class="lightTip">{{ dataForm.nokQuantity }}</div>
 | 
			
		||||
						</el-col>
 | 
			
		||||
						<el-col :span="3">
 | 
			
		||||
							<div class="blodTip">检测瑕疵数</div>
 | 
			
		||||
							<div class="lightTip">{{ }}</div>
 | 
			
		||||
						</el-col>
 | 
			
		||||
					</el-row>
 | 
			
		||||
				</div>
 | 
			
		||||
			</div>
 | 
			
		||||
 | 
			
		||||
			<div class="attr-list">
 | 
			
		||||
				<small-title
 | 
			
		||||
					style="margin: 16px 0; padding-left: 8px"
 | 
			
		||||
					:no-padding="true">
 | 
			
		||||
					订单相关信息
 | 
			
		||||
				</small-title>
 | 
			
		||||
			<div class="card" style="padding-bottom: 16px; margin-bottom: 10px">
 | 
			
		||||
				<div class="boxTitle">
 | 
			
		||||
					<span class="blueTitle"></span>
 | 
			
		||||
					<span>订单相关信息</span>
 | 
			
		||||
				</div>
 | 
			
		||||
				<base-table
 | 
			
		||||
					:table-props="tableProps"
 | 
			
		||||
					:page="listQuery.pageNo"
 | 
			
		||||
@@ -114,12 +190,11 @@
 | 
			
		||||
					@pagination="getList" /> -->
 | 
			
		||||
			</div>
 | 
			
		||||
 | 
			
		||||
			<div class="attr-list">
 | 
			
		||||
				<small-title
 | 
			
		||||
					style="margin: 16px 0; padding-left: 8px"
 | 
			
		||||
					:no-padding="true">
 | 
			
		||||
					预计用料信息
 | 
			
		||||
				</small-title>
 | 
			
		||||
			<div class="card" style="padding-bottom: 16px;">
 | 
			
		||||
				<div class="boxTitle">
 | 
			
		||||
					<span class="blueTitle"></span>
 | 
			
		||||
					<span>预计用料信息</span>
 | 
			
		||||
				</div>
 | 
			
		||||
				<base-table
 | 
			
		||||
					:table-props="tableProps1"
 | 
			
		||||
					:page="listQuery1.pageNo"
 | 
			
		||||
@@ -227,8 +302,11 @@ export default {
 | 
			
		||||
			// orderArray: [],
 | 
			
		||||
			visible: false,
 | 
			
		||||
			isdetail: false,
 | 
			
		||||
			showScroll: false,
 | 
			
		||||
			workOrderButton: [],
 | 
			
		||||
			processFlowList: []
 | 
			
		||||
			processFlowList: [],
 | 
			
		||||
			timer: null
 | 
			
		||||
			// tableH: this.tableHeight(510) / 2
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	created() {
 | 
			
		||||
@@ -244,13 +322,38 @@ export default {
 | 
			
		||||
						name: work.name
 | 
			
		||||
					}
 | 
			
		||||
				})
 | 
			
		||||
				const contentRef = this.$refs.content
 | 
			
		||||
				if (contentRef.scrollWidth > contentRef.clientWidth) {
 | 
			
		||||
					this.showScroll = true
 | 
			
		||||
				} else {
 | 
			
		||||
					this.showScroll = false
 | 
			
		||||
				}
 | 
			
		||||
				console.log(contentRef.scrollWidth, contentRef.clientWidth)
 | 
			
		||||
				this.init(this.workOrderButton[0].id, true)
 | 
			
		||||
			})
 | 
			
		||||
		}  else {
 | 
			
		||||
		} else {
 | 
			
		||||
			this.init(this.$route.query.id, true)
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		scrolRight() {
 | 
			
		||||
			// let contentRef = this.$refs.content
 | 
			
		||||
			// console.log('你好啊啊', contentRef.scrollWidth, contentRef.clientWidth)
 | 
			
		||||
			this.stopScroll()
 | 
			
		||||
			this.timer = setTimeout(() => {
 | 
			
		||||
				this.$refs.content.scrollLeft += 50
 | 
			
		||||
			}, 100)
 | 
			
		||||
			// if (contentRef.scrollWidth > contentRef.clientWi)
 | 
			
		||||
		},
 | 
			
		||||
		scrollLeft() {
 | 
			
		||||
			this.stopScroll()
 | 
			
		||||
			this.timer = setTimeout(() => {
 | 
			
		||||
				this.$refs.content.scrollLeft -= 50
 | 
			
		||||
			}, 100)
 | 
			
		||||
		},
 | 
			
		||||
		stopScroll() {
 | 
			
		||||
			clearTimeout(this.timer)
 | 
			
		||||
		},
 | 
			
		||||
		getDict() {
 | 
			
		||||
			// 工艺
 | 
			
		||||
      getProcessFlowList().then(res => {
 | 
			
		||||
@@ -391,59 +494,26 @@ export default {
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style scoped>
 | 
			
		||||
.drawer >>> .el-drawer {
 | 
			
		||||
	border-radius: 8px 0 0 8px;
 | 
			
		||||
.scrollDiv {
 | 
			
		||||
	width: 100%;
 | 
			
		||||
	overflow-x: hidden;
 | 
			
		||||
	/* height: 50px; */
 | 
			
		||||
	display: flex;
 | 
			
		||||
	flex-direction: column;
 | 
			
		||||
	/* padding-bottom: -10px; */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.drawer >>> .el-form-item__label {
 | 
			
		||||
	padding: 0;
 | 
			
		||||
.scrollDiv::-webkit-scrollbar-track {
 | 
			
		||||
	display: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.drawer >>> .el-drawer__header {
 | 
			
		||||
	margin: 0;
 | 
			
		||||
	padding: 32px 32px 24px;
 | 
			
		||||
	border-bottom: 1px solid #dcdfe6;
 | 
			
		||||
}
 | 
			
		||||
.drawer >>> .el-drawer__body {
 | 
			
		||||
	flex: 1;
 | 
			
		||||
	height: 1px;
 | 
			
		||||
.buttonDiv {
 | 
			
		||||
	margin-bottom: 8px;
 | 
			
		||||
	display: flex;
 | 
			
		||||
	flex-direction: column;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.drawer >>> .content {
 | 
			
		||||
	padding: 10px 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;
 | 
			
		||||
}
 | 
			
		||||
.formContent {
 | 
			
		||||
	font-size: 16px;
 | 
			
		||||
	line-height: 1.5;
 | 
			
		||||
	margin-bottom: 10px;
 | 
			
		||||
	width: 100%;
 | 
			
		||||
	padding: 0 14px;
 | 
			
		||||
}
 | 
			
		||||
.action_btn {
 | 
			
		||||
  float: right;
 | 
			
		||||
@@ -453,4 +523,43 @@ export default {
 | 
			
		||||
.add {
 | 
			
		||||
	color: #0b58ff;
 | 
			
		||||
}
 | 
			
		||||
.blodTip {
 | 
			
		||||
	height: 16px;
 | 
			
		||||
	font-size: 14px;
 | 
			
		||||
	font-weight: 600;
 | 
			
		||||
	color: rgba(0,0,0,0.85);
 | 
			
		||||
	margin-bottom: 8px;
 | 
			
		||||
}
 | 
			
		||||
.lightTip {
 | 
			
		||||
	/* height: 16px; */
 | 
			
		||||
	font-size: 14px;
 | 
			
		||||
	font-weight: 400;
 | 
			
		||||
	color: rgba(102,102,102,0.75);
 | 
			
		||||
	margin-bottom: 12px;
 | 
			
		||||
}
 | 
			
		||||
.container {
 | 
			
		||||
	background-color: rgb(242, 244, 249);
 | 
			
		||||
}
 | 
			
		||||
.card {
 | 
			
		||||
	padding: 16px 16px 0 16px;
 | 
			
		||||
	background-color: #fff;
 | 
			
		||||
  border-radius: 9px;
 | 
			
		||||
}
 | 
			
		||||
.boxTitle {
 | 
			
		||||
	display: inline-block;
 | 
			
		||||
	font-size: 16px;
 | 
			
		||||
	font-weight: 400;
 | 
			
		||||
	color: #000000;
 | 
			
		||||
	margin:0 10px 20px 0;
 | 
			
		||||
}
 | 
			
		||||
.blueTitle {
 | 
			
		||||
	content: '';
 | 
			
		||||
	display: inline-block;
 | 
			
		||||
	width: 4px;
 | 
			
		||||
	height: 18px;
 | 
			
		||||
	background-color: #0B58FF;
 | 
			
		||||
	border-radius: 1px;
 | 
			
		||||
	margin-right: 8px;
 | 
			
		||||
	vertical-align: bottom;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
 
 | 
			
		||||
@@ -140,12 +140,13 @@ export default {
 | 
			
		||||
			allocationVisible: false,
 | 
			
		||||
			tableProps,
 | 
			
		||||
			tableBtn: [
 | 
			
		||||
				this.$auth.hasPermi(`base:core-work-order:material`)
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'material',
 | 
			
		||||
							btnName: '原料信息',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
				// this.$auth.hasPermi(`base:core-work-order:material`)
 | 
			
		||||
				// 	? {
 | 
			
		||||
				// 			type: 'material',
 | 
			
		||||
				// 			btnName: '原料信息',
 | 
			
		||||
				// 			showTip: '预使用原料信息'
 | 
			
		||||
				// 	  }
 | 
			
		||||
				// 	: undefined,
 | 
			
		||||
					{
 | 
			
		||||
						type: 'active',
 | 
			
		||||
						btnName: '激活',
 | 
			
		||||
 
 | 
			
		||||
@@ -268,17 +268,25 @@ export default {
 | 
			
		||||
          // })
 | 
			
		||||
        // } else {
 | 
			
		||||
          $('.hiprintEpContainer').empty()
 | 
			
		||||
          console.log(this.modelData);
 | 
			
		||||
          console.log(this.modelData || {});
 | 
			
		||||
          hiprint.PrintElementTypeManager.build('.hiprintEpContainer', provider.value)
 | 
			
		||||
          $('.hiprint-printTemplate').empty()
 | 
			
		||||
          // const templates = this.$ls.get('KEY_TEMPLATES', {})
 | 
			
		||||
          const template = provider.value
 | 
			
		||||
          // console.log(template)
 | 
			
		||||
        // console.log(template)
 | 
			
		||||
        if (this.modelData) {
 | 
			
		||||
          hiprintTemplate = new hiprint.PrintTemplate({
 | 
			
		||||
            template: this.modelData != '' ? JSON.parse(this.modelData) : {},
 | 
			
		||||
            template: JSON.parse(this.modelData),
 | 
			
		||||
            settingContainer: '#PrintElementOptionSetting',
 | 
			
		||||
            paginationContainer: '.hiprint-printPagination'
 | 
			
		||||
          })
 | 
			
		||||
        } else {
 | 
			
		||||
          hiprintTemplate = new hiprint.PrintTemplate({
 | 
			
		||||
            template:{},
 | 
			
		||||
            settingContainer: '#PrintElementOptionSetting',
 | 
			
		||||
            paginationContainer: '.hiprint-printPagination'
 | 
			
		||||
          })
 | 
			
		||||
          }
 | 
			
		||||
        // }
 | 
			
		||||
        hiprintTemplate.design('#hiprint-printTemplate')
 | 
			
		||||
        // console.log(hiprintTemplate)
 | 
			
		||||
 
 | 
			
		||||
@@ -16,7 +16,9 @@
 | 
			
		||||
				<el-form-item
 | 
			
		||||
					label="产线"
 | 
			
		||||
					prop="productionLineId"
 | 
			
		||||
					:rules="[{ required: true, message: '产线不能为空', trigger: 'blur' }]">
 | 
			
		||||
					:rules="[
 | 
			
		||||
						{ required: true, message: '产线不能为空', trigger: 'blur' },
 | 
			
		||||
					]">
 | 
			
		||||
					<el-select
 | 
			
		||||
						v-model="dataForm.productionLineId"
 | 
			
		||||
						placeholder="请选择产线"
 | 
			
		||||
@@ -35,7 +37,9 @@
 | 
			
		||||
				<el-form-item
 | 
			
		||||
					label="工段"
 | 
			
		||||
					prop="workshopSectionId"
 | 
			
		||||
					:rules="[{ required: true, message: '工段不能为空', trigger: 'blur' }]">
 | 
			
		||||
					:rules="[
 | 
			
		||||
						{ required: true, message: '工段不能为空', trigger: 'blur' },
 | 
			
		||||
					]">
 | 
			
		||||
					<el-select
 | 
			
		||||
						v-model="dataForm.workshopSectionId"
 | 
			
		||||
						filterable
 | 
			
		||||
@@ -55,7 +59,9 @@
 | 
			
		||||
				<el-form-item
 | 
			
		||||
					label="设备"
 | 
			
		||||
					prop="equipmentId"
 | 
			
		||||
					:rules="[{ required: true, message: '设备不能为空', trigger: 'blur' }]">
 | 
			
		||||
					:rules="[
 | 
			
		||||
						{ required: true, message: '设备不能为空', trigger: 'blur' },
 | 
			
		||||
					]">
 | 
			
		||||
					<el-select
 | 
			
		||||
						v-model="dataForm.equipmentId"
 | 
			
		||||
						filterable
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2021-11-18 14:16:25
 | 
			
		||||
 * @LastEditors: DY
 | 
			
		||||
 * @LastEditTime: 2023-11-27 15:26:12
 | 
			
		||||
 * @LastEditTime: 2023-12-04 15:10:11
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
@@ -377,6 +377,7 @@ export default {
 | 
			
		||||
        this.urlOptions.createURL(this.dataForm).then(response => {
 | 
			
		||||
          this.$modal.msgSuccess("新增成功");
 | 
			
		||||
					this.idAttrShow = true
 | 
			
		||||
					this.dataForm.id = response.data
 | 
			
		||||
          this.$emit("refreshDataList");
 | 
			
		||||
        });
 | 
			
		||||
      });
 | 
			
		||||
 
 | 
			
		||||
@@ -1,18 +1,18 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-10-17 16:50:19
 | 
			
		||||
 * @LastEditTime: 2023-10-30 10:47:13
 | 
			
		||||
 * @LastEditTime: 2023-12-01 16:48:53
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-dialog :visible.sync="visible" :show-close="false" :wrapper-closable="false" width="40%">
 | 
			
		||||
  <el-dialog class="baseDialog" :visible.sync="visible" :show-close="false" :wrapper-closable="false" width="40%" show-close="true">
 | 
			
		||||
    <small-title slot="title" :no-padding="true">
 | 
			
		||||
      {{ !dataForm.id ? '新增' : '编辑' }}
 | 
			
		||||
    </small-title>
 | 
			
		||||
 | 
			
		||||
<!--
 | 
			
		||||
    <div class="content">
 | 
			
		||||
      <div class="visual-part">
 | 
			
		||||
      <div class="visual-part"> -->
 | 
			
		||||
        <el-form ref="dataForm" :model="dataForm" :rules="dataRule" label-width="100px"
 | 
			
		||||
          @keyup.enter.native="dataFormSubmit">
 | 
			
		||||
          <el-row :gutter="20">
 | 
			
		||||
@@ -96,8 +96,8 @@
 | 
			
		||||
						: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>
 | 
			
		||||
@@ -416,3 +416,34 @@ export default {
 | 
			
		||||
	padding: 18px;
 | 
			
		||||
}
 | 
			
		||||
</style> -->
 | 
			
		||||
<style>
 | 
			
		||||
 | 
			
		||||
.baseDialog .el-dialog__header {
 | 
			
		||||
  font-size: 16px;
 | 
			
		||||
  color: rgba(0, 0, 0, 0.85);
 | 
			
		||||
  font-weight: 500;
 | 
			
		||||
  padding: 13px 24px;
 | 
			
		||||
  border-bottom: 1px solid #e9e9e9;
 | 
			
		||||
}
 | 
			
		||||
.baseDialog .el-dialog__header .titleStyle::before{
 | 
			
		||||
  content: '';
 | 
			
		||||
  display: inline-block;
 | 
			
		||||
  width: 4px;
 | 
			
		||||
  height: 16px;
 | 
			
		||||
  background-color: #0B58FF;
 | 
			
		||||
  border-radius: 1px;
 | 
			
		||||
  margin-right: 8px;
 | 
			
		||||
  position: relative;
 | 
			
		||||
  top: 2px;
 | 
			
		||||
}
 | 
			
		||||
.baseDialog .el-dialog__body {
 | 
			
		||||
  padding-left: 24px;
 | 
			
		||||
  padding-right: 24px;
 | 
			
		||||
}
 | 
			
		||||
.baseDialog .btnTextStyle {
 | 
			
		||||
  letter-spacing:6px;
 | 
			
		||||
  padding: 9px 10px 9px 16px;
 | 
			
		||||
  font-size: 14px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
</style>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,12 +1,12 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-10-17 16:50:19
 | 
			
		||||
 * @LastEditTime: 2023-10-30 10:41:07
 | 
			
		||||
 * @LastEditTime: 2023-12-04 13:43:19
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-dialog :visible.sync="visible" :show-close="false" :wrapper-closable="false" width="30%">
 | 
			
		||||
  <el-dialog class="baseDialog" :visible.sync="visible" :show-close="false" :wrapper-closable="false" width="30%" show-close="true">
 | 
			
		||||
    <small-title slot="title" :no-padding="true">
 | 
			
		||||
      {{ !dataForm.id ? '新增' : '编辑' }}
 | 
			
		||||
    </small-title>
 | 
			
		||||
@@ -46,7 +46,7 @@
 | 
			
		||||
          <el-row :gutter="20">
 | 
			
		||||
            <el-col :span="12">
 | 
			
		||||
              <el-form-item label="模板设计" prop="content">
 | 
			
		||||
                <el-button type="primary" @click="btnClickDesign()">模板设计</el-button>
 | 
			
		||||
                <el-button  icon="el-icon-edit" @click="btnClickDesign()">模板设计</el-button>
 | 
			
		||||
              </el-form-item>
 | 
			
		||||
            </el-col>
 | 
			
		||||
            <!-- <el-col :span="12">
 | 
			
		||||
@@ -439,3 +439,36 @@ export default {
 | 
			
		||||
	padding: 18px;
 | 
			
		||||
}
 | 
			
		||||
</style> -->
 | 
			
		||||
<style>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.baseDialog .el-dialog__header {
 | 
			
		||||
  font-size: 16px;
 | 
			
		||||
  color: rgba(0, 0, 0, 0.85);
 | 
			
		||||
  font-weight: 500;
 | 
			
		||||
  padding: 13px 24px;
 | 
			
		||||
  border-bottom: 1px solid #e9e9e9;
 | 
			
		||||
}
 | 
			
		||||
.baseDialog .el-dialog__header .titleStyle::before{
 | 
			
		||||
  content: '';
 | 
			
		||||
  display: inline-block;
 | 
			
		||||
  width: 4px;
 | 
			
		||||
  height: 16px;
 | 
			
		||||
  background-color: #0B58FF;
 | 
			
		||||
  border-radius: 1px;
 | 
			
		||||
  margin-right: 8px;
 | 
			
		||||
  position: relative;
 | 
			
		||||
  top: 2px;
 | 
			
		||||
}
 | 
			
		||||
.baseDialog .el-dialog__body {
 | 
			
		||||
  padding-left: 24px;
 | 
			
		||||
  padding-right: 24px;
 | 
			
		||||
}
 | 
			
		||||
.baseDialog .btnTextStyle {
 | 
			
		||||
  letter-spacing:6px;
 | 
			
		||||
  padding: 9px 10px 9px 16px;
 | 
			
		||||
  font-size: 14px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
</style>
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2023-08-01 14:55:51
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @LastEditTime: 2023-11-22 14:40:07
 | 
			
		||||
 * @LastEditTime: 2023-12-04 13:38:45
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
@@ -71,7 +71,7 @@ export default {
 | 
			
		||||
      modelShow:false,
 | 
			
		||||
      tableBtn: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'print',
 | 
			
		||||
          type: 'detail',
 | 
			
		||||
          btnName: '查看',
 | 
			
		||||
        },
 | 
			
		||||
        this.$auth.hasPermi(`base:packaging-print-model:update`)
 | 
			
		||||
@@ -121,11 +121,12 @@ export default {
 | 
			
		||||
				// 	name: 'reset',
 | 
			
		||||
				// },
 | 
			
		||||
				{
 | 
			
		||||
					type: 'separate',
 | 
			
		||||
          type: 'label',
 | 
			
		||||
          label:'标签模板',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
          type: this.$auth.hasPermi('base:packaging-print-model:create') ? 'button' : '',
 | 
			
		||||
					btnName: '新增模板',
 | 
			
		||||
					btnName: '新增',
 | 
			
		||||
					name: 'add',
 | 
			
		||||
					color: 'success',
 | 
			
		||||
					plain: true,
 | 
			
		||||
 
 | 
			
		||||
@@ -1,19 +1,19 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-10-17 16:50:19
 | 
			
		||||
 * @LastEditTime: 2023-10-18 16:07:39
 | 
			
		||||
 * @LastEditTime: 2023-12-04 13:45:45
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-dialog :visible.sync="visible" :show-close="false" :wrapper-closable="false" width="40%">
 | 
			
		||||
  <el-dialog class="baseDialog" :visible.sync="visible" :show-close="false" :wrapper-closable="false" width="40%" show-close="true">
 | 
			
		||||
    <small-title slot="title" :no-padding="true">
 | 
			
		||||
      {{ !dataForm.id ? '新增' : '编辑' }}
 | 
			
		||||
    </small-title>
 | 
			
		||||
 | 
			
		||||
    <div class="content">
 | 
			
		||||
      <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="auto"
 | 
			
		||||
          @keyup.enter.native="dataFormSubmit">
 | 
			
		||||
          <el-row :gutter="20">
 | 
			
		||||
            <el-col :span="12">
 | 
			
		||||
@@ -345,3 +345,37 @@ export default {
 | 
			
		||||
	padding: 18px;
 | 
			
		||||
}
 | 
			
		||||
</style> -->
 | 
			
		||||
<style>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.baseDialog .el-dialog__header {
 | 
			
		||||
  font-size: 16px;
 | 
			
		||||
  color: rgba(0, 0, 0, 0.85);
 | 
			
		||||
  font-weight: 500;
 | 
			
		||||
  padding: 13px 24px;
 | 
			
		||||
  border-bottom: 1px solid #e9e9e9;
 | 
			
		||||
}
 | 
			
		||||
.baseDialog .el-dialog__header .titleStyle::before{
 | 
			
		||||
  content: '';
 | 
			
		||||
  display: inline-block;
 | 
			
		||||
  width: 4px;
 | 
			
		||||
  height: 16px;
 | 
			
		||||
  background-color: #0B58FF;
 | 
			
		||||
  border-radius: 1px;
 | 
			
		||||
  margin-right: 8px;
 | 
			
		||||
  position: relative;
 | 
			
		||||
  top: 2px;
 | 
			
		||||
}
 | 
			
		||||
.baseDialog .el-dialog__body {
 | 
			
		||||
  padding-left: 24px;
 | 
			
		||||
  padding-right: 24px;
 | 
			
		||||
}
 | 
			
		||||
.baseDialog .btnTextStyle {
 | 
			
		||||
  letter-spacing:6px;
 | 
			
		||||
  padding: 9px 10px 9px 16px;
 | 
			
		||||
  font-size: 14px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
</style>
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2023-08-01 14:55:51
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @LastEditTime: 2023-11-22 14:36:33
 | 
			
		||||
 * @LastEditTime: 2023-12-04 13:44:01
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
@@ -122,7 +122,8 @@ export default {
 | 
			
		||||
				// 	name: 'reset',
 | 
			
		||||
				// },
 | 
			
		||||
				{
 | 
			
		||||
					type: 'separate',
 | 
			
		||||
          type: 'label',
 | 
			
		||||
          label: '标签类型'
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
          type: this.$auth.hasPermi('base:packaging-print-type:create') ? 'button' : '',
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="navbar">
 | 
			
		||||
    <div style="color: #fff;font-size: 22px; float: left; letter-spacing: 1px; font-weight: 500; padding-left: 24px; marginTop: 13px">
 | 
			
		||||
      <img src="../../../assets/images/cnbm.png" style="width: 26px; height: 26px; position: relative; top: 6px; marginRight: 14px" alt="">
 | 
			
		||||
      MES
 | 
			
		||||
    <div style="color: #fff;font-size: 22px; float: left; letter-spacing: 2px; font-weight: 500; padding-left: 24px; marginTop: 13px">
 | 
			
		||||
      <img src="../../../assets/logo/logo.png" style="width: 79px; height: 28px; position: relative; top: 6px; marginRight: 14px" alt="">
 | 
			
		||||
      许昌安彩新能科技有限公司
 | 
			
		||||
    </div>
 | 
			
		||||
    <div style="padding-top: 15px; padding-right: 38px;">
 | 
			
		||||
      <navbar-right />
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
  <div class="choicepart-container">
 | 
			
		||||
    <navbar />
 | 
			
		||||
    <div class="choicepart-wrapper">
 | 
			
		||||
      <div class="choicepart-box" id="choicepartBox" :style="'transform:scale('+scale+');width:1574px;height:538px;'" v-show="showItem">
 | 
			
		||||
      <div class="choicepart-box" id="choicepartBox" :style="'transform:scale('+scale+');width:1710px;height:538px;'" v-show="showItem">
 | 
			
		||||
      <div class="choicepart-line1">
 | 
			
		||||
        <div
 | 
			
		||||
          v-for="(item, index) in menuArr1"
 | 
			
		||||
@@ -102,9 +102,7 @@ export default {
 | 
			
		||||
          meta: {
 | 
			
		||||
            title: ''
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      menuArr2: [
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          name: 'Packaging',
 | 
			
		||||
          title: '包装管理',
 | 
			
		||||
@@ -112,7 +110,9 @@ export default {
 | 
			
		||||
          meta: {
 | 
			
		||||
            title: ''
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      menuArr2: [
 | 
			
		||||
        {
 | 
			
		||||
          name: 'Material',
 | 
			
		||||
          title: '物料管理',
 | 
			
		||||
@@ -129,17 +129,41 @@ export default {
 | 
			
		||||
            title: ''
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        // {
 | 
			
		||||
        //   name: 'Delivery',
 | 
			
		||||
        //   title: '成品发货',
 | 
			
		||||
        //   visible: false,
 | 
			
		||||
        //   meta: {
 | 
			
		||||
        //     title: ''
 | 
			
		||||
        //   }
 | 
			
		||||
        // },
 | 
			
		||||
        {
 | 
			
		||||
          name: 'Delivery',
 | 
			
		||||
          title: '成品发货',
 | 
			
		||||
          name: 'Report',
 | 
			
		||||
          title: '报表管理',
 | 
			
		||||
          visible: false,
 | 
			
		||||
          meta: {
 | 
			
		||||
            title: ''
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          name: 'Report',
 | 
			
		||||
          title: '报表管理',
 | 
			
		||||
          name: 'Cost',
 | 
			
		||||
          title: '成本管理',
 | 
			
		||||
          visible: false,
 | 
			
		||||
          meta: {
 | 
			
		||||
            title: ''
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          name: 'SafetyEnvironmental',
 | 
			
		||||
          title: '安环管理',
 | 
			
		||||
          visible: false,
 | 
			
		||||
          meta: {
 | 
			
		||||
            title: ''
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          name: 'Databoard',
 | 
			
		||||
          title: '数据驾驶舱',
 | 
			
		||||
          visible: false,
 | 
			
		||||
          meta: {
 | 
			
		||||
            title: ''
 | 
			
		||||
@@ -176,7 +200,7 @@ export default {
 | 
			
		||||
      console.log(menuList)
 | 
			
		||||
      if (menuList.length > 0) {
 | 
			
		||||
        for (let i = 0; i < menuList.length; i ++) {
 | 
			
		||||
          for (let k = 0; k < 7; k++) {
 | 
			
		||||
          for (let k = 0; k < 8; k++) {
 | 
			
		||||
            if (menuList[i].name === this.menuArr1[k].name) {
 | 
			
		||||
              this.menuArr1[k].visible = true
 | 
			
		||||
              this.menuArr1[k].id = menuList[i].id
 | 
			
		||||
@@ -185,7 +209,7 @@ export default {
 | 
			
		||||
              this.menuArr1[k].meta = menuList[i].meta
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
          for (let j = 0; j < 6; j++) {
 | 
			
		||||
          for (let j = 0; j < 7; j++) {
 | 
			
		||||
            if (menuList[i].name === this.menuArr2[j].name) {
 | 
			
		||||
              this.menuArr2[j].visible = true
 | 
			
		||||
              this.menuArr2[j].id = menuList[i].id
 | 
			
		||||
 
 | 
			
		||||
@@ -84,7 +84,7 @@ export default {
 | 
			
		||||
					label: '时间',
 | 
			
		||||
					dateType: 'monthrange',
 | 
			
		||||
					format: 'yyyy-MM',
 | 
			
		||||
					valueFormat: 'yyyy-MM-ddTHH:mm:ss',
 | 
			
		||||
					valueFormat: 'timestamp',
 | 
			
		||||
					rangeSeparator: '-',
 | 
			
		||||
					startPlaceholder: '开始时间',
 | 
			
		||||
					endPlaceholder: '结束时间',
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2022-08-24 11:19:43
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @LastEditTime: 2023-11-06 15:59:53
 | 
			
		||||
 * @LastEditTime: 2023-12-13 15:52:53
 | 
			
		||||
 * @Description:
 | 
			
		||||
 */
 | 
			
		||||
export default {
 | 
			
		||||
@@ -38,7 +38,7 @@ export default {
 | 
			
		||||
        this.$refs["dataForm"].resetFields();
 | 
			
		||||
        if (this.dataForm.id) {
 | 
			
		||||
          this.urlOptions.infoURL(id).then(response => {
 | 
			
		||||
            this.dataForm = response.data;
 | 
			
		||||
            this.dataForm = response.data
 | 
			
		||||
            if (this.setData) {
 | 
			
		||||
              this.setDataForm()
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										162
									
								
								src/views/cost/energyCost/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,162 @@
 | 
			
		||||
<template>
 | 
			
		||||
	<div class="app-container">
 | 
			
		||||
		<!-- 搜索工作栏 -->
 | 
			
		||||
		<search-bar
 | 
			
		||||
			:formConfigs="formConfig"
 | 
			
		||||
			ref="searchBarForm"
 | 
			
		||||
			@headBtnClick="buttonClick" />
 | 
			
		||||
 | 
			
		||||
		<!-- 列表 -->
 | 
			
		||||
		<base-table
 | 
			
		||||
			v-loading="dataListLoading"
 | 
			
		||||
			:table-props="tableProps"
 | 
			
		||||
			:page="listQuery.pageNo"
 | 
			
		||||
			:limit="listQuery.pageSize"
 | 
			
		||||
			:table-data="tableData"></base-table>
 | 
			
		||||
		<pagination
 | 
			
		||||
			:limit.sync="listQuery.pageSize"
 | 
			
		||||
			:page.sync="listQuery.pageNo"
 | 
			
		||||
			:total="listQuery.total"
 | 
			
		||||
			@pagination="getDataList" />
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import basicPage from '../mixins/basic-page';
 | 
			
		||||
import codeFilter from '../mixins/code-filter';
 | 
			
		||||
import {
 | 
			
		||||
	getCostEneryAutoPage,
 | 
			
		||||
	exportCostEneryExcel,
 | 
			
		||||
} from '@/api/cost/costEneryAutoReport';
 | 
			
		||||
import { getEnergyTypeListAll } from '@/api/base/energyType';
 | 
			
		||||
import { publicFormatter } from '@/utils/dict';
 | 
			
		||||
 | 
			
		||||
const tableProps = [
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'energyTypeName',
 | 
			
		||||
		label: '能源类型',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'objName',
 | 
			
		||||
		label: '监控对象',
 | 
			
		||||
		filter: (val) => (val != null ? val : '--'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'tableName',
 | 
			
		||||
		label: '水/气表名',
 | 
			
		||||
		filter: (val) => (val != null ? val : '--'),
 | 
			
		||||
		filter: publicFormatter('table_name'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'totalUsed',
 | 
			
		||||
		label: '累计使用量',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'totalCost',
 | 
			
		||||
		label: '总价',
 | 
			
		||||
		align: 'right',
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
	mixins: [basicPage],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			urlOptions: {
 | 
			
		||||
				getDataListURL: getCostEneryAutoPage,
 | 
			
		||||
        exportURL: exportCostEneryExcel
 | 
			
		||||
			},
 | 
			
		||||
			tableData: [],
 | 
			
		||||
			tableProps,
 | 
			
		||||
			drawerVisible: false,
 | 
			
		||||
			formConfig: [
 | 
			
		||||
				{
 | 
			
		||||
					type: 'select',
 | 
			
		||||
					label: '能源类型',
 | 
			
		||||
					selectOptions: [],
 | 
			
		||||
					param: 'energyTypeId',
 | 
			
		||||
					filterable: true,
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'datePicker',
 | 
			
		||||
					label: '时间范围',
 | 
			
		||||
					dateType: 'daterange',
 | 
			
		||||
					format: 'yyyy-MM-dd',
 | 
			
		||||
					valueFormat: 'timestamp',
 | 
			
		||||
					rangeSeparator: '-',
 | 
			
		||||
					startPlaceholder: '开始时间',
 | 
			
		||||
					endPlaceholder: '结束时间',
 | 
			
		||||
					param: 'searchTime',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: this.$auth.hasPermi('cost:energyCost:export')
 | 
			
		||||
						? 'button'
 | 
			
		||||
						: '',
 | 
			
		||||
					btnName: '导出',
 | 
			
		||||
					name: 'export',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
					plain: true,
 | 
			
		||||
				},
 | 
			
		||||
			],
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	components: {},
 | 
			
		||||
	created() {
 | 
			
		||||
		getEnergyTypeListAll().then((response) => {
 | 
			
		||||
			this.formConfig[0].selectOptions = response.data;
 | 
			
		||||
		});
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
    // 获取数据列表
 | 
			
		||||
    getDataList() {
 | 
			
		||||
      if(this.listQuery.searchTime){
 | 
			
		||||
      this.dataListLoading = true;
 | 
			
		||||
      this.urlOptions.getDataListURL(this.listQuery).then(response => {
 | 
			
		||||
        if(response.hasOwnProperty('data')){
 | 
			
		||||
          this.tableData = response.data.list;
 | 
			
		||||
          this.listQuery.total = response.data.total;
 | 
			
		||||
        }
 | 
			
		||||
        this.dataListLoading = false;
 | 
			
		||||
      });
 | 
			
		||||
    }else{
 | 
			
		||||
      this.$message.warning('请选择时间范围')
 | 
			
		||||
    }
 | 
			
		||||
    },
 | 
			
		||||
		buttonClick(val) {
 | 
			
		||||
			switch (val.btnName) {
 | 
			
		||||
				case 'search':
 | 
			
		||||
					this.listQuery.pageNo = 1;
 | 
			
		||||
					this.listQuery.pageSize = 10;
 | 
			
		||||
					this.listQuery.energyTypeId = val.energyTypeId;
 | 
			
		||||
          this.listQuery.searchTime = val.searchTime ? val.searchTime[0] : null;
 | 
			
		||||
					this.listQuery.startTime = val.searchTime ? val.searchTime[0] : null;
 | 
			
		||||
					this.listQuery.endTime = val.searchTime ? val.searchTime[1] : null;
 | 
			
		||||
					this.getDataList();
 | 
			
		||||
					break;
 | 
			
		||||
				case 'export':
 | 
			
		||||
          const data = {
 | 
			
		||||
            energyTypeId:val.energyTypeId,
 | 
			
		||||
            startTime : val.searchTime ? val.searchTime[0] : null,
 | 
			
		||||
            endTime : val.searchTime ? val.searchTime[1] : null,
 | 
			
		||||
          }
 | 
			
		||||
					this.handleExport(data);
 | 
			
		||||
					break;
 | 
			
		||||
				default:
 | 
			
		||||
					console.log(val);
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style>
 | 
			
		||||
.app-container .el-table .el-table__cell {
 | 
			
		||||
	padding: 0;
 | 
			
		||||
	height: 35px;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										180
									
								
								src/views/cost/energyCostHis/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,180 @@
 | 
			
		||||
<template>
 | 
			
		||||
	<div class="app-container">
 | 
			
		||||
		<!-- 搜索工作栏 -->
 | 
			
		||||
		<search-bar
 | 
			
		||||
			:formConfigs="formConfig"
 | 
			
		||||
			ref="searchBarForm"
 | 
			
		||||
			@headBtnClick="buttonClick" />
 | 
			
		||||
 | 
			
		||||
		<!-- 列表 -->
 | 
			
		||||
		<base-table
 | 
			
		||||
			v-loading="dataListLoading"
 | 
			
		||||
			:table-props="tableProps"
 | 
			
		||||
			:page="listQuery.pageNo"
 | 
			
		||||
			:limit="listQuery.pageSize"
 | 
			
		||||
			:table-data="tableData"></base-table>
 | 
			
		||||
		<pagination
 | 
			
		||||
			:limit.sync="listQuery.pageSize"
 | 
			
		||||
			:page.sync="listQuery.pageNo"
 | 
			
		||||
			:total="listQuery.total"
 | 
			
		||||
			@pagination="getDataList" />
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import basicPage from '../mixins/basic-page';
 | 
			
		||||
import codeFilter from '../mixins/code-filter';
 | 
			
		||||
import {
 | 
			
		||||
	getCostEneryAutoReportPage,
 | 
			
		||||
	exportCostEneryAutoReportExcel,
 | 
			
		||||
} from '@/api/cost/costEneryAutoReport';
 | 
			
		||||
import { getEnergyTypeListAll } from '@/api/base/energyType';
 | 
			
		||||
import { publicFormatter } from '@/utils/dict';
 | 
			
		||||
import moment from 'moment';
 | 
			
		||||
 | 
			
		||||
const tableProps = [
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'reportType',
 | 
			
		||||
		label: '维度',
 | 
			
		||||
		filter: codeFilter('reportType'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'reportName',
 | 
			
		||||
		label: '时间',
 | 
			
		||||
		minWidth: 150,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'energyType',
 | 
			
		||||
		label: '能源类型',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'objName',
 | 
			
		||||
		label: '监控对象',
 | 
			
		||||
		filter: (val) => (val != null ? val : '--'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'tableName',
 | 
			
		||||
		label: '水/气表名',
 | 
			
		||||
		filter: (val) => (val != null ? val : '--'),
 | 
			
		||||
		filter: publicFormatter('table_name'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'totalUsed',
 | 
			
		||||
		label: '累计使用量',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'totalCost',
 | 
			
		||||
		label: '总价',
 | 
			
		||||
		align: 'right',
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
	mixins: [basicPage],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			urlOptions: {
 | 
			
		||||
				getDataListURL: getCostEneryAutoReportPage,
 | 
			
		||||
				exportURL: exportCostEneryAutoReportExcel,
 | 
			
		||||
			},
 | 
			
		||||
			tableData: [],
 | 
			
		||||
			tableProps,
 | 
			
		||||
			drawerVisible: false,
 | 
			
		||||
			formConfig: [
 | 
			
		||||
				{
 | 
			
		||||
					type: 'select',
 | 
			
		||||
					label: '维度',
 | 
			
		||||
					selectOptions: [
 | 
			
		||||
						{ id: 2, name: '日' },
 | 
			
		||||
						{ id: 3, name: '周' },
 | 
			
		||||
						{ id: 4, name: '月' },
 | 
			
		||||
						{ id: 5, name: '年' },
 | 
			
		||||
					],
 | 
			
		||||
					param: 'reportType',
 | 
			
		||||
					filterable: true,
 | 
			
		||||
					clearable: false,
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'select',
 | 
			
		||||
					label: '能源类型',
 | 
			
		||||
					selectOptions: [],
 | 
			
		||||
					param: 'energyTypeId',
 | 
			
		||||
					filterable: true,
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'datePicker',
 | 
			
		||||
					label: '时间范围',
 | 
			
		||||
					dateType: 'daterange',
 | 
			
		||||
					format: 'yyyy-MM-dd',
 | 
			
		||||
					valueFormat: 'yyyy-MM-dd',
 | 
			
		||||
					rangeSeparator: '-',
 | 
			
		||||
					startPlaceholder: '开始时间',
 | 
			
		||||
					endPlaceholder: '结束时间',
 | 
			
		||||
					param: 'searchTime',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: this.$auth.hasPermi('cost:energyCostHis:export')
 | 
			
		||||
						? 'button'
 | 
			
		||||
						: '',
 | 
			
		||||
					btnName: '导出',
 | 
			
		||||
					name: 'export',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
					plain: true,
 | 
			
		||||
				},
 | 
			
		||||
			],
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	components: {},
 | 
			
		||||
	created() {
 | 
			
		||||
		getEnergyTypeListAll().then((response) => {
 | 
			
		||||
			this.formConfig[1].selectOptions = response.data;
 | 
			
		||||
		});
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		buttonClick(val) {
 | 
			
		||||
			switch (val.btnName) {
 | 
			
		||||
				case 'search':
 | 
			
		||||
					this.listQuery.pageNo = 1;
 | 
			
		||||
					this.listQuery.pageSize = 10;
 | 
			
		||||
					this.listQuery.reportType = val.reportType;
 | 
			
		||||
					this.listQuery.energyTypeId = val.energyTypeId;
 | 
			
		||||
					this.listQuery.reportTime = val.searchTime
 | 
			
		||||
						? [
 | 
			
		||||
								moment(val.searchTime[0]).startOf('day').format('x'),
 | 
			
		||||
								moment(val.searchTime[1]).endOf('day').format('x'),
 | 
			
		||||
						  ]
 | 
			
		||||
						: null;
 | 
			
		||||
					this.getDataList();
 | 
			
		||||
					break;
 | 
			
		||||
				case 'export':
 | 
			
		||||
					const data = {
 | 
			
		||||
						reportType: val.reportType,
 | 
			
		||||
						energyTypeId: val.energyTypeId,
 | 
			
		||||
						reportTime: val.searchTime
 | 
			
		||||
							? [
 | 
			
		||||
									moment(val.searchTime[0]).startOf('day').format('x'),
 | 
			
		||||
									moment(val.searchTime[1]).endOf('day').format('x'),
 | 
			
		||||
							  ]
 | 
			
		||||
							: null,
 | 
			
		||||
					};
 | 
			
		||||
					this.handleExport(data);
 | 
			
		||||
					break;
 | 
			
		||||
				default:
 | 
			
		||||
					console.log(val);
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style>
 | 
			
		||||
.app-container .el-table .el-table__cell {
 | 
			
		||||
	padding: 0;
 | 
			
		||||
	height: 35px;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										121
									
								
								src/views/cost/mixins/basic-add.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,121 @@
 | 
			
		||||
/*
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2022-08-24 11:19:43
 | 
			
		||||
 * @LastEditors: zwq
 | 
			
		||||
 * @LastEditTime: 2023-11-02 15:33:39
 | 
			
		||||
 * @Description:
 | 
			
		||||
 */
 | 
			
		||||
import { listData } from "@/api/system/dict/data";
 | 
			
		||||
export default {
 | 
			
		||||
  data() {
 | 
			
		||||
    /* eslint-disable */
 | 
			
		||||
    return {
 | 
			
		||||
      urlOptions: {
 | 
			
		||||
        createURL: '',
 | 
			
		||||
        updateURL: '',
 | 
			
		||||
        infoURL: '',
 | 
			
		||||
        codeURL: '',
 | 
			
		||||
        getOption: false, //是否加载获取下拉框方法
 | 
			
		||||
        isGetCode: false, //是否加载获取code方法
 | 
			
		||||
        getDictList: false, //是否加载获取数据字典方法
 | 
			
		||||
        optionArrUrl: [], //需要获取下拉框的方法数组
 | 
			
		||||
        optionArr: {}, //需要获取下拉框的方法数组的返回结果
 | 
			
		||||
        dictList: {}, //需要获取数据字典的方法数组的返回结果
 | 
			
		||||
      },
 | 
			
		||||
      visible: false,
 | 
			
		||||
      setData: false
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  created() {
 | 
			
		||||
  },
 | 
			
		||||
  activated() {
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    init(id) {
 | 
			
		||||
      this.dataForm.id = id || "";
 | 
			
		||||
      this.visible = true;
 | 
			
		||||
      if (this.urlOptions.getOption) {
 | 
			
		||||
        this.getArr()
 | 
			
		||||
      }
 | 
			
		||||
      if (this.urlOptions.getDictList) {
 | 
			
		||||
        this.getDict()
 | 
			
		||||
      }
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs["dataForm"].resetFields();
 | 
			
		||||
        if (this.dataForm.id) {
 | 
			
		||||
          this.urlOptions.infoURL(id).then(response => {
 | 
			
		||||
            this.dataForm = response.data;
 | 
			
		||||
            if (this.setData) {
 | 
			
		||||
              this.setDataForm()
 | 
			
		||||
            }
 | 
			
		||||
          });
 | 
			
		||||
        } else {
 | 
			
		||||
          if (this.urlOptions.isGetCode) {
 | 
			
		||||
            this.getCode()
 | 
			
		||||
          }
 | 
			
		||||
				}
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
		getCode() {
 | 
			
		||||
			this.urlOptions.codeURL()
 | 
			
		||||
				.then(({ data: res }) => {
 | 
			
		||||
					this.dataForm.code = res;
 | 
			
		||||
				})
 | 
			
		||||
				.catch(() => {});
 | 
			
		||||
		},
 | 
			
		||||
    getArr() {
 | 
			
		||||
      const params = {
 | 
			
		||||
        pageSize: 100,
 | 
			
		||||
        pageNo: 1,
 | 
			
		||||
      }
 | 
			
		||||
      this.urlOptions.optionArrUrl.forEach((item, index) => {
 | 
			
		||||
        item(params).then(({ data: res }) => {
 | 
			
		||||
          this.$set(this.urlOptions.optionArr, `arr${index}`, res.list)
 | 
			
		||||
        })
 | 
			
		||||
          .catch(() => {
 | 
			
		||||
          });
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    /** 查询字典数据列表 */
 | 
			
		||||
    getDict() {
 | 
			
		||||
      this.nameList.forEach((item,index)=>{
 | 
			
		||||
        const queryParams = {
 | 
			
		||||
          pageNo: 1,
 | 
			
		||||
          pageSize: 99,
 | 
			
		||||
          dictType: item,
 | 
			
		||||
        }
 | 
			
		||||
        listData(queryParams).then(response => {
 | 
			
		||||
          this.$set(this.urlOptions.dictList, `dict${index}`, response.data.list)
 | 
			
		||||
        });
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    // 表单提交
 | 
			
		||||
    dataFormSubmit() {
 | 
			
		||||
      this.$refs["dataForm"].validate((valid) => {
 | 
			
		||||
        if (!valid) {
 | 
			
		||||
          return false;
 | 
			
		||||
        }
 | 
			
		||||
        // 修改的提交
 | 
			
		||||
        if (this.dataForm.id) {
 | 
			
		||||
          this.urlOptions.updateURL(this.dataForm).then(response => {
 | 
			
		||||
            this.$modal.msgSuccess("修改成功");
 | 
			
		||||
            this.visible = false;
 | 
			
		||||
            this.$emit("refreshDataList");
 | 
			
		||||
          });
 | 
			
		||||
          return;
 | 
			
		||||
        }
 | 
			
		||||
        // 添加的提交
 | 
			
		||||
        this.urlOptions.createURL(this.dataForm).then(response => {
 | 
			
		||||
          this.$modal.msgSuccess("新增成功");
 | 
			
		||||
          this.visible = false;
 | 
			
		||||
          this.$emit("refreshDataList");
 | 
			
		||||
        });
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    formClear() {
 | 
			
		||||
      if (this.$refs.dataForm!==undefined) {
 | 
			
		||||
          this.$refs.dataForm.resetFields();
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										172
									
								
								src/views/cost/mixins/basic-page.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,172 @@
 | 
			
		||||
/*
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2022-08-24 11:19:43
 | 
			
		||||
 * @LastEditors: zwq
 | 
			
		||||
 * @LastEditTime: 2023-12-07 09:35:33
 | 
			
		||||
 * @Description:
 | 
			
		||||
 */
 | 
			
		||||
export default {
 | 
			
		||||
  data() {
 | 
			
		||||
    /* eslint-disable */
 | 
			
		||||
    return {
 | 
			
		||||
      urlOptions: {
 | 
			
		||||
        getDataListURL: '',
 | 
			
		||||
        deleteURL: '',
 | 
			
		||||
        statusUrl: '',
 | 
			
		||||
        exportURL: ''
 | 
			
		||||
      },
 | 
			
		||||
      tableData: [],
 | 
			
		||||
      listQuery: {
 | 
			
		||||
        pageSize: 10,
 | 
			
		||||
        pageNo: 1,
 | 
			
		||||
        total: 1,
 | 
			
		||||
      },
 | 
			
		||||
      exportLoading: false,
 | 
			
		||||
      dataListLoading: false,
 | 
			
		||||
      addOrEditTitle: '',
 | 
			
		||||
      addOrUpdateVisible: false,
 | 
			
		||||
      addOrUpdate:'addOrUpdate'
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  created() {
 | 
			
		||||
  },
 | 
			
		||||
  mounted() {
 | 
			
		||||
    this.getDataList()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    // 获取数据列表
 | 
			
		||||
    getDataList() {
 | 
			
		||||
      this.dataListLoading = true;
 | 
			
		||||
      this.urlOptions.getDataListURL(this.listQuery).then(response => {
 | 
			
		||||
        if(response.hasOwnProperty('data')){
 | 
			
		||||
          this.tableData = response.data.list;
 | 
			
		||||
          this.listQuery.total = response.data.total;
 | 
			
		||||
        }
 | 
			
		||||
        this.dataListLoading = false;
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    // 每页数
 | 
			
		||||
    sizeChangeHandle(val) {
 | 
			
		||||
      this.listQuery.pageSize = val;
 | 
			
		||||
      this.listQuery.pageNo = 1;
 | 
			
		||||
      this.getDataList();
 | 
			
		||||
    },
 | 
			
		||||
    // 当前页
 | 
			
		||||
    currentChangeHandle(val) {
 | 
			
		||||
      this.listQuery.pageNo = val;
 | 
			
		||||
      this.getDataList();
 | 
			
		||||
    },
 | 
			
		||||
    // 新增 / 修改
 | 
			
		||||
    addOrUpdateHandle(id) {
 | 
			
		||||
      this.addOrUpdateVisible = true;
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs.addOrUpdate.init(id);
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    cancel(id) {
 | 
			
		||||
      this.$refs["popover-" + id].showPopper = false;
 | 
			
		||||
    },
 | 
			
		||||
    //改变状态
 | 
			
		||||
    changeStatus(id) {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .post(this.urlOptions.statusUrl, { id })
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code !== 0) {
 | 
			
		||||
            return this.$message.error(res.msg);
 | 
			
		||||
          }
 | 
			
		||||
          this.$refs["popover-" + id].showPopper = false;
 | 
			
		||||
          this.$message({
 | 
			
		||||
            message: this.$t("prompt.success"),
 | 
			
		||||
            type: "success",
 | 
			
		||||
            duration: 500,
 | 
			
		||||
            onClose: () => {
 | 
			
		||||
              this.getDataList();
 | 
			
		||||
            },
 | 
			
		||||
          });
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => { });
 | 
			
		||||
    },
 | 
			
		||||
    //tableBtn点击
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      if (val.type === "edit") {
 | 
			
		||||
        this.addOrUpdateVisible = true;
 | 
			
		||||
        this.addOrEditTitle = "编辑";
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
          this.$refs.addOrUpdate.init(val.data.id);
 | 
			
		||||
        });
 | 
			
		||||
      } else if (val.type === "delete") {
 | 
			
		||||
        this.deleteHandle(val.data.id, val.data.name, val.data._pageIndex)
 | 
			
		||||
      } else if (val.type === "change") {
 | 
			
		||||
        this.changeStatus(val.data.id)
 | 
			
		||||
      } else {
 | 
			
		||||
        this.otherMethods(val)
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    // 删除
 | 
			
		||||
    deleteHandle(id, name, index) {
 | 
			
		||||
      this.$confirm(`是否确认删除${name ? '名称为"' + name + '"' : '序号为"' + index + '"'}的数据项?`, "系统提示", {
 | 
			
		||||
        confirmButtonText: "确定",
 | 
			
		||||
        cancelButtonText: "取消",
 | 
			
		||||
        type: "warning",
 | 
			
		||||
      })
 | 
			
		||||
        .then(() => {
 | 
			
		||||
          this.urlOptions.deleteURL(id).then(({ data }) => {
 | 
			
		||||
            this.$message({
 | 
			
		||||
              message: "操作成功",
 | 
			
		||||
              type: "success",
 | 
			
		||||
              duration: 1500,
 | 
			
		||||
              onClose: () => {
 | 
			
		||||
                this.getDataList();
 | 
			
		||||
              },
 | 
			
		||||
            });
 | 
			
		||||
          });
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => { });
 | 
			
		||||
    },
 | 
			
		||||
    //search-bar点击
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      switch (val.btnName) {
 | 
			
		||||
        case "search":
 | 
			
		||||
          this.listQuery.xm1 = val.xm1;
 | 
			
		||||
          this.listQuery.xm2 = val.xm2;
 | 
			
		||||
          this.listQuery.pageNo = 1;
 | 
			
		||||
          this.getDataList();
 | 
			
		||||
          break;
 | 
			
		||||
        case "add":
 | 
			
		||||
          this.addOrEditTitle = '新增'
 | 
			
		||||
          this.addOrUpdateVisible = true;
 | 
			
		||||
          this.addOrUpdateHandle()
 | 
			
		||||
          break;
 | 
			
		||||
        default:
 | 
			
		||||
          console.log(val)
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    handleCancel() {
 | 
			
		||||
      this.$refs[this.addOrUpdate].formClear()
 | 
			
		||||
      this.addOrUpdateVisible = false
 | 
			
		||||
      this.addOrEditTitle = ''
 | 
			
		||||
      this.addOrUpdate = 'addOrUpdate'
 | 
			
		||||
    },
 | 
			
		||||
    handleConfirm() {
 | 
			
		||||
      this.$refs[this.addOrUpdate].dataFormSubmit()
 | 
			
		||||
    },
 | 
			
		||||
    successSubmit() {
 | 
			
		||||
      this.handleCancel()
 | 
			
		||||
      this.getDataList()
 | 
			
		||||
    },
 | 
			
		||||
    /** 导出按钮操作 */
 | 
			
		||||
    handleExport(data) {
 | 
			
		||||
      // 处理查询参数
 | 
			
		||||
      let params = data?{ ...data }:{ ...this.listQuery };
 | 
			
		||||
      params.pageNo = undefined;
 | 
			
		||||
      params.pageSize = undefined;
 | 
			
		||||
      this.$modal.confirm('是否确认导出所有数据项?').then(() => {
 | 
			
		||||
        this.exportLoading = true;
 | 
			
		||||
        return this.urlOptions.exportURL(params);
 | 
			
		||||
      }).then(response => {
 | 
			
		||||
        this.$download.excel(response, '报表.xls');
 | 
			
		||||
        this.exportLoading = false;
 | 
			
		||||
      }).catch(() => { });
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||