Compare commits
	
		
			42 Commits
		
	
	
		
			projects/z
			...
			projects/z
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 86a9e425a9 | |||
| d4495e97f1 | |||
| 755fe3adab | |||
| d380907298 | |||
| 94874a9d76 | |||
| b7d65b47c8 | |||
| cc65c44cb8 | |||
| 3e13028f9f | |||
| b28816f515 | |||
| 9c1f36d460 | |||
| 67e3b08c82 | |||
| afb62375da | |||
| e93e7d530d | |||
| 86eca859aa | |||
| 1e9bfee1e7 | |||
| b4985d4018 | |||
| ea47028178 | |||
| eaf00466db | |||
| 1434eaa3ac | |||
| bc2b51d0e3 | |||
| e58c60e6f7 | |||
| 445cd9630d | |||
| e314e84b43 | |||
| 491b88f220 | |||
| d5744b4f3d | |||
| c138755a54 | |||
| d764eae48d | |||
| baffb1f6f8 | |||
| 8ecc5db385 | |||
| 77259329d9 | |||
| 8ad8e3a5b4 | |||
| 6ca512392c | |||
| a73502cda7 | |||
| e32530e459 | |||
| 64e1c1869d | |||
| 93ac1c4742 | |||
| a650f0ad9d | |||
| e237737830 | |||
| 09cce6c613 | |||
| 07dd135daa | |||
| 0757d2d47c | |||
| 4fbe72d314 | 
							
								
								
									
										19
									
								
								.env.dev
									
									
									
									
									
								
							
							
						
						| @@ -1,21 +1,24 @@ | ||||
| ### | ||||
|  # @Author: Do not edit | ||||
|  # @Date: 2023-08-29 09:40:39 | ||||
|  # @LastEditTime: 2023-10-16 09:22:52 | ||||
|  # @LastEditors: DY | ||||
|  # @Description:  | ||||
| ###  | ||||
|  # @LastEditTime: 2025-03-05 16:46:35 | ||||
|  # @LastEditors: zwq | ||||
|  # @Description: | ||||
| ### | ||||
| # 开发环境配置 | ||||
| ENV = 'development' | ||||
|  | ||||
| # 页面标题 | ||||
| VUE_APP_TITLE = 产线监控系统 | ||||
| VUE_APP_TITLE = 成本管理系统 | ||||
|  | ||||
| # 芋道管理系统/开发环境 | ||||
| # VUE_APP_BASE_API = 'http://192.168.1.49:48080' | ||||
| # VUE_APP_BASE_API = 'http://192.168.1.8:48080' | ||||
| VUE_APP_BASE_API = 'http://192.168.0.33:48080' | ||||
| # VUE_APP_BASE_API = 'http://192.168.1.188:48080' | ||||
| # VUE_APP_BASE_API = 'http://line-sczg.kszny.picaiba.com' | ||||
| VUE_APP_BASE_API = 'http://100.64.0.45:48080' | ||||
| # VUE_APP_BASE_API = 'http://172.16.33.10:48080' | ||||
|  | ||||
| # ws地址 | ||||
| VUE_APP_WS_API = 'ws://100.64.0.45:48080' | ||||
|  | ||||
| # 路由懒加载 | ||||
| VUE_CLI_BABEL_TRANSPILE_MODULES = true | ||||
|   | ||||
							
								
								
									
										18
									
								
								.env.prod
									
									
									
									
									
								
							
							
						
						| @@ -1,15 +1,27 @@ | ||||
| ### | ||||
|  # @Author: zwq | ||||
|  # @Date: 2024-03-27 15:49:55 | ||||
|  # @LastEditors: zwq | ||||
|  # @LastEditTime: 2025-03-05 16:30:45 | ||||
|  # @Description: | ||||
| ### | ||||
| # 生产环境配置 | ||||
| ENV = 'production' | ||||
|  | ||||
| # 页面标题 | ||||
| VUE_APP_TITLE = 产线监控系统 | ||||
| VUE_APP_TITLE = 成本管理系统 | ||||
|  | ||||
| # 芋道管理系统/生产环境 | ||||
| VUE_APP_BASE_API = '/prod-api' | ||||
| # VUE_APP_BASE_API = '/prod-api' | ||||
| VUE_APP_BASE_API = '' | ||||
|  | ||||
| # 根据服务器或域名修改 | ||||
| # PUBLIC_PATH = 'http://my-pi.com:8888/yudao-admin/' | ||||
| PUBLIC_PATH = 'http://192.168.0.33:8888/' | ||||
| # PUBLIC_PATH = 'http://192.168.0.33:8888/' | ||||
| PUBLIC_PATH = '' | ||||
|  | ||||
| # ws地址 | ||||
| VUE_APP_WS_API = 'ws://10.1.17.10:48080' | ||||
|  | ||||
| # 二级部署路径 | ||||
| VUE_APP_APP_NAME ='yudao-admin' | ||||
|   | ||||
							
								
								
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -20,4 +20,6 @@ selenium-debug.log | ||||
| *.local | ||||
|  | ||||
| package-lock.json | ||||
| echarts.js | ||||
| echarts.js | ||||
| sync_line_sczg_prod.bat | ||||
| sync_line_sczg_aliyun.bat | ||||
| @@ -6,9 +6,9 @@ | ||||
|   "license": "MIT", | ||||
|   "scripts": { | ||||
|     "local": "vue-cli-service serve --mode local", | ||||
|     "dev": "vue-cli-service serve --mode dev", | ||||
|     "dev": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --mode dev", | ||||
|     "front": "vue-cli-service serve --mode front", | ||||
|     "build:prod": "vue-cli-service build --mode prod", | ||||
|     "build:prod": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build --mode prod", | ||||
|     "build:stage": "vue-cli-service build --mode stage", | ||||
|     "build:dev": "vue-cli-service build --mode dev", | ||||
|     "build:static": "vue-cli-service build --mode static", | ||||
|   | ||||
							
								
								
									
										86
									
								
								src/api/base/energyQuantityManual.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,86 @@ | ||||
| /* | ||||
|  * @Author: zwq | ||||
|  * @Date: 2024-04-11 15:00:03 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-04-12 10:25:30 | ||||
|  * @Description: | ||||
|  */ | ||||
| import request from '@/utils/request' | ||||
|  | ||||
| // 获得分页数据 | ||||
| export function energyQuantityManualPage(query) { | ||||
|   return request({ | ||||
|     url: '/base/energy-quantity-manual/page', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 创建 | ||||
| export function energyQuantityManualCreate(data) { | ||||
|   return request({ | ||||
|     url: '/base/energy-quantity-manual/create', | ||||
|     method: 'post', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 更新 | ||||
| export function energyQuantityManualUpdate(data) { | ||||
|   return request({ | ||||
|     url: '/base/energy-quantity-manual/update', | ||||
|     method: 'put', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| //获得能源抄表(手动) | ||||
| export function energyQuantityManualGet(query) { | ||||
|   return request({ | ||||
|     url: '/base/energy-quantity-manual/get', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| //删除 | ||||
| export function energyQuantityManualDelete(query) { | ||||
|   return request({ | ||||
|     url: '/base/energy-quantity-manual/delete', | ||||
|     method: 'delete', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| //导出 | ||||
| export function energyQuantityManualExport(query) { | ||||
|   return request({ | ||||
|     url: '/base/energy-quantity-manual/export-excel', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|     responseType: 'blob' | ||||
|   }) | ||||
| } | ||||
| // 获得能源表名配置分页 | ||||
| export function energyTablePage() { | ||||
|   return request({ | ||||
|     url: '/base/energy-type-meter-bind/list', | ||||
|     method: 'get', | ||||
|   }) | ||||
| } | ||||
| // 获得能源表名配置 | ||||
| export function energyTableGet(query) { | ||||
|   return request({ | ||||
|     url: '/base/energy-type-meter-bind/list', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
| // 更新能源表名配置 | ||||
| export function energyTableUpdate(data) { | ||||
|   return request({ | ||||
|     url: '/base/energy-type-meter-bind/update', | ||||
|     method: 'put', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
							
								
								
									
										53
									
								
								src/api/base/equipmentConfig.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,53 @@ | ||||
| /* | ||||
|  * @Author: Do not edit | ||||
|  * @Date: 2024-02-21 13:43:02 | ||||
|  * @LastEditTime: 2024-04-30 10:07:59 | ||||
|  * @LastEditors: zwq | ||||
|  * @Description: | ||||
|  */ | ||||
| import request from '@/utils/request' | ||||
|  | ||||
| // 获得关联表名 | ||||
| export function getplcAllList(query) { | ||||
|   return request({ | ||||
|     url: '/base/equipment-plc/listAll', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 获得设备 | ||||
| export function getEquipmentList(query) { | ||||
|   return request({ | ||||
|     url: '/base/core-equipment/page', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 根据产线获得工段 | ||||
| export function listByParentId(query) { | ||||
|   return request({ | ||||
|     url: '/base/core-workshop-section/listByParentId', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 获得产线工段设备树形结构 | ||||
| export function getTree(query) { | ||||
|   return request({ | ||||
|     url: '/base/factory/getTree', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 获得设备分组列表 | ||||
| export function getgroupAllList(query) { | ||||
|   return request({ | ||||
|     url: '/base/equipment-group/listAll', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
							
								
								
									
										75
									
								
								src/api/base/material.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,75 @@ | ||||
| /* | ||||
|  * @Author: zwq | ||||
|  * @Date: 2024-04-09 16:42:19 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-04-10 14:33:52 | ||||
|  * @Description: | ||||
|  */ | ||||
| import request from '@/utils/request' | ||||
|  | ||||
| // 创建原料 | ||||
| export function createMaterial(data) { | ||||
|   return request({ | ||||
|     url: '/base/material/create', | ||||
|     method: 'post', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 更新原料 | ||||
| export function updateMaterial(data) { | ||||
|   return request({ | ||||
|     url: '/base/material/update', | ||||
|     method: 'put', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 获取code | ||||
| export function getCode() { | ||||
|   return request({ | ||||
|     url: '/base/material/autoCode', | ||||
|     method: 'POST' | ||||
|   }) | ||||
| } | ||||
| // 删除原料 | ||||
| export function deleteMaterial(id) { | ||||
|   return request({ | ||||
|     url: '/base/material/delete?id=' + id, | ||||
|     method: 'delete' | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 获得原料 | ||||
| export function getMaterial(id) { | ||||
|   return request({ | ||||
|     url: '/base/material/get?id=' + id, | ||||
|     method: 'get' | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 获得原料分页 | ||||
| export function getMaterialPage(query) { | ||||
|   return request({ | ||||
|     url: '/base/material/page', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
| // 获得原料列表 | ||||
| export function getMaterialList() { | ||||
|   return request({ | ||||
|     url: '/base/material/list', | ||||
|     method: 'get', | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 导出原料 Excel | ||||
| export function exportMaterialExcel(query) { | ||||
|   return request({ | ||||
|     url: '/base/material/export-excel', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|     responseType: 'blob' | ||||
|   }) | ||||
| } | ||||
							
								
								
									
										68
									
								
								src/api/base/materialPricing.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,68 @@ | ||||
| /* | ||||
|  * @Author: zwq | ||||
|  * @Date: 2024-04-09 16:42:19 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-04-10 14:31:46 | ||||
|  * @Description: | ||||
|  */ | ||||
| import request from '@/utils/request' | ||||
|  | ||||
| // 创建原料 | ||||
| export function createMaterialPricing(data) { | ||||
|   return request({ | ||||
|     url: '/base/material-pricing/create', | ||||
|     method: 'post', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 更新原料 | ||||
| export function updateMaterialPricing(data) { | ||||
|   return request({ | ||||
|     url: '/base/material-pricing/update', | ||||
|     method: 'put', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 获取code | ||||
| export function getCode() { | ||||
|   return request({ | ||||
|     url: '/base/material-pricing/autoCode', | ||||
|     method: 'POST' | ||||
|   }) | ||||
| } | ||||
| // 删除原料 | ||||
| export function deleteMaterialPricing(id) { | ||||
|   return request({ | ||||
|     url: '/base/material-pricing/delete?id=' + id, | ||||
|     method: 'delete' | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 获得原料 | ||||
| export function getMaterialPricing(id) { | ||||
|   return request({ | ||||
|     url: '/base/material-pricing/get?id=' + id, | ||||
|     method: 'get' | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 获得原料分页 | ||||
| export function getMaterialPricingPage(query) { | ||||
|   return request({ | ||||
|     url: '/base/material-pricing/page', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 导出原料 Excel | ||||
| export function exportMaterialPricingExcel(query) { | ||||
|   return request({ | ||||
|     url: '/base/material-pricing/export-excel', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|     responseType: 'blob' | ||||
|   }) | ||||
| } | ||||
| @@ -1,3 +1,10 @@ | ||||
| /* | ||||
|  * @Author: zwq | ||||
|  * @Date: 2024-03-27 15:49:55 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-09-10 14:36:19 | ||||
|  * @Description: | ||||
|  */ | ||||
| import request from '@/utils/request' | ||||
| // 获得所有工厂产线列表 | ||||
| export function getLineAll() { | ||||
| @@ -5,4 +12,12 @@ export function getLineAll() { | ||||
|     url: '/base/production-line/listAll', | ||||
|     method: 'get' | ||||
|   }) | ||||
| } | ||||
| } | ||||
| // 获得产线分页 | ||||
| export function getLinePage(query) { | ||||
|   return request({ | ||||
|     url: '/base/production-line/page', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|   | ||||
							
								
								
									
										72
									
								
								src/api/cost/allCost.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,72 @@ | ||||
| /* | ||||
|  * @Author: zwq | ||||
|  * @Date: 2024-04-18 16:53:17 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2025-02-17 15:47:58 | ||||
|  * @Description: | ||||
|  */ | ||||
|  | ||||
| import request from '@/utils/request' | ||||
|  | ||||
| // 获得总成本统计-按日期分页 | ||||
| export function getCostSumPage(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-sum/page', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
| // 更新总成本统计-按日期 | ||||
| export function updateCostSum(data) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-sum/update', | ||||
|     method: 'put', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
| // 获得原片成本统计成本查询分页 | ||||
| export function getRawCostStatisticsRealtimePage(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-sum/page', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 导出总成本统计-按日期 Excel | ||||
| export function exportCostSumExcel(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-sum/export-excel', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|     responseType: 'blob' | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 导出原片成本统计-历史成本 Excel | ||||
| export function exportRawCostStatisticsHisExcel(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-sum/export-excel', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|     responseType: 'blob' | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 获得成本首页 -获取首页数据 | ||||
| export function getData(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-homepage/getData', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 获得成本首页 -详细首页数据 | ||||
| export function getDetailData(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-homepage/getDetailData', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
							
								
								
									
										55
									
								
								src/api/cost/costDeepRatioHis.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,55 @@ | ||||
| /* | ||||
|  * @Author: zwq | ||||
|  * @Date: 2024-04-18 16:53:17 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-09-06 15:00:09 | ||||
|  * @Description: | ||||
|  */ | ||||
|  | ||||
| import request from '@/utils/request' | ||||
| // 更新深加工良品率 | ||||
| export function updateDeepRatioHis(data) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-ratio-his/update', | ||||
|     method: 'put', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
| // 获得深加工产线良品率 | ||||
| export function getDeepPDRatioHisPage(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-ratio-his/page-pd', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
| // 获得深加工工段良品率 | ||||
| export function getDeepWSRatioHisPage(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-ratio-his/page-ws', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 导出深加工工段良品率 Excel | ||||
| export function exportDeepWSRatioHisExcel(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-ratio-his/export-excel-ws', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|     responseType: 'blob' | ||||
|   }) | ||||
| } | ||||
|  | ||||
|  | ||||
| // 导出深加工产线良品率 Excel | ||||
| export function exportDeepPDRatioHisExcel(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-ratio-his/export-excel-pd', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|     responseType: 'blob' | ||||
|   }) | ||||
| } | ||||
|  | ||||
							
								
								
									
										53
									
								
								src/api/cost/costEnergy.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,53 @@ | ||||
| /* | ||||
|  * @Author: zwq | ||||
|  * @Date: 2024-04-18 16:53:17 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-04-19 16:11:19 | ||||
|  * @Description: | ||||
|  */ | ||||
|  | ||||
| import request from '@/utils/request' | ||||
| // 更新原片能源历史 | ||||
| export function updateEnergyHis(data) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-energy-his/update', | ||||
|     method: 'put', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
| // 获得原片能源历史分页 | ||||
| export function getEnergyHisPage(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-energy-his/page', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 获得原片能源-成本查询分页 | ||||
| export function getEnergyRealtimePage(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-energy-realtime/page', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
| // 导出能源成本成本查询 Excel | ||||
| export function exportEnergyRealtimeExcel(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-energy-realtime/export-excel', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|     responseType: 'blob' | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 导出能源成本历史 Excel | ||||
| export function exportEnergyHisExcel(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-energy-his/export-excel', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|     responseType: 'blob' | ||||
|   }) | ||||
| } | ||||
							
								
								
									
										54
									
								
								src/api/cost/costEnergyDeep.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,54 @@ | ||||
| /* | ||||
|  * @Author: zwq | ||||
|  * @Date: 2024-04-18 16:53:17 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-09-06 15:19:24 | ||||
|  * @Description: | ||||
|  */ | ||||
|  | ||||
| import request from '@/utils/request' | ||||
| // 更新深加工能源历史 | ||||
| export function updateEnergyHis(data) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-energy-his/update', | ||||
|     method: 'put', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
| // 获得深加工能源历史分页 | ||||
| export function getEnergyHisPage(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-energy-his/page', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 获得深加工能源-成本查询分页 | ||||
| export function getEnergyRealtimePage(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-energy-realtime/page', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 导出深加工能源成本成本查询 Excel | ||||
| export function exportEnergyRealtimeExcel(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-energy-realtime/export-excel', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|     responseType: 'blob' | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 导出深加工能源成本历史 Excel | ||||
| export function exportEnergyHisExcel(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-energy-his/export-excel', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|     responseType: 'blob' | ||||
|   }) | ||||
| } | ||||
							
								
								
									
										54
									
								
								src/api/cost/costMaterial.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,54 @@ | ||||
| /* | ||||
|  * @Author: zwq | ||||
|  * @Date: 2024-04-18 16:53:17 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-09-05 13:55:30 | ||||
|  * @Description: | ||||
|  */ | ||||
|  | ||||
| import request from '@/utils/request' | ||||
| // 更新原料成本-历史 | ||||
| export function updateMaterialHis(data) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-material-his/update', | ||||
|     method: 'put', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
| // 获得原料成本-历史分页 | ||||
| export function getMaterialHisPage(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-material-his/page', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 获得原料成本-成本查询分页 | ||||
| export function getMaterialRealtimePage(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-material-realtime/page', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 导出原料成本成本查询 Excel | ||||
| export function exportMaterialRealtimeExcel(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-material-realtime/export-excel', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|     responseType: 'blob' | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 导出原料成本历史 Excel | ||||
| export function exportMaterialHisExcel(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-material-his/export-excel', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|     responseType: 'blob' | ||||
|   }) | ||||
| } | ||||
							
								
								
									
										56
									
								
								src/api/cost/costOriginRatioHis.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,56 @@ | ||||
| /* | ||||
|  * @Author: zwq | ||||
|  * @Date: 2024-04-18 16:53:17 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-04-22 10:53:55 | ||||
|  * @Description: | ||||
|  */ | ||||
|  | ||||
| import request from '@/utils/request' | ||||
| // 更新原片良品率 | ||||
| export function updatecostOriginRatioHis(data) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-origin-ratio-his/update', | ||||
|     method: 'put', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
| // 获得原片产线良品率 | ||||
| export function getcostOriginRatioHisPage(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-origin-ratio-his/page', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 获得原片工段良品率 | ||||
| export function getcostOriginWSRatioHisPage(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-origin-ratio-his/page-ws', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 导出原片良品率 Excel | ||||
| export function exportcostOriginRatioHisExcel(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-origin-ratio-his/export-excel', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|     responseType: 'blob' | ||||
|   }) | ||||
| } | ||||
|  | ||||
|  | ||||
| // 导出原片良品率 工段Excel | ||||
| export function exportcostOriginWSRatioHisExcel(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-origin-ratio-his/export-excel-ws', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|     responseType: 'blob' | ||||
|   }) | ||||
| } | ||||
|  | ||||
							
								
								
									
										53
									
								
								src/api/cost/costOthercostHis.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,53 @@ | ||||
| /* | ||||
|  * @Author: zwq | ||||
|  * @Date: 2024-04-18 16:53:17 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-04-19 14:24:17 | ||||
|  * @Description: | ||||
|  */ | ||||
|  | ||||
| import request from '@/utils/request' | ||||
| // 更新原片其他成本-历史 | ||||
| export function updateRawOthercostHis(data) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-othercost-his/update', | ||||
|     method: 'put', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
| // 获得原片其他成本-历史分页 | ||||
| export function getRawOthercostHisPage(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-othercost-his/page', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 获得原片其他成本-成本查询分页 | ||||
| export function getRawOthercostSunPage(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-othercost-log/page-sum', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
| // 导出原片其他成本-成本查询 Excel | ||||
| export function exportRawOthercostSunExcel(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-othercost-log/export-excel', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|     responseType: 'blob' | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 导出原片其他成本-历史 Excel | ||||
| export function exportRawOthercostHisExcel(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-othercost-his/export-excel', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|     responseType: 'blob' | ||||
|   }) | ||||
| } | ||||
							
								
								
									
										53
									
								
								src/api/cost/costOthercostHisDeep.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,53 @@ | ||||
| /* | ||||
|  * @Author: zwq | ||||
|  * @Date: 2024-04-18 16:53:17 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-09-06 15:13:20 | ||||
|  * @Description: | ||||
|  */ | ||||
|  | ||||
| import request from '@/utils/request' | ||||
| // 更新深加工其他成本-历史 | ||||
| export function updateRawOthercostHis(data) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-othercost-his/update', | ||||
|     method: 'put', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
| // 获得深加工其他成本-历史分页 | ||||
| export function getRawOthercostHisPage(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-othercost-his/page', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 获得深加工其他成本-成本查询分页 | ||||
| export function getRawOthercostSunPage(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-othercost-log/page-sum', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
| // 导出深加工其他成本-成本查询 Excel | ||||
| export function exportRawOthercostSunExcel(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-othercost-log/export-excel', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|     responseType: 'blob' | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 导出深加工其他成本-历史 Excel | ||||
| export function exportRawOthercostHisExcel(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-othercost-his/export-excel', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|     responseType: 'blob' | ||||
|   }) | ||||
| } | ||||
							
								
								
									
										68
									
								
								src/api/cost/costOthercostLog.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,68 @@ | ||||
| /* | ||||
|  * @Author: zwq | ||||
|  * @Date: 2024-04-15 17:01:20 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-09-06 14:12:09 | ||||
|  * @Description: | ||||
|  */ | ||||
| import request from '@/utils/request' | ||||
|  | ||||
| // 创建原片其他成本-记录 | ||||
| export function createRawOthercostLog(data) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-othercost-log/create', | ||||
|     method: 'post', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 更新原片其他成本-记录 | ||||
| export function updateRawOthercostLog(data) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-othercost-log/update', | ||||
|     method: 'put', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 删除原片其他成本-记录 | ||||
| export function deleteRawOthercostLog(id) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-othercost-log/delete?id=' + id, | ||||
|     method: 'delete' | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 获得原片其他成本-记录 | ||||
| export function getRawOthercostLog(id) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-othercost-log/get?id=' + id, | ||||
|     method: 'get' | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 获得原片其他成本-记录分页 | ||||
| export function getRawOthercostLogPage(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-othercost-log/page', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 导出原片其他成本-记录 Excel | ||||
| export function exportRawOthercostLogExcel(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-othercost-log/export-log-excel', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|     responseType: 'blob' | ||||
|   }) | ||||
| } | ||||
| // 获得所有原片其他成本-记录列表 | ||||
| export function getRawOthercostLogAll() { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-othercost-log/listAll', | ||||
|     method: 'get' | ||||
|   }) | ||||
| } | ||||
							
								
								
									
										68
									
								
								src/api/cost/costOthercostLogDeep.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,68 @@ | ||||
| /* | ||||
|  * @Author: zwq | ||||
|  * @Date: 2024-04-15 17:01:20 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-04-22 14:59:35 | ||||
|  * @Description: | ||||
|  */ | ||||
| import request from '@/utils/request' | ||||
|  | ||||
| // 创建深加工其他成本-记录 | ||||
| export function createRawOthercostLog(data) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-othercost-log/create', | ||||
|     method: 'post', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 更新深加工其他成本-记录 | ||||
| export function updateRawOthercostLog(data) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-othercost-log/update', | ||||
|     method: 'put', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 删除深加工其他成本-记录 | ||||
| export function deleteRawOthercostLog(id) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-othercost-log/delete?id=' + id, | ||||
|     method: 'delete' | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 获得深加工其他成本-记录 | ||||
| export function getRawOthercostLog(id) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-othercost-log/get?id=' + id, | ||||
|     method: 'get' | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 获得深加工其他成本-记录分页 | ||||
| export function getRawOthercostLogPage(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-othercost-log/page', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 导出深加工其他成本-记录 Excel | ||||
| export function exportRawOthercostLogExcel(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-othercost-log/export-log-excel', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|     responseType: 'blob' | ||||
|   }) | ||||
| } | ||||
| // 获得所有深加工其他成本-记录列表 | ||||
| export function getRawOthercostLogAll() { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-othercost-log/listAll', | ||||
|     method: 'get' | ||||
|   }) | ||||
| } | ||||
							
								
								
									
										53
									
								
								src/api/cost/deepCostStatistics.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,53 @@ | ||||
| /* | ||||
|  * @Author: zwq | ||||
|  * @Date: 2024-04-18 16:53:17 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-09-02 14:43:30 | ||||
|  * @Description: | ||||
|  */ | ||||
|  | ||||
| import request from '@/utils/request' | ||||
|  | ||||
| // 获得深加工成本分页 | ||||
| export function getDeepCostStatisticsPage(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-cost-his/page', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
| // 更新深加工成本-历史 | ||||
| export function updateDeepCostStatistics(data) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-cost-his/update', | ||||
|     method: 'put', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
| // 获得深加工成本统计成本查询分页 | ||||
| export function getDeepCostStatisticsRealtimePage(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-cost-realtime/page', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 导出深加工成本统计成本查询 Excel | ||||
| export function exportDeepStatisticsRealtimeExcel(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-cost-realtime/export-excel', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|     responseType: 'blob' | ||||
|   }) | ||||
| } | ||||
| // 导出深加工成本统计-历史成本 Excel | ||||
| export function exportDeepCostStatisticsHisExcel(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-cost-his/export-excel', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|     responseType: 'blob' | ||||
|   }) | ||||
| } | ||||
							
								
								
									
										68
									
								
								src/api/cost/deepOthercostRule.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,68 @@ | ||||
| /* | ||||
|  * @Author: zwq | ||||
|  * @Date: 2024-04-15 17:01:20 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-04-22 14:55:00 | ||||
|  * @Description: | ||||
|  */ | ||||
| import request from '@/utils/request' | ||||
|  | ||||
| // 创建深加工其他成本-配置 | ||||
| export function createRawOthercostRule(data) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-othercost-rule/create', | ||||
|     method: 'post', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 更新深加工其他成本-配置 | ||||
| export function updateRawOthercostRule(data) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-othercost-rule/update', | ||||
|     method: 'put', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 删除深加工其他成本-配置 | ||||
| export function deleteRawOthercostRule(id) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-othercost-rule/delete?id=' + id, | ||||
|     method: 'delete' | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 获得深加工其他成本-配置 | ||||
| export function getRawOthercostRule(id) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-othercost-rule/get?id=' + id, | ||||
|     method: 'get' | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 获得深加工其他成本-配置分页 | ||||
| export function getRawOthercostRulePage(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-othercost-rule/page', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 导出深加工其他成本-配置 Excel | ||||
| export function exportRawOthercostRuleExcel(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-othercost-rule/export-excel', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|     responseType: 'blob' | ||||
|   }) | ||||
| } | ||||
| // 获得所有深加工其他成本-配置列表 | ||||
| export function getRawOthercostRuleAll() { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-deep-othercost-rule/listAll', | ||||
|     method: 'get' | ||||
|   }) | ||||
| } | ||||
							
								
								
									
										54
									
								
								src/api/cost/rawCostStatistics.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,54 @@ | ||||
| /* | ||||
|  * @Author: zwq | ||||
|  * @Date: 2024-04-18 16:53:17 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-09-06 14:35:13 | ||||
|  * @Description: | ||||
|  */ | ||||
|  | ||||
| import request from '@/utils/request' | ||||
|  | ||||
| // 获得原片成本分页 | ||||
| export function getRawCostStatisticsPage(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-origincost-his/page', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
| // 更新原片成本-历史 | ||||
| export function updateRawCostStatistics(data) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-origincost-his/update', | ||||
|     method: 'put', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
| // 获得原片成本统计成本查询分页 | ||||
| export function getRawCostStatisticsRealtimePage(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-origin-cost-realtime/page', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 导出原片成本统计成本查询 Excel | ||||
| export function exportRawStatisticsRealtimeExcel(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-origin-cost-realtime/export-excel', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|     responseType: 'blob' | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 导出原片成本统计-历史成本 Excel | ||||
| export function exportRawCostStatisticsHisExcel(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-origincost-his/export-excel', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|     responseType: 'blob' | ||||
|   }) | ||||
| } | ||||
							
								
								
									
										68
									
								
								src/api/cost/rawOthercostRule.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,68 @@ | ||||
| /* | ||||
|  * @Author: zwq | ||||
|  * @Date: 2024-04-15 17:01:20 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-04-18 15:39:12 | ||||
|  * @Description: | ||||
|  */ | ||||
| import request from '@/utils/request' | ||||
|  | ||||
| // 创建原片其他成本-配置 | ||||
| export function createRawOthercostRule(data) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-othercost-rule/create', | ||||
|     method: 'post', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 更新原片其他成本-配置 | ||||
| export function updateRawOthercostRule(data) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-othercost-rule/update', | ||||
|     method: 'put', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 删除原片其他成本-配置 | ||||
| export function deleteRawOthercostRule(id) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-othercost-rule/delete?id=' + id, | ||||
|     method: 'delete' | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 获得原片其他成本-配置 | ||||
| export function getRawOthercostRule(id) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-othercost-rule/get?id=' + id, | ||||
|     method: 'get' | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 获得原片其他成本-配置分页 | ||||
| export function getRawOthercostRulePage(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-othercost-rule/page', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 导出原片其他成本-配置 Excel | ||||
| export function exportRawOthercostRuleExcel(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-othercost-rule/export-excel', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|     responseType: 'blob' | ||||
|   }) | ||||
| } | ||||
| // 获得所有原片其他成本-配置列表 | ||||
| export function getRawOthercostRuleAll() { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-othercost-rule/listAll', | ||||
|     method: 'get' | ||||
|   }) | ||||
| } | ||||
							
								
								
									
										19
									
								
								src/api/environmental/environmentalLog.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,19 @@ | ||||
| import request from '@/utils/request' | ||||
|  | ||||
| // 获得环保数据历史分页 | ||||
| export function getCostEnviHisPage(query) { | ||||
|   return request({ | ||||
|     url: '/monitoring/cost-envi-his/page', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 获得余热发电page | ||||
| export function yurepage(query) { | ||||
|   return request({ | ||||
|     url: '/base/energy-quantity-day/yurepage', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
| @@ -43,6 +43,14 @@ export function getEnergyOverlimitLogPage(data) { | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 获得手动抄表记录分页 | ||||
| export function getEnergyManualLogPage(data) { | ||||
|   return request({ | ||||
|     url: '/monitoring/energy-overlimit-log/pageManual', | ||||
|     method: 'post', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
| // 导出能源超限记录 Excel | ||||
| export function exportEnergyOverlimitLogExcel(query) { | ||||
|   return request({ | ||||
|   | ||||
							
								
								
									
										4
									
								
								src/assets/font/font.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,4 @@ | ||||
| @font-face { | ||||
|   font-family: '站酷庆科黄油体'; | ||||
|   src: url('./站酷庆科黄油体.ttf') format('truetype');; | ||||
| } | ||||
							
								
								
									
										
											BIN
										
									
								
								src/assets/font/站酷庆科黄油体.ttf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										22
									
								
								src/assets/icons/svg/cost.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,22 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> | ||||
|     <title>切片</title> | ||||
|     <defs> | ||||
|         <linearGradient x1="91.384997%" y1="100%" x2="25.4330364%" y2="7.84095011e-14%" id="linearGradient-1"> | ||||
|             <stop stop-color="#4BFFC8" offset="0%"></stop> | ||||
|             <stop stop-color="#45F2EC" offset="100%"></stop> | ||||
|         </linearGradient> | ||||
|         <linearGradient x1="91.384997%" y1="100%" x2="25.4330364%" y2="7.84095011e-14%" id="linearGradient-2"> | ||||
|             <stop stop-color="#FFFFFF" offset="0%"></stop> | ||||
|             <stop stop-color="#FFFFFF" offset="100%"></stop> | ||||
|         </linearGradient> | ||||
|     </defs> | ||||
|     <g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> | ||||
|         <g id="成本看板" transform="translate(-64.000000, -290.000000)" fill-rule="nonzero"> | ||||
|             <g id="成本" transform="translate(64.000000, 290.000000)"> | ||||
|                 <rect id="矩形" fill="#FFFFFF" opacity="0" x="0" y="0" width="32" height="32"></rect> | ||||
|                 <path d="M24.8336138,7.21888656 C25.307557,7.21888656 25.7025096,7.62700427 25.6893445,8.08778234 L25.6893445,25.768495 C25.6893445,26.5452352 25.2417316,26.6505559 24.859944,26.6505559 L7.17923134,26.6505559 C6.6921231,26.6505559 6.31033556,26.2556033 6.31033556,25.7816601 L6.31033556,8.10094743 C6.31033556,7.61383919 6.70528819,7.23205165 7.17923134,7.23205165 L10.3915127,7.23205165 L10.3915127,9.00933847 C10.3915127,9.41745619 10.733805,9.75974847 11.1419227,9.75974847 L20.8709225,9.75974847 C21.2790402,9.75974847 21.6213325,9.43062128 21.6213325,9.00933847 L21.6213325,7.21888656 Z M21.3580307,13.7224398 C21.0289035,13.3933127 20.5154651,13.3933127 20.1863379,13.7224398 L14.5385153,19.3702624 L11.7738469,16.6319242 C11.4447197,16.302797 10.9312813,16.302797 10.6021541,16.6319242 C10.2730269,16.9610514 10.2730269,17.4744898 10.6021541,17.803617 L13.9460864,21.1475493 C14.2752136,21.4766764 14.788652,21.4766764 15.1177792,21.1475493 L21.3711958,14.9072977 C21.5423419,14.7361516 21.6213325,14.5386753 21.6213325,14.3148688 C21.6213325,14.0910623 21.5291768,13.893586 21.3580307,13.7224398 Z M19.896706,5.34944412 C20.1863379,5.34944412 20.4364746,5.59958078 20.4364746,5.88921271 L20.4364746,8.10094743 C20.4364746,8.39057936 20.1863379,8.64071602 19.896706,8.64071602 L12.1161392,8.64071602 L12.1161392,8.6670462 C11.8265073,8.6670462 11.5763706,8.41690953 11.5763706,8.1272776 L11.5763706,5.88921271 C11.5763706,5.59958078 11.8265073,5.34944412 12.1161392,5.34944412 L19.896706,5.34944412 Z" id="形状结合" fill="url(#linearGradient-2)"></path> | ||||
|             </g> | ||||
|         </g> | ||||
|     </g> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 2.7 KiB | 
							
								
								
									
										12
									
								
								src/assets/icons/svg/costchart.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,12 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> | ||||
|     <title>切片</title> | ||||
|     <g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> | ||||
|         <g id="成本看板" transform="translate(-64.000000, -633.000000)" fill="#FFFFFF" fill-rule="nonzero"> | ||||
|             <g id="近期成本" transform="translate(64.000000, 633.000000)"> | ||||
|                 <rect id="矩形" opacity="0" x="0" y="0" width="32" height="32"></rect> | ||||
|                 <path d="M26,23 L18.2,27.8 C17.6,28.2 17,27.8 17,27 L17,15.8 C17,15.6 17.2,15.2 17.4,15 L25.2,10.2 C25.8,9.8 26.4,10.2 26.4,11 L26.4,22.4 C26.4,22.6 26.2,23 26,23 Z M6,23 L13.8,27.8 C14.4,28.2 15,27.8 15,27 L15,15.8 C15,15.6 14.8,15.2 14.6,15 L6.8,10.2 C6.4,10 5.6,10.4 5.6,11 L5.6,22.4 C5.6,22.6 5.8,23 6,23 Z M15.8,4 L6.8,7.4 C6.4,7.6 6.4,8.2 6.8,8.4 L15.8,14 C16,14 16.2,14 16.2,14 L25.4,8.4 C25.8,8.2 25.8,7.6 25.4,7.4 L16.2,4 C16,4 16,4 15.8,4 Z" id="形状"></path> | ||||
|             </g> | ||||
|         </g> | ||||
|     </g> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 1.1 KiB | 
							
								
								
									
										22
									
								
								src/assets/icons/svg/energy.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,22 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <svg width="24.3417579px" height="24.000009px" viewBox="0 0 24.3417579 24.000009" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> | ||||
|     <title>统计</title> | ||||
|     <defs> | ||||
|         <linearGradient x1="99.4683184%" y1="100%" x2="20.6346149%" y2="7.84095011e-14%" id="linearGradient-1"> | ||||
|             <stop stop-color="#4BFFC8" offset="0%"></stop> | ||||
|             <stop stop-color="#45F2EC" offset="100%"></stop> | ||||
|         </linearGradient> | ||||
|         <linearGradient x1="99.4683184%" y1="100%" x2="20.6346149%" y2="7.84095011e-14%" id="linearGradient-2"> | ||||
|             <stop stop-color="#FFFFFF" offset="0%"></stop> | ||||
|             <stop stop-color="#FFFFFF" offset="100%"></stop> | ||||
|         </linearGradient> | ||||
|     </defs> | ||||
|     <g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> | ||||
|         <g id="成本看板" transform="translate(-1327.000000, -636.000000)" fill-rule="nonzero"> | ||||
|             <g id="统计" transform="translate(1327.000000, 636.000000)"> | ||||
|                 <rect id="矩形" fill="#FFFFFF" opacity="0" x="0" y="1.29865498e-07" width="23.9999981" height="23.9999981"></rect> | ||||
|                 <path d="M21.0417425,10.2952681 L19.5753585,10.2952681 L19.5753585,5.90037875 C19.5730113,5.34644149 19.1232931,4.89862885 18.5693508,4.89863383 L13.1812421,4.89863383 L13.1812421,3.15517144 C13.1837389,2.30739523 12.8439612,1.49449588 12.2388994,0.900668572 C11.6338375,0.306841265 10.8147135,-0.0176430365 9.96713292,0.000740689882 C8.21105284,0.081169063 6.8366707,1.54239403 6.8638551,3.30010475 L6.8638551,4.89863383 L1.47574634,4.89863383 C0.921804107,4.89862885 0.472085895,5.34644149 0.46970252,5.90037875 L0.46970252,9.28073494 C0.467465023,9.54901885 0.572450222,9.80709649 0.76136025,9.99760745 C0.950270278,10.1881184 1.2074528,10.2952777 1.47574634,10.2952681 L2.03842858,10.2952681 C3.79455985,10.2680012 5.25513623,11.6398863 5.33779264,13.3942831 C5.35388802,14.2418862 5.02721285,15.0601101 4.4317847,15.6635629 C3.83635654,16.2670156 3.02257894,16.6046145 2.1748364,16.5998668 L1.47574634,16.5998668 C0.92014366,16.5998668 0.46970252,17.0502718 0.46970252,17.6058745 L0.46970252,22.9939832 C0.46970252,23.5495859 0.92014366,24 1.47574634,24 L5.85784745,24 C6.1250049,24.0011302 6.38154936,23.8955063 6.57045992,23.7065957 C6.75937048,23.5176851 6.86499438,23.2611407 6.8638551,22.9939832 L6.8638551,22.4952422 C6.8366707,20.7375314 8.21105284,19.2763065 9.96713292,19.1958781 C10.8147135,19.1774944 11.6338375,19.5019787 12.2388994,20.095806 C12.8439612,20.6896333 13.1837389,21.5025326 13.1812421,22.3503088 L13.1812421,22.9939832 C13.1801084,23.2604003 13.2851484,23.5162945 13.473135,23.7050811 C13.6611216,23.8938677 13.9165675,24 14.182987,24 L18.5693508,24 C19.1249535,24 19.5753585,23.5495859 19.5753585,22.9939832 L19.5753585,16.5998668 L21.1824131,16.5998668 C22.0301722,16.6034883 22.8435102,16.2647998 23.4381378,15.6605426 C24.0327653,15.0562855 24.3583453,14.237612 24.3411066,13.3900204 C24.2562262,11.637307 22.7962968,10.2679159 21.0417425,10.2952681 Z" id="路径" fill="url(#linearGradient-2)"></path> | ||||
|             </g> | ||||
|         </g> | ||||
|     </g> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 3.1 KiB | 
							
								
								
									
										12
									
								
								src/assets/icons/svg/fullScreenView.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,12 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <svg width="32px" height="32px" 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="#69b4ff" fill="#D8D8D8" opacity="0" x="0.5" y="0.5" width="32" height="32"></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="#69b4ff" fill-rule="nonzero" opacity="0.79078311"></path> | ||||
|             </g> | ||||
|         </g> | ||||
|     </g> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 4.1 KiB | 
							
								
								
									
										12
									
								
								src/assets/icons/svg/line.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="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> | ||||
|         <g id="深加工看板" transform="translate(-68.000000, -297.000000)" fill="#FFFFFF" fill-rule="nonzero"> | ||||
|             <g id="产量" transform="translate(68.000000, 297.000000)"> | ||||
|                 <rect id="矩形" opacity="0" x="0" y="0" width="24" height="24"></rect> | ||||
|                 <path d="M22.2162957,1 L1.78372985,1 C1.35093374,1 1,1.33440606 1,1.75168741 L1,7 L23,7 L23,1.75168741 C23,1.33486987 22.6491174,1 22.2162957,1 Z M4.00067655,5 C3.44751496,5 3,4.5525025 3,3.99928444 C3,3.44752352 3.44751496,3 4.00067655,3 C4.55245902,3 5,3.44752352 5,3.99928444 C5,4.5525025 4.55245902,5 4.00067655,5 L4.00067655,5 Z M1,22.2486389 C1,22.6651285 1.35099088,23 1.78385746,23 L22.2161681,23 C22.6499302,23 23,22.6651041 23,22.2486389 L23,17 L1,17 L1,22.2486389 Z M4.00067655,19 C4.55245902,19 5,19.4475091 5,19.9997788 C5,20.5524648 4.55245902,21 4.00067655,21 C3.44751496,21 3,20.5524648 3,19.9997788 C3,19.4475091 3.44751496,19 4.00067655,19 Z M1,15 L23,15 L23,9 L1,9 L1,15 Z M4.00067655,11 C4.55245902,11 5,11.4479977 5,12.0002082 C5,12.552939 4.55245902,13 4.00067655,13 C3.44751496,13 3,12.552939 3,12.0002082 C3,11.4479977 3.44751496,11 4.00067655,11 L4.00067655,11 Z" id="形状"></path> | ||||
|             </g> | ||||
|         </g> | ||||
|     </g> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 1.5 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="#69b4ff" fill-rule="nonzero" opacity="0.79078311"></path> | ||||
|         </g> | ||||
|     </g> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 3.9 KiB | 
							
								
								
									
										13
									
								
								src/assets/icons/svg/yanqi.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,13 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <svg width="24px" height="23.9254658px" viewBox="0 0 24 23.9254658" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> | ||||
|     <title>烟气</title> | ||||
|     <g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> | ||||
|         <g id="成本看板" transform="translate(-1319.000000, -293.962733)" fill-rule="nonzero"> | ||||
|             <g id="烟气" transform="translate(1319.000000, 293.962733)"> | ||||
|                 <rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="24" height="23.9254658"></rect> | ||||
|                 <path d="M10.6744092,10.2458592 C10.6744092,10.2458592 3.76099563,15.5072464 6.34479666,19.9378882 C5.78613697,19.5917443 3.83082809,18.2071687 3.2721684,17.4456522 C1.73585426,15.5072464 1.80568673,14.1918996 2.36434642,12.8765528 C3.6213307,9.89971532 7.39228357,6.9921066 8.50960292,5.1229296 C10.3950794,2.07686335 8.85876522,-7.08336081e-14 8.85876522,-7.08336081e-14 C8.85876522,-7.08336081e-14 12.769383,1.73071946 12.9788804,4.98447204 C13.2582102,8.16899586 10.6744092,10.2458592 10.6744092,10.2458592 Z" id="路径" fill="#FFFFFF"></path> | ||||
|                 <path d="M9.55552302,-6.3573715e-14 L9.48496561,-6.3573715e-14 L9.41440819,-6.3573715e-14 L9.34385077,-6.3573715e-14 L9.27329335,-6.3573715e-14 C9.27329335,-6.3573715e-14 9.20273594,-6.3573715e-14 9.20273596,0.0693204763 L9.13217854,0.0693204763 L9.06162113,0.138640927 L8.99106371,0.207961403 L8.99106371,0.485243308 C8.99106371,0.485243308 8.99106371,0.554563785 9.06162113,0.554563785 L9.06162113,0.623884235 C10.1199823,2.35689604 9.69663786,4.36718972 7.79158769,6.65476534 C7.43880063,7.07068817 6.94489873,7.55593148 6.38043941,8.17981571 C4.96929114,9.35826373 3.6992577,10.6753527 2.99368358,11.7844803 C2.0764372,13.1015692 1.79420756,14.6266197 2.14699459,16.0130291 C2.57033907,17.8153614 4.05204476,19.4790527 6.52155425,20.8654621 C6.59211167,20.9347826 6.66266909,20.9347826 6.73322648,20.9347826 C6.80378389,20.9347826 6.87434131,20.9347826 6.94489873,20.8654621 C7.01545615,20.7961417 7.08601356,20.7961417 7.08601354,20.7268212 L7.08601354,20.6575007 L7.08601354,20.5881803 L7.08601354,20.5188598 L7.08601354,20.4495393 C7.08601354,20.3802188 7.08601354,20.3802188 7.01545615,20.3802188 L7.01545615,20.3108984 C5.60430787,18.3006047 7.01545615,16.0130291 7.9327025,14.9039015 L8.00325992,14.8345811 C8.92050629,13.656133 9.83775267,12.7549669 10.6138842,11.9231212 C11.1783435,11.3685574 11.6722454,10.8833141 12.0955899,10.3287504 C13.647853,8.45709759 14.2123123,6.72408579 13.9300827,5.06039446 C13.5772956,3.18874173 12.0955899,1.4557299 9.55552302,-6.3573715e-14 Z M9.48470738,9.26748999 C8.64336853,10.0744997 6.3074421,10.0757542 5.3258801,11.2862689 C3.92364867,12.9675392 5.42114982,16.3973307 5.7015961,17.9440994 C4.29936467,16.9353372 3.38791424,15.8593242 3.10746797,14.6488095 C2.82702169,13.5727965 3.10746797,12.3622819 3.8085837,11.2862689 L3.87869525,11.219018 C4.5096994,10.2102558 5.84181925,8.93249038 6.89349283,7.9237282 C7.52449698,7.31847086 8.01527795,6.84771519 8.3658358,6.44421029 C10.3289598,4.22493344 10.6094061,2.34191068 10.3289598,0.99689441 C11.5208565,1.87115499 12.6426417,3.01441881 12.9230879,4.49393671 C13.2035342,5.77170217 12.7127532,7.18396925 11.5208565,8.66348714 L9.48470738,9.26748999 Z M21.9281191,9.58246693 C21.6004931,7.86679721 20.3555139,6.28838107 18.1931817,4.98447205 L18.1276565,4.98447205 L18.0621313,4.98447205 L17.9966061,4.98447205 L17.9310808,4.98447205 C17.8655556,4.98447205 17.8655556,4.98447205 17.8655556,5.05309884 L17.8000304,5.05309884 L17.7345052,5.12172564 L17.66898,5.19035243 L17.66898,5.46485958 C17.66898,5.46485958 17.66898,5.53348637 17.7345052,5.53348637 L17.7345052,5.60211316 C18.6518582,7.11190253 18.2587069,8.89619902 16.6861017,10.9550027 C16.4240008,11.2981367 15.9653243,11.7785242 15.5066478,12.3275385 C14.5237695,13.3569403 13.4098408,14.5922225 12.8201138,15.6216244 C12.0993364,16.7882798 11.8372356,18.1608156 12.0993364,19.4647245 C12.4924877,21.1117675 13.7374669,22.5529301 15.8342739,23.856839 C15.8997991,23.9254658 15.9653243,23.9254658 16.0308495,23.9254658 C16.0963747,23.9254658 16.1619,23.9254658 16.2274252,23.856839 C16.2929504,23.7882123 16.3584756,23.7882123 16.3584756,23.7195855 L16.3584756,23.6509587 L16.3584756,23.5823319 L16.3584756,23.5137051 L16.3584756,23.4450783 C16.3584756,23.4450783 16.3584756,23.3764515 16.2929504,23.3764515 L16.2929504,23.3078247 C15.1790217,21.5235282 16.2929504,19.5333513 17.079253,18.5039495 L17.1447782,18.4353227 C17.9310808,17.3372941 18.6518582,16.5137726 19.3726356,15.8275047 C19.8313122,15.3471172 20.2899887,14.8667297 20.6176148,14.454969 C21.7315435,12.6020456 22.19022,11.0922563 21.9281191,9.58246693 L21.9281191,9.58246693 Z M20.5837087,13.7271478 C20.225071,14.1241412 19.7947058,14.5211345 19.2926131,14.9842934 C18.5036102,15.7121146 17.6428797,16.5061012 16.7104218,17.6309157 C15.4193261,19.086558 14.9172334,20.6083659 15.2041435,21.931677 C13.9130479,21.0715248 13.2958761,20.3327069 13.0806935,19.3402236 C12.8655109,18.3477402 13.0806935,17.3552568 13.7262413,16.3627735 L13.7979689,16.2966079 C14.3717892,15.4364556 15.4193261,13.99181 16.4235116,13.0654922 C16.9973319,12.5361677 17.4994247,12.0730088 17.7863348,11.742181 C19.5077957,9.75721431 19.8664333,8.16924091 19.6512507,6.97826087 C20.7271638,7.77224757 21.7313493,8.76473095 21.9465319,9.95571099 C22.1617145,11.2128566 21.7313493,12.4700022 20.5837087,13.7271478 Z" id="形状" fill="#FFFFFF"></path> | ||||
|             </g> | ||||
|         </g> | ||||
|     </g> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 5.4 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/img/cold-data-board-msg1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 16 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/img/cold-data-board-msg2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 14 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/img/home-bg.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.2 MiB | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/img/home-progress-bg.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 936 B | 
							
								
								
									
										132
									
								
								src/components/ButtonNav/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,132 @@ | ||||
| <!-- | ||||
|     filename: index.vue | ||||
|     author: liubin | ||||
|     date: 2024-04-02 09:49:36 | ||||
|     description: | ||||
| --> | ||||
|  | ||||
| <template> | ||||
|   <!-- 按钮切换 --> | ||||
|   <div v-if="buttonMode" class="button-nav"> | ||||
|     <button | ||||
|       v-for="m in menus" | ||||
|       :key="m" | ||||
|       @click="currentMenu = m" | ||||
|       :data-text="m" | ||||
|       :class="[m === currentMenu ? 'active' : '']" | ||||
|     ></button> | ||||
|   </div> | ||||
|   <!-- 标签切换 --> | ||||
|   <div v-else class="custom-tabs" style="height: 100%; width: 100%"> | ||||
|     <el-tabs class="tag-nav" v-model="currentMenu" style="height: 100%"> | ||||
|       <el-tab-pane | ||||
|         v-for="(m, idx) in menus" | ||||
|         :key="m" | ||||
|         :label="idx == 0 ? `\u2002${m}\u2002` : `\u3000${m}\u3000`" | ||||
|         :name="m" | ||||
|       > | ||||
|         <slot :name="`tab${idx + 1}`"></slot> | ||||
|       </el-tab-pane> | ||||
|     </el-tabs> | ||||
|   </div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| export default { | ||||
|   name: "ButtonNav", | ||||
|   props: { | ||||
|     menus: { | ||||
|       type: Array, | ||||
|       required: true, | ||||
|       default: () => [], | ||||
|       validator: (val) => { | ||||
|         return val.length > 0; | ||||
|       }, | ||||
|     }, | ||||
|     buttonMode: { | ||||
|       type: Boolean, | ||||
|       default: true, | ||||
|     }, | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       currentMenu: "", | ||||
|     }; | ||||
|   }, | ||||
|   created() { | ||||
|     this.currentMenu = this.menus[0]; | ||||
|   }, | ||||
|   watch: { | ||||
|     currentMenu(val) { | ||||
|       this.$emit("change", val); | ||||
|     }, | ||||
|   }, | ||||
| }; | ||||
| </script> | ||||
|  | ||||
| <style scoped lang="scss"> | ||||
| .button-nav { | ||||
|   width: 100%; | ||||
|   display: flex; | ||||
|   gap: 12px; | ||||
|  | ||||
|   * { | ||||
|     user-select: none; | ||||
|   } | ||||
|  | ||||
|   button { | ||||
|     cursor: pointer; | ||||
|     appearance: none; | ||||
|     outline: none; | ||||
|     border: none; | ||||
|     background: #fff; | ||||
|     border-radius: 8px; | ||||
|     padding: 15px; | ||||
|     color: #888; | ||||
|     letter-spacing: 2px; | ||||
|     flex: 1; | ||||
|     box-sizing: padding-box; | ||||
|     position: relative; | ||||
|  | ||||
|     &::after { | ||||
|       content: attr(data-text); | ||||
|       position: absolute; | ||||
|       top: 5px; | ||||
|       left: 50%; | ||||
|       font-size: 16px; | ||||
|       font-weight: 500; | ||||
|       transform: translate(-50%); | ||||
|     } | ||||
|  | ||||
|     &.active { | ||||
|       color: #111; | ||||
|       //border-bottom: 2px solid #0b58ff; | ||||
|       box-shadow: 0px 2px 1px 1px #0b58ff; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </style> | ||||
|  | ||||
| <style scoped> | ||||
| .custom-tabs >>> .el-tabs__header { | ||||
|   margin-bottom: 8px; | ||||
|   display: inline-block; | ||||
|   /* transform: translateY(-12px); */ | ||||
| } | ||||
| .custom-tabs >>> .el-tabs__item { | ||||
|   padding-left: 0px !important; | ||||
|   padding-right: 0px !important; | ||||
|   line-height: 36px !important; | ||||
|   height: 36px; | ||||
| } | ||||
|  | ||||
| .custom-tabs >>> .el-tabs__content { | ||||
|   height: calc(100% - 42px); | ||||
| } | ||||
| .custom-tabs >>> .el-tab-pane { | ||||
|   box-sizing: border-box; | ||||
|   height: 100%; | ||||
|   padding: 20px; | ||||
|   border: 10px solid #f002; | ||||
| } | ||||
| </style> | ||||
							
								
								
									
										94
									
								
								src/filter/code-filter.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,94 @@ | ||||
|  | ||||
| /* | ||||
|  * @Date: 2020-12-29 16:49:28 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-09-11 13:40:48 | ||||
|  * @FilePath: \basic-admin\src\filters\basicData\index.js | ||||
|  * @Description: | ||||
|  */ | ||||
|  | ||||
| const table = { | ||||
|   lineStatus: { | ||||
|     1: '生产中', | ||||
|     2: '停止', | ||||
|     3: '未知', | ||||
|   }, | ||||
|   deactivate: { | ||||
|     1: '启用', | ||||
|     0: '停用', | ||||
|   }, | ||||
|   wareType: { | ||||
|     1: '缓存', | ||||
|     2: '活动', | ||||
|     3: '其它', | ||||
|   }, | ||||
|   reportType: { | ||||
|     2: '日', | ||||
|     3: '周', | ||||
|     4: '月', | ||||
|     5: '年', | ||||
|   }, | ||||
|   manual: { | ||||
|     1: '手动', | ||||
|     0: '自动', | ||||
|   }, | ||||
| } | ||||
|  | ||||
| // 日期格式化 | ||||
| export function parseTime(time, pattern) { | ||||
|   if (arguments.length === 0 || !time) { | ||||
|     return null | ||||
|   } | ||||
|   const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}' | ||||
|   let date | ||||
|   if (typeof time === 'object') { | ||||
|     date = time | ||||
|   } else { | ||||
|     if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) { | ||||
|       time = parseInt(time) | ||||
|     } else if (typeof time === 'string') { | ||||
|       time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.\d{3}/gm), ''); | ||||
|     } | ||||
|     if ((typeof time === 'number') && (time.toString().length === 10)) { | ||||
|       time = time * 1000 | ||||
|     } | ||||
|     date = new Date(time) | ||||
|   } | ||||
|   const formatObj = { | ||||
|     y: date.getFullYear(), | ||||
|     m: date.getMonth() + 1, | ||||
|     d: date.getDate(), | ||||
|     h: date.getHours(), | ||||
|     i: date.getMinutes(), | ||||
|     s: date.getSeconds(), | ||||
|     a: date.getDay(), | ||||
|     w: '', | ||||
|   } | ||||
|   const time_str = format.replace(/{([ymdhisaw])+}/g, (result, key) => { | ||||
|     let value = formatObj[key] | ||||
|     // Note: getDay() returns 0 on Sunday | ||||
|     if (key === 'a') { | ||||
|       return ['日', '一', '二', '三', '四', '五', '六'][value] | ||||
|     } | ||||
|     if (key === 'w') { | ||||
|       const current = new Date(time); | ||||
|       current.setHours(0, 0, 0); | ||||
|       current.setDate(current.getDate() + 4 - (current.getDay() || 7)); | ||||
|       const firstThursday = new Date(current.getFullYear(), 0, 4); | ||||
|       firstThursday.setDate(firstThursday.getDate() + 4 - (firstThursday.getDay() || 7)); | ||||
|       const time1 = current.getTime() - firstThursday.getTime(); | ||||
|       const weeks = Math.ceil(time1 / (7 * 24 * 3600 * 1000)); | ||||
|       return (weeks + 1) | ||||
|     } | ||||
|     if (result.length > 0 && value < 10) { | ||||
|       value = '0' + value | ||||
|     } | ||||
|     return value || 0 | ||||
|   }) | ||||
|   return time_str | ||||
| } | ||||
| export default function (dictTable) { | ||||
|   return function (val) { | ||||
|     return table?.[dictTable]?.[val] | ||||
|   } | ||||
| } | ||||
| @@ -67,7 +67,7 @@ export default { | ||||
| 	}, | ||||
| 	data() { | ||||
| 		return { | ||||
| 			title: '中建材智能化院', | ||||
| 			title: '中建材自贡新能源', | ||||
| 			logo: logoImg, | ||||
| 		}; | ||||
| 	}, | ||||
|   | ||||
| @@ -4,6 +4,7 @@ import Element from 'element-ui'; | ||||
| import './assets/styles/element-variables.scss'; | ||||
| import '@/assets/styles/index.scss'; // global css | ||||
| import '@/assets/styles/ruoyi.scss'; // ruoyi css | ||||
| import '@/assets/font/font.css' | ||||
| import App from './App'; | ||||
| import store from './store'; | ||||
| import router from './router'; | ||||
| @@ -34,7 +35,6 @@ import { | ||||
| 	getDictDatas, | ||||
| 	getDictDatas2, | ||||
| } from '@/utils/dict'; | ||||
|  | ||||
| import './theme/index.css'; // 自定义主题包 - code-brick-zj | ||||
|  | ||||
| // 全局方法挂载 | ||||
|   | ||||
							
								
								
									
										122
									
								
								src/mixins/basic-add.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,122 @@ | ||||
| /* | ||||
|  * @Author: zwq | ||||
|  * @Date: 2022-08-24 11:19:43 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-04-10 15:46:19 | ||||
|  * @Description: | ||||
|  */ | ||||
| import { listData } from "@/api/system/dict/data"; //数据字典接口 | ||||
| export default { | ||||
|   data() { | ||||
|     /* eslint-disable */ | ||||
|     return { | ||||
|       urlOptions: { | ||||
|         createURL: '', //新增接口 | ||||
|         updateURL: '', //编辑提交接口 | ||||
|         infoURL: '', //编辑时获取单条数据接口 | ||||
|         codeURL: '', //获取code接口(返回结果为dataForm.code字段) | ||||
|         optionArrUrl: [], //需要获取下拉框的方法数组 | ||||
|         optionArr: {}, //需要获取下拉框的方法数组的返回结果 | ||||
|         dictNameList: [], //数据字典name数组 | ||||
|         dictArr: {}, //需要获取数据字典的方法数组的返回结果 | ||||
|       }, | ||||
|       visible: false, | ||||
|       setData: false, // 是否需要【编辑时获取单条数据接口】返回的数据操作 | ||||
|     } | ||||
|   }, | ||||
|   created() { | ||||
|   }, | ||||
|   activated() { | ||||
|   }, | ||||
|   methods: { | ||||
|     init(id) { | ||||
|       this.dataForm.id = id || null; | ||||
|       this.visible = true; | ||||
|       if (this.urlOptions.optionArrUrl.length > 0) { | ||||
|         this.getArr() | ||||
|       } | ||||
|       if (this.urlOptions.dictNameList.length > 0) { | ||||
|         this.getDict() | ||||
|       } | ||||
|       this.$nextTick(() => { | ||||
|         this.$refs["dataForm"].resetFields(); | ||||
|         if (this.dataForm.id) { | ||||
|           this.urlOptions.infoURL(id).then(response => { | ||||
|             this.dataForm = response.data; | ||||
|             if (this.setData) { | ||||
|               this.setDataForm() | ||||
|             } | ||||
|           }); | ||||
|         } else { | ||||
|           if (this.urlOptions.codeURL) { | ||||
|             this.getCode() | ||||
|           } | ||||
| 				} | ||||
|       }); | ||||
|     }, | ||||
|     /** 获取code */ | ||||
| 		getCode() { | ||||
| 			this.urlOptions.codeURL() | ||||
| 				.then(({ data: res }) => { | ||||
| 					this.dataForm.code = res; | ||||
| 				}) | ||||
| 				.catch(() => {}); | ||||
| 		}, | ||||
|     /** 获取下拉框数组 */ | ||||
|     getArr() { | ||||
|       const params = { | ||||
|         pageSize: 100, | ||||
|         pageNo: 1, | ||||
|       } | ||||
|       this.urlOptions.optionArrUrl.forEach((item, index) => { | ||||
|         item(params).then(({ data: res }) => { | ||||
|           this.$set(this.urlOptions.optionArr, `arr${index}`, res.list) | ||||
|         }) | ||||
|           .catch(() => { | ||||
|           }); | ||||
|       }); | ||||
|     }, | ||||
|     /** 查询字典数据列表 */ | ||||
|     getDict() { | ||||
|       this.urlOptions.dictNameList.forEach((item,index)=>{ | ||||
|         const queryParams = { | ||||
|           pageNo: 1, | ||||
|           pageSize: 99, | ||||
|           dictType: item, | ||||
|         } | ||||
|         listData(queryParams).then(response => { | ||||
|           this.$set(this.urlOptions.dictArr, `dict${index}`, response.data.list) | ||||
|         }); | ||||
|       }) | ||||
|     }, | ||||
|     // 表单提交 | ||||
|     dataFormSubmit() { | ||||
|       this.$refs["dataForm"].validate((valid) => { | ||||
|         if (!valid) { | ||||
|           return false; | ||||
|         } | ||||
|         // 修改的提交 | ||||
|         if (this.dataForm.id) { | ||||
|           this.urlOptions.updateURL(this.dataForm).then(response => { | ||||
|             this.$modal.msgSuccess("修改成功"); | ||||
|             this.visible = false; | ||||
|             this.$emit("refreshDataList"); | ||||
|           }); | ||||
|           return; | ||||
|         } | ||||
|         // 添加的提交 | ||||
|         this.urlOptions.createURL(this.dataForm).then(response => { | ||||
|           this.$modal.msgSuccess("新增成功"); | ||||
|           this.visible = false; | ||||
|           this.$emit("refreshDataList"); | ||||
|         }); | ||||
|       }); | ||||
|     }, | ||||
|     /** 清空form */ | ||||
|     formClear() { | ||||
|       if (this.$refs.dataForm!==undefined) { | ||||
|           this.$refs.dataForm.resetFields(); | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
							
								
								
									
										128
									
								
								src/mixins/basic-page.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,128 @@ | ||||
| /* | ||||
|  * @Author: zwq | ||||
|  * @Date: 2022-08-24 11:19:43 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2025-02-21 13:18:46 | ||||
|  * @Description: | ||||
|  */ | ||||
| export default { | ||||
|   data() { | ||||
|     /* eslint-disable */ | ||||
|     return { | ||||
|       urlOptions: { | ||||
|         getDataListURL: '', //获取table接口 | ||||
|         deleteURL: '', //删除接口 | ||||
|         exportURL: '' //导出接口 | ||||
|       }, | ||||
|       tableData: [], //table数据 | ||||
|       listQuery: { //分页 | ||||
|         pageSize: 20, | ||||
|         pageNo: 1, | ||||
|         total: 1, | ||||
|       }, | ||||
|       exportLoading: false, //导出完成的加载状态是否开启 | ||||
|       dataListLoading: false, //获取table的加载状态是否开启 | ||||
|       addOrEditTitle: '', //dialog的title | ||||
|       addOrUpdateVisible: false, //dialog状态 | ||||
|     } | ||||
|   }, | ||||
|   created() { | ||||
|   }, | ||||
|   mounted() { | ||||
|     this.getDataList() | ||||
|   }, | ||||
|   methods: { | ||||
|     // 获取数据列表 | ||||
|     getDataList() { | ||||
|       this.dataListLoading = true; | ||||
|       this.urlOptions.getDataListURL(this.listQuery).then(response => { | ||||
|         this.tableData = response.data.list; | ||||
|         this.listQuery.total = response.data.total; | ||||
|         this.dataListLoading = false; | ||||
|       }); | ||||
|     }, | ||||
|     // 每页数 | ||||
|     sizeChangeHandle(val) { | ||||
|       this.listQuery.pageSize = val; | ||||
|       this.listQuery.pageNo = 1; | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     // 当前页 | ||||
|     currentChangeHandle(val) { | ||||
|       this.listQuery.pageNo = val; | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     // 新增 | ||||
|     addOrUpdateHandle(id) { | ||||
|       this.addOrEditTitle = "新增"; | ||||
|       this.addOrUpdateVisible = true; | ||||
|       this.$nextTick(() => { | ||||
|         this.$refs.addOrUpdate.init(id); | ||||
|       }); | ||||
|     }, | ||||
|     //tableBtn点击 | ||||
|     handleClick(val) { | ||||
|       if (val.type === "edit") { | ||||
|         this.addOrUpdateVisible = true; | ||||
|         this.addOrEditTitle = "编辑"; | ||||
|         this.$nextTick(() => { | ||||
|           this.$refs.addOrUpdate.init(val.data.id); | ||||
|         }); | ||||
|       } else if (val.type === "delete") { | ||||
|         this.deleteHandle(val.data.id, val.data.name, val.data._pageIndex) | ||||
|       } else { | ||||
|         this.otherMethods(val) | ||||
|       } | ||||
|     }, | ||||
|     // 删除 | ||||
|     deleteHandle(id, name, index) { | ||||
|       this.$confirm(`是否确认删除${name ? '名称为"' + name + '"' : '序号为"' + index + '"'}的数据项?`, "系统提示", { | ||||
|         confirmButtonText: "确定", | ||||
|         cancelButtonText: "取消", | ||||
|         type: "warning", | ||||
|       }) | ||||
|         .then(() => { | ||||
|           this.urlOptions.deleteURL(id).then(({ data }) => { | ||||
|             this.$message({ | ||||
|               message: "操作成功", | ||||
|               type: "success", | ||||
|               duration: 1500, | ||||
|               onClose: () => { | ||||
|                 this.getDataList(); | ||||
|               }, | ||||
|             }); | ||||
|           }); | ||||
|         }) | ||||
|         .catch(() => { }); | ||||
|     }, | ||||
|     // dialog取消 | ||||
|     handleCancel() { | ||||
|       this.$refs.addOrUpdate.formClear() | ||||
|       this.addOrUpdateVisible = false | ||||
|       this.addOrEditTitle = '' | ||||
|     }, | ||||
|     // dialog确定 | ||||
|     handleConfirm() { | ||||
|       this.$refs.addOrUpdate.dataFormSubmit() | ||||
|     }, | ||||
|     // dialog的父组件方法this.$emit("refreshDataList"); | ||||
|     successSubmit() { | ||||
|       this.handleCancel() | ||||
|       this.getDataList() | ||||
|     }, | ||||
|     /** 导出按钮操作 */ | ||||
|     handleExport() { | ||||
|       // 处理查询参数 | ||||
|       let params = { ...this.queryParams }; | ||||
|       params.pageNo = undefined; | ||||
|       params.pageSize = undefined; | ||||
|       this.$modal.confirm('是否确认导出所有数据项?').then(() => { | ||||
|         this.exportLoading = true; | ||||
|         return this.urlOptions.exportURL(params); | ||||
|       }).then(response => { | ||||
|         this.$download.excel(response, '报表.xls'); | ||||
|         this.exportLoading = false; | ||||
|       }).catch(() => { }); | ||||
|     } | ||||
|   } | ||||
| } | ||||
							
								
								
									
										20
									
								
								src/mixins/lb/tableHeightMixin.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,20 @@ | ||||
| export default { | ||||
| 	data() { | ||||
| 		return { | ||||
| 			tableH: this.tableHeight(260), | ||||
| 		}; | ||||
| 	}, | ||||
| 	created() { | ||||
| 		this.tableH = this?.heightNum ? this.tableHeight(this.heightNum) : this.tableHeight(260); | ||||
| 		window.addEventListener('resize', this._setTableHeight); | ||||
| 	}, | ||||
| 	destroyed() { | ||||
| 		window.removeEventListener('resize', this._setTableHeight); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		_setTableHeight() { | ||||
| 			this.tableH = this?.heightNum ? this.tableHeight(this.heightNum) : this.tableHeight(260); | ||||
| 			// this.tableH = this.tableHeight(260); | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| @@ -70,17 +70,44 @@ export const constantRoutes = [ | ||||
|     hidden: true | ||||
|   }, | ||||
|   { | ||||
|     path: '/', | ||||
|     path: '/allDashboard-model', | ||||
|     component: (resolve) => require(['@/views/dashboard/allDashboard/index-model'], resolve), | ||||
|     hidden: true | ||||
|   }, | ||||
|   { | ||||
|     path: '/rawDashboard-model', | ||||
|     component: (resolve) => require(['@/views/dashboard/rawDashboard/index-model'], resolve), | ||||
|     hidden: true | ||||
|   }, | ||||
|   { | ||||
|     path: '/deepDashboard-model', | ||||
|     component: (resolve) => require(['@/views/dashboard/deepDashboard/index-model'], resolve), | ||||
|     hidden: true | ||||
|   }, | ||||
|   { | ||||
|     path: '/coldDashboard-model', | ||||
|     component: (resolve) => require(['@/views/dashboard/coldDashboard/index-model'], resolve), | ||||
|     hidden: true | ||||
|   }, | ||||
|   { | ||||
|     path: "", | ||||
|     component: Layout, | ||||
|     redirect: 'core/base/factory', | ||||
|     // children: [{ | ||||
|     //   path: 'index', | ||||
|     //   redirect: 'core/base/factory', | ||||
|     //   component: (resolve) => require(['@/views/index'], resolve), | ||||
|     //   name: '首页', | ||||
|     //   meta: { title: '首页', icon: 'dashboard', affix: true } | ||||
|     // } | ||||
|     // ] | ||||
|     redirect: "index", | ||||
|     children: [ | ||||
|       { | ||||
|         path: "index", | ||||
|         component: (resolve) => require(["@/views/cost/index"], resolve), | ||||
|         name: "首页", | ||||
|         meta: { title: "首页", icon: "dashboard", affix: true }, | ||||
|       }, | ||||
|       { | ||||
|         path: "indexDetail", | ||||
|         component: (resolve) => require(["@/views/cost/indexDetail"], resolve), | ||||
|         name: "首页详细", | ||||
|         meta: { title: "首页详细", icon: "dashboard"}, | ||||
|         hidden: true | ||||
|       }, | ||||
|     ], | ||||
|   }, | ||||
|   { | ||||
|     path: '/user', | ||||
|   | ||||
| @@ -48,6 +48,50 @@ export function parseTime(time, pattern) { | ||||
|   return time_str | ||||
| } | ||||
|  | ||||
| // 日期格式化(仅适用表格) | ||||
| export function parseTimeTable(pattern) { | ||||
|   return function(time){ | ||||
|     if (arguments.length === 0 || !time) { | ||||
|       return null | ||||
|     } | ||||
|     const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}' | ||||
|     let date | ||||
|     if (typeof time === 'object') { | ||||
|       date = time | ||||
|     } else { | ||||
|       if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) { | ||||
|         time = parseInt(time) | ||||
|       } else if (typeof time === 'string') { | ||||
|         time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.\d{3}/gm),''); | ||||
|       } | ||||
|       if ((typeof time === 'number') && (time.toString().length === 10)) { | ||||
|         time = time * 1000 | ||||
|       } | ||||
|       date = new Date(time) | ||||
|     } | ||||
|     const formatObj = { | ||||
|       y: date.getFullYear(), | ||||
|       m: date.getMonth() + 1, | ||||
|       d: date.getDate(), | ||||
|       h: date.getHours(), | ||||
|       i: date.getMinutes(), | ||||
|       s: date.getSeconds(), | ||||
|       a: date.getDay() | ||||
|     } | ||||
|     const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => { | ||||
|       let value = formatObj[key] | ||||
|       // Note: getDay() returns 0 on Sunday | ||||
|       if (key === 'a') { | ||||
|         return ['日', '一', '二', '三', '四', '五', '六'][value] | ||||
|       } | ||||
|       if (result.length > 0 && value < 10) { | ||||
|         value = '0' + value | ||||
|       } | ||||
|       return value || 0 | ||||
|     }) | ||||
|     return time_str | ||||
|   } | ||||
| } | ||||
| // 表单重置 | ||||
| export function resetForm(refName) { | ||||
|   if (this.$refs[refName]) { | ||||
|   | ||||
							
								
								
									
										121
									
								
								src/views/Environmental/Envi-yure-log.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,121 @@ | ||||
| <!-- | ||||
|  * @Author: zwq | ||||
|  * @Date: 2024-11-13 14:01:16 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2025-02-21 14:32:08 | ||||
|  * @Description: | ||||
| --> | ||||
| <template> | ||||
| 	<div> | ||||
| 		<div class="app-container"> | ||||
| 			<!-- 搜索工作栏 --> | ||||
| 			<search-bar | ||||
| 				:formConfigs="formConfig" | ||||
| 				ref="searchBarForm" | ||||
| 				@headBtnClick="buttonClick" /> | ||||
| 			<!-- 列表 --> | ||||
| 			<base-table | ||||
| 				:page="listQuery.pageNo" | ||||
| 				:limit="listQuery.pageSize" | ||||
| 				:table-props="tableProps" | ||||
| 				:table-data="tableData" | ||||
| 				:max-height="tableH" /> | ||||
| 			<pagination | ||||
| 				:page.sync="listQuery.pageNo" | ||||
| 				:limit.sync="listQuery.pageSize" | ||||
| 				:total="listQuery.total" | ||||
| 				@pagination="getDataList" /> | ||||
| 		</div> | ||||
| 	</div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import basicPage from '@/mixins/basic-page'; | ||||
| import { yurepage } from '@/api/environmental/environmentalLog'; | ||||
| import { parseTime } from '@/filter/code-filter'; | ||||
| import tableHeightMixin from '@/mixins/lb/tableHeightMixin'; | ||||
|  | ||||
| const tableProps = [ | ||||
| 	{ | ||||
| 		prop: 'recordTime', | ||||
| 		label: '记录时间', | ||||
| 		filter: parseTime, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'remark', | ||||
| 		label: '备注', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'usingQuantity', | ||||
| 		label: '发电量', | ||||
|     filter: (val) => (val != null ? Number(val).toFixed(3) : '-'), | ||||
| 	}, | ||||
| ]; | ||||
| export default { | ||||
| 	name: '', | ||||
| 	mixins: [basicPage, tableHeightMixin], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			urlOptions: { | ||||
| 				getDataListURL: yurepage, | ||||
| 			}, | ||||
| 			formConfig: [ | ||||
| 				{ | ||||
| 					type: 'datePicker', | ||||
| 					label: '时间', | ||||
| 					dateType: 'datetimerange', | ||||
| 					format: 'yyyy-MM-dd HH:mm:ss', | ||||
| 					valueFormat: 'yyyy-MM-dd HH:mm:ss', | ||||
| 					rangeSeparator: '-', | ||||
| 					startPlaceholder: '开始时间', | ||||
| 					endPlaceholder: '结束时间', | ||||
| 					width: 350, | ||||
| 					param: 'searchTime', | ||||
| 					clearable: false, | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					btnName: '查询', | ||||
| 					name: 'search', | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 			], | ||||
| 			listQuery: { | ||||
| 				statisticType: 1, | ||||
| 			}, | ||||
| 			tableProps, | ||||
| 			tableData: [], | ||||
| 		}; | ||||
| 	}, | ||||
| 	components: {}, | ||||
| 	created() { | ||||
| 		const end = new Date(); | ||||
| 		const start = new Date(); | ||||
| 		this.listQuery.startTime = parseTime(start).substr(0, 10) + ' 00:00:00'; | ||||
| 		this.listQuery.endTime = parseTime(end).substr(0, 10) + ' 23:59:59'; | ||||
| 		this.$nextTick(() => { | ||||
| 			this.$refs.searchBarForm.formInline.searchTime = [ | ||||
| 				this.listQuery.startTime, | ||||
| 				this.listQuery.endTime, | ||||
| 			]; | ||||
| 		}); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		buttonClick(val) { | ||||
| 			switch (val.btnName) { | ||||
| 				case 'search': | ||||
| 					this.listQuery.pageNo = 1; | ||||
| 					this.listQuery.pageSize = 20; | ||||
| 					this.listQuery.statisticType = 1; | ||||
| 					this.listQuery.startTime = val.searchTime ? val.searchTime[0] : null; | ||||
| 					this.listQuery.endTime = val.searchTime ? val.searchTime[1] : null; | ||||
| 					this.getDataList(); | ||||
| 					break; | ||||
| 				default: | ||||
| 					console.log(val); | ||||
| 			} | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
| <style lang="scss"></style> | ||||
							
								
								
									
										131
									
								
								src/views/Environmental/Environmental-log.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,131 @@ | ||||
| <!-- | ||||
|  * @Author: zwq | ||||
|  * @Date: 2024-11-13 14:01:16 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2025-02-21 14:31:00 | ||||
|  * @Description: | ||||
| --> | ||||
| <template> | ||||
| 	<div> | ||||
| 		<div class="app-container"> | ||||
| 			<!-- 搜索工作栏 --> | ||||
| 			<search-bar | ||||
| 				:formConfigs="formConfig" | ||||
| 				ref="searchBarForm" | ||||
| 				@headBtnClick="buttonClick" /> | ||||
| 			<!-- 列表 --> | ||||
| 			<base-table | ||||
| 				:page="listQuery.pageNo" | ||||
| 				:limit="listQuery.pageSize" | ||||
| 				:table-props="tableProps" | ||||
| 				:table-data="tableData" | ||||
| 				:max-height="tableH" /> | ||||
| 			<pagination | ||||
| 				:page.sync="listQuery.pageNo" | ||||
| 				:limit.sync="listQuery.pageSize" | ||||
| 				:total="listQuery.total" | ||||
| 				@pagination="getDataList" /> | ||||
| 		</div> | ||||
| 	</div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import basicPage from '@/mixins/basic-page'; | ||||
| import { getCostEnviHisPage } from '@/api/environmental/environmentalLog'; | ||||
| import { parseTime } from '@/filter/code-filter'; | ||||
| import tableHeightMixin from '@/mixins/lb/tableHeightMixin'; | ||||
|  | ||||
| const tableProps = [ | ||||
| 	{ | ||||
| 		prop: 'recTime', | ||||
| 		label: '记录时间', | ||||
| 		filter: parseTime, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'remark', | ||||
| 		label: '备注', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'envi1', | ||||
| 		label: '二氧化硫mg/Nm3', | ||||
| 		filter: (val) => (val != null ? Number(val).toFixed(2) : '-'), | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'envi2', | ||||
| 		label: '氮氧化物mg/Nm3', | ||||
| 		filter: (val) => (val != null ? Number(val).toFixed(2) : '-'), | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'envi3', | ||||
| 		label: '粉尘mg/Nm3', | ||||
| 		filter: (val) => (val != null ? Number(val).toFixed(2) : '-'), | ||||
| 	}, | ||||
| ]; | ||||
| export default { | ||||
| 	name: '', | ||||
| 	mixins: [basicPage, tableHeightMixin], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			urlOptions: { | ||||
| 				getDataListURL: getCostEnviHisPage, | ||||
| 			}, | ||||
| 			formConfig: [ | ||||
| 				{ | ||||
| 					type: 'datePicker', | ||||
| 					label: '时间', | ||||
| 					dateType: 'datetimerange', | ||||
| 					format: 'yyyy-MM-dd HH:mm:ss', | ||||
| 					valueFormat: 'yyyy-MM-dd HH:mm:ss', | ||||
| 					rangeSeparator: '-', | ||||
| 					startPlaceholder: '开始时间', | ||||
| 					endPlaceholder: '结束时间', | ||||
| 					width: 350, | ||||
| 					param: 'searchTime', | ||||
| 					clearable: false, | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					btnName: '查询', | ||||
| 					name: 'search', | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 			], | ||||
| 			listQuery: { | ||||
| 				statisticType: 1, | ||||
| 			}, | ||||
| 			tableProps, | ||||
| 			tableData: [], | ||||
| 		}; | ||||
| 	}, | ||||
| 	components: {}, | ||||
| 	created() { | ||||
| 		const end = new Date(); | ||||
| 		const start = new Date(); | ||||
| 		this.listQuery.startTime = parseTime(start).substr(0, 10) + ' 00:00:00'; | ||||
| 		this.listQuery.endTime = parseTime(end).substr(0, 10) + ' 23:59:59'; | ||||
| 		this.$nextTick(() => { | ||||
| 			this.$refs.searchBarForm.formInline.searchTime = [ | ||||
| 				this.listQuery.startTime, | ||||
| 				this.listQuery.endTime, | ||||
| 			]; | ||||
| 		}); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		buttonClick(val) { | ||||
| 			switch (val.btnName) { | ||||
| 				case 'search': | ||||
| 					this.listQuery.pageNo = 1; | ||||
| 					this.listQuery.pageSize = 20; | ||||
| 					this.listQuery.statisticType = 1; | ||||
| 					this.listQuery.startTime = val.searchTime ? val.searchTime[0] : null; | ||||
| 					this.listQuery.endTime = val.searchTime ? val.searchTime[1] : null; | ||||
| 					this.getDataList(); | ||||
| 					break; | ||||
| 				default: | ||||
| 					console.log(val); | ||||
| 			} | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
| <style lang="scss"></style> | ||||
| @@ -1,8 +1,8 @@ | ||||
| <!--  | ||||
| <!-- | ||||
|     filename: EquipmentDrawer.vue | ||||
|     author: liubin | ||||
|     date: 2023-08-22 14:38:56 | ||||
|     description:  | ||||
|     description: | ||||
| --> | ||||
|  | ||||
| <template> | ||||
| @@ -320,7 +320,7 @@ export default { | ||||
|  | ||||
| 		// 新增属性 | ||||
| 		handleAddAttr() { | ||||
| 			if (!this.dataId) return this.$message.error('请先创建设备分组信息'); | ||||
| 			if (!this.dataId) return this.$message.warning('请先创建设备分组信息'); | ||||
| 			this.attrForm = { | ||||
| 				id: null, | ||||
| 				equipmentGroupId: this.dataId, | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| <!--  | ||||
| <!-- | ||||
|     filename: EquipmentDrawer.vue | ||||
|     author: liubin | ||||
|     date: 2023-08-22 14:38:56 | ||||
|     description:  | ||||
|     description: | ||||
| --> | ||||
|  | ||||
| <template> | ||||
| @@ -320,7 +320,7 @@ export default { | ||||
|  | ||||
| 		// 新增属性 | ||||
| 		handleAddAttr() { | ||||
| 			if (!this.dataId) return this.$message.error('请先创建设备分组信息'); | ||||
| 			if (!this.dataId) return this.$message.warning('请先创建设备分组信息'); | ||||
| 			this.attrForm = { | ||||
| 				id: null, | ||||
| 				equipmentGroupId: this.dataId, | ||||
|   | ||||
| @@ -280,7 +280,7 @@ export default { | ||||
| 		/** 新增按钮操作 */ | ||||
| 		handleAdd() { | ||||
| 			if (this.queryParams.equipmentGroupId == null) | ||||
| 				return this.$message.error('没有检测到设备分组信息'); | ||||
| 				return this.$message.warning('没有检测到设备分组信息'); | ||||
| 			this.reset(); | ||||
| 			this.open = true; | ||||
| 			this.title = '添加设备分组报警明细'; | ||||
|   | ||||
							
								
								
									
										388
									
								
								src/views/base/equipmentPlcConnect/TableConfig.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,388 @@ | ||||
| <!--  | ||||
|     filename: TableConfig.vue | ||||
|     author: liubin | ||||
|     date: 2023-10-30 10:09:03 | ||||
|     description:  | ||||
| --> | ||||
|  | ||||
| <template> | ||||
| 	<div class="app-container"> | ||||
| 		<!-- 搜索工作栏 --> | ||||
| 		<SearchBar | ||||
| 			:formConfigs="searchBarFormConfig" | ||||
| 			ref="search-bar" | ||||
| 			@headBtnClick="handleSearchBarBtnClick" /> | ||||
|  | ||||
| 		<!-- 列表 --> | ||||
| 		<base-table | ||||
| 			:table-props="tableProps" | ||||
| 			:page="queryParams.pageNo" | ||||
| 			:limit="queryParams.pageSize" | ||||
| 			:table-data="list" | ||||
| 			ref="pageTable" | ||||
| 			@emitFun="handleEmitFun" | ||||
| 			:max-height="tableH"> | ||||
| 			<method-btn | ||||
| 				v-if="tableBtn.length" | ||||
| 				slot="handleBtn" | ||||
| 				label="操作" | ||||
| 				:method-list="tableBtn" | ||||
| 				@clickBtn="handleTableBtnClick" /> | ||||
| 		</base-table> | ||||
|  | ||||
| 		<!-- 分页组件 --> | ||||
| 		<pagination | ||||
| 			v-show="total > 0" | ||||
| 			:total="total" | ||||
| 			:page.sync="queryParams.pageNo" | ||||
| 			:limit.sync="queryParams.pageSize" | ||||
| 			@pagination="getList" /> | ||||
|  | ||||
| 		<!-- 对话框(添加 / 修改) --> | ||||
| 		<base-dialog | ||||
| 			:dialogTitle="title" | ||||
| 			:dialogVisible="open" | ||||
| 			width="700px" | ||||
| 			@close="cancel" | ||||
| 			@cancel="cancel" | ||||
| 			@confirm="submitForm"> | ||||
| 			<DialogForm v-if="open" ref="form" v-model="form" :rows="rows" /> | ||||
| 		</base-dialog> | ||||
| 	</div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import { | ||||
| 	createEquipmentPlc, | ||||
| 	updateEquipmentPlc, | ||||
| 	deleteEquipmentPlc, | ||||
| 	getEquipmentPlc, | ||||
| 	getEquipmentPlcPage, | ||||
| 	exportEquipmentPlcExcel, | ||||
| } from '@/api/base/equipmentPlc'; | ||||
| import basicPageMixin from '@/mixins/lb/basicPageMixin'; | ||||
| import tableHeightMixin from '@/mixins/lb/tableHeightMixin'; | ||||
|  | ||||
| const switchBtn = { | ||||
| 	name: 'SwitchBtn', | ||||
| 	props: ['injectData'], | ||||
| 	data() { | ||||
| 		return {}; | ||||
| 	}, | ||||
| 	computed: { | ||||
| 		active() { | ||||
| 			return +this.injectData[this.injectData.prop] == 1 ? true : false; | ||||
| 		}, | ||||
| 	}, | ||||
| 	methods: {}, | ||||
| 	render: function (h) { | ||||
| 		return h( | ||||
| 			'el-switch', | ||||
| 			{ | ||||
| 				props: { | ||||
| 					value: this.active, | ||||
| 				}, | ||||
| 				on: { | ||||
| 					change: (newVal) => { | ||||
| 						this.$emit('emitData', { | ||||
| 							action: 'update-collect', | ||||
| 							payload: { | ||||
| 								...this.injectData, | ||||
| 								collection: newVal ? 1 : 0, | ||||
| 							}, | ||||
| 						}); | ||||
| 					}, | ||||
| 				}, | ||||
| 			}, | ||||
| 			null | ||||
| 		); | ||||
| 	}, | ||||
| }; | ||||
|  | ||||
| export default { | ||||
| 	name: 'EquipmentPlc', | ||||
| 	mixins: [basicPageMixin, tableHeightMixin], | ||||
| 	components: {}, | ||||
| 	data() { | ||||
| 		return { | ||||
| 			tableKey: Math.random(), | ||||
| 			searchBarKeys: ['name', 'plcTableName'], | ||||
| 			tableBtn: [ | ||||
| 				this.$auth.hasPermiAnd([ | ||||
| 					'base:equipment-plc:update', | ||||
| 					'base:equipment-plc:query' | ||||
| 					]) | ||||
| 					? { | ||||
| 							type: 'edit', | ||||
| 							btnName: '修改', | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 				this.$auth.hasPermi('base:equipment-plc:delete') | ||||
| 					? { | ||||
| 							type: 'delete', | ||||
| 							btnName: '删除', | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 			].filter((v) => v), | ||||
| 			tableProps: [ | ||||
| 				// { | ||||
| 				// 	prop: 'createTime', | ||||
| 				// 	label: '添加时间', | ||||
| 				// 	fixed: true, | ||||
| 				// 	width: 180, | ||||
| 				// 	filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'), | ||||
| 				// }, | ||||
| 				{ prop: 'code', label: '编码', width: 180, showOverflowtooltip: true }, | ||||
| 				{ prop: 'plcTableName', label: '关联表名', width: 150, showOverflowtooltip: true }, | ||||
| 				{ prop: 'name', label: '标识名称', width: 150, showOverflowtooltip: true }, | ||||
| 				{ prop: 'enName', label: '英文名称', width: 150, showOverflowtooltip: true }, | ||||
| 				{ | ||||
| 					prop: 'collection', | ||||
| 					label: '是否采集', | ||||
| 					subcomponent: switchBtn, | ||||
| 				}, | ||||
| 				{ prop: 'description', label: '描述', minWidth: 150, showOverflowtooltip: true }, | ||||
| 			], | ||||
| 			searchBarFormConfig: [ | ||||
| 				{ | ||||
| 					type: 'input', | ||||
| 					label: '表名', | ||||
| 					placeholder: '请输入表名', | ||||
| 					param: 'plcTableName', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'input', | ||||
| 					label: '标识', | ||||
| 					placeholder: '请输入标识', | ||||
| 					param: 'name', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					btnName: '查询', | ||||
| 					name: 'search', | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('base:equipment-plc:create') | ||||
| 						?  'separate' : '', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('base:equipment-plc:create') | ||||
| 						? 'button' : '', | ||||
| 					btnName: '新增', | ||||
| 					name: 'add', | ||||
| 					plain: true, | ||||
| 					color: 'success', | ||||
| 				}, | ||||
| 				// { | ||||
| 				// 	type: this.$auth.hasPermi('equipment:realtime-table-config:export') ? 'button' : '', | ||||
| 				// 	btnName: '导出', | ||||
| 				// 	name: 'export', | ||||
| 				// 	color: 'warning', | ||||
| 				// }, | ||||
| 			], | ||||
| 			rows: [ | ||||
| 				[ | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '关联表名', | ||||
| 						prop: 'plcTableName', | ||||
| 						rules: [{ required: true, message: '关联表名不能为空', trigger: 'blur' }], | ||||
| 						// bind: { | ||||
| 						// 	disabled: true, // some condition, like detail mode... | ||||
| 						// } | ||||
| 					}, | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '编码', | ||||
| 						prop: 'code', | ||||
| 						url: '/base/energy-plc/getCode', | ||||
| 						rules: [{ required: true, message: '编码不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '标识', | ||||
| 						prop: 'name', | ||||
| 						rules: [{ required: true, message: '标识不能为空', trigger: 'blur' }], | ||||
| 						// bind: { | ||||
| 						// 	disabled: true, // some condition, like detail mode... | ||||
| 						// } | ||||
| 					}, | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '英文名', | ||||
| 						prop: 'enName', | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| 					{ | ||||
| 						switch: true, | ||||
| 						label: '是否采集', // 是否采集 0 代表不采集, 1 代表采集 | ||||
| 						prop: 'collection', | ||||
| 						bind: { | ||||
|               'active-value': 1, | ||||
| 							'inactive-value': 0, | ||||
|               value: 1, | ||||
| 						}, | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| 					{ | ||||
| 						textarea: true, | ||||
| 						label: '描述', | ||||
| 						prop: 'description', | ||||
| 						bind: { | ||||
| 							placeholder: '请输入备注', | ||||
| 						}, | ||||
| 					}, | ||||
| 				], | ||||
| 			], | ||||
| 			// 是否显示弹出 | ||||
| 			open: false, | ||||
| 			// 查询参数 | ||||
| 			queryParams: { | ||||
| 				pageNo: 1, | ||||
| 				pageSize: 20, | ||||
| 				plcTableName: null, | ||||
| 				name: null, | ||||
| 			}, | ||||
| 			// 表单参数 | ||||
| 			form: {}, | ||||
| 		}; | ||||
| 	}, | ||||
| 	created() { | ||||
| 		this.getList(); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		/** 覆盖 handleEmitFun 的默认实现 */ | ||||
| 		handleEmitFun({ action, payload }) { | ||||
| 			switch (action) { | ||||
| 				case 'update-collect': | ||||
| 					this.reset(); | ||||
| 					const tempForm = {}; | ||||
| 					Object.keys(this.form).forEach((key) => { | ||||
| 						tempForm[key] = payload[key]; | ||||
| 					}); | ||||
| 					updateEquipmentPlc(tempForm).then((response) => { | ||||
| 						this.$modal.msgSuccess('修改成功'); | ||||
| 						this.open = false; | ||||
| 						this.getList(); | ||||
| 					}); | ||||
| 					break; | ||||
| 			} | ||||
| 		}, | ||||
| 		/** 查询列表 */ | ||||
| 		getList() { | ||||
| 			this.loading = true; | ||||
| 			// 执行查询 | ||||
| 			getEquipmentPlcPage(this.queryParams).then((response) => { | ||||
| 				this.list = response.data.list; | ||||
| 				this.total = response.data.total; | ||||
| 				this.loading = false; | ||||
| 				// this.tableKey = Math.random(); // method 1 | ||||
| 			}); | ||||
| 		}, | ||||
| 		/** 取消按钮 */ | ||||
| 		cancel() { | ||||
| 			this.open = false; | ||||
| 			this.reset(); | ||||
| 		}, | ||||
| 		/** 表单重置 */ | ||||
| 		reset() { | ||||
| 			this.form = { | ||||
| 				id: undefined, | ||||
| 				plcTableName: undefined, | ||||
| 				code: undefined, | ||||
| 				name: undefined, | ||||
| 				enName: undefined, | ||||
| 				description: undefined, | ||||
| 				collection: 1, | ||||
| 			}; | ||||
| 			this.resetForm('form'); | ||||
| 		}, | ||||
| 		/** 搜索按钮操作 */ | ||||
| 		handleQuery() { | ||||
| 			this.queryParams.pageNo = 1; | ||||
| 			this.getList(); | ||||
| 		}, | ||||
| 		/** 重置按钮操作 */ | ||||
| 		resetQuery() { | ||||
| 			this.resetForm('queryForm'); | ||||
| 			this.handleQuery(); | ||||
| 		}, | ||||
| 		/** 新增按钮操作 */ | ||||
| 		handleAdd() { | ||||
| 			this.reset(); | ||||
| 			this.open = true; | ||||
| 			this.title = '添加实时数据采集配置'; | ||||
| 		}, | ||||
| 		/** 修改按钮操作 */ | ||||
| 		handleUpdate(row) { | ||||
| 			this.reset(); | ||||
| 			const id = row.id; | ||||
| 			getEquipmentPlc(id).then((response) => { | ||||
| 				this.form = response.data; | ||||
| 				this.open = true; | ||||
| 				this.title = '修改实时数据采集配置'; | ||||
| 			}); | ||||
| 		}, | ||||
| 		/** 提交按钮 */ | ||||
| 		submitForm() { | ||||
| 			this.$refs['form'].validate((valid) => { | ||||
| 				if (!valid) { | ||||
| 					return; | ||||
| 				} | ||||
| 				// 修改的提交 | ||||
| 				if (this.form.id != null) { | ||||
| 					updateEquipmentPlc(this.form).then((response) => { | ||||
| 						this.$modal.msgSuccess('修改成功'); | ||||
| 						this.open = false; | ||||
| 						this.getList(); | ||||
| 					}); | ||||
| 					return; | ||||
| 				} | ||||
| 				// 添加的提交 | ||||
| 				createEquipmentPlc(this.form).then((response) => { | ||||
| 					this.$modal.msgSuccess('新增成功'); | ||||
| 					this.open = false; | ||||
| 					this.getList(); | ||||
| 				}); | ||||
| 			}); | ||||
| 		}, | ||||
| 		/** 删除按钮操作 */ | ||||
| 		handleDelete(row) { | ||||
| 			const id = row.id; | ||||
| 			this.$modal | ||||
| 				.confirm('是否确认删除该配置?') | ||||
| 				.then(function () { | ||||
| 					return deleteEquipmentPlc(id); | ||||
| 				}) | ||||
| 				.then(() => { | ||||
| 					this.getList(); | ||||
| 					this.$modal.msgSuccess('删除成功'); | ||||
| 				}) | ||||
| 				.catch(() => {}); | ||||
| 		}, | ||||
| 		/** 导出按钮操作 */ | ||||
| 		handleExport() { | ||||
| 			// 处理查询参数 | ||||
| 			let params = { ...this.queryParams }; | ||||
| 			params.pageNo = undefined; | ||||
| 			params.pageSize = undefined; | ||||
| 			this.$modal | ||||
| 				.confirm('是否确认导出所有实时数据采集配置数据项?') | ||||
| 				.then(() => { | ||||
| 					this.exportLoading = true; | ||||
| 					return exportEquipmentPlcExcel(params); | ||||
| 				}) | ||||
| 				.then((response) => { | ||||
| 					this.$download.excel(response, '实时数据采集配置.xls'); | ||||
| 					this.exportLoading = false; | ||||
| 				}) | ||||
| 				.catch(() => {}); | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
							
								
								
									
										151
									
								
								src/views/base/equipmentPlcConnect/add-or-updata.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,151 @@ | ||||
| <!-- | ||||
|  * @Author: zwq | ||||
|  * @Date: 2021-11-18 14:16:25 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-04-30 10:01:41 | ||||
|  * @Description: | ||||
| --> | ||||
| <template> | ||||
| 	<el-form | ||||
| 		:model="dataForm" | ||||
| 		:rules="dataRule" | ||||
| 		ref="dataForm" | ||||
| 		@keyup.enter.native="dataFormSubmit()" | ||||
| 		label-width="100px"> | ||||
| 		<el-form-item label="设备" prop="equipmentId"> | ||||
| 			<el-cascader | ||||
| 				placeholder="请选择设备" | ||||
| 				v-model="dataForm.equipmentId" | ||||
| 				:options="plLineList" | ||||
| 				:props="{value: 'id', label: 'name', children: 'children'}" | ||||
| 				style="width: 100%" | ||||
| 				filterable /> | ||||
| 		</el-form-item> | ||||
| 		<el-form-item label="关联表名" prop="plcId"> | ||||
| 			<el-select | ||||
| 				v-model="dataForm.plcId" | ||||
| 				filterable | ||||
| 				placeholder="请选择关联表" | ||||
| 				style="width: 100%"> | ||||
| 				<el-option | ||||
| 					v-for="dict in plcList" | ||||
| 					:key="dict.id" | ||||
| 					:label="dict.plcTableName" | ||||
| 					:value="dict.id" /> | ||||
| 			</el-select> | ||||
| 		</el-form-item> | ||||
| 	</el-form> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import basicAdd from './components/basic-add'; | ||||
| import { createEquipmentPlcConnect, updateEquipmentPlcConnect } from '@/api/base/equipmentPlcConnect'; | ||||
| import { getplcAllList, getTree } from "@/api/base/equipmentConfig"; | ||||
|  | ||||
| export default { | ||||
| 	mixins: [basicAdd], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			urlOptions: { | ||||
| 				createURL: createEquipmentPlcConnect, | ||||
| 				updateURL: updateEquipmentPlcConnect, | ||||
| 			}, | ||||
| 			dataForm: { | ||||
|         id: undefined, | ||||
|         equipmentId: undefined, | ||||
|         plcId: undefined | ||||
| 			}, | ||||
| 			plcList: [], | ||||
| 			plLineList: [], | ||||
| 			dataRule: { | ||||
|         equipmentId: [{ required: true, message: "设备不能为空", trigger: "blur" }], | ||||
| 				plcId: [{ required: true, message: "关联表名不能为空", trigger: "blur" }] | ||||
|       }, | ||||
| 			options: [{ | ||||
|           value: 'zhinan', | ||||
|           label: '指南', | ||||
|           children: [{ | ||||
|             value: 'shejiyuanze', | ||||
|             label: '设计原则', | ||||
|             children: [{ | ||||
|               value: 'yizhi', | ||||
|               label: '一致' | ||||
|             }, { | ||||
|               value: 'fankui', | ||||
|               label: '反馈' | ||||
|             }, { | ||||
|               value: 'xiaolv', | ||||
|               label: '效率' | ||||
|             }, { | ||||
|               value: 'kekong', | ||||
|               label: '可控' | ||||
|             }] | ||||
|           }, { | ||||
|             value: 'daohang', | ||||
|             label: '导航' | ||||
|           }] | ||||
|         }] | ||||
| 		}; | ||||
| 	}, | ||||
| 	created() { | ||||
| 		this.getDict() | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		init() { | ||||
| 			this.$nextTick(() => { | ||||
| 				this.$refs['dataForm'].resetFields() | ||||
| 			}) | ||||
| 		}, | ||||
| 		async getDict() { | ||||
| 			// 关联表名列表 | ||||
| 			const res = await getplcAllList(); | ||||
| 			this.plcList = res.data; | ||||
| 			// 树形结构 | ||||
| 			const res1 = await getTree(); | ||||
| 			this.plLineList = res1.data; | ||||
| 			// const res1 = await getCorePLList(); | ||||
| 			// this.plLineList = res1.data; | ||||
| 			// this.plLineList.forEach(item => { | ||||
| 			// 	listByParentId({ id: item.id }).then(resp => { | ||||
| 			// 		if (resp.data.length > 0) { | ||||
| 			// 			// item.children = resp.data | ||||
| 			// 			this.$set(item, 'children', resp.data) | ||||
| 			// 			// this.$forceUpdate() | ||||
| 			// 		} | ||||
| 			// 	}) | ||||
| 			// }) | ||||
| 		}, | ||||
| 		// 表单提交 | ||||
|     dataFormSubmit() { | ||||
|       this.$refs["dataForm"].validate((valid) => { | ||||
|         if (!valid) { | ||||
|           return false; | ||||
|         } | ||||
|         // 修改的提交 | ||||
|         if (this.dataForm.id) { | ||||
|           updateEquipmentPlcConnect({ | ||||
| 						id: this.dataForm.id, | ||||
| 						equipmentId: this.dataForm.equipmentId[this.dataForm.equipmentId.length], | ||||
| 						plcId: this.dataForm.plcId | ||||
| 					}).then(response => { | ||||
|             this.$modal.msgSuccess("修改成功"); | ||||
|             this.visible = false; | ||||
|             this.$emit("refreshDataList"); | ||||
|           }); | ||||
|           return; | ||||
|         } | ||||
|         // 添加的提交 | ||||
|         createEquipmentPlcConnect({ | ||||
| 						id: this.dataForm.id, | ||||
| 						equipmentId: this.dataForm.equipmentId[this.dataForm.equipmentId.length - 1], | ||||
| 						plcId: this.dataForm.plcId | ||||
| 					}).then(response => { | ||||
|           this.$modal.msgSuccess("新增成功"); | ||||
|           this.visible = false; | ||||
|           this.$emit("refreshDataList"); | ||||
|         }); | ||||
|       }); | ||||
|     } | ||||
| 	} | ||||
| }; | ||||
| </script> | ||||
| @@ -0,0 +1,574 @@ | ||||
| <!-- | ||||
|     filename: EquipmentDrawer.vue | ||||
|     author: liubin | ||||
|     date: 2023-08-22 14:38:56 | ||||
|     description: | ||||
| --> | ||||
|  | ||||
| <template> | ||||
| 	<el-drawer | ||||
| 		:visible="visible" | ||||
| 		:show-close="false" | ||||
| 		:wrapper-closable="false" | ||||
| 		class="drawer" | ||||
| 		custom-class="mes-drawer" | ||||
| 		size="60%" | ||||
| 		@closed="$emit('destroy')"> | ||||
| 		<SmallTitle slot="title"> | ||||
| 			{{ | ||||
| 				mode.includes('detail') | ||||
| 					? '详情' | ||||
| 					: mode.includes('edit') | ||||
| 					? '编辑' | ||||
| 					: '新增' | ||||
| 			}} | ||||
| 		</SmallTitle> | ||||
|  | ||||
| 		<div class="drawer-body flex"> | ||||
| 			<div class="drawer-body__content"> | ||||
| 				<section v-for="(section, index) in sections" :key="section.key"> | ||||
| 					<SmallTitle v-if="index != 0">{{ section.name }}</SmallTitle> | ||||
|  | ||||
| 					<div class="form-part" v-if="section.key == 'base'"> | ||||
| 						<el-skeleton v-if="!showForm" animated /> | ||||
| 						<BaseInfoForm | ||||
| 							key="drawer-dialog-form" | ||||
| 							v-if="showForm" | ||||
| 							ref="form" | ||||
| 							:disabled="mode.includes('detail')" | ||||
| 							v-model="form" | ||||
| 							:rows="formRows" /> | ||||
| 					</div> | ||||
|  | ||||
| 					<div v-if="section.key == 'attrs'" style="margin-top: 12px"> | ||||
| 						<base-table | ||||
| 							v-loading="attrListLoading" | ||||
| 							:table-props="section.props" | ||||
| 							:page="attrQuery?.params.pageNo || 1" | ||||
| 							:limit="attrQuery?.params.pageSize || 10" | ||||
| 							:table-data="list" | ||||
| 							:add-button-show="mode.includes('detail') ? null : '添加属性'" | ||||
| 							@emitButtonClick="handleAddAttr" | ||||
| 							@emitFun="handleEmitFun"> | ||||
| 							<method-btn | ||||
| 								v-if="section.tableBtn" | ||||
| 								slot="handleBtn" | ||||
| 								label="操作" | ||||
| 								:method-list="tableBtn" | ||||
| 								@clickBtn="handleTableBtnClick" /> | ||||
| 						</base-table> | ||||
|  | ||||
| 						<!-- 分页组件 --> | ||||
| 						<pagination | ||||
| 							v-show="total > 0" | ||||
| 							:total="total" | ||||
| 							:page.sync="attrQuery.params.pageNo" | ||||
| 							:limit.sync="attrQuery.params.pageSize" | ||||
| 							@pagination="getAttrList" /> | ||||
| 					</div> | ||||
| 				</section> | ||||
| 			</div> | ||||
|  | ||||
| 			<div class="drawer-body__footer"> | ||||
| 				<el-button style="" @click="handleCancel">取消</el-button> | ||||
| 				<el-button v-if="mode == 'detail'" type="primary" @click="toggleEdit"> | ||||
| 					编辑 | ||||
| 				</el-button> | ||||
| 				<el-button v-else type="primary" @click="handleCancel">确定</el-button> | ||||
| 				<!-- sections的第二项必须是 属性列表  --> | ||||
| 				<!-- <el-button | ||||
| 						v-if="sections[1].allowAdd" | ||||
| 						type="primary" | ||||
| 						@click="handleAddAttr"> | ||||
| 						添加属性 | ||||
| 					</el-button> --> | ||||
| 			</div> | ||||
| 		</div> | ||||
|  | ||||
| 		<!-- 属性对话框 --> | ||||
| 		<base-dialog | ||||
| 			v-if="sections[1].allowAdd" | ||||
| 			:dialogTitle="attrTitle" | ||||
| 			:dialogVisible="attrFormVisible" | ||||
| 			width="45%" | ||||
| 			:append-to-body="true" | ||||
| 			custom-class="baseDialog" | ||||
| 			@close="closeAttrForm" | ||||
| 			@cancel="closeAttrForm" | ||||
| 			@confirm="submitAttrForm"> | ||||
| 			<DialogForm | ||||
| 				v-if="attrFormVisible" | ||||
| 				ref="attrForm" | ||||
| 				:disabled="mode.includes('detail')" | ||||
| 				v-model="attrForm" | ||||
| 				:rows="attrRows" /> | ||||
| 		</base-dialog> | ||||
| 	</el-drawer> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import BaseInfoForm from '@/components/DialogForm'; | ||||
|  | ||||
| const SmallTitle = { | ||||
| 	name: 'SmallTitle', | ||||
| 	props: ['size'], | ||||
| 	data() { | ||||
| 		return {}; | ||||
| 	}, | ||||
| 	methods: {}, | ||||
| 	render: function (h) { | ||||
| 		return h( | ||||
| 			'span', | ||||
| 			{ | ||||
| 				class: 'small-title', | ||||
| 				style: { | ||||
| 					fontSize: '18px', | ||||
| 					lineHeight: | ||||
| 						this.size == 'lg' ? '24px' : this.size == 'sm' ? '18px' : '20px', | ||||
| 					fontWeight: 500, | ||||
| 					fontFamily: '微软雅黑, Microsoft YaHei, Arial, Helvetica, sans-serif', | ||||
| 				}, | ||||
| 			}, | ||||
| 			this.$slots.default | ||||
| 		); | ||||
| 	}, | ||||
| }; | ||||
|  | ||||
| export default { | ||||
| 	components: { SmallTitle, DialogForm: BaseInfoForm, BaseInfoForm }, | ||||
| 	props: ['sections', 'defaultMode', 'infoData'], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			mode: '', | ||||
| 			visible: false, | ||||
| 			showForm: false, | ||||
| 			total: 0, | ||||
| 			form: {}, | ||||
| 			list: [], | ||||
| 			attrTitle: '', | ||||
| 			attrForm: { | ||||
| 				id: null, | ||||
| 				name: '', | ||||
| 				plcParamName: '', | ||||
| 				unit: '', | ||||
| 				collection: 1, | ||||
| 				minValue: '', | ||||
| 				maxValue: '', | ||||
| 				defaultValue: '', | ||||
| 				description: '', | ||||
| 				remark: '', | ||||
| 				alarmContent: '', | ||||
| 				equipmentParamType: '', | ||||
| 				productionParamType: '', | ||||
| 			}, | ||||
| 			attrFormVisible: false, | ||||
| 			attrRows: [ | ||||
| 				[ | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '参数列名', | ||||
| 						prop: 'plcParamName', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '参数名称', | ||||
| 						prop: 'name', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| 					{ | ||||
| 						select: true, | ||||
| 						label: '单位', | ||||
| 						prop: 'unit', | ||||
| 						options: this.getDictDatas(this.DICT_TYPE.UNIT_DICT), | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						switch: true, | ||||
| 						label: '是否采集', | ||||
| 						prop: 'collection', | ||||
| 						bind: { | ||||
| 							'active-value': 1, | ||||
| 							'inactive-value': 0, | ||||
| 						}, | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| 					{ | ||||
| 						select: true, | ||||
| 						label: '设备参数类型', | ||||
| 						prop: 'equipmentParamType', | ||||
| 						options: [ | ||||
| 							{ label: '一般参数', value: 1 }, | ||||
| 							{ label: '工艺参数', value: 2 }, | ||||
| 							{ label: '报警参数', value: 3 }, | ||||
| 						], | ||||
| 						rules: [ | ||||
| 							{ | ||||
| 								required: true, | ||||
| 								message: '设备参数类型不能为空', | ||||
| 								trigger: 'blur', | ||||
| 							}, | ||||
| 						], | ||||
| 					}, | ||||
| 					{ | ||||
| 						select: true, | ||||
| 						label: '生产参数类型', | ||||
| 						prop: 'productionParamType', | ||||
| 						options: [ | ||||
| 							// { label: '进片数量', value: 1 }, | ||||
| 							// { label: '出片数量', value: 2 }, | ||||
| 							// { label: '破损数量', value: 3 }, | ||||
| 							// { label: '无类型', value: 4 }, | ||||
| 							{ label: '进口计数', value: 1 }, | ||||
| 							{ label: '出口计数', value: 2 }, | ||||
| 							{ label: '损耗计数', value: 3 }, | ||||
| 							{ label: '无类型', value: 4 }, | ||||
| 						], | ||||
| 						rules: [ | ||||
| 							{ | ||||
| 								required: true, | ||||
| 								message: '生产参数类型不能为空', | ||||
| 								trigger: 'blur', | ||||
| 							}, | ||||
| 						], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '最小值', | ||||
| 						prop: 'minValue', | ||||
| 						rules: [ | ||||
| 							{ | ||||
| 								type: 'number', | ||||
| 								message: '请输入正确的数字', | ||||
| 								trigger: 'change', | ||||
| 								transform: (val) => Number(val), | ||||
| 							}, | ||||
| 						], | ||||
| 					}, | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '最大值', | ||||
| 						prop: 'maxValue', | ||||
| 						rules: [ | ||||
| 							{ | ||||
| 								required: false, | ||||
| 							}, | ||||
| 							{ | ||||
| 								type: 'number', | ||||
| 								message: '请输入正确的数字', | ||||
| 								trigger: 'change', | ||||
| 								transform: (val) => Number(val), | ||||
| 							}, | ||||
| 						], | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '标准值', | ||||
| 						prop: 'defaultValue', | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '描述', | ||||
| 						prop: 'description', | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '备注', | ||||
| 						prop: 'remark', | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 			], | ||||
| 			attrQuery: { | ||||
| 				params: { | ||||
| 					pageNo: 1, | ||||
| 					pageSize: 10, | ||||
| 				}, | ||||
| 			}, // 属性列表的请求 | ||||
| 			infoQuery: null, // 基本信息的请求 | ||||
| 			attrFormSubmitting: false, | ||||
| 			attrListLoading: false, | ||||
| 		}; | ||||
| 	}, | ||||
| 	computed: { | ||||
| 		formRows() { | ||||
| 			return this.sections[0].rows.map((row) => { | ||||
| 				return row.map((col) => { | ||||
| 					return { | ||||
| 						...col, | ||||
| 						bind: { | ||||
| 							// 详情 模式下,禁用各种输入 | ||||
| 							// disabled: this.mode == 'detail', | ||||
| 							disabled: true, | ||||
| 						}, | ||||
| 					}; | ||||
| 				}); | ||||
| 			}); | ||||
| 		}, | ||||
| 		tableBtn() { | ||||
| 			return this.mode == 'detail' ? [] : this.sections[1].tableBtn; | ||||
| 		}, | ||||
| 	}, | ||||
| 	mounted() { | ||||
| 		this.mode = this.defaultMode || 'detail'; | ||||
| 		for (const section of this.sections) { | ||||
| 			// 请求具体信息 | ||||
| 			if ('url' in section) { | ||||
| 				const query = { | ||||
| 					url: section.url, | ||||
| 					method: section.method || 'get', | ||||
| 					params: section.queryParams || null, | ||||
| 					data: section.data || null, | ||||
| 				}; | ||||
| 				// debugger; | ||||
| 				this.$axios(query).then(({ data }) => { | ||||
| 					if (section.key == 'base') { | ||||
| 						this.form = data; | ||||
| 						this.showForm = true; | ||||
| 						this.infoQuery = query; | ||||
| 					} else if (section.key == 'attrs') { | ||||
| 						this.attrQuery = query; | ||||
| 						this.list = data.list; | ||||
| 						this.total = data.total; | ||||
| 					} | ||||
| 				}); | ||||
| 			} else if (section.key == 'base') { | ||||
| 				this.form = this.infoData; | ||||
| 				this.showForm = true; | ||||
| 			} | ||||
| 		} | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		handleTableBtnClick({ type, data }) { | ||||
| 			switch (type) { | ||||
| 				case 'edit': | ||||
| 					this.handleEditAttr(data.id); | ||||
| 					break; | ||||
| 				case 'delete': | ||||
| 					this.handleDeleteAttr(data.id); | ||||
| 					break; | ||||
| 			} | ||||
| 		}, | ||||
|  | ||||
| 		handleEmitFun(val) { | ||||
| 			console.log('handleEmitFun', val); | ||||
| 		}, | ||||
|  | ||||
| 		init() { | ||||
| 			this.visible = true; | ||||
| 		}, | ||||
|  | ||||
| 		async getAttrList() { | ||||
| 			this.attrListLoading = true; | ||||
| 			const res = await this.$axios(this.attrQuery); | ||||
| 			if (res.code == 0) { | ||||
| 				this.list = res.data.list; | ||||
| 				this.total = res.data.total; | ||||
| 			} | ||||
| 			this.attrListLoading = false; | ||||
| 		}, | ||||
|  | ||||
| 		// 保存表单 | ||||
| 		handleSave() { | ||||
| 			this.$refs['form'][0].validate(async (valid) => { | ||||
| 				if (valid) { | ||||
| 					const isEdit = this.mode == 'edit'; | ||||
| 					await this.$axios({ | ||||
| 						url: this.sections[0][isEdit ? 'urlUpdate' : 'urlCreate'], | ||||
| 						method: isEdit ? 'put' : 'post', | ||||
| 						data: this.form, | ||||
| 					}); | ||||
| 					this.$modal.msgSuccess(`${isEdit ? '更新' : '创建'}成功`); | ||||
| 					this.visible = false; | ||||
| 					this.$emit('refreshDataList'); | ||||
| 				} | ||||
| 			}); | ||||
| 		}, | ||||
|  | ||||
| 		handleCancel() { | ||||
| 			this.visible = false; | ||||
| 		}, | ||||
|  | ||||
| 		// 开启编辑 | ||||
| 		toggleEdit() { | ||||
| 			this.mode = 'edit'; | ||||
| 		}, | ||||
|  | ||||
| 		// 新增属性 | ||||
| 		handleAddAttr() { | ||||
| 			this.attrForm = { | ||||
| 				id: null, | ||||
| 				name: '', | ||||
| 				plcParamName: '', | ||||
| 				unit: '', | ||||
| 				collection: 1, | ||||
| 				minValue: '', | ||||
| 				maxValue: '', | ||||
| 				defaultValue: '', | ||||
| 				description: '', | ||||
| 				remark: '', | ||||
| 				alarmContent: '', | ||||
| 			}; | ||||
| 			this.attrTitle = '添加设备绑定信息'; | ||||
| 			this.attrFormVisible = true; | ||||
| 		}, | ||||
|  | ||||
| 		// 编辑属性 | ||||
| 		async handleEditAttr(attrId) { | ||||
| 			const res = await this.$axios({ | ||||
| 				url: this.sections[1].urlDetail, | ||||
| 				method: 'get', | ||||
| 				params: { id: attrId }, | ||||
| 			}); | ||||
| 			if (res.code == 0) { | ||||
| 				this.attrForm = res.data; | ||||
| 				this.attrTitle = '编辑设备绑定信息'; | ||||
| 				this.attrFormVisible = true; | ||||
| 			} | ||||
| 		}, | ||||
|  | ||||
| 		// 删除属性 | ||||
| 		handleDeleteAttr(attrId) { | ||||
| 			this.$confirm('确定删除该分组报警?', '提示', { | ||||
| 				confirmButtonText: '确定', | ||||
| 				cancelButtonText: '取消', | ||||
| 				type: 'warning', | ||||
| 			}) | ||||
| 				.then(async () => { | ||||
| 					const res = await this.$axios({ | ||||
| 						url: this.sections[1].urlDelete, | ||||
| 						method: 'delete', | ||||
| 						params: { id: attrId }, | ||||
| 					}); | ||||
| 					if (res.code == 0) { | ||||
| 						this.$message({ | ||||
| 							message: '删除成功', | ||||
| 							type: 'success', | ||||
| 							duration: 1500, | ||||
| 							onClose: () => { | ||||
| 								this.getAttrList(); | ||||
| 							}, | ||||
| 						}); | ||||
| 					} | ||||
| 				}) | ||||
| 				.catch(() => {}); | ||||
| 		}, | ||||
|  | ||||
| 		// 提交属性表 | ||||
| 		async submitAttrForm() { | ||||
| 			this.$refs['attrForm'].validate((valid) => { | ||||
| 				if (!valid) { | ||||
|           return false; | ||||
| 				} | ||||
| 			}); | ||||
| 			const isEdit = this.attrForm.id != null; | ||||
| 			this.attrFormSubmitting = true; | ||||
| 			const res = await this.$axios({ | ||||
| 				url: isEdit ? this.sections[1].urlUpdate : this.sections[1].urlCreate, | ||||
| 				method: isEdit ? 'put' : 'post', | ||||
| 				data: { | ||||
| 					...this.attrForm, | ||||
| 					connectId: this.infoData.id | ||||
| 				}, | ||||
| 			}); | ||||
|  | ||||
| 			if (res.code == 0) { | ||||
| 				this.closeAttrForm(); | ||||
| 				this.$message({ | ||||
| 					message: `${isEdit ? '更新' : '创建'}成功`, | ||||
| 					type: 'success', | ||||
| 					duration: 1500, | ||||
| 					onClose: () => { | ||||
| 						this.getAttrList(); | ||||
| 					}, | ||||
| 				}); | ||||
| 			} | ||||
| 			this.attrFormSubmitting = false; | ||||
| 		}, | ||||
|  | ||||
| 		closeAttrForm() { | ||||
| 			this.attrFormVisible = false; | ||||
| 		}, | ||||
|  | ||||
| 		handleClick(raw) { | ||||
| 			if (raw.type === 'delete') { | ||||
| 				this.$confirm(`确定删除该报警?`, '提示', { | ||||
| 					confirmButtonText: '确定', | ||||
| 					cancelButtonText: '取消', | ||||
| 					type: 'warning', | ||||
| 				}) | ||||
| 					.then(() => { | ||||
| 						deleteProductAttr(raw.data.id).then(({ data }) => { | ||||
| 							this.$message({ | ||||
| 								message: '操作成功', | ||||
| 								type: 'success', | ||||
| 								duration: 1500, | ||||
| 								onClose: () => { | ||||
| 									this.getList(); | ||||
| 								}, | ||||
| 							}); | ||||
| 						}); | ||||
| 					}) | ||||
| 					.catch(() => {}); | ||||
| 			} else { | ||||
| 				this.addNew(raw.data.id); | ||||
| 			} | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
|  | ||||
| <style scoped> | ||||
| .drawer >>> .el-drawer { | ||||
| 	border-radius: 8px 0 0 8px; | ||||
| } | ||||
|  | ||||
| .drawer >>> .el-drawer__header { | ||||
| 	margin: 0; | ||||
| 	padding: 32px 32px 24px; | ||||
| 	border-bottom: 1px solid #dcdfe6; | ||||
| 	margin-bottom: 0px; | ||||
| } | ||||
|  | ||||
| .small-title::before { | ||||
| 	content: ''; | ||||
| 	display: inline-block; | ||||
| 	vertical-align: top; | ||||
| 	width: 4px; | ||||
| 	height: 22px; | ||||
| 	border-radius: 1px; | ||||
| 	margin-right: 8px; | ||||
| 	background-color: #0b58ff; | ||||
| } | ||||
|  | ||||
| .drawer-body { | ||||
| 	display: flex; | ||||
| 	flex-direction: column; | ||||
| 	height: 100%; | ||||
| } | ||||
|  | ||||
| .drawer-body__content { | ||||
| 	flex: 1; | ||||
| 	/* background: #eee; */ | ||||
| 	padding: 20px 30px; | ||||
| 	overflow-y: auto; | ||||
| } | ||||
|  | ||||
| .drawer-body__footer { | ||||
| 	display: flex; | ||||
| 	justify-content: flex-end; | ||||
| 	padding: 18px; | ||||
| } | ||||
| </style> | ||||
| @@ -1,8 +1,8 @@ | ||||
| <!--  | ||||
| <!-- | ||||
|     filename: EquipmentDrawer.vue | ||||
|     author: liubin | ||||
|     date: 2023-08-22 14:38:56 | ||||
|     description:  | ||||
|     description: | ||||
| --> | ||||
|  | ||||
| <template> | ||||
| @@ -12,7 +12,7 @@ | ||||
| 		:wrapper-closable="false" | ||||
| 		class="drawer" | ||||
| 		custom-class="mes-drawer" | ||||
| 		size="60%" | ||||
| 		:size="size || '50%'" | ||||
| 		@closed="$emit('destroy')"> | ||||
| 		<SmallTitle slot="title"> | ||||
| 			{{ | ||||
| @@ -29,29 +29,107 @@ | ||||
| 				<section v-for="(section, index) in sections" :key="section.key"> | ||||
| 					<SmallTitle v-if="index != 0">{{ section.name }}</SmallTitle> | ||||
|  | ||||
| 					<div class="form-part" v-if="section.key == 'base'"> | ||||
| 					<div | ||||
| 						class="form-part" | ||||
| 						v-if="section.key == 'base'" | ||||
| 						style="border-bottom: 1px solid #dfdfdf; margin-bottom: 24px"> | ||||
| 						<el-skeleton v-if="!showForm" animated /> | ||||
| 						<BaseInfoForm | ||||
| 						<!-- <BaseInfoForm | ||||
| 							key="drawer-dialog-form" | ||||
| 							v-if="showForm" | ||||
| 							ref="form" | ||||
| 							:disabled="mode.includes('detail')" | ||||
| 							v-model="form" | ||||
| 							:rows="formRows" /> | ||||
| 							:rows="formRows" /> --> | ||||
|  | ||||
| 						<!-- if  --> | ||||
| 						<el-row v-if="mode.includes('detail')" style="margin-bottom: 24px"> | ||||
| 							<el-col :span="8"> | ||||
| 								<div | ||||
| 									class="title" | ||||
| 									style="font-weight: 700; font-size: 16px; margin: 8px 0"> | ||||
| 									设备名 | ||||
| 								</div> | ||||
| 								<div class="value" style="font-size: 14px"> | ||||
| 									{{ form.equipmentName }} | ||||
| 								</div> | ||||
| 							</el-col> | ||||
| 							<el-col :span="8"> | ||||
| 								<div | ||||
| 									class="title" | ||||
| 									style="font-weight: 700; font-size: 16px; margin: 8px 0"> | ||||
| 									关联表名 | ||||
| 								</div> | ||||
| 								<div class="value" style="font-size: 14px"> | ||||
| 									{{ form.plcName }} | ||||
| 								</div> | ||||
| 							</el-col> | ||||
| 						</el-row> | ||||
| 						<!-- else  --> | ||||
| 						<el-row v-else style="margin-bottom: 24px" :gutter="20"> | ||||
| 							<el-form ref="form" :model="form"> | ||||
| 								<el-col :span="8"> | ||||
| 									<el-form-item | ||||
| 										class="title" | ||||
| 										label="设备名" | ||||
| 										style="font-size: 16px; margin: 8px 0"> | ||||
| 										<el-select | ||||
| 											v-model="form.equipmentId" | ||||
| 											filterable | ||||
| 											clearable | ||||
| 											placeholder="请选择设备"> | ||||
| 											<el-option | ||||
| 												v-for="eq in eqList" | ||||
| 												:key="eq.id" | ||||
| 												:label="eq.name" | ||||
| 												:value="eq.id"></el-option> | ||||
| 										</el-select> | ||||
| 									</el-form-item> | ||||
| 								</el-col> | ||||
| 								<el-col :span="8"> | ||||
| 									<el-form-item | ||||
| 										class="title" | ||||
| 										label="设备关联表名" | ||||
| 										style="font-size: 16px; margin: 8px 0"> | ||||
| 										<el-select | ||||
| 											v-model="form.plcId" | ||||
| 											filterable | ||||
| 											clearable | ||||
| 											placeholder="请选择关联表"> | ||||
| 											<el-option | ||||
| 												v-for="plc in plcList" | ||||
| 												:key="plc.id" | ||||
| 												:label="plc.plcTableName" | ||||
| 												:value="plc.id"></el-option> | ||||
| 										</el-select> | ||||
| 									</el-form-item> | ||||
| 								</el-col> | ||||
| 							</el-form> | ||||
| 						</el-row> | ||||
| 					</div> | ||||
|  | ||||
| 					<div v-if="section.key == 'attrs'" style="margin-top: 12px"> | ||||
| 					<div | ||||
| 						v-if="section.key == 'attrs'" | ||||
| 						style="position: relative; margin-top: 12px"> | ||||
| 						<div | ||||
| 							v-if="!mode.includes('detail')" | ||||
| 							style="position: absolute; top: -40px; right: 0"> | ||||
| 							<el-button @click="handleAddAttr" type="text"> | ||||
| 								<i class="el-icon-plus"></i> | ||||
| 								添加参数 | ||||
| 							</el-button> | ||||
| 						</div> | ||||
| 						<base-table | ||||
| 							v-loading="attrListLoading" | ||||
| 							:table-props="section.props" | ||||
| 							:page="attrQuery?.params.pageNo || 1" | ||||
| 							:limit="attrQuery?.params.pageSize || 10" | ||||
| 							:table-data="list" | ||||
| 							:add-button-show="mode.includes('detail') ? null : '添加属性'" | ||||
| 							@emitButtonClick="handleAddAttr" | ||||
| 							@emitFun="handleEmitFun"> | ||||
| 							<!-- :add-button-show="mode.includes('detail') ? null : '添加属性'" | ||||
| 							@emitButtonClick="handleAddAttr" --> | ||||
| 							<method-btn | ||||
| 								v-if="section.tableBtn" | ||||
| 								v-if="section.tableBtn && !mode.includes('detail')" | ||||
| 								slot="handleBtn" | ||||
| 								label="操作" | ||||
| 								:method-list="tableBtn" | ||||
| @@ -71,17 +149,12 @@ | ||||
|  | ||||
| 			<div class="drawer-body__footer"> | ||||
| 				<el-button style="" @click="handleCancel">取消</el-button> | ||||
| 				<el-button v-if="mode == 'detail'" type="primary" @click="toggleEdit"> | ||||
| 					编辑 | ||||
| 				<el-button | ||||
| 					type="primary" | ||||
| 					v-if="!mode.includes('detail')" | ||||
| 					@click="handleSave"> | ||||
| 					保存 | ||||
| 				</el-button> | ||||
| 				<el-button v-else type="primary" @click="handleCancel">确定</el-button> | ||||
| 				<!-- sections的第二项必须是 属性列表  --> | ||||
| 				<!-- <el-button | ||||
| 						v-if="sections[1].allowAdd" | ||||
| 						type="primary" | ||||
| 						@click="handleAddAttr"> | ||||
| 						添加属性 | ||||
| 					</el-button> --> | ||||
| 			</div> | ||||
| 		</div> | ||||
|  | ||||
| @@ -96,10 +169,10 @@ | ||||
| 			@close="closeAttrForm" | ||||
| 			@cancel="closeAttrForm" | ||||
| 			@confirm="submitAttrForm"> | ||||
| 			<!-- :disabled="mode.includes('detail')" --> | ||||
| 			<DialogForm | ||||
| 				v-if="attrFormVisible" | ||||
| 				ref="attrForm" | ||||
| 				:disabled="mode.includes('detail')" | ||||
| 				v-model="attrForm" | ||||
| 				:rows="attrRows" /> | ||||
| 		</base-dialog> | ||||
| @@ -136,7 +209,7 @@ const SmallTitle = { | ||||
|  | ||||
| export default { | ||||
| 	components: { SmallTitle, DialogForm: BaseInfoForm, BaseInfoForm }, | ||||
| 	props: ['sections', 'defaultMode', 'infoData'], | ||||
| 	props: ['sections', 'defaultMode', 'infoData', 'size'], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			mode: '', | ||||
| @@ -145,6 +218,8 @@ export default { | ||||
| 			total: 0, | ||||
| 			form: {}, | ||||
| 			list: [], | ||||
| 			eqList: [], | ||||
| 			plcList: [], | ||||
| 			attrTitle: '', | ||||
| 			attrForm: { | ||||
| 				id: null, | ||||
| @@ -166,13 +241,17 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '参数列名', | ||||
| 						prop: 'plcParamName', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [ | ||||
| 							{ required: true, message: '参数列名不能为空', trigger: 'blur' }, | ||||
| 						], | ||||
| 					}, | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '参数名称', | ||||
| 						prop: 'name', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [ | ||||
| 							{ required: true, message: '参数名称不能为空', trigger: 'blur' }, | ||||
| 						], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -181,7 +260,6 @@ export default { | ||||
| 						label: '单位', | ||||
| 						prop: 'unit', | ||||
| 						options: this.getDictDatas(this.DICT_TYPE.UNIT_DICT), | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						switch: true, | ||||
| @@ -193,6 +271,47 @@ export default { | ||||
| 						}, | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| 					{ | ||||
| 						select: true, | ||||
| 						label: '设备参数类型', | ||||
| 						prop: 'equipmentParamType', | ||||
| 						options: [ | ||||
| 							{ label: '一般参数', value: 1 }, | ||||
| 							{ label: '工艺参数', value: 2 }, | ||||
| 							{ label: '报警参数', value: 3 }, | ||||
| 						], | ||||
| 						rules: [ | ||||
| 							{ | ||||
| 								required: true, | ||||
| 								message: '设备参数类型不能为空', | ||||
| 								trigger: 'blur', | ||||
| 							}, | ||||
| 						], | ||||
| 					}, | ||||
| 					{ | ||||
| 						select: true, | ||||
| 						label: '生产参数类型', | ||||
| 						prop: 'productionParamType', | ||||
| 						options: [ | ||||
| 							// { label: '进片数量', value: 1 }, | ||||
| 							// { label: '出片数量', value: 2 }, | ||||
| 							// { label: '破损数量', value: 3 }, | ||||
| 							// { label: '无类型', value: 4 }, | ||||
| 							{ label: '进口计数', value: 1 }, | ||||
| 							{ label: '出口计数', value: 2 }, | ||||
| 							{ label: '损耗计数', value: 3 }, | ||||
| 							{ label: '无类型', value: 4 }, | ||||
| 						], | ||||
| 						rules: [ | ||||
| 							{ | ||||
| 								required: true, | ||||
| 								message: '生产参数类型不能为空', | ||||
| 								trigger: 'blur', | ||||
| 							}, | ||||
| 						], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| 					{ | ||||
| 						input: true, | ||||
| @@ -222,7 +341,6 @@ export default { | ||||
| 								transform: (val) => Number(val), | ||||
| 							}, | ||||
| 						], | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -230,13 +348,11 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '标准值', | ||||
| 						prop: 'defaultValue', | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '描述', | ||||
| 						prop: 'description', | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| @@ -244,7 +360,6 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '备注', | ||||
| 						prop: 'remark', | ||||
| 						// rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 					}, | ||||
| 				], | ||||
| 			], | ||||
| @@ -257,6 +372,7 @@ export default { | ||||
| 			infoQuery: null, // 基本信息的请求 | ||||
| 			attrFormSubmitting: false, | ||||
| 			attrListLoading: false, | ||||
| 			shouldRefreshPageView: false, | ||||
| 		}; | ||||
| 	}, | ||||
| 	computed: { | ||||
| @@ -275,11 +391,24 @@ export default { | ||||
| 			}); | ||||
| 		}, | ||||
| 		tableBtn() { | ||||
| 			return this.mode == 'detail' ? [] : this.sections[1].tableBtn; | ||||
| 			return this.sections[1].tableBtn; | ||||
| 			// return this.mode == 'detail' ? [] : this.sections[1].tableBtn; | ||||
| 		}, | ||||
| 	}, | ||||
| 	mounted() { | ||||
| 		this.shouldRefreshPageView = false; | ||||
| 		this.mode = this.defaultMode || 'detail'; | ||||
|  | ||||
| 		if (this.mode != 'detail') { | ||||
| 			this.$axios('/base/equipment/listAll').then(({ code, data }) => { | ||||
| 				this.eqList = data; | ||||
| 			}); | ||||
| 			this.$axios({ | ||||
| 				url: '/base/equipment-plc/listAll', | ||||
| 			}).then(({ code, data }) => { | ||||
| 				this.plcList = data; | ||||
| 			}); | ||||
| 		} | ||||
| 		for (const section of this.sections) { | ||||
| 			// 请求具体信息 | ||||
| 			if ('url' in section) { | ||||
| @@ -341,7 +470,7 @@ export default { | ||||
| 		handleSave() { | ||||
| 			this.$refs['form'][0].validate(async (valid) => { | ||||
| 				if (valid) { | ||||
| 					const isEdit = this.mode == 'edit'; | ||||
| 					const isEdit = !this.mode.includes('detail'); | ||||
| 					await this.$axios({ | ||||
| 						url: this.sections[0][isEdit ? 'urlUpdate' : 'urlCreate'], | ||||
| 						method: isEdit ? 'put' : 'post', | ||||
| @@ -355,6 +484,9 @@ export default { | ||||
| 		}, | ||||
|  | ||||
| 		handleCancel() { | ||||
| 			if (this.shouldRefreshPageView) { | ||||
| 				this.$emit('refreshDataList'); | ||||
| 			} | ||||
| 			this.visible = false; | ||||
| 		}, | ||||
|  | ||||
| @@ -376,9 +508,11 @@ export default { | ||||
| 				defaultValue: '', | ||||
| 				description: '', | ||||
| 				remark: '', | ||||
| 				equipmentParamType: '', | ||||
| 				productionParamType: '', | ||||
| 				alarmContent: '', | ||||
| 			}; | ||||
| 			this.attrTitle = '添加设备绑定信息'; | ||||
| 			this.attrTitle = '添加参数绑定信息'; | ||||
| 			this.attrFormVisible = true; | ||||
| 		}, | ||||
|  | ||||
| @@ -391,14 +525,14 @@ export default { | ||||
| 			}); | ||||
| 			if (res.code == 0) { | ||||
| 				this.attrForm = res.data; | ||||
| 				this.attrTitle = '编辑设备绑定信息'; | ||||
| 				this.attrTitle = '编辑参数绑定信息'; | ||||
| 				this.attrFormVisible = true; | ||||
| 			} | ||||
| 		}, | ||||
|  | ||||
| 		// 删除属性 | ||||
| 		handleDeleteAttr(attrId) { | ||||
| 			this.$confirm('确定删除该分组报警?', '提示', { | ||||
| 			this.$confirm('确定删除该参数?', '提示', { | ||||
| 				confirmButtonText: '确定', | ||||
| 				cancelButtonText: '取消', | ||||
| 				type: 'warning', | ||||
| @@ -410,6 +544,7 @@ export default { | ||||
| 						params: { id: attrId }, | ||||
| 					}); | ||||
| 					if (res.code == 0) { | ||||
| 						this.shouldRefreshPageView = true; | ||||
| 						this.$message({ | ||||
| 							message: '删除成功', | ||||
| 							type: 'success', | ||||
| @@ -424,35 +559,37 @@ export default { | ||||
| 		}, | ||||
|  | ||||
| 		// 提交属性表 | ||||
| 		async submitAttrForm() { | ||||
| 			this.$refs['attrForm'].validate((valid) => { | ||||
| 		submitAttrForm() { | ||||
| 			this.$refs['attrForm'].validate(async (valid) => { | ||||
| 				if (!valid) { | ||||
| 					return; | ||||
| 				} | ||||
| 			}); | ||||
| 			const isEdit = this.attrForm.id != null; | ||||
| 			this.attrFormSubmitting = true; | ||||
| 			const res = await this.$axios({ | ||||
| 				url: isEdit ? this.sections[1].urlUpdate : this.sections[1].urlCreate, | ||||
| 				method: isEdit ? 'put' : 'post', | ||||
| 				data: { | ||||
| 					...this.attrForm, | ||||
| 					connectId: this.infoData.id | ||||
| 				}, | ||||
| 			}); | ||||
|  | ||||
| 			if (res.code == 0) { | ||||
| 				this.closeAttrForm(); | ||||
| 				this.$message({ | ||||
| 					message: `${isEdit ? '更新' : '创建'}成功`, | ||||
| 					type: 'success', | ||||
| 					duration: 1500, | ||||
| 					onClose: () => { | ||||
| 						this.getAttrList(); | ||||
| 				const isEdit = this.attrForm.id != null; | ||||
| 				this.attrFormSubmitting = true; | ||||
| 				const res = await this.$axios({ | ||||
| 					url: isEdit ? this.sections[1].urlUpdate : this.sections[1].urlCreate, | ||||
| 					method: isEdit ? 'put' : 'post', | ||||
| 					data: { | ||||
| 						...this.attrForm, | ||||
| 						connectId: this.infoData.id, | ||||
| 					}, | ||||
| 				}); | ||||
| 			} | ||||
| 			this.attrFormSubmitting = false; | ||||
|  | ||||
| 				if (res.code == 0) { | ||||
| 					this.closeAttrForm(); | ||||
| 					this.$message({ | ||||
| 						message: `${isEdit ? '更新' : '创建'}成功`, | ||||
| 						type: 'success', | ||||
| 						duration: 1500, | ||||
| 						onClose: () => { | ||||
| 							this.getAttrList(); | ||||
| 							this.shouldRefreshPageView = true; | ||||
| 						}, | ||||
| 					}); | ||||
| 				} | ||||
| 				this.attrFormSubmitting = false; | ||||
| 			}); | ||||
| 		}, | ||||
|  | ||||
| 		closeAttrForm() { | ||||
| @@ -461,7 +598,7 @@ export default { | ||||
|  | ||||
| 		handleClick(raw) { | ||||
| 			if (raw.type === 'delete') { | ||||
| 				this.$confirm(`确定删除该报警?`, '提示', { | ||||
| 				this.$confirm(`确定删除该参数?`, '提示', { | ||||
| 					confirmButtonText: '确定', | ||||
| 					cancelButtonText: '取消', | ||||
| 					type: 'warning', | ||||
|   | ||||
							
								
								
									
										100
									
								
								src/views/base/equipmentPlcConnect/components/basic-add.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,100 @@ | ||||
| /* | ||||
|  * @Author: zwq | ||||
|  * @Date: 2022-08-24 11:19:43 | ||||
|  * @LastEditors: zhp | ||||
|  * @LastEditTime: 2023-12-13 15:52:53 | ||||
|  * @Description: | ||||
|  */ | ||||
| export default { | ||||
|   data() { | ||||
|     /* eslint-disable */ | ||||
|     return { | ||||
|       urlOptions: { | ||||
|         createURL: '', | ||||
|         updateURL: '', | ||||
|         infoURL: '', | ||||
|         codeURL: '', | ||||
|         getOption: false, | ||||
|         isGetCode: false, | ||||
|         optionArrUrl: [], | ||||
|         optionArr: {} | ||||
|       }, | ||||
|       visible: false, | ||||
|       setData: false | ||||
|     } | ||||
|   }, | ||||
|   created() { | ||||
|   }, | ||||
|   activated() { | ||||
|   }, | ||||
|   methods: { | ||||
|     init(id) { | ||||
|       this.dataForm.id = id || ""; | ||||
|       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() | ||||
|           } | ||||
| 				} | ||||
|       }); | ||||
|     }, | ||||
| 		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(() => { | ||||
|           }); | ||||
|       }); | ||||
|     }, | ||||
|     // 表单提交 | ||||
|     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() { | ||||
|       this.$refs.dataForm.resetFields() | ||||
|     } | ||||
|   } | ||||
| } | ||||
							
								
								
									
										535
									
								
								src/views/base/equipmentPlcConnect/index-old.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,535 @@ | ||||
| <template> | ||||
| 	<div class="app-container"> | ||||
| 		<!-- 搜索工作栏 --> | ||||
| 		<SearchBar | ||||
| 			:formConfigs="searchBarFormConfig" | ||||
| 			ref="search-bar" | ||||
| 			@headBtnClick="handleSearchBarBtnClick" /> | ||||
|  | ||||
| 		<!-- 列表 --> | ||||
| 		<base-table | ||||
| 			:table-props="tableProps" | ||||
| 			:page="queryParams.pageNo" | ||||
| 			:limit="queryParams.pageSize" | ||||
| 			:table-data="list" | ||||
| 			@emitFun="handleEmitFun"> | ||||
| 			<method-btn | ||||
| 				v-if="tableBtn.length" | ||||
| 				slot="handleBtn" | ||||
| 				label="操作" | ||||
| 				:width="120" | ||||
| 				:method-list="tableBtn" | ||||
| 				@clickBtn="handleTableBtnClick" /> | ||||
| 		</base-table> | ||||
|  | ||||
| 		<!-- 分页组件 --> | ||||
| 		<pagination | ||||
| 			v-show="total > 0" | ||||
| 			:total="total" | ||||
| 			:page.sync="queryParams.pageNo" | ||||
| 			:limit.sync="queryParams.pageSize" | ||||
| 			@pagination="getList" /> | ||||
|  | ||||
| 		<!-- 对话框(添加 / 修改) --> | ||||
| 		<base-dialog | ||||
| 			:dialogTitle="title" | ||||
| 			:dialogVisible="open" | ||||
| 			width="700px" | ||||
| 			@close="cancel" | ||||
| 			@cancel="cancel" | ||||
| 			@confirm="submitForm"> | ||||
| 			<DialogForm v-if="open" ref="form" v-model="form" :rows="rows" /> | ||||
| 		</base-dialog> | ||||
|  | ||||
| 		<!-- 抽屉 详情 --> | ||||
| 		<BasicDrawer | ||||
| 			v-if="editVisible" | ||||
| 			ref="drawer" | ||||
| 			:default-mode="editMode" | ||||
| 			:info-data="alarmForm" | ||||
| 			:sections="[ | ||||
| 				{ | ||||
| 					name: '基本信息', | ||||
| 					key: 'base', | ||||
| 					rows: drawerBaseInfoRows, | ||||
| 				}, | ||||
| 				{ | ||||
| 					name: '属性列表', | ||||
| 					key: 'attrs', | ||||
| 					props: drawerListProps, | ||||
| 					url: '/base/equipment-plc-param/page', | ||||
| 					urlCreate: '/base/equipment-plc-param/create', | ||||
| 					urlUpdate: '/base/equipment-plc-param/update', | ||||
| 					urlDelete: '/base/equipment-plc-param/delete', | ||||
| 					urlDetail: '/base/equipment-plc-param/get', | ||||
| 					queryParams: { | ||||
| 						connectId: alarmForm.id, | ||||
| 						pageNo: 1, | ||||
| 						pageSize: 10, | ||||
| 					}, | ||||
| 					tableBtn: [ | ||||
| 						this.$auth.hasPermi('base:equipment-plc-param:update') | ||||
| 							? { | ||||
| 									type: 'edit', | ||||
| 									btnName: '修改', | ||||
| 							  } | ||||
| 							: undefined, | ||||
| 						this.$auth.hasPermi('base:equipment-plc-param:delete') | ||||
| 							? { | ||||
| 									type: 'delete', | ||||
| 									btnName: '删除', | ||||
| 							  } | ||||
| 							: undefined, | ||||
| 					].filter((v) => v), | ||||
| 					allowAdd: true, | ||||
| 				}, | ||||
| 			]" | ||||
| 			@refreshDataList="getList" | ||||
| 			@cancel="editVisible = false" | ||||
| 			@destroy="editVisible = false" /> | ||||
| 	</div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import { | ||||
| 	createEquipmentPlcConnect, | ||||
| 	updateEquipmentPlcConnect, | ||||
| 	deleteEquipmentPlcConnect, | ||||
| 	getEquipmentPlcConnect, | ||||
| 	getEquipmentPlcConnectPage, | ||||
| 	exportEquipmentPlcConnectExcel, | ||||
| } from '@/api/base/equipmentPlcConnect'; | ||||
| import moment from 'moment'; | ||||
| import basicPageMixin from '@/mixins/lb/basicPageMixin'; | ||||
| // import './http'; | ||||
| import BasicDrawer from './components/BasicDrawer.vue'; | ||||
| import { publicFormatter } from '@/utils/dict'; | ||||
|  | ||||
| export default { | ||||
| 	name: 'EquipmentPlcConnect', | ||||
| 	mixins: [basicPageMixin], | ||||
| 	components: { BasicDrawer }, | ||||
| 	data() { | ||||
| 		return { | ||||
| 			searchBarKeys: ['equipmentId', 'plcId'], | ||||
| 			// tableBtn: [ | ||||
| 			// 	this.$auth.hasPermi('base:equipment-plc:update') | ||||
| 			// 		? { | ||||
| 			// 				type: 'edit', | ||||
| 			// 				btnName: '修改', | ||||
| 			// 		  } | ||||
| 			// 		: undefined, | ||||
| 			// 	this.$auth.hasPermi('base:equipment-plc:delete') | ||||
| 			// 		? { | ||||
| 			// 				type: 'delete', | ||||
| 			// 				btnName: '删除', | ||||
| 			// 		  } | ||||
| 			// 		: undefined, | ||||
| 			// ].filter((v) => v), | ||||
| 			tableBtn: [ | ||||
| 				{ | ||||
| 					type: 'detail', | ||||
| 					btnName: '参数绑定', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'edit', | ||||
| 					btnName: '修改', | ||||
| 				}, | ||||
| 				// { | ||||
| 				// 	type: 'params-bind', | ||||
| 				// 	btnName: '参数绑定', | ||||
| 				// }, | ||||
| 				{ | ||||
| 					type: 'delete', | ||||
| 					btnName: '删除', | ||||
| 				}, | ||||
| 			], | ||||
| 			tableProps: [ | ||||
| 				// { | ||||
| 				// 	prop: 'createTime', | ||||
| 				// 	label: '添加时间', | ||||
| 				// 	fixed: true, | ||||
| 				// 	width: 180, | ||||
| 				// 	filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'), | ||||
| 				// }, | ||||
| 				{ prop: 'productionLine', label: '产线' }, | ||||
| 				{ prop: 'workshopSection', label: '工段' }, | ||||
| 				{ prop: 'equipmentName', label: '设备名' }, | ||||
| 				{ prop: 'equipmentCode', label: '设备编码' }, | ||||
| 				{ prop: 'plcCode', label: '关联表编码' }, | ||||
| 				{ prop: 'plcTableName', label: '关联表名' }, | ||||
| 				{ prop: 'plcName', label: '标识名称' }, | ||||
| 				{ prop: 'bindingParameters', label: '绑定参数数量' }, | ||||
| 				// { | ||||
| 				// 	_action: 'params-bind', | ||||
| 				// 	label: '查看绑定', | ||||
| 				// 	subcomponent: { | ||||
| 				// 		props: ['injectData'], | ||||
| 				// 		render: function (h) { | ||||
| 				// 			const _this = this; | ||||
| 				// 			return h( | ||||
| 				// 				'el-button', | ||||
| 				// 				{ | ||||
| 				// 					props: { type: 'text' }, | ||||
| 				// 					on: { | ||||
| 				// 						click: function () { | ||||
| 				// 							console.log('inejctdata', _this.injectData); | ||||
| 				// 							_this.$emit('emitData', { | ||||
| 				// 								action: _this.injectData._action, | ||||
| 				// 								payload: _this.injectData, | ||||
| 				// 							}); | ||||
| 				// 						}, | ||||
| 				// 					}, | ||||
| 				// 				}, | ||||
| 				// 				'查看绑定' | ||||
| 				// 			); | ||||
| 				// 		}, | ||||
| 				// 	}, | ||||
| 				// }, | ||||
| 			], | ||||
| 			searchBarFormConfig: [ | ||||
| 				{ | ||||
| 					type: 'select', | ||||
| 					label: '设备名', | ||||
| 					placeholder: '请选择设备', | ||||
| 					param: 'equipmentId', | ||||
| 					selectOptions: [], | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'select', | ||||
| 					label: '编码', | ||||
| 					placeholder: '请选择编码', | ||||
| 					param: 'plcId', | ||||
| 					selectOptions: [], | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					btnName: '查询', | ||||
| 					name: 'search', | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'separate', | ||||
| 				}, | ||||
| 				{ | ||||
| 					// type: this.$auth.hasPermi('base:equipment-plc:create') | ||||
| 					// 	? 'button' | ||||
| 					// 	: '', | ||||
| 					type: 'button', | ||||
| 					btnName: '新增', | ||||
| 					name: 'add', | ||||
| 					plain: true, | ||||
| 					color: 'success', | ||||
| 				}, | ||||
| 				// { | ||||
| 				// 	type: this.$auth.hasPermi('base:equipment-plc:export') ? 'button' : '', | ||||
| 				// 	btnName: '导出', | ||||
| 				// 	name: 'export', | ||||
| 				// 	color: 'warning', | ||||
| 				// }, | ||||
| 			], | ||||
| 			rows: [ | ||||
| 				[ | ||||
| 					{ | ||||
| 						select: true, | ||||
| 						label: '关联表名', | ||||
| 						prop: 'plcId', | ||||
| 						labelKey: `plcTableName`, | ||||
| 						url: '/base/equipment-plc/listAll', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						bind: { | ||||
| 							filterable: true, | ||||
| 						}, | ||||
| 					}, | ||||
| 				], | ||||
| 				[ | ||||
| 					{ | ||||
| 						select: true, | ||||
| 						label: '设备', | ||||
| 						prop: 'equipmentId', | ||||
| 						url: '/base/equipment/page?pageNo=1&pageSize=99', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						bind: { | ||||
| 							filterable: true, | ||||
| 						}, | ||||
| 					}, | ||||
| 				], | ||||
| 			], | ||||
| 			open: false, | ||||
| 			// 查询参数 | ||||
| 			queryParams: { | ||||
| 				pageNo: 1, | ||||
| 				pageSize: 10, | ||||
| 				plcId: null, | ||||
| 				equipmentId: null, | ||||
| 			}, | ||||
| 			// 表单参数 | ||||
| 			form: {}, | ||||
| 			// 查看绑定配置 | ||||
| 			editVisible: false, | ||||
| 			editMode: '', | ||||
| 			drawerBaseInfoRows: [ | ||||
| 				[ | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '设备名', | ||||
| 						prop: 'equipmentName', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						// bind: { | ||||
| 						// 	disabled: this.editMode == 'detail', // some condition, like detail mode... | ||||
| 						// } | ||||
| 					}, | ||||
| 					{ | ||||
| 						input: true, | ||||
| 						label: '关联表名', | ||||
| 						prop: 'plcTableName', | ||||
| 						// url: '/base/equipment/getCode', | ||||
| 					}, | ||||
| 				], | ||||
| 			], | ||||
| 			drawerListProps: [ | ||||
| 				{ prop: 'plcParamName', label: '参数列名' }, | ||||
| 				{ prop: 'name', label: '参数名称' }, | ||||
| 				{ | ||||
| 					prop: 'unit', | ||||
| 					label: '单位', | ||||
| 					filter: publicFormatter('unit_dict'), | ||||
| 				}, | ||||
| 				{ | ||||
| 					prop: 'equipmentParamType', | ||||
| 					label: '设备参数类型', | ||||
| 					filter: (val) => | ||||
| 						val != null | ||||
| 							? ['', '一般参数', '工艺参数', '报警参数', ''][val] | ||||
| 							: '-', | ||||
| 				}, | ||||
| 				{ | ||||
| 					prop: 'productionParamType', | ||||
| 					label: '生产参数类型', | ||||
| 					filter: (val) => | ||||
| 						val != null | ||||
| 							? // ? ['', '进片数量', '出片数量', '破损数量', '无类型', ''][val] | ||||
| 							  ['', '进口计数', '出口计数', '损耗计数', '无类型', ''][val] | ||||
| 							: '-', | ||||
| 				}, | ||||
| 				{ | ||||
| 					prop: 'collection', | ||||
| 					label: '是否采集', | ||||
| 					filter: (val) => (val != null ? ['否', '是'][val] : '-'), | ||||
| 				}, | ||||
| 				{ prop: 'minValue', label: '最小值' }, | ||||
| 				{ prop: 'maxValue', label: '最大值' }, | ||||
| 				{ prop: 'defaultValue', label: '标准值' }, | ||||
| 				{ prop: 'description', label: '描述' }, | ||||
| 				{ prop: 'remark', label: '备注' }, | ||||
| 			], | ||||
| 			alarmForm: { | ||||
| 				id: undefined, | ||||
| 				equipmentName: undefined, | ||||
| 				plcTableName: undefined, | ||||
| 			}, | ||||
| 		}; | ||||
| 	}, | ||||
| 	created() { | ||||
| 		this.getList(); | ||||
| 		this.initSearchOptions(); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		async getEquipmentOptions() { | ||||
| 			const res = await this.$axios({ | ||||
| 				url: '/base/equipment/listAll', | ||||
| 				method: 'get', | ||||
| 			}); | ||||
| 			return res.data; | ||||
| 		}, | ||||
|  | ||||
| 		async getPlcOptions() { | ||||
| 			const res = await this.$axios({ | ||||
| 				url: '/base/equipment-plc/listAll', | ||||
| 				method: 'get', | ||||
| 			}); | ||||
| 			return res.data; | ||||
| 		}, | ||||
|  | ||||
| 		/** 初始化查询条件 */ | ||||
| 		async initSearchOptions() { | ||||
| 			Promise.all([this.getEquipmentOptions(), this.getPlcOptions()]).then( | ||||
| 				([eqList, plcList]) => { | ||||
| 					this.searchBarFormConfig[0].selectOptions = eqList.map((item) => { | ||||
| 						return { | ||||
| 							name: item.name, | ||||
| 							id: item.id, | ||||
| 						}; | ||||
| 					}); | ||||
| 					this.searchBarFormConfig[1].selectOptions = plcList.map((item) => { | ||||
| 						return { | ||||
| 							name: item.name, | ||||
| 							id: item.id, | ||||
| 						}; | ||||
| 					}); | ||||
| 				} | ||||
| 			); | ||||
| 		}, | ||||
| 		/** 覆盖 handleEmitFun 的默认实现 */ | ||||
| 		handleEmitFun({ action, payload }) { | ||||
| 			switch (action) { | ||||
| 				case 'params-bind': | ||||
| 					this.reset(); | ||||
| 					const { | ||||
| 						id, | ||||
| 						equipmentName, | ||||
| 						equipmentId, | ||||
| 						plcId, | ||||
| 						plcName, | ||||
| 						plcTableName, | ||||
| 					} = payload; | ||||
| 					// console.log('Cha看绑定参数弹窗', id, equipmentName, plcTableName); | ||||
| 					this.$router.push({ | ||||
| 						name: 'EquipmentPlcParam', | ||||
| 						params: { | ||||
| 							id, | ||||
| 							equipmentName, | ||||
| 							plcTableName, | ||||
| 						}, | ||||
| 					}); | ||||
| 					break; | ||||
| 			} | ||||
| 		}, | ||||
|  | ||||
| 		/** 查询列表 */ | ||||
| 		getList() { | ||||
| 			this.loading = true; | ||||
| 			// 执行查询 | ||||
| 			getEquipmentPlcConnectPage(this.queryParams).then((response) => { | ||||
| 				this.list = response.data.list; | ||||
| 				this.total = response.data.total; | ||||
| 				this.loading = false; | ||||
| 			}); | ||||
| 		}, | ||||
| 		/** 取消按钮 */ | ||||
| 		cancel() { | ||||
| 			this.open = false; | ||||
| 			this.reset(); | ||||
| 		}, | ||||
| 		/** 表单重置 */ | ||||
| 		reset() { | ||||
| 			this.form = { | ||||
| 				id: undefined, | ||||
| 				plcId: undefined, | ||||
| 				equipmentId: undefined, | ||||
| 			}; | ||||
| 			this.resetForm('form'); | ||||
| 		}, | ||||
| 		/** 搜索按钮操作 */ | ||||
| 		handleQuery() { | ||||
| 			this.queryParams.pageNo = 1; | ||||
| 			this.getList(); | ||||
| 		}, | ||||
| 		/** 重置按钮操作 */ | ||||
| 		resetQuery() { | ||||
| 			this.resetForm('queryForm'); | ||||
| 			this.handleQuery(); | ||||
| 		}, | ||||
| 		/** 新增按钮操作 */ | ||||
| 		handleAdd() { | ||||
| 			this.reset(); | ||||
| 			this.open = true; | ||||
| 			this.title = '添加设备与实时采集关系表(一对多)'; | ||||
| 		}, | ||||
| 		/** 修改按钮操作 */ | ||||
| 		handleUpdate(row) { | ||||
| 			this.reset(); | ||||
| 			const id = row.id; | ||||
| 			getEquipmentPlcConnect(id).then((response) => { | ||||
| 				this.form = response.data; | ||||
| 				this.open = true; | ||||
| 				this.title = '修改设备与实时采集关系表(一对多)'; | ||||
| 			}); | ||||
| 		}, | ||||
| 		/** 提交按钮 */ | ||||
| 		submitForm() { | ||||
| 			this.$refs['form'].validate((valid) => { | ||||
| 				if (!valid) { | ||||
| 					return; | ||||
| 				} | ||||
| 				// 修改的提交 | ||||
| 				if (this.form.id != null) { | ||||
| 					updateEquipmentPlcConnect(this.form).then((response) => { | ||||
| 						this.$modal.msgSuccess('修改成功'); | ||||
| 						this.open = false; | ||||
| 						this.getList(); | ||||
| 					}); | ||||
| 					return; | ||||
| 				} | ||||
| 				// 添加的提交 | ||||
| 				createEquipmentPlcConnect(this.form).then((response) => { | ||||
| 					this.$modal.msgSuccess('新增成功'); | ||||
| 					this.open = false; | ||||
| 					this.getList(); | ||||
| 				}); | ||||
| 			}); | ||||
| 		}, | ||||
|  | ||||
| 		// 查看报警 | ||||
| 		handleDetail(row) { | ||||
| 			// debugger; | ||||
| 			const { | ||||
| 				id, | ||||
| 				bindingParameters, | ||||
| 				equipmentCode, | ||||
| 				equipmentId, | ||||
| 				equipmentName, | ||||
| 				plcCode, | ||||
| 				plcId, | ||||
| 				plcName, | ||||
| 				plcTableName, | ||||
| 				productionLine, | ||||
| 				workshopSection, | ||||
| 			} = row; | ||||
| 			// 打开抽屉 | ||||
| 			this.editMode = 'detail'; | ||||
| 			this.alarmForm.id = id; | ||||
| 			this.alarmForm.plcTableName = plcTableName; // 关联表名 | ||||
| 			this.alarmForm.equipmentName = equipmentName; | ||||
| 			this.editVisible = true; | ||||
| 			this.$nextTick(() => { | ||||
| 				this.$refs['drawer'].init(); | ||||
| 			}); | ||||
| 		}, | ||||
|  | ||||
| 		/** 删除按钮操作 */ | ||||
| 		handleDelete(row) { | ||||
| 			const id = row.id; | ||||
| 			this.$modal | ||||
| 				.confirm('是否删除该配置?') | ||||
| 				.then(function () { | ||||
| 					return deleteEquipmentPlcConnect(id); | ||||
| 				}) | ||||
| 				.then(() => { | ||||
| 					this.getList(); | ||||
| 					this.$modal.msgSuccess('删除成功'); | ||||
| 				}) | ||||
| 				.catch(() => {}); | ||||
| 		}, | ||||
|  | ||||
| 		/** 导出按钮操作 */ | ||||
| 		handleExport() { | ||||
| 			// 处理查询参数 | ||||
| 			let params = { ...this.queryParams }; | ||||
| 			params.pageNo = undefined; | ||||
| 			params.pageSize = undefined; | ||||
| 			this.$modal | ||||
| 				.confirm('是否确认导出所有设备与实时采集关系表(一对多)数据项?') | ||||
| 				.then(() => { | ||||
| 					this.exportLoading = true; | ||||
| 					return exportEquipmentPlcConnectExcel(params); | ||||
| 				}) | ||||
| 				.then((response) => { | ||||
| 					this.$download.excel(response, '设备与实时采集关系表(一对多).xls'); | ||||
| 					this.exportLoading = false; | ||||
| 				}) | ||||
| 				.catch(() => {}); | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
| @@ -1,3 +1,10 @@ | ||||
| <!-- | ||||
|     filename: CollectionConfig.vue | ||||
|     author: liubin | ||||
|     date: 2023-10-30 10:09:03 | ||||
|     description: | ||||
| --> | ||||
|  | ||||
| <template> | ||||
| 	<div class="app-container"> | ||||
| 		<!-- 搜索工作栏 --> | ||||
| @@ -12,7 +19,8 @@ | ||||
| 			:page="queryParams.pageNo" | ||||
| 			:limit="queryParams.pageSize" | ||||
| 			:table-data="list" | ||||
| 			@emitFun="handleEmitFun"> | ||||
| 			@emitFun="handleEmitFun" | ||||
| 			:max-height="tableH"> | ||||
| 			<method-btn | ||||
| 				v-if="tableBtn.length" | ||||
| 				slot="handleBtn" | ||||
| @@ -34,17 +42,21 @@ | ||||
| 		<base-dialog | ||||
| 			:dialogTitle="title" | ||||
| 			:dialogVisible="open" | ||||
| 			width="700px" | ||||
| 			width="30%" | ||||
| 			@close="cancel" | ||||
| 			@cancel="cancel" | ||||
| 			@confirm="submitForm"> | ||||
| 			<DialogForm v-if="open" ref="form" v-model="form" :rows="rows" /> | ||||
| 			<!-- <DialogForm v-if="open" ref="form" v-model="form" :rows="rows" /> --> | ||||
| 			<add-or-update | ||||
| 				ref="addOrUpdate" | ||||
| 				@refreshDataList="successSubmit" /> | ||||
| 		</base-dialog> | ||||
|  | ||||
| 		<!-- 抽屉 详情 --> | ||||
| 		<BasicDrawer | ||||
| 			v-if="editVisible" | ||||
| 			ref="drawer" | ||||
| 			size="45%" | ||||
| 			:default-mode="editMode" | ||||
| 			:info-data="alarmForm" | ||||
| 			:sections="[ | ||||
| @@ -52,9 +64,13 @@ | ||||
| 					name: '基本信息', | ||||
| 					key: 'base', | ||||
| 					rows: drawerBaseInfoRows, | ||||
| 					url: '/base/equipment-plc-connect/get', | ||||
| 					urlUpdate: '/base/equipment-plc-connect/update', | ||||
| 					urlCreate: '/base/equipment-plc-connect/create', | ||||
| 					queryParams: { id: alarmForm.id }, | ||||
| 				}, | ||||
| 				{ | ||||
| 					name: '属性列表', | ||||
| 					name: '采集参数', | ||||
| 					key: 'attrs', | ||||
| 					props: drawerListProps, | ||||
| 					url: '/base/equipment-plc-param/page', | ||||
| @@ -68,18 +84,26 @@ | ||||
| 						pageSize: 10, | ||||
| 					}, | ||||
| 					tableBtn: [ | ||||
| 						this.$auth.hasPermi('base:equipment-plc-param:update') | ||||
| 							? { | ||||
| 									type: 'edit', | ||||
| 									btnName: '修改', | ||||
| 							  } | ||||
| 							: undefined, | ||||
| 						this.$auth.hasPermi('base:equipment-plc-param:delete') | ||||
| 							? { | ||||
| 									type: 'delete', | ||||
| 									btnName: '删除', | ||||
| 							  } | ||||
| 							: undefined, | ||||
| 						{ | ||||
| 							type: 'edit', | ||||
| 							btnName: '修改', | ||||
| 						}, | ||||
| 						{ | ||||
| 							type: 'delete', | ||||
| 							btnName: '删除', | ||||
| 						}, | ||||
| 						// this.$auth.hasPermi('equipment:collection-config-param:update') | ||||
| 						// 	? { | ||||
| 						// 			type: 'edit', | ||||
| 						// 			btnName: '修改', | ||||
| 						// 	  } | ||||
| 						// 	: undefined, | ||||
| 						// this.$auth.hasPermi('equipment:collection-config-param:delete') | ||||
| 						// 	? { | ||||
| 						// 			type: 'delete', | ||||
| 						// 			btnName: '删除', | ||||
| 						// 	  } | ||||
| 						// 	: undefined, | ||||
| 					].filter((v) => v), | ||||
| 					allowAdd: true, | ||||
| 				}, | ||||
| @@ -99,67 +123,60 @@ import { | ||||
| 	getEquipmentPlcConnectPage, | ||||
| 	exportEquipmentPlcConnectExcel, | ||||
| } from '@/api/base/equipmentPlcConnect'; | ||||
| import moment from 'moment'; | ||||
| import basicPageMixin from '@/mixins/lb/basicPageMixin'; | ||||
| // import './http'; | ||||
| import BasicDrawer from './components/BasicDrawer.vue'; | ||||
| import { publicFormatter } from '@/utils/dict'; | ||||
| import AddOrUpdate from './add-or-updata'; | ||||
| import tableHeightMixin from '@/mixins/lb/tableHeightMixin'; | ||||
|  | ||||
| export default { | ||||
| 	name: 'EquipmentPlcConnect', | ||||
| 	mixins: [basicPageMixin], | ||||
| 	components: { BasicDrawer }, | ||||
| 	mixins: [basicPageMixin, tableHeightMixin], | ||||
| 	components: { BasicDrawer, AddOrUpdate }, | ||||
| 	data() { | ||||
| 		return { | ||||
| 			searchBarKeys: ['equipmentId', 'plcId'], | ||||
| 			// tableBtn: [ | ||||
| 			// 	this.$auth.hasPermi('base:equipment-plc:update') | ||||
| 			// 		? { | ||||
| 			// 				type: 'edit', | ||||
| 			// 				btnName: '修改', | ||||
| 			// 		  } | ||||
| 			// 		: undefined, | ||||
| 			// 	this.$auth.hasPermi('base:equipment-plc:delete') | ||||
| 			// 		? { | ||||
| 			// 				type: 'delete', | ||||
| 			// 				btnName: '删除', | ||||
| 			// 		  } | ||||
| 			// 		: undefined, | ||||
| 			// ].filter((v) => v), | ||||
| 			tableBtn: [ | ||||
| 				{ | ||||
| 					type: 'detail', | ||||
| 					btnName: '参数绑定', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'edit', | ||||
| 					btnName: '修改', | ||||
| 				}, | ||||
| 				// { | ||||
| 				// 	type: 'params-bind', | ||||
| 				// 	btnName: '参数绑定', | ||||
| 				// }, | ||||
| 				{ | ||||
| 					type: 'delete', | ||||
| 					btnName: '删除', | ||||
| 				}, | ||||
| 			], | ||||
| 				this.$auth.hasPermiAnd([ | ||||
| 					'base:equipment-plc-connect:query', | ||||
| 					'base:equipment-plc-param:query' | ||||
| 				]) | ||||
| 				? { | ||||
| 						type: 'detail', | ||||
| 						btnName: '参数绑定', | ||||
| 					} : undefined, | ||||
| 				this.$auth.hasPermiAnd([ | ||||
| 						'base:equipment-plc-connect:update', | ||||
| 						'base:equipment-plc-connect:query', | ||||
| 						'base:equipment-plc-param:create', | ||||
| 						'base:equipment-plc-param:update', | ||||
| 						'base:equipment-plc-param:delete', | ||||
| 						'base:equipment-plc-param:query' | ||||
| 					]) | ||||
| 					? { | ||||
| 							type: 'edit', | ||||
| 							btnName: '修改', | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 				this.$auth.hasPermi('base:equipment-plc-connect:delete') | ||||
| 					? { | ||||
| 							type: 'delete', | ||||
| 							btnName: '删除', | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 			].filter((v) => v), | ||||
| 			tableProps: [ | ||||
| 				// { | ||||
| 				// 	prop: 'createTime', | ||||
| 				// 	label: '添加时间', | ||||
| 				// 	fixed: true, | ||||
| 				// 	width: 180, | ||||
| 				// 	filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'), | ||||
| 				// }, | ||||
| 				{ prop: 'productionLine', label: '产线' }, | ||||
| 				{ prop: 'workshopSection', label: '工段' }, | ||||
| 				{ prop: 'equipmentName', label: '设备名' }, | ||||
| 				{ prop: 'equipmentCode', label: '设备编码' }, | ||||
| 				{ prop: 'plcCode', label: '关联表编码' }, | ||||
| 				{ prop: 'plcTableName', label: '关联表名' }, | ||||
| 				{ prop: 'plcName', label: '标识名称' }, | ||||
| 				{ prop: 'bindingParameters', label: '绑定参数数量' }, | ||||
| 				{ prop: 'productionLine', label: '产线', minWidth: 120, showOverflowtooltip: true }, | ||||
| 				{ prop: 'workshopSection', label: '工段', minWidth: 120, showOverflowtooltip: true }, | ||||
| 				{ prop: 'equipmentName', label: '设备名', minWidth: 120, showOverflowtooltip: true }, | ||||
| 				{ prop: 'equipmentCode', label: '设备编码', minWidth: 200, showOverflowtooltip: true }, | ||||
| 				{ prop: 'plcCode', label: '关联表编码', minWidth: 220, showOverflowtooltip: true }, | ||||
| 				{ prop: 'plcTableName', label: '关联表名', minWidth: 150, showOverflowtooltip: true }, | ||||
| 				{ prop: 'plcName', label: '标识名称', minWidth: 150, showOverflowtooltip: true }, | ||||
| 				{ prop: 'bindingParameters', label: '绑定参数数量', minWidth: 120, showOverflowtooltip: true }, | ||||
| 				// { | ||||
| 				// 	_action: 'params-bind', | ||||
| 				// 	label: '查看绑定', | ||||
| @@ -194,13 +211,15 @@ export default { | ||||
| 					placeholder: '请选择设备', | ||||
| 					param: 'equipmentId', | ||||
| 					selectOptions: [], | ||||
| 					filterable: true, | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'select', | ||||
| 					label: '编码', | ||||
| 					placeholder: '请选择编码', | ||||
| 					label: '关联表编码', | ||||
| 					placeholder: '请选择关联表编码', | ||||
| 					param: 'plcId', | ||||
| 					selectOptions: [], | ||||
| 					filterable: true, | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| @@ -209,20 +228,21 @@ export default { | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'separate', | ||||
| 					type: this.$auth.hasPermi('base:equipment-plc-connect:create') | ||||
| 						? 'separate' : '', | ||||
| 				}, | ||||
| 				{ | ||||
| 					// type: this.$auth.hasPermi('base:equipment-plc:create') | ||||
| 					// 	? 'button' | ||||
| 					// 	: '', | ||||
| 					type: 'button', | ||||
| 					type: this.$auth.hasPermi('base:equipment-plc-connect:create') | ||||
| 						? 'button' | ||||
| 						: '', | ||||
| 					// type: 'button', | ||||
| 					btnName: '新增', | ||||
| 					name: 'add', | ||||
| 					plain: true, | ||||
| 					color: 'success', | ||||
| 				}, | ||||
| 				// { | ||||
| 				// 	type: this.$auth.hasPermi('base:equipment-plc:export') ? 'button' : '', | ||||
| 				// 	type: this.$auth.hasPermi('equipment:collection-config:export') ? 'button' : '', | ||||
| 				// 	btnName: '导出', | ||||
| 				// 	name: 'export', | ||||
| 				// 	color: 'warning', | ||||
| @@ -236,7 +256,9 @@ export default { | ||||
| 						prop: 'plcId', | ||||
| 						labelKey: `plcTableName`, | ||||
| 						url: '/base/equipment-plc/listAll', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [ | ||||
| 							{ required: true, message: '关联表名不能为空', trigger: 'blur' }, | ||||
| 						], | ||||
| 						bind: { | ||||
| 							filterable: true, | ||||
| 						}, | ||||
| @@ -247,8 +269,10 @@ export default { | ||||
| 						select: true, | ||||
| 						label: '设备', | ||||
| 						prop: 'equipmentId', | ||||
| 						url: '/base/equipment/page?pageNo=1&pageSize=99', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						url: '/base/core-equipment/page?pageNo=1&pageSize=99', | ||||
| 						rules: [ | ||||
| 							{ required: true, message: '设备不能为空', trigger: 'blur' }, | ||||
| 						], | ||||
| 						bind: { | ||||
| 							filterable: true, | ||||
| 						}, | ||||
| @@ -259,7 +283,7 @@ export default { | ||||
| 			// 查询参数 | ||||
| 			queryParams: { | ||||
| 				pageNo: 1, | ||||
| 				pageSize: 10, | ||||
| 				pageSize: 20, | ||||
| 				plcId: null, | ||||
| 				equipmentId: null, | ||||
| 			}, | ||||
| @@ -274,7 +298,9 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '设备名', | ||||
| 						prop: 'equipmentName', | ||||
| 						rules: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
| 						rules: [ | ||||
| 							{ required: true, message: '设备名不能为空', trigger: 'blur' }, | ||||
| 						], | ||||
| 						// bind: { | ||||
| 						// 	disabled: this.editMode == 'detail', // some condition, like detail mode... | ||||
| 						// } | ||||
| @@ -283,7 +309,7 @@ export default { | ||||
| 						input: true, | ||||
| 						label: '关联表名', | ||||
| 						prop: 'plcTableName', | ||||
| 						// url: '/base/equipment/getCode', | ||||
| 						// url: '/base/core-equipment/getCode', | ||||
| 					}, | ||||
| 				], | ||||
| 			], | ||||
| @@ -295,6 +321,23 @@ export default { | ||||
| 					label: '单位', | ||||
| 					filter: publicFormatter('unit_dict'), | ||||
| 				}, | ||||
| 				{ | ||||
| 					prop: 'equipmentParamType', | ||||
| 					label: '设备参数类型', | ||||
| 					filter: (val) => | ||||
| 						val != null | ||||
| 							? ['', '一般参数', '工艺参数', '报警参数', ''][val] | ||||
| 							: '-', | ||||
| 				}, | ||||
| 				{ | ||||
| 					prop: 'productionParamType', | ||||
| 					label: '生产参数类型', | ||||
| 					filter: (val) => | ||||
| 						val != null | ||||
| 							? // ? ['', '进片数量', '出片数量', '破损数量', '无类型', ''][val] | ||||
| 							  ['', '进口计数', '出口计数', '损耗计数', '无类型', ''][val] | ||||
| 							: '-', | ||||
| 				}, | ||||
| 				{ | ||||
| 					prop: 'collection', | ||||
| 					label: '是否采集', | ||||
| @@ -318,6 +361,10 @@ export default { | ||||
| 		this.initSearchOptions(); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		successSubmit() { | ||||
|       this.cancel() | ||||
|       this.getList() | ||||
|     }, | ||||
| 		async getEquipmentOptions() { | ||||
| 			const res = await this.$axios({ | ||||
| 				url: '/base/equipment/listAll', | ||||
| @@ -325,7 +372,6 @@ export default { | ||||
| 			}); | ||||
| 			return res.data; | ||||
| 		}, | ||||
|  | ||||
| 		async getPlcOptions() { | ||||
| 			const res = await this.$axios({ | ||||
| 				url: '/base/equipment-plc/listAll', | ||||
| @@ -346,7 +392,7 @@ export default { | ||||
| 					}); | ||||
| 					this.searchBarFormConfig[1].selectOptions = plcList.map((item) => { | ||||
| 						return { | ||||
| 							name: item.name, | ||||
| 							name: item.code, | ||||
| 							id: item.id, | ||||
| 						}; | ||||
| 					}); | ||||
| @@ -403,6 +449,19 @@ export default { | ||||
| 			}; | ||||
| 			this.resetForm('form'); | ||||
| 		}, | ||||
| 		handleTableBtnClick({ data, type }) { | ||||
| 			switch (type) { | ||||
| 				case 'edit': | ||||
| 					this.handleDetail(data, 'edit'); | ||||
| 					break; | ||||
| 				case 'delete': | ||||
| 					this.handleDelete(data); | ||||
| 					break; | ||||
| 				case 'detail': | ||||
| 					this.handleDetail(data); | ||||
| 					break; | ||||
| 			} | ||||
| 		}, | ||||
| 		/** 搜索按钮操作 */ | ||||
| 		handleQuery() { | ||||
| 			this.queryParams.pageNo = 1; | ||||
| @@ -417,7 +476,10 @@ export default { | ||||
| 		handleAdd() { | ||||
| 			this.reset(); | ||||
| 			this.open = true; | ||||
| 			this.title = '添加设备与实时采集关系表(一对多)'; | ||||
| 			this.title = '添加设备采集配置'; | ||||
| 			this.$nextTick(() => { | ||||
| 				this.$refs.addOrUpdate.init() | ||||
| 			}) | ||||
| 		}, | ||||
| 		/** 修改按钮操作 */ | ||||
| 		handleUpdate(row) { | ||||
| @@ -426,35 +488,16 @@ export default { | ||||
| 			getEquipmentPlcConnect(id).then((response) => { | ||||
| 				this.form = response.data; | ||||
| 				this.open = true; | ||||
| 				this.title = '修改设备与实时采集关系表(一对多)'; | ||||
| 				this.title = '修改设备采集配置'; | ||||
| 			}); | ||||
| 		}, | ||||
| 		/** 提交按钮 */ | ||||
| 		submitForm() { | ||||
| 			this.$refs['form'].validate((valid) => { | ||||
| 				if (!valid) { | ||||
| 					return; | ||||
| 				} | ||||
| 				// 修改的提交 | ||||
| 				if (this.form.id != null) { | ||||
| 					updateEquipmentPlcConnect(this.form).then((response) => { | ||||
| 						this.$modal.msgSuccess('修改成功'); | ||||
| 						this.open = false; | ||||
| 						this.getList(); | ||||
| 					}); | ||||
| 					return; | ||||
| 				} | ||||
| 				// 添加的提交 | ||||
| 				createEquipmentPlcConnect(this.form).then((response) => { | ||||
| 					this.$modal.msgSuccess('新增成功'); | ||||
| 					this.open = false; | ||||
| 					this.getList(); | ||||
| 				}); | ||||
| 			}); | ||||
| 			this.$refs.addOrUpdate.dataFormSubmit() | ||||
| 		}, | ||||
|  | ||||
| 		// 查看报警 | ||||
| 		handleDetail(row) { | ||||
| 		handleDetail(row, mode = 'detail') { | ||||
| 			// debugger; | ||||
| 			const { | ||||
| 				id, | ||||
| @@ -470,7 +513,7 @@ export default { | ||||
| 				workshopSection, | ||||
| 			} = row; | ||||
| 			// 打开抽屉 | ||||
| 			this.editMode = 'detail'; | ||||
| 			this.editMode = mode; | ||||
| 			this.alarmForm.id = id; | ||||
| 			this.alarmForm.plcTableName = plcTableName; // 关联表名 | ||||
| 			this.alarmForm.equipmentName = equipmentName; | ||||
|   | ||||
							
								
								
									
										94
									
								
								src/views/base/material/add-or-updata.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,94 @@ | ||||
| <!-- | ||||
|  * @Author: zwq | ||||
|  * @Date: 2023-08-01 13:52:10 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-04-10 09:30:06 | ||||
|  * @Description: | ||||
| --> | ||||
| <template> | ||||
| 	<el-form | ||||
| 		:model="dataForm" | ||||
| 		:rules="dataRule" | ||||
| 		ref="dataForm" | ||||
| 		v-if="visible" | ||||
| 		@keyup.enter.native="dataFormSubmit()" | ||||
| 		label-width="100px" | ||||
| 		label-position="top"> | ||||
| 		<el-row :gutter="20"> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="原料名称" prop="name"> | ||||
| 					<el-input v-model="dataForm.name" clearable | ||||
| 						placeholder="请输入原料名称" /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="原料等级" prop="level"> | ||||
| 					<el-input v-model="dataForm.level" clearable | ||||
| 						placeholder="请输入原料等级" /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="原料编码" prop="code"> | ||||
| 					<el-input v-model="dataForm.code" readonly /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="单位" prop="unit"> | ||||
| 					<el-select | ||||
| 						v-model="dataForm.unit" | ||||
| 						filterable | ||||
| 						clearable | ||||
| 						:style="{ width: '100%' }" | ||||
| 						placeholder="请选择单位"> | ||||
| 						<el-option | ||||
| 							v-for="item in urlOptions.dictArr.dict0" | ||||
| 							:key="item.id" | ||||
| 							:label="item.label" | ||||
| 							:value="item.value"></el-option> | ||||
| 					</el-select> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 		</el-row> | ||||
| 	</el-form> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import basicAdd from '@/mixins/basic-add'; | ||||
| import { | ||||
| 	createMaterial, | ||||
| 	updateMaterial, | ||||
| 	getMaterial, | ||||
|   getCode | ||||
| } from '@/api/base/material'; | ||||
|  | ||||
| export default { | ||||
| 	mixins: [basicAdd], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			urlOptions: { | ||||
| 				createURL: createMaterial, | ||||
| 				updateURL: updateMaterial, | ||||
| 				infoURL: getMaterial, | ||||
|         codeURL: getCode, //获取code接口(返回结果为dataForm.code字段) | ||||
|         dictNameList: ['unit_dict'], //数据字典name数组 | ||||
| 			}, | ||||
| 			dataForm: { | ||||
| 				id: undefined, | ||||
| 				code: '', | ||||
| 				name: '', | ||||
| 				unit: '', | ||||
| 				level: '', | ||||
| 			}, | ||||
| 			dataRule: { | ||||
| 				name: [ | ||||
| 					{ required: true, message: '原料不能为空', trigger: 'blur' }, | ||||
| 				], | ||||
| 				code: [{ required: true, message: '编码不能为空', trigger: 'blur' }], | ||||
| 			}, | ||||
| 		}; | ||||
| 	}, | ||||
| 	created() {}, | ||||
| 	methods: { | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
							
								
								
									
										183
									
								
								src/views/base/material/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,183 @@ | ||||
| <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"> | ||||
| 			<method-btn | ||||
| 				v-if="tableBtn.length" | ||||
| 				slot="handleBtn" | ||||
| 				:width="90" | ||||
| 				label="操作" | ||||
| 				:method-list="tableBtn" | ||||
| 				@clickBtn="handleClick" /> | ||||
| 		</base-table> | ||||
| 		<pagination | ||||
| 			:limit.sync="listQuery.pageSize" | ||||
| 			:page.sync="listQuery.pageNo" | ||||
| 			:total="listQuery.total" | ||||
| 			@pagination="getDataList" /> | ||||
|  | ||||
| 		<!-- 对话框(添加 / 修改) --> | ||||
| 		<base-dialog | ||||
| 			:dialogTitle="addOrEditTitle" | ||||
| 			:dialogVisible="addOrUpdateVisible" | ||||
| 			@cancel="handleCancel" | ||||
| 			@confirm="handleConfirm" | ||||
| 			:before-close="handleCancel" | ||||
| 			width="40%"> | ||||
| 			<add-or-update | ||||
| 				ref="addOrUpdate" | ||||
| 				@refreshDataList="successSubmit"></add-or-update> | ||||
| 		</base-dialog> | ||||
| 	</div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import AddOrUpdate from './add-or-updata'; | ||||
| import basicPage from '@/mixins/basic-page'; | ||||
| import { parseTime } from '@/filter/code-filter'; | ||||
| import { publicFormatter } from "@/utils/dict"; | ||||
| import { | ||||
| 	deleteMaterial, | ||||
| 	getMaterialPage, | ||||
| } from '@/api/base/material'; | ||||
|  | ||||
| const tableProps = [ | ||||
|   { | ||||
|     prop: 'createTime', | ||||
|     label: '添加时间', | ||||
|     filter: parseTime, | ||||
|   }, | ||||
| 	{ | ||||
| 		prop: 'name', | ||||
| 		label: '原料名称', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'code', | ||||
| 		label: '原料编码', | ||||
| 		width: 180, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'level', | ||||
| 		label: '原料等级', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'unit', | ||||
| 		label: '单位', | ||||
| 		filter: publicFormatter('unit_dict'), | ||||
| 	}, | ||||
| ]; | ||||
|  | ||||
| export default { | ||||
| 	mixins: [basicPage], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			urlOptions: { | ||||
| 				getDataListURL: getMaterialPage, | ||||
| 				deleteURL: deleteMaterial, | ||||
| 			}, | ||||
| 			tableProps, | ||||
| 			tableBtn: [ | ||||
| 				this.$auth.hasPermi(`base:material:update`) | ||||
| 					? { | ||||
| 							type: 'edit', | ||||
| 							btnName: '编辑', | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 				this.$auth.hasPermi(`base:material:delete`) | ||||
| 					? { | ||||
| 							type: 'delete', | ||||
| 							btnName: '删除', | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 			].filter((v) => v), | ||||
| 			tableData: [], | ||||
| 			formConfig: [ | ||||
| 				{ | ||||
|           type: 'input', | ||||
|           label: '原料名称', | ||||
|           placeholder: '原料名称', | ||||
|           param: 'name' | ||||
| 				}, | ||||
| 				{ | ||||
|           type: 'input', | ||||
|           label: '原料编码', | ||||
|           placeholder: '原料编码', | ||||
|           param: 'code' | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('base:material:query') | ||||
| 						? 'button' | ||||
| 						: '', | ||||
| 					btnName: '查询', | ||||
| 					name: 'search', | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: | ||||
| 						this.$auth.hasPermi('base:material:create') && | ||||
| 						this.$auth.hasPermi('base:material:query') | ||||
| 							? 'separate' | ||||
| 							: '', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('base:material:create') | ||||
| 						? 'button' | ||||
| 						: '', | ||||
| 					btnName: '新增', | ||||
| 					name: 'add', | ||||
| 					color: 'success', | ||||
| 					plain: true, | ||||
| 				}, | ||||
| 			], | ||||
| 		}; | ||||
| 	}, | ||||
| 	components: { | ||||
| 		AddOrUpdate, | ||||
| 	}, | ||||
| 	created() { | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		buttonClick(val) { | ||||
| 			switch (val.btnName) { | ||||
| 				case 'search': | ||||
| 					this.listQuery.pageNo = 1; | ||||
| 					this.listQuery.pageSize = 20; | ||||
| 					this.listQuery.name = val.name; | ||||
| 					this.listQuery.code = val.code; | ||||
| 					this.getDataList(); | ||||
| 					break; | ||||
| 				case 'reset': | ||||
| 					this.$refs.searchBarForm.resetForm(); | ||||
| 					this.listQuery = { | ||||
| 						pageSize: 20, | ||||
| 						pageNo: 1, | ||||
| 						total: 1, | ||||
| 					}; | ||||
| 					this.getDataList(); | ||||
| 					break; | ||||
| 				case 'add': | ||||
| 					this.addOrEditTitle = '新增'; | ||||
| 					this.addOrUpdateVisible = true; | ||||
| 					this.addOrUpdateHandle(); | ||||
| 					break; | ||||
| 				case 'export': | ||||
| 					this.handleExport(); | ||||
| 					break; | ||||
| 				default: | ||||
| 					console.log(val); | ||||
| 			} | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
							
								
								
									
										156
									
								
								src/views/base/materialPricing/add-or-updata.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,156 @@ | ||||
| <!-- | ||||
|  * @Author: zwq | ||||
|  * @Date: 2023-08-01 13:52:10 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2025-03-05 15:23:30 | ||||
|  * @Description: | ||||
| --> | ||||
| <template> | ||||
| 	<el-form | ||||
| 		:model="dataForm" | ||||
| 		:rules="dataRule" | ||||
| 		ref="dataForm" | ||||
| 		v-if="visible" | ||||
| 		@keyup.enter.native="dataFormSubmit()" | ||||
| 		label-width="100px" | ||||
| 		label-position="top"> | ||||
| 		<el-row :gutter="20"> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="原料名称" prop="materialId"> | ||||
| 					<el-select | ||||
| 						v-model="dataForm.materialId" | ||||
| 						filterable | ||||
| 						@change="setCode" | ||||
| 						:style="{ width: '100%' }" | ||||
| 						placeholder="请选择原料名称"> | ||||
| 						<el-option | ||||
| 							v-for="item in MaterialList" | ||||
| 							:key="item.id" | ||||
| 							:label="item.name" | ||||
| 							:value="item.id"></el-option> | ||||
| 					</el-select> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="原料编码" prop="code"> | ||||
| 					<el-input v-model="dataForm.code" clearable readonly /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="生效开始时间" prop="startTime"> | ||||
| 					<el-date-picker | ||||
| 						v-model="dataForm.startTime" | ||||
| 						type="date" | ||||
| 						value-format="timestamp" | ||||
| 						:style="{ width: '100%' }" | ||||
| 						placeholder="选择开始时间"></el-date-picker> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="生效结束时间" prop="endTime"> | ||||
| 					<el-date-picker | ||||
| 						v-model="dataForm.endTime" | ||||
| 						type="date" | ||||
| 						value-format="timestamp" | ||||
| 						:style="{ width: '100%' }" | ||||
| 						placeholder="选择结束时间"></el-date-picker> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="单价" prop="price"> | ||||
| 					<el-input-number | ||||
| 						:min="0" | ||||
| 						style="width: 75%" | ||||
| 						v-model="dataForm.price" | ||||
| 						clearable | ||||
| 						placeholder="请输入单价" /> | ||||
| 					{{ unit }} | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="备注" prop="remark"> | ||||
| 					<el-input | ||||
| 						v-model="dataForm.remark" | ||||
| 						clearable | ||||
| 						placeholder="请输入备注" /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 		</el-row> | ||||
| 	</el-form> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import basicAdd from '@/mixins/basic-add'; | ||||
| import { | ||||
| 	createMaterialPricing, | ||||
| 	updateMaterialPricing, | ||||
| 	getMaterialPricing, | ||||
| } from '@/api/base/materialPricing'; | ||||
| import { getMaterialPage } from '@/api/base/material'; | ||||
|  | ||||
| export default { | ||||
| 	mixins: [basicAdd], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			urlOptions: { | ||||
| 				createURL: createMaterialPricing, | ||||
| 				updateURL: updateMaterialPricing, | ||||
| 				infoURL: getMaterialPricing, | ||||
| 				optionArrUrl: [getMaterialPage], //需要获取下拉框的方法数组 | ||||
| 				dictNameList: ['unit_dict'], //数据字典name数组 | ||||
| 			}, | ||||
| 			dataForm: { | ||||
| 				id: null, | ||||
| 				code: '', | ||||
| 				materialId: '', | ||||
| 				price: '', | ||||
| 				startTime: new Date().getTime(), | ||||
| 				endTime: null, | ||||
| 				remark: '', | ||||
| 			}, | ||||
| 			setData: true, | ||||
| 			MaterialList: [], | ||||
| 			unit: '元/吨', | ||||
| 			dataRule: { | ||||
| 				materialId: [ | ||||
| 					{ required: true, message: '原料不能为空', trigger: 'blur' }, | ||||
| 				], | ||||
| 				price: [{ required: true, message: '单价不能为空', trigger: 'blur' }], | ||||
| 				startTime: [ | ||||
| 					{ | ||||
| 						required: true, | ||||
| 						message: '生效开始时间不能为空', | ||||
| 						trigger: 'change', | ||||
| 					}, | ||||
| 				], | ||||
| 			}, | ||||
| 		}; | ||||
| 	}, | ||||
| 	created() {}, | ||||
| 	methods: { | ||||
| 		getArr() { | ||||
| 			getMaterialPage({ pageSize: 100, pageNo: 1 }).then((response) => { | ||||
| 				this.MaterialList = response.data.list; | ||||
| 			}); | ||||
| 		}, | ||||
| 		setDataForm() { | ||||
| 			if (this.MaterialList.length > 0) { | ||||
| 				this.setCode(); | ||||
| 			} else { | ||||
| 				setTimeout(this.setCode(), 1000); | ||||
| 			} | ||||
| 		}, | ||||
| 		setCode() { | ||||
| 			this.MaterialList.forEach((item) => { | ||||
| 				if (item.id === this.dataForm.materialId) { | ||||
| 					this.dataForm.code = item.code; | ||||
| 					this.unit = | ||||
| 						'元/' + | ||||
| 						this.urlOptions.dictArr.dict0.find((d) => d.value === item.unit) | ||||
| 							.label; | ||||
| 				} | ||||
| 			}); | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
							
								
								
									
										23
									
								
								src/views/base/materialPricing/connectTime.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,23 @@ | ||||
| <!-- | ||||
|  * @Author: zwq | ||||
|  * @Date: 2023-12-05 13:45:59 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-04-10 15:20:11 | ||||
|  * @Description | ||||
| --> | ||||
| <template> | ||||
| 	<div> | ||||
| 		<span>{{ parseTime(injectData.startTime,'{y}年{m}月{d}日') + '-' + (parseTime(injectData.endTime)?parseTime(injectData.endTime,'{y}年{m}月{d}日'):'永久') }}</span> | ||||
| 	</div> | ||||
| </template> | ||||
| <script> | ||||
| export default { | ||||
| 	name: '', | ||||
| 	props: { | ||||
| 		injectData: { | ||||
| 			type: Object, | ||||
| 			default: () => ({}), | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
							
								
								
									
										182
									
								
								src/views/base/materialPricing/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,182 @@ | ||||
| <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"> | ||||
| 			<method-btn | ||||
| 				v-if="tableBtn.length" | ||||
| 				slot="handleBtn" | ||||
| 				:width="90" | ||||
| 				label="操作" | ||||
| 				:method-list="tableBtn" | ||||
| 				@clickBtn="handleClick" /> | ||||
| 		</base-table> | ||||
| 		<pagination | ||||
| 			:limit.sync="listQuery.pageSize" | ||||
| 			:page.sync="listQuery.pageNo" | ||||
| 			:total="listQuery.total" | ||||
| 			@pagination="getDataList" /> | ||||
|  | ||||
| 		<!-- 对话框(添加 / 修改) --> | ||||
| 		<base-dialog | ||||
| 			:dialogTitle="addOrEditTitle" | ||||
| 			:dialogVisible="addOrUpdateVisible" | ||||
| 			@cancel="handleCancel" | ||||
| 			@confirm="handleConfirm" | ||||
| 			:before-close="handleCancel" | ||||
| 			width="40%"> | ||||
| 			<add-or-update | ||||
| 				ref="addOrUpdate" | ||||
| 				@refreshDataList="successSubmit"></add-or-update> | ||||
| 		</base-dialog> | ||||
| 	</div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import AddOrUpdate from './add-or-updata'; | ||||
| import connectTime from './connectTime'; | ||||
| import basicPage from '@/mixins/basic-page'; | ||||
| import { parseTime } from '@/filter/code-filter'; | ||||
| import { | ||||
| 	deleteMaterialPricing, | ||||
| 	getMaterialPricingPage, | ||||
| } from '@/api/base/materialPricing'; | ||||
| import { getMaterialPage } from '@/api/base/material'; | ||||
|  | ||||
| const tableProps = [ | ||||
| 	{ | ||||
| 		prop: 'name', | ||||
| 		label: '原料名称', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'code', | ||||
| 		label: '原料编码', | ||||
| 		width: 180, | ||||
| 	}, | ||||
| 	// { | ||||
| 	// 	prop: 'price', | ||||
| 	// 	label: '单价(元/千克)', | ||||
| 	// 	align: 'right', | ||||
| 	// }, | ||||
| 	{ | ||||
| 		prop: 'createTime', | ||||
| 		label: '生效时间', | ||||
| 		width: 235, | ||||
| 		subcomponent: connectTime, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'remark', | ||||
| 		label: '备注', | ||||
| 	}, | ||||
| ]; | ||||
|  | ||||
| export default { | ||||
| 	mixins: [basicPage], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			urlOptions: { | ||||
| 				getDataListURL: getMaterialPricingPage, | ||||
| 				deleteURL: deleteMaterialPricing, | ||||
| 			}, | ||||
| 			tableProps, | ||||
| 			tableBtn: [ | ||||
| 				this.$auth.hasPermi(`base:material-pricing:update`) | ||||
| 					? { | ||||
| 							type: 'edit', | ||||
| 							btnName: '编辑', | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 				this.$auth.hasPermi(`base:material-pricing:delete`) | ||||
| 					? { | ||||
| 							type: 'delete', | ||||
| 							btnName: '删除', | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 			].filter((v) => v), | ||||
| 			tableData: [], | ||||
| 			formConfig: [ | ||||
| 				{ | ||||
| 					type: 'select', | ||||
| 					label: '原料名称', | ||||
| 					selectOptions: [], | ||||
| 					param: 'name', | ||||
| 					filterable: true, | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('base:material-pricing:query') | ||||
| 						? 'button' | ||||
| 						: '', | ||||
| 					btnName: '查询', | ||||
| 					name: 'search', | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: | ||||
| 						this.$auth.hasPermi('base:material-pricing:create') && | ||||
| 						this.$auth.hasPermi('base:material-pricing:query') | ||||
| 							? 'separate' | ||||
| 							: '', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('base:material-pricing:create') | ||||
| 						? 'button' | ||||
| 						: '', | ||||
| 					btnName: '新增', | ||||
| 					name: 'add', | ||||
| 					color: 'success', | ||||
| 					plain: true, | ||||
| 				}, | ||||
| 			], | ||||
| 		}; | ||||
| 	}, | ||||
| 	components: { | ||||
| 		AddOrUpdate, | ||||
| 	}, | ||||
| 	created() { | ||||
| 		getMaterialPage({ pageSize: 100, pageNo: 1 }).then((response) => { | ||||
| 			this.formConfig[0].selectOptions = response.data.list; | ||||
| 		}); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		buttonClick(val) { | ||||
| 			switch (val.btnName) { | ||||
| 				case 'search': | ||||
| 					this.listQuery.pageNo = 1; | ||||
| 					this.listQuery.pageSize = 20; | ||||
| 					this.listQuery.materialId = val.name; | ||||
| 					this.getDataList(); | ||||
| 					break; | ||||
| 				case 'reset': | ||||
| 					this.$refs.searchBarForm.resetForm(); | ||||
| 					this.listQuery = { | ||||
| 						pageSize: 20, | ||||
| 						pageNo: 1, | ||||
| 						total: 1, | ||||
| 					}; | ||||
| 					this.getDataList(); | ||||
| 					break; | ||||
| 				case 'add': | ||||
| 					this.addOrEditTitle = '新增'; | ||||
| 					this.addOrUpdateVisible = true; | ||||
| 					this.addOrUpdateHandle(); | ||||
| 					break; | ||||
| 				case 'export': | ||||
| 					this.handleExport(); | ||||
| 					break; | ||||
| 				default: | ||||
| 					console.log(val); | ||||
| 			} | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
| @@ -299,7 +299,7 @@ export default { | ||||
|       } | ||||
|     }) | ||||
|     clipboard.on('error', e => { | ||||
|       this.$message.error('代码复制失败') | ||||
|       this.$message.warning('代码复制失败') | ||||
|     }) | ||||
|   }, | ||||
|   created() { | ||||
|   | ||||
| @@ -42,7 +42,7 @@ export default { | ||||
|   created() { | ||||
|     this.leaveId = this.id || this.$route.query.id; | ||||
|     if (!this.leaveId) { | ||||
|       this.$message.error('未传递 id 参数,无法查看 OA 请假信息'); | ||||
|       this.$message.warning('未传递 id 参数,无法查看 OA 请假信息'); | ||||
|       return; | ||||
|     } | ||||
|     this.getDetail(); | ||||
|   | ||||
| @@ -167,7 +167,7 @@ export default { | ||||
|   created() { | ||||
|     this.id = this.$route.query.id; | ||||
|     if (!this.id) { | ||||
|       this.$message.error('未传递 id 参数,无法查看流程信息'); | ||||
|       this.$message.warning('未传递 id 参数,无法查看流程信息'); | ||||
|       return; | ||||
|     } | ||||
|     this.getDetail(); | ||||
| @@ -185,7 +185,7 @@ export default { | ||||
|       this.processInstanceLoading = true; | ||||
|       getProcessInstance(this.id).then(response => { | ||||
|         if (!response.data) { | ||||
|           this.$message.error('查询不到流程信息!'); | ||||
|           this.$message.warning('查询不到流程信息!'); | ||||
|           return; | ||||
|         } | ||||
|         // 设置流程信息 | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| <!--  | ||||
| <!-- | ||||
|     filename: AssetsUpload.vue | ||||
|     author: liubin | ||||
|     date: 2023-10-12 16:40:14 | ||||
| @@ -217,7 +217,7 @@ export default { | ||||
| 				response.data == null || | ||||
| 				response.data.trim() == '' | ||||
| 			) { | ||||
| 				this.$message.error('上传出错了!'); | ||||
| 				this.$message.warning('上传出错了!'); | ||||
| 				return; | ||||
| 			} | ||||
| 			this.files.push({ | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| <!--  | ||||
| <!-- | ||||
|     filename: EquipmentDrawer.vue | ||||
|     author: liubin | ||||
|     date: 2023-08-22 14:38:56 | ||||
|     description:  | ||||
|     description: | ||||
| --> | ||||
|  | ||||
| <template> | ||||
| @@ -361,7 +361,7 @@ export default { | ||||
|  | ||||
| 		// 新增属性 | ||||
| 		handleAddAttr() { | ||||
| 			if (!this.dataId) return this.$message.error('请先创建设备信息'); | ||||
| 			if (!this.dataId) return this.$message.warning('请先创建设备信息'); | ||||
| 			this.attrForm = { | ||||
| 				id: null, | ||||
| 				equipmentId: this.dataId, | ||||
|   | ||||
| @@ -215,8 +215,7 @@ export default { | ||||
| 					type: this.$auth.hasPermi('base:equipment:export') ? 'button' : '', | ||||
| 					btnName: '导出', | ||||
| 					name: 'export', | ||||
| 					plain: true, | ||||
| 					color: 'primary', | ||||
| 					color: 'warning', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('base:equipment:create') ? 'button' : '', | ||||
|   | ||||
| @@ -51,7 +51,7 @@ const tableProps = [ | ||||
| 	{ | ||||
| 		prop: 'code', | ||||
| 		label: '工厂编码' | ||||
| 	},																																																																						 | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'name', | ||||
| 		label: '工厂名称' | ||||
| @@ -154,7 +154,7 @@ export default { | ||||
| 			switch (val.btnName) { | ||||
| 				case 'search': | ||||
| 					this.listQuery.pageNo = 1; | ||||
| 					this.listQuery.pageSize = 10; | ||||
| 					this.listQuery.pageSize = 20; | ||||
| 					this.listQuery.name = val.name; | ||||
| 					this.listQuery.code = val.code; | ||||
| 					this.getDataList(); | ||||
|   | ||||
| @@ -85,7 +85,7 @@ export default { | ||||
| 			switch (val.btnName) { | ||||
| 				case 'search': | ||||
| 					this.listQuery.pageNo = 1; | ||||
| 					this.listQuery.pageSize = 10; | ||||
| 					this.listQuery.pageSize = 20; | ||||
| 					this.getDataList(); | ||||
| 					break; | ||||
| 				default: | ||||
|   | ||||
| @@ -120,7 +120,7 @@ export default { | ||||
| 			switch (val.btnName) { | ||||
| 				case 'search': | ||||
| 					this.listQuery.pageNo = 1; | ||||
| 					this.listQuery.pageSize = 10; | ||||
| 					this.listQuery.pageSize = 20; | ||||
| 					this.listQuery.productionLineId = val.productionLineId; | ||||
| 					this.listQuery.productId = val.productId; | ||||
| 					this.listQuery.startTime = val.startTime; | ||||
|   | ||||
| @@ -162,7 +162,7 @@ export default { | ||||
| 			switch (val.btnName) { | ||||
| 				case 'search': | ||||
| 					this.listQuery.pageNo = 1; | ||||
| 					this.listQuery.pageSize = 10; | ||||
| 					this.listQuery.pageSize = 20; | ||||
| 					this.listQuery.name = val.name; | ||||
| 					this.listQuery.code = val.code; | ||||
| 					this.getDataList(); | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| <!-- | ||||
|  * @Author: zwq | ||||
|  * @Date: 2023-08-01 13:52:10 | ||||
|  * @LastEditors: DY | ||||
|  * @LastEditTime: 2023-09-21 15:45:07 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-04-10 16:31:51 | ||||
|  * @Description: | ||||
| --> | ||||
| <template> | ||||
| @@ -65,6 +65,21 @@ | ||||
| 						placeholder="请输入额外编码" /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item prop="pdType" label="产线类型"> | ||||
| 					<el-select | ||||
| 						v-model="dataForm.pdType" | ||||
| 						filterable | ||||
| 						clearable | ||||
| 						placeholder="请选择产线类型"> | ||||
| 						<el-option | ||||
| 							v-for="item in pdTypeArr" | ||||
| 							:key="item.id" | ||||
| 							:label="item.name" | ||||
| 							:value="item.id"></el-option> | ||||
| 					</el-select> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="备注" prop="remark"> | ||||
| 					<el-input | ||||
| @@ -120,7 +135,18 @@ export default { | ||||
| 				externalCode: undefined, | ||||
| 				remark: undefined, | ||||
| 				description: undefined, | ||||
|         pdType: undefined, | ||||
| 			}, | ||||
|       pdTypeArr: [ | ||||
|         { | ||||
|           id: 0, | ||||
|           name: '深加工' | ||||
|         }, | ||||
|         { | ||||
|           id: 1, | ||||
|           name: '原片' | ||||
|         } | ||||
|       ], | ||||
| 			dataRule: { | ||||
| 				code: [ | ||||
| 					{ required: true, message: '产线编码不能为空', trigger: 'blur' }, | ||||
|   | ||||
| @@ -13,7 +13,7 @@ | ||||
| 			<method-btn | ||||
| 				v-if="tableBtn.length" | ||||
| 				slot="handleBtn" | ||||
| 				:width="120" | ||||
| 				:width="90" | ||||
| 				label="操作" | ||||
| 				:method-list="tableBtn" | ||||
| 				@clickBtn="handleClick" /> | ||||
| @@ -52,7 +52,8 @@ import { | ||||
| const tableProps = [ | ||||
| 	{ | ||||
| 		prop: 'code', | ||||
| 		label: '产线编码' | ||||
| 		label: '产线编码', | ||||
| 		width: 160, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'name', | ||||
| @@ -66,6 +67,11 @@ const tableProps = [ | ||||
| 		prop: 'externalCode', | ||||
| 		label: '额外编码' | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'pdType', | ||||
| 		label: '产线类型', | ||||
| 		filter: codeFilter('pdType'), | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'status', | ||||
| 		label: '当前状态', | ||||
| @@ -73,16 +79,19 @@ const tableProps = [ | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'description', | ||||
| 		label: '描述' | ||||
| 		label: '描述', | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'remark', | ||||
| 		label: '备注' | ||||
| 		label: '备注', | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'createTime', | ||||
| 		label: '创建时间', | ||||
| 		filter: parseTime | ||||
| 		filter: parseTime, | ||||
| 		width: 160, | ||||
| 	}, | ||||
| ]; | ||||
|  | ||||
| @@ -187,7 +196,7 @@ export default { | ||||
| 			switch (val.btnName) { | ||||
| 				case 'search': | ||||
| 					this.listQuery.pageNo = 1; | ||||
| 					this.listQuery.pageSize = 10; | ||||
| 					this.listQuery.pageSize = 20; | ||||
| 					this.listQuery.name = val.name; | ||||
| 					this.getDataList(); | ||||
| 					break; | ||||
|   | ||||
| @@ -152,7 +152,7 @@ export default { | ||||
| 			switch (val.btnName) { | ||||
| 				case 'search': | ||||
| 					this.listQuery.pageNo = 1; | ||||
| 					this.listQuery.pageSize = 10; | ||||
| 					this.listQuery.pageSize = 20; | ||||
| 					this.listQuery.name = val.name; | ||||
| 					this.getDataList(); | ||||
| 					break; | ||||
|   | ||||
| @@ -69,7 +69,7 @@ export default { | ||||
|         .post(this.urlOptions.statusUrl, { id }) | ||||
|         .then(({ data: res }) => { | ||||
|           if (res.code !== 0) { | ||||
|             return this.$message.error(res.msg); | ||||
|             return this.$message.warning(res.msg); | ||||
|           } | ||||
|           this.$refs["popover-" + id].showPopper = false; | ||||
|           this.$message({ | ||||
|   | ||||
| @@ -17,7 +17,11 @@ const table = { | ||||
|     1: '日', | ||||
|     2: '周', | ||||
|     3: '月' | ||||
|   } | ||||
|   }, | ||||
|   pdType: { | ||||
|     1: '原片', | ||||
|     0: '深加工', | ||||
|   }, | ||||
| } | ||||
|  | ||||
| // 日期格式化 | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
|  * @Date: 2023-08-29 14:59:29 | ||||
|  * @LastEditTime: 2023-10-16 15:10:42 | ||||
|  * @LastEditors: DY | ||||
|  * @Description:  | ||||
|  * @Description: | ||||
| --> | ||||
| <template> | ||||
| 	<div class="app-container"> | ||||
| @@ -197,8 +197,7 @@ export default { | ||||
| 					type: 'button', | ||||
| 					btnName: '导出', | ||||
| 					name: 'export', | ||||
| 					color: 'primary', | ||||
| 					plain: true | ||||
| 					color: 'warning', | ||||
| 				} | ||||
| 			], | ||||
| 		}; | ||||
| @@ -257,7 +256,7 @@ export default { | ||||
| 				this.dialogVisible = false | ||||
| 				this.showData = this.tableData | ||||
| 			}, 600) | ||||
| 			 | ||||
|  | ||||
| 		}, | ||||
| 		exportXlsx() { | ||||
| 			this.exportECL() | ||||
| @@ -310,7 +309,7 @@ export default { | ||||
| 			switch (val.btnName) { | ||||
| 				case 'search': | ||||
| 					this.listQuery.pageNo = 1; | ||||
| 					this.listQuery.pageSize = 10; | ||||
| 					this.listQuery.pageSize = 20; | ||||
| 					this.listQuery.lineId = val.line ? val.line : undefined; | ||||
| 					this.listQuery.reportType = val.reportType ? val.reportType : undefined; | ||||
| 					this.listQuery.reportStartTime = val.timeVal ? [new Date(val.timeVal[0]).getTime()] : undefined; | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
|  * @Date: 2023-08-29 14:59:29 | ||||
|  * @LastEditTime: 2023-10-16 15:18:23 | ||||
|  * @LastEditors: DY | ||||
|  * @Description:  | ||||
|  * @Description: | ||||
| --> | ||||
| <template> | ||||
| 	<div class="app-container"> | ||||
| @@ -147,8 +147,7 @@ export default { | ||||
| 					type: 'button', | ||||
| 					btnName: '导出', | ||||
| 					name: 'export', | ||||
| 					color: 'primary', | ||||
| 					plain: true | ||||
| 					color: 'warning', | ||||
| 				} | ||||
| 			], | ||||
| 		}; | ||||
| @@ -237,7 +236,7 @@ export default { | ||||
| 				this.dialogVisible = false | ||||
| 				this.showData = this.tableData | ||||
| 			}, 600) | ||||
| 			 | ||||
|  | ||||
| 		}, | ||||
| 		exportXlsx() { | ||||
| 			this.exportECL() | ||||
| @@ -264,7 +263,7 @@ export default { | ||||
| 			switch (val.btnName) { | ||||
| 				case 'search': | ||||
| 					this.listQuery.pageNo = 1; | ||||
| 					this.listQuery.pageSize = 10; | ||||
| 					this.listQuery.pageSize = 20; | ||||
| 					this.listQuery.proLineId = val.line ? val.line : undefined; | ||||
| 					this.listQuery.startTime = val.timeVal ? new Date(val.timeVal[0]).getTime() : undefined; | ||||
| 					this.listQuery.endTime = val.timeVal ? new Date(val.timeVal[1]).getTime() : undefined; | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
|  * @Date: 2023-08-29 14:59:29 | ||||
|  * @LastEditTime: 2023-10-16 15:19:04 | ||||
|  * @LastEditors: DY | ||||
|  * @Description:  | ||||
|  * @Description: | ||||
| --> | ||||
| <template> | ||||
| 	<div class="app-container"> | ||||
| @@ -190,8 +190,7 @@ export default { | ||||
| 					type: 'button', | ||||
| 					btnName: '导出', | ||||
| 					name: 'export', | ||||
| 					color: 'primary', | ||||
| 					plain: true | ||||
| 					color: 'warning', | ||||
| 				} | ||||
| 			], | ||||
| 		}; | ||||
| @@ -275,7 +274,7 @@ export default { | ||||
| 				this.dialogVisible = false | ||||
| 				this.showData = this.tableData | ||||
| 			}, 600) | ||||
| 			 | ||||
|  | ||||
| 		}, | ||||
| 		exportXlsx() { | ||||
| 			this.exportECL() | ||||
| @@ -306,7 +305,7 @@ export default { | ||||
| 			switch (val.btnName) { | ||||
| 				case 'search': | ||||
| 					this.listQuery.pageNo = 1; | ||||
| 					this.listQuery.pageSize = 10; | ||||
| 					this.listQuery.pageSize = 20; | ||||
| 					this.listQuery.lineId = val.line ? val.line : undefined; | ||||
| 					this.listQuery.sectionId = val.section ? val.section : undefined; | ||||
| 					this.listQuery.reportType = val.reportType ? val.reportType : undefined; | ||||
|   | ||||
| @@ -142,8 +142,7 @@ export default { | ||||
| 					type: 'button', | ||||
| 					btnName: '导出', | ||||
| 					name: 'export', | ||||
| 					color: 'primary', | ||||
| 					plain: true | ||||
| 					color: 'warning', | ||||
| 				} | ||||
| 			], | ||||
| 		}; | ||||
| @@ -258,7 +257,7 @@ export default { | ||||
| 				this.dialogVisible = false | ||||
| 				this.showData = this.tableData | ||||
| 			}, 600) | ||||
| 			 | ||||
|  | ||||
| 		}, | ||||
| 		exportXlsx() { | ||||
| 			this.exportECL() | ||||
| @@ -322,7 +321,7 @@ export default { | ||||
|           console.log(val.timeSlot); | ||||
|  | ||||
| 					// this.listQuery.pageNo = 1; | ||||
|           // this.listQuery.pageSize = 10; | ||||
|           // this.listQuery.pageSize = 20; | ||||
|           this.listQuery.proLineId = val.proLineId ? val.proLineId : undefined | ||||
|           this.listQuery.sectionId = val.sectionId ? val.sectionId : undefined | ||||
|           this.listQuery.startTime = val.timeSlot ? new Date(val.timeSlot[0]).getTime() : undefined | ||||
|   | ||||
							
								
								
									
										0
									
								
								src/views/cost/costAnalysis/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										142
									
								
								src/views/cost/costStatistics/add-or-updata.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,142 @@ | ||||
| <!-- | ||||
|  * @Author: zwq | ||||
|  * @Date: 2021-11-18 14:16:25 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-09-11 15:49:14 | ||||
|  * @Description: | ||||
| --> | ||||
| <template> | ||||
| 	<el-form | ||||
| 		:model="dataForm" | ||||
| 		:rules="dataRule" | ||||
| 		ref="dataForm" | ||||
| 		@keyup.enter.native="dataFormSubmit()" | ||||
| 		label-position="top" | ||||
| 		label-width="80px"> | ||||
| 		<el-row :gutter="20"> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="日期" prop="recTime"> | ||||
| 					<el-date-picker | ||||
| 						v-model="dataForm.recTime" | ||||
| 						type="date" | ||||
| 						value-format="timestamp" | ||||
| 						:style="{ width: '100%' }" | ||||
| 						disabled | ||||
| 						placeholder="日期"></el-date-picker> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="总成本" prop="price"> | ||||
| 					<el-input-number | ||||
| 						:min="0" | ||||
| 						style="width: 80%" | ||||
| 						v-model="dataForm.price" | ||||
| 						disabled | ||||
| 						placeholder="总成本" /> | ||||
| 					(元) | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="原片下片面积" prop="originArea"> | ||||
| 					<el-input-number | ||||
| 						:min="0" | ||||
| 						style="width: 80%" | ||||
| 						v-model="dataForm.originArea" | ||||
| 						clearable | ||||
| 						placeholder="请输入原片下片面积" /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="深加工下片面积" prop="deepArea"> | ||||
| 					<el-input-number | ||||
| 						:min="0" | ||||
| 						style="width: 80%" | ||||
| 						v-model="dataForm.deepArea" | ||||
| 						clearable | ||||
| 						placeholder="请输入深加工下片面积" /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="原片成本" prop="originPrice"> | ||||
| 					<el-input-number | ||||
| 						:min="0" | ||||
| 						style="width: 80%" | ||||
| 						v-model="dataForm.originPrice" | ||||
| 						clearable | ||||
| 						placeholder="请输入原片成本" /> | ||||
| 					(元) | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="深加工成本" prop="deepPrice"> | ||||
| 					<el-input-number | ||||
| 						:min="0" | ||||
| 						style="width: 80%" | ||||
| 						v-model="dataForm.deepPrice" | ||||
| 						clearable | ||||
| 						placeholder="请输入深加工成本" /> | ||||
| 					(元) | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 		</el-row> | ||||
| 	</el-form> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import basicAdd from '@/mixins/basic-add'; | ||||
| import { updateCostSum } from '@/api/cost/allCost'; | ||||
|  | ||||
| export default { | ||||
| 	mixins: [basicAdd], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			urlOptions: { | ||||
| 				updateURL: updateCostSum, | ||||
| 			}, | ||||
| 			dataForm: { | ||||
| 				id: undefined, | ||||
| 				originArea: undefined, | ||||
| 				deepArea: undefined, | ||||
| 				originPrice: undefined, | ||||
| 				deepPrice: undefined, | ||||
| 				price: undefined, | ||||
| 			}, | ||||
| 			dataRule: { | ||||
| 			}, | ||||
| 		}; | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		init(val, statisticType) { | ||||
| 			this.visible = true; | ||||
| 			this.$nextTick(() => { | ||||
| 				this.$refs['dataForm'].resetFields(); | ||||
| 				this.dataForm = JSON.parse(JSON.stringify(val)); | ||||
| 				this.dataForm.statisticType = statisticType; | ||||
| 			}); | ||||
| 		}, | ||||
| 		// 表单提交 | ||||
| 		dataFormSubmit() { | ||||
| 			this.$refs['dataForm'].validate((valid) => { | ||||
| 				if (!valid) { | ||||
| 					return false; | ||||
| 				} | ||||
| 				const data = { | ||||
| 					id: this.dataForm.id, | ||||
| 					statisticType: this.dataForm.statisticType, | ||||
| 					modifyOriginArea: this.dataForm.originArea, | ||||
| 					modifyOriginPrice: this.dataForm.originPrice, | ||||
| 					modifyDeepArea: this.dataForm.deepArea, | ||||
| 					modifyDeepPrice: this.dataForm.deepPrice, | ||||
| 					modifyPrice: this.dataForm.deepPrice + this.dataForm.originPrice, | ||||
| 				}; | ||||
| 				// 修改的提交 | ||||
| 				this.urlOptions.updateURL(data).then((response) => { | ||||
| 					this.$modal.msgSuccess('修改成功'); | ||||
| 					this.visible = false; | ||||
| 					this.$emit('refreshDataList'); | ||||
| 				}); | ||||
| 			}); | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
							
								
								
									
										404
									
								
								src/views/cost/costStatistics/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,404 @@ | ||||
| <template> | ||||
| 	<div> | ||||
| 		<!-- <div style="background: #f2f4f9; height: 40px; width: 100%"> | ||||
| 			<ButtonNav :menus="['按日期', '按规格']" @change="currentMenu"> | ||||
| 				<template v-slot:tab1> | ||||
| 					<div>按日期</div> | ||||
| 				</template> | ||||
| 				<template v-slot:tab2> | ||||
| 					<div>按规格</div> | ||||
| 				</template> | ||||
| 			</ButtonNav> | ||||
| 		</div> --> | ||||
| 		<div class="app-container energyOverlimitLog"> | ||||
| 			<div v-show="activeName === 'his'"> | ||||
| 				<!-- 搜索工作栏 --> | ||||
| 				<search-bar | ||||
| 					:formConfigs="formConfig" | ||||
| 					ref="searchBarForm" | ||||
| 					@headBtnClick="buttonClick" /> | ||||
| 			</div> | ||||
| 			<div v-show="activeName === 'now'"> | ||||
| 				<!-- 搜索工作栏 --> | ||||
| 				<search-bar | ||||
| 					:formConfigs="formConfig2" | ||||
| 					ref="searchBarForm2" | ||||
| 					@headBtnClick="buttonClick" /> | ||||
| 			</div> | ||||
| 			<!-- 列表 --> | ||||
| 			<div v-if="activeName === 'his'"> | ||||
| 				<base-table | ||||
| 					:page="listQuery.pageNo" | ||||
| 					:limit="listQuery.pageSize" | ||||
| 					:table-props="tableProps" | ||||
| 					:table-data="tableData" | ||||
| 					:max-height="tableH"> | ||||
| 					<method-btn | ||||
| 						v-if="tableBtn.length" | ||||
| 						slot="handleBtn" | ||||
| 						:width="80" | ||||
| 						label="操作" | ||||
| 						:method-list="tableBtn" | ||||
| 						@clickBtn="handleClick" /> | ||||
| 				</base-table> | ||||
| 			</div> | ||||
| 			<div v-if="activeName === 'now'"> | ||||
| 				<base-table | ||||
| 					:page="listQuery.pageNo" | ||||
| 					:limit="listQuery.pageSize" | ||||
| 					:table-props="tableProps2" | ||||
| 					:table-data="tableData2" | ||||
| 					:max-height="tableH" /> | ||||
| 			</div> | ||||
| 			<pagination | ||||
| 				:page.sync="listQuery.pageNo" | ||||
| 				:limit.sync="listQuery.pageSize" | ||||
| 				:total="listQuery.total" | ||||
| 				@pagination="getNavDataList" /> | ||||
| 			<base-dialog | ||||
| 				:dialogTitle="addOrEditTitle" | ||||
| 				:dialogVisible="addOrUpdateVisible" | ||||
| 				@cancel="handleCancel" | ||||
| 				@confirm="handleConfirm" | ||||
| 				:before-close="handleCancel" | ||||
| 				width="50%"> | ||||
| 				<add-or-update | ||||
| 					ref="addOrUpdate" | ||||
| 					@refreshDataList="successSubmit"></add-or-update> | ||||
| 			</base-dialog> | ||||
| 		</div> | ||||
| 	</div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import AddOrUpdate from './add-or-updata'; | ||||
| import basicPage from '@/mixins/basic-page'; | ||||
| import { | ||||
| 	getCostSumPage, | ||||
| 	getRawCostStatisticsRealtimePage, | ||||
|   exportRawStatisticsRealtimeExcel, | ||||
|   exportCostSumExcel | ||||
| } from '@/api/cost/allCost'; | ||||
| import { parseTime } from '@/filter/code-filter'; | ||||
| import tableHeightMixin from '@/mixins/lb/tableHeightMixin'; | ||||
| import typeRule from './typeRule'; | ||||
| import ButtonNav from '@/components/ButtonNav'; | ||||
|  | ||||
| const tableProps = [ | ||||
| 	{ | ||||
| 		prop: 'time', | ||||
| 		label: '日期', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'originArea', | ||||
| 		label: '原片下片面积', | ||||
|     filter: (val) => (val != null ? Number(val).toFixed(2) : '-'), | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'deepArea', | ||||
| 		label: '深加工下片面积', | ||||
|     filter: (val) => (val != null ? Number(val).toFixed(2) : '-'), | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'originPrice', | ||||
| 		label: '原片成本/元', | ||||
| 		align: 'right', | ||||
|     filter: (val) => (val != null ? Number(val).toFixed(2) : '-'), | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'deepPrice', | ||||
| 		label: '深加工成本/元', | ||||
| 		align: 'right', | ||||
|     filter: (val) => (val != null ? Number(val).toFixed(2) : '-'), | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'price', | ||||
| 		label: '总成本/元', | ||||
| 		align: 'right', | ||||
|     filter: (val) => (val != null ? Number(val).toFixed(2) : '-'), | ||||
| 	}, | ||||
| ]; | ||||
| const tableProps2 = [ | ||||
| 	{ | ||||
| 		prop: 'bindObjectName', | ||||
| 		label: '产品名称', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'spec', | ||||
| 		label: '规格', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'costSum', | ||||
| 		label: '原片单片成本/元', | ||||
| 		align: 'right', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'costPiece', | ||||
| 		label: '深加工单片成本/元', | ||||
| 		align: 'right', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'costPiece', | ||||
| 		label: '成品单片成本/元', | ||||
| 		align: 'right', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'costArea', | ||||
| 		label: '每平米成本/元', | ||||
| 		align: 'right', | ||||
| 	}, | ||||
| ]; | ||||
| export default { | ||||
| 	name: 'allCost', | ||||
| 	mixins: [basicPage, tableHeightMixin], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			urlOptions: { | ||||
| 				getDataListURL: getCostSumPage, | ||||
| 			}, | ||||
| 			formConfig: [ | ||||
| 				{ | ||||
| 					type: 'select', | ||||
| 					label: '维度', | ||||
| 					selectOptions: [ | ||||
| 						{ id: 1, name: '日' }, | ||||
| 						{ id: 2, name: '周' }, | ||||
| 						{ id: 3, name: '月' }, | ||||
| 					], | ||||
| 					param: 'statisticType', | ||||
| 					defaultSelect: 1, // 默认值, | ||||
| 					clearable: false, | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'datePicker', | ||||
| 					label: '时间范围', | ||||
| 					dateType: 'daterange', | ||||
| 					format: 'yyyy-MM-dd', | ||||
| 					valueFormat: 'yyyy-MM-dd HH:mm:ss', | ||||
| 					rangeSeparator: '-', | ||||
| 					startPlaceholder: '开始时间', | ||||
| 					endPlaceholder: '结束时间', | ||||
| 					param: 'searchTime', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					btnName: '查询', | ||||
| 					name: 'search', | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'separate', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					btnName: '导出', | ||||
| 					name: 'export', | ||||
| 					color: 'warning', | ||||
| 				}, | ||||
| 			], | ||||
| 			formConfig2: [ | ||||
| 				{ | ||||
| 					type: 'datePicker', | ||||
| 					label: '时间范围', | ||||
| 					dateType: 'daterange', | ||||
| 					format: 'yyyy-MM-dd', | ||||
| 					valueFormat: 'yyyy-MM-dd HH:mm:ss', | ||||
| 					rangeSeparator: '-', | ||||
| 					startPlaceholder: '开始时间', | ||||
| 					endPlaceholder: '结束时间', | ||||
| 					param: 'searchTime', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					btnName: '查询', | ||||
| 					name: 'search', | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'separate', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					btnName: '导出', | ||||
| 					name: 'export', | ||||
| 					color: 'warning', | ||||
| 				}, | ||||
| 			], | ||||
| 			listQuery: { | ||||
| 				statisticType: 1, | ||||
| 			}, | ||||
| 			activeName: 'his', | ||||
| 			tableProps, | ||||
| 			tableProps2, | ||||
| 			tableBtn: [ | ||||
|         { | ||||
| 							type: 'edit', | ||||
| 							btnName: '编辑', | ||||
| 					  } | ||||
| 			].filter((v) => v), | ||||
| 			tableData: [], | ||||
| 			tableData2: [], | ||||
| 		}; | ||||
| 	}, | ||||
| 	components: { | ||||
| 		AddOrUpdate, | ||||
| 		ButtonNav, | ||||
| 	}, | ||||
| 	created() { | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		buttonClick(val) { | ||||
| 			this.formConfig2[0].startPlaceholder = '开始时间'; | ||||
| 			this.formConfig2[0].endPlaceholder = '结束时间'; | ||||
| 			switch (val.btnName) { | ||||
| 				case 'search': | ||||
| 					this.listQuery.pageNo = 1; | ||||
| 					this.listQuery.pageSize = 20; | ||||
| 					this.listQuery.bindObjectId = val.name || null; | ||||
| 					this.listQuery.statisticType = val.statisticType || 1; | ||||
| 					this.listQuery.startTime = val.searchTime ? val.searchTime[0] : null; | ||||
| 					this.listQuery.endTime = val.searchTime | ||||
| 						? val.searchTime[1].substr(0, 10) + ' 23:59:59' | ||||
| 						: null; | ||||
| 					if (this.activeName === 'his') { | ||||
| 						this.getDataList(); | ||||
| 					} else { | ||||
| 						this.getDataList2(); | ||||
| 					} | ||||
| 					break; | ||||
| 				case 'add': | ||||
| 					this.addOrUpdateHandle(); | ||||
| 					break; | ||||
| 				case 'export': | ||||
| 					this.listQuery.pageNo = 1; | ||||
| 					this.listQuery.pageSize = 20; | ||||
| 					this.listQuery.bindObjectId = val.name || null; | ||||
| 					this.listQuery.statisticType = val.statisticType || 1; | ||||
| 					this.listQuery.startTime = val.searchTime ? val.searchTime[0] : null; | ||||
| 					this.listQuery.endTime = val.searchTime | ||||
| 						? val.searchTime[1].substr(0, 10) + ' 23:59:59' | ||||
| 						: null; | ||||
| 					this.handleExport(); | ||||
| 					break; | ||||
| 				default: | ||||
| 					console.log(val); | ||||
| 			} | ||||
| 		}, | ||||
| 		currentMenu(val) { | ||||
| 			this.activeName = val === '按日期' ? 'his' : 'now'; | ||||
| 			if (this.activeName === 'his') { | ||||
| 				this.$refs.searchBarForm.resetForm(); | ||||
| 				this.listQuery.name = null; | ||||
| 				this.listQuery.startTime = null; | ||||
| 				this.listQuery.endTime = null; | ||||
| 				this.listQuery.statisticType = 1; | ||||
| 				this.listQuery.pageNo = 1; | ||||
| 				this.getDataList(); | ||||
| 			} else { | ||||
| 				this.$refs.searchBarForm2.resetForm(); | ||||
| 				const end = new Date(); | ||||
| 				const start = new Date(); | ||||
| 				start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); | ||||
| 				this.listQuery.startTime = parseTime(start).substr(0, 10) + ' 00:00:00'; | ||||
| 				this.listQuery.endTime = parseTime(end).substr(0, 10) + ' 23:59:59'; | ||||
| 				this.formConfig2[0].startPlaceholder = parseTime(start).substr(0, 10); | ||||
| 				this.formConfig2[0].endPlaceholder = parseTime(end).substr(0, 10); | ||||
| 				this.listQuery.name = null; | ||||
| 				this.listQuery.pageNo = 1; | ||||
| 				this.getDataList2(); | ||||
| 			} | ||||
| 		}, | ||||
| 		// 获取数据2列表 | ||||
| 		getDataList2() { | ||||
| 			if (this.listQuery.startTime) { | ||||
| 				getRawCostStatisticsRealtimePage(this.listQuery).then((response) => { | ||||
| 					this.tableData2 = response.data.list; | ||||
| 					this.listQuery.total = response.data.total; | ||||
| 				}); | ||||
| 			} else { | ||||
| 				this.$message.warning('请选择时间范围'); | ||||
| 			} | ||||
| 		}, | ||||
| 		//tableBtn点击 | ||||
| 		handleClick(val) { | ||||
| 			if (val.type === 'edit') { | ||||
| 				this.addOrUpdateVisible = true; | ||||
| 				this.addOrEditTitle = '编辑'; | ||||
| 				this.$nextTick(() => { | ||||
| 					this.$refs.addOrUpdate.init(val.data, this.listQuery.statisticType); | ||||
| 				}); | ||||
| 			} else { | ||||
| 				this.otherMethods(val); | ||||
| 			} | ||||
| 		}, | ||||
|     getNavDataList(){ | ||||
| 			if (this.activeName === 'his') { | ||||
| 				this.getDataList(); | ||||
| 			} else { | ||||
| 				this.getDataList2(); | ||||
| 			} | ||||
|     }, | ||||
| 		/** 导出按钮操作 */ | ||||
| 		handleExport() { | ||||
| 			let exportURL, title; | ||||
| 			if (this.activeName === 'his') { | ||||
| 				exportURL = exportCostSumExcel; | ||||
|         title = '总成本统计'; | ||||
| 			} else { | ||||
| 				exportURL = exportRawStatisticsRealtimeExcel; | ||||
|         title = '总成本统计-按规格'; | ||||
| 			} | ||||
| 			// 处理查询参数 | ||||
| 			let params = { ...this.listQuery }; | ||||
| 			params.pageNo = undefined; | ||||
| 			params.pageSize = undefined; | ||||
| 			this.$modal | ||||
| 				.confirm('是否确认导出所有数据项?') | ||||
| 				.then(() => { | ||||
| 					return exportURL(params); | ||||
| 				}) | ||||
| 				.then((response) => { | ||||
| 					this.$download.excel(response, title + '报表.xls'); | ||||
| 				}) | ||||
| 				.catch(() => {}); | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
| <style lang="scss"> | ||||
| .energyOverlimitLog { | ||||
| 	.el-tabs__nav::after { | ||||
| 		content: ''; | ||||
| 		position: absolute; | ||||
| 		left: 0; | ||||
| 		bottom: 0; | ||||
| 		width: 100%; | ||||
| 		height: 2px; | ||||
| 		background-color: #e4e7ed; | ||||
| 	} | ||||
|  | ||||
| 	.el-tabs__nav-wrap::after { | ||||
| 		width: 0; | ||||
| 	} | ||||
|  | ||||
| 	.el-tabs__item { | ||||
| 		padding: 0 10px; | ||||
| 	} | ||||
|  | ||||
| 	.el-tabs__item:hover { | ||||
| 		color: rgba(0, 0, 0, 0.85); | ||||
| 	} | ||||
|  | ||||
| 	.el-tabs__item.is-active { | ||||
| 		color: rgba(0, 0, 0, 0.85); | ||||
| 	} | ||||
|  | ||||
| 	.el-tabs__item { | ||||
| 		color: rgba(0, 0, 0, 0.45); | ||||
| 	} | ||||
|  | ||||
| 	.searchBarBox { | ||||
| 		margin-bottom: 0; | ||||
| 	} | ||||
| } | ||||
| </style> | ||||
							
								
								
									
										23
									
								
								src/views/cost/costStatistics/typeRule.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,23 @@ | ||||
| <!-- | ||||
|  * @Author: zwq | ||||
|  * @Date: 2023-12-05 13:45:59 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-04-15 17:12:03 | ||||
|  * @Description | ||||
| --> | ||||
| <template> | ||||
| 	<div> | ||||
| 		<span>{{ parseTime(injectData.startTime,'{y}年{m}月{d}日') + '-' + (parseTime(injectData.endTime)?parseTime(injectData.endTime,'{y}年{m}月{d}日'):'永久') }}</span> | ||||
| 	</div> | ||||
| </template> | ||||
| <script> | ||||
| export default { | ||||
| 	name: '', | ||||
| 	props: { | ||||
| 		injectData: { | ||||
| 			type: Object, | ||||
| 			default: () => ({}), | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
							
								
								
									
										104
									
								
								src/views/cost/deep/24hourCostMonitor/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,104 @@ | ||||
| <template> | ||||
| 	<div class="app-container"> | ||||
| 		<base-table | ||||
| 			v-loading="dataListLoading" | ||||
| 			:table-props="tableProps" | ||||
| 			:page="listQuery.pageNo" | ||||
| 			:limit="listQuery.pageSize" | ||||
| 			:max-height="tableH" | ||||
| 			: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 tableHeightMixin from '@/mixins/lb/tableHeightMixin'; | ||||
| import { parseTime } from '@/filter/code-filter'; | ||||
| import { | ||||
| 	deleteRawOthercostLog, | ||||
| 	getRawOthercostLogPage, | ||||
| 	exportRawOthercostLogExcel, | ||||
| } from '@/api/cost/costOthercostLog'; | ||||
| import { getRawOthercostRulePage } from '@/api/cost/rawOthercostRule'; | ||||
|  | ||||
| const tableProps = [ | ||||
| 	{ | ||||
| 		prop: 'otherCostName', | ||||
| 		label: '成本名称', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'recTime', | ||||
| 		label: '日期', | ||||
| 		filter: (val) => parseTime(val, '{y}年{m}月{d}日'), | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'price', | ||||
| 		label: '成本金额', | ||||
| 		align: 'right', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'remark', | ||||
| 		label: '备注', | ||||
| 	}, | ||||
| ]; | ||||
|  | ||||
| export default { | ||||
| 	mixins: [basicPage, tableHeightMixin], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			urlOptions: { | ||||
| 				getDataListURL: getRawOthercostLogPage, | ||||
| 				deleteURL: deleteRawOthercostLog, | ||||
| 				exportURL: exportRawOthercostLogExcel, | ||||
| 			}, | ||||
| 			tableProps, | ||||
| 			tableData: [], | ||||
| 		}; | ||||
| 	}, | ||||
| 	components: { | ||||
| 	}, | ||||
| 	created() { | ||||
| 		const params = { | ||||
| 			pageNo: 1, | ||||
| 			pageSize: 100, | ||||
| 		}; | ||||
| 		getRawOthercostRulePage(params).then((response) => { | ||||
| 			this.formConfig[0].selectOptions = response.data.list; | ||||
| 		}); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		buttonClick(val) { | ||||
| 			switch (val.btnName) { | ||||
| 				case 'search': | ||||
| 					this.listQuery.pageNo = 1; | ||||
| 					this.listQuery.pageSize = 20; | ||||
| 					this.listQuery.name = val.name||null; | ||||
| 					this.listQuery.startTime = val.searchTime ? val.searchTime[0] : null; | ||||
| 					this.listQuery.endTime = val.searchTime | ||||
| 						? val.searchTime[1].substr(0, 10) + ' 23:59:59' | ||||
| 						: null; | ||||
| 					this.getDataList(); | ||||
| 					break; | ||||
| 				case 'add': | ||||
| 					this.addOrUpdateHandle(); | ||||
| 					break; | ||||
| 				case 'export': | ||||
| 					this.listQuery.pageNo = 1; | ||||
| 					this.listQuery.pageSize = 20; | ||||
| 					this.listQuery.name = val.name; | ||||
| 					this.listQuery.recTime = val.searchTime; | ||||
| 					this.handleExport(); | ||||
| 					break; | ||||
| 				default: | ||||
| 					console.log(val); | ||||
| 			} | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
							
								
								
									
										114
									
								
								src/views/cost/deep/costDeepEnergy/add-or-updata.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,114 @@ | ||||
| <!-- | ||||
|  * @Author: zwq | ||||
|  * @Date: 2021-11-18 14:16:25 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-09-05 15:34:49 | ||||
|  * @Description: | ||||
| --> | ||||
| <template> | ||||
| 	<el-form | ||||
| 		:model="dataForm" | ||||
| 		:rules="dataRule" | ||||
| 		ref="dataForm" | ||||
| 		@keyup.enter.native="dataFormSubmit()" | ||||
| 		label-position="top" | ||||
| 		label-width="80px"> | ||||
| 		<el-row :gutter="20"> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="能源类型" prop="energyTypeName"> | ||||
| 					<el-input | ||||
| 						v-model="dataForm.energyTypeName" | ||||
| 						disabled | ||||
| 						placeholder="请输入能源类型" /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="日期" prop="recTime"> | ||||
| 					<el-date-picker | ||||
| 						v-model="dataForm.recTime" | ||||
| 						type="date" | ||||
| 						value-format="timestamp" | ||||
| 						:style="{ width: '100%' }" | ||||
|             readonly | ||||
| 						placeholder="选择日期"></el-date-picker> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="总价" prop="price"> | ||||
| 					<el-input-number | ||||
| 						:min="0" | ||||
| 						style="width: 80%" | ||||
| 						v-model="dataForm.price" | ||||
| 						clearable | ||||
| 						placeholder="请输入总价" /> | ||||
| 					(元) | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="累计用量" prop="quantity"> | ||||
| 					<el-input-number | ||||
| 						:min="0" | ||||
| 						style="width: 100%" | ||||
| 						v-model="dataForm.quantity" | ||||
| 						clearable | ||||
| 						placeholder="请输入累计用量" /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 		</el-row> | ||||
| 	</el-form> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import basicAdd from '@/mixins/basic-add'; | ||||
| import { updateEnergyHis } from '@/api/cost/costEnergyDeep'; | ||||
|  | ||||
| export default { | ||||
| 	mixins: [basicAdd], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			urlOptions: { | ||||
| 				updateURL: updateEnergyHis, | ||||
| 			}, | ||||
| 			dataForm: { | ||||
| 				id: undefined, | ||||
| 				price: undefined, | ||||
| 				quantity: undefined, | ||||
| 				energyTypeName: undefined, | ||||
| 				recTime: undefined, | ||||
| 			}, | ||||
| 			dataRule: { | ||||
| 				price: [{ required: true, message: '总价不能为空', trigger: 'blur' }], | ||||
| 				quantity: [ | ||||
| 					{ required: true, message: '累计用量不能为空', trigger: 'blur' }, | ||||
| 				], | ||||
| 			}, | ||||
| 		}; | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		init(val, statisticType) { | ||||
| 			this.visible = true; | ||||
| 			this.$nextTick(() => { | ||||
| 				this.$refs['dataForm'].resetFields(); | ||||
| 				this.dataForm = JSON.parse(JSON.stringify(val)); | ||||
| 				this.dataForm.statisticType = statisticType; | ||||
| 			}); | ||||
| 		}, | ||||
| 		// 表单提交 | ||||
| 		dataFormSubmit() { | ||||
| 			this.$refs['dataForm'].validate((valid) => { | ||||
| 				if (!valid) { | ||||
| 					return false; | ||||
| 				} | ||||
| 				this.dataForm.modifyPrice = this.dataForm.price; | ||||
| 				this.dataForm.modifyQuantity = this.dataForm.quantity; | ||||
| 				// 修改的提交 | ||||
| 				this.urlOptions.updateURL(this.dataForm).then((response) => { | ||||
| 					this.$modal.msgSuccess('修改成功'); | ||||
| 					this.visible = false; | ||||
| 					this.$emit('refreshDataList'); | ||||
| 				}); | ||||
| 			}); | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
							
								
								
									
										436
									
								
								src/views/cost/deep/costDeepEnergy/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,436 @@ | ||||
| <template> | ||||
| 	<div> | ||||
| 		<div style="background: #f2f4f9; height: 40px; width: 100%"> | ||||
| 			<ButtonNav :menus="['历史成本', '成本查询']" @change="currentMenu"> | ||||
| 				<template v-slot:tab1> | ||||
| 					<div>历史成本</div> | ||||
| 				</template> | ||||
| 				<template v-slot:tab2> | ||||
| 					<div>成本查询</div> | ||||
| 				</template> | ||||
| 			</ButtonNav> | ||||
| 		</div> | ||||
| 		<div class="app-container energyOverlimitLog"> | ||||
| 			<div v-show="activeName === 'his'"> | ||||
| 				<!-- 搜索工作栏 --> | ||||
| 				<search-bar | ||||
| 					:formConfigs="formConfig" | ||||
| 					ref="searchBarForm" | ||||
| 					@headBtnClick="buttonClick" /> | ||||
| 			</div> | ||||
| 			<div v-show="activeName === 'now'"> | ||||
| 				<!-- 搜索工作栏 --> | ||||
| 				<search-bar | ||||
| 					:formConfigs="formConfig2" | ||||
| 					ref="searchBarForm2" | ||||
| 					@headBtnClick="buttonClick" /> | ||||
| 			</div> | ||||
| 			<!-- 列表 --> | ||||
| 			<div v-if="activeName === 'his'"> | ||||
| 				<base-table | ||||
| 					:page="listQuery.pageNo" | ||||
| 					:limit="listQuery.pageSize" | ||||
| 					:table-props="tableProps" | ||||
| 					:table-data="tableData" | ||||
| 					:max-height="tableH"> | ||||
| 					<method-btn | ||||
| 						v-if="tableBtn.length" | ||||
| 						slot="handleBtn" | ||||
| 						:width="80" | ||||
| 						label="操作" | ||||
| 						:method-list="tableBtn" | ||||
| 						@clickBtn="handleClick" /> | ||||
| 				</base-table> | ||||
| 			</div> | ||||
| 			<div v-if="activeName === 'now'"> | ||||
| 				<base-table | ||||
| 					:page="listQuery.pageNo" | ||||
| 					:limit="listQuery.pageSize" | ||||
| 					:table-props="tableProps2" | ||||
| 					:table-data="tableData2" | ||||
| 					:max-height="tableH" /> | ||||
| 			</div> | ||||
| 			<pagination | ||||
| 				:page.sync="listQuery.pageNo" | ||||
| 				:limit.sync="listQuery.pageSize" | ||||
| 				:total="listQuery.total" | ||||
| 				@pagination="getNavDataList" /> | ||||
| 			<base-dialog | ||||
| 				:dialogTitle="addOrEditTitle" | ||||
| 				:dialogVisible="addOrUpdateVisible" | ||||
| 				@cancel="handleCancel" | ||||
| 				@confirm="handleConfirm" | ||||
| 				:before-close="handleCancel" | ||||
| 				width="50%"> | ||||
| 				<add-or-update | ||||
| 					ref="addOrUpdate" | ||||
| 					@refreshDataList="successSubmit"></add-or-update> | ||||
| 			</base-dialog> | ||||
| 		</div> | ||||
| 	</div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import AddOrUpdate from './add-or-updata'; | ||||
| import basicPage from '@/mixins/basic-page'; | ||||
| import { getEnergyTypePage } from '@/api/base/energyType'; | ||||
| import { | ||||
| 	getEnergyHisPage, | ||||
| 	getEnergyRealtimePage, | ||||
| 	exportEnergyRealtimeExcel, | ||||
| 	exportEnergyHisExcel, | ||||
| } from '@/api/cost/costEnergyDeep'; | ||||
| import { parseTime } from '@/filter/code-filter'; | ||||
| import tableHeightMixin from '@/mixins/lb/tableHeightMixin'; | ||||
| import ButtonNav from '@/components/ButtonNav'; | ||||
|  | ||||
| const tableProps = [ | ||||
| 	{ | ||||
| 		prop: 'time', | ||||
| 		label: '日期', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'remark', | ||||
| 		label: '备注', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'energyTypeName', | ||||
| 		label: '能源类型', | ||||
| 	}, | ||||
| 	// { | ||||
| 	// 	prop: 'bindObjectName', | ||||
| 	// 	label: '监控对象', | ||||
| 	// 	filter: (val) => (val != null ? val : '--'), | ||||
| 	// }, | ||||
| 	// { | ||||
| 	// 	prop: 'meterName', | ||||
| 	// 	label: '抄表名', | ||||
| 	// 	filter: (val) => (val != null ? val : '--'), | ||||
| 	// }, | ||||
| 	{ | ||||
| 		prop: 'quantity', | ||||
| 		label: '累计使用量', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'price', | ||||
| 		label: '总价(元)', | ||||
| 		align: 'right', | ||||
| 	}, | ||||
| ]; | ||||
| const tableProps2 = [ | ||||
| 	{ | ||||
| 		prop: 'remark', | ||||
| 		label: '备注', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'energyTypeName', | ||||
| 		label: '能源类型', | ||||
| 	}, | ||||
| 	// { | ||||
| 	// 	prop: 'bindObjectName', | ||||
| 	// 	label: '监控对象', | ||||
| 	// 	filter: (val) => (val != null ? val : '--'), | ||||
| 	// }, | ||||
| 	// { | ||||
| 	// 	prop: 'meter', | ||||
| 	// 	label: '抄表名', | ||||
| 	// 	filter: (val) => (val != null ? val : '--'), | ||||
| 	// }, | ||||
| 	{ | ||||
| 		prop: 'quantity', | ||||
| 		label: '累计使用量', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'price', | ||||
| 		label: '总价(元)', | ||||
| 		align: 'right', | ||||
| 	}, | ||||
| ]; | ||||
| export default { | ||||
| 	name: 'costEnergy', | ||||
| 	mixins: [basicPage, tableHeightMixin], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			urlOptions: { | ||||
| 				getDataListURL: getEnergyHisPage, | ||||
| 			}, | ||||
| 			formConfig: [ | ||||
| 				{ | ||||
| 					type: 'select', | ||||
| 					label: '维度', | ||||
| 					selectOptions: [ | ||||
| 						{ id: 1, name: '日' }, | ||||
| 						{ id: 2, name: '周' }, | ||||
| 						{ id: 3, name: '月' }, | ||||
| 					], | ||||
| 					param: 'statisticType', | ||||
| 					defaultSelect: 1, // 默认值, | ||||
| 					clearable: false, | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'select', | ||||
| 					label: '能源类型', | ||||
| 					selectOptions: [], | ||||
| 					param: 'name', | ||||
| 					labelField: 'name', | ||||
| 					filterable: true, | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'datePicker', | ||||
| 					label: '时间范围', | ||||
| 					dateType: 'daterange', | ||||
| 					format: 'yyyy-MM-dd', | ||||
| 					valueFormat: 'yyyy-MM-dd HH:mm:ss', | ||||
| 					rangeSeparator: '-', | ||||
| 					startPlaceholder: '开始时间', | ||||
| 					endPlaceholder: '结束时间', | ||||
| 					param: 'searchTime', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					btnName: '查询', | ||||
| 					name: 'search', | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'separate', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					btnName: '导出', | ||||
| 					name: 'export', | ||||
| 					color: 'warning', | ||||
| 				}, | ||||
| 			], | ||||
| 			formConfig2: [ | ||||
| 				{ | ||||
| 					type: 'select', | ||||
| 					label: '能源类型', | ||||
| 					selectOptions: [], | ||||
| 					param: 'name', | ||||
| 					labelField: 'name', | ||||
| 					filterable: true, | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'datePicker', | ||||
| 					label: '时间范围', | ||||
| 					dateType: 'datetimerange', | ||||
| 					format: 'yyyy-MM-dd HH:mm:ss', | ||||
| 					valueFormat: 'yyyy-MM-dd HH:mm:ss', | ||||
| 					rangeSeparator: '-', | ||||
| 					startPlaceholder: '开始时间', | ||||
| 					endPlaceholder: '结束时间', | ||||
| 					defaultTime: ['08:30:00', '08:30:00'], | ||||
| 					param: 'searchTime', | ||||
| 					width: 350, | ||||
| 					clearable: false, | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					btnName: '查询', | ||||
| 					name: 'search', | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'separate', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					btnName: '导出', | ||||
| 					name: 'export', | ||||
| 					color: 'warning', | ||||
| 				}, | ||||
| 			], | ||||
| 			listQuery: { | ||||
| 				statisticType: 1, | ||||
| 			}, | ||||
| 			activeName: 'his', | ||||
| 			tableProps, | ||||
| 			tableProps2, | ||||
| 			tableBtn: [{ | ||||
| 							type: 'edit', | ||||
| 							btnName: '编辑', | ||||
| 					  } | ||||
| 			].filter((v) => v), | ||||
| 			tableData: [], | ||||
| 			tableData2: [], | ||||
| 		}; | ||||
| 	}, | ||||
| 	components: { | ||||
| 		AddOrUpdate, | ||||
| 		ButtonNav, | ||||
| 	}, | ||||
| 	created() { | ||||
| 		const params = { | ||||
| 			pageNo: 1, | ||||
| 			pageSize: 100, | ||||
| 		}; | ||||
| 		getEnergyTypePage(params).then((response) => { | ||||
| 			this.formConfig[1].selectOptions = response.data.list; | ||||
| 			this.formConfig2[0].selectOptions = response.data.list; | ||||
| 		}); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		buttonClick(val) { | ||||
| 			switch (val.btnName) { | ||||
| 				case 'search': | ||||
| 					this.listQuery.pageNo = 1; | ||||
| 					this.listQuery.pageSize = 20; | ||||
| 					this.listQuery.energyTypeId = val.name || null; | ||||
| 					this.listQuery.statisticType = val.statisticType || 1; | ||||
| 					this.listQuery.startTime = val.searchTime ? val.searchTime[0] : null; | ||||
| 					this.listQuery.endTime = val.searchTime ? val.searchTime[1] : null; | ||||
| 					if (this.activeName === 'his') { | ||||
| 						this.listQuery.endTime = val.searchTime | ||||
| 							? val.searchTime[1].substr(0, 10) + ' 23:59:59' | ||||
| 							: null; | ||||
| 						this.getDataList(); | ||||
| 					} else { | ||||
| 						this.getDataList2(); | ||||
| 					} | ||||
| 					break; | ||||
| 				case 'add': | ||||
| 					this.addOrUpdateHandle(); | ||||
| 					break; | ||||
| 				case 'export': | ||||
| 					this.listQuery.pageNo = 1; | ||||
| 					this.listQuery.pageSize = 20; | ||||
| 					this.listQuery.energyTypeId = val.name || null; | ||||
| 					this.listQuery.statisticType = val.statisticType || 1; | ||||
| 					this.listQuery.startTime = val.searchTime ? val.searchTime[0] : null; | ||||
| 					this.listQuery.endTime = val.searchTime | ||||
| 						? val.searchTime[1] | ||||
| 						: null; | ||||
| 					if (this.activeName === 'his') { | ||||
| 						this.listQuery.endTime = val.searchTime | ||||
| 							? val.searchTime[1].substr(0, 10) + ' 23:59:59' | ||||
| 							: null; | ||||
| 					} | ||||
| 					this.handleExport(); | ||||
| 					break; | ||||
| 				default: | ||||
| 					console.log(val); | ||||
| 			} | ||||
| 		}, | ||||
| 		currentMenu(val) { | ||||
| 			this.activeName = val === '历史成本' ? 'his' : 'now'; | ||||
| 			if (this.activeName === 'his') { | ||||
| 				this.$refs.searchBarForm.resetForm(); | ||||
| 				this.listQuery.name = null; | ||||
| 				this.listQuery.startTime = null; | ||||
| 				this.listQuery.endTime = null; | ||||
| 				this.listQuery.statisticType = 1; | ||||
| 				this.listQuery.pageNo = 1; | ||||
| 				this.getDataList(); | ||||
| 			} else { | ||||
| 				this.$refs.searchBarForm2.resetForm(); | ||||
| 				const end = new Date(); | ||||
| 				const start = new Date(); | ||||
| 				start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); | ||||
| 				this.listQuery.startTime = parseTime(start).substr(0, 10) + ' 08:30:00'; | ||||
| 				this.listQuery.endTime = parseTime(end).substr(0, 10) + ' 08:30:00'; | ||||
| 				this.$nextTick(() => { | ||||
| 					this.$refs.searchBarForm2.formInline.searchTime = [ | ||||
| 						this.listQuery.startTime, | ||||
| 						this.listQuery.endTime, | ||||
| 					]; | ||||
| 				}); | ||||
| 				this.listQuery.name = null; | ||||
| 				this.listQuery.pageNo = 1; | ||||
| 				this.getDataList2(); | ||||
| 			} | ||||
| 		}, | ||||
|     getNavDataList(){ | ||||
| 			if (this.activeName === 'his') { | ||||
| 				this.getDataList(); | ||||
| 			} else { | ||||
| 				this.getDataList2(); | ||||
| 			} | ||||
|     }, | ||||
| 		// 获取数据2列表 | ||||
| 		getDataList2() { | ||||
| 			if (this.listQuery.startTime) { | ||||
| 				getEnergyRealtimePage(this.listQuery).then((response) => { | ||||
| 					this.tableData2 = response.data.list; | ||||
| 					this.listQuery.total = response.data.total; | ||||
| 				}); | ||||
| 			} else { | ||||
| 				this.$message.warning('请选择时间范围'); | ||||
| 			} | ||||
| 		}, | ||||
| 		//tableBtn点击 | ||||
| 		handleClick(val) { | ||||
| 			if (val.type === 'edit') { | ||||
| 				this.addOrUpdateVisible = true; | ||||
| 				this.addOrEditTitle = '编辑'; | ||||
| 				this.$nextTick(() => { | ||||
| 					this.$refs.addOrUpdate.init(val.data, this.listQuery.statisticType); | ||||
| 				}); | ||||
| 			} else { | ||||
| 				this.otherMethods(val); | ||||
| 			} | ||||
| 		}, | ||||
| 		/** 导出按钮操作 */ | ||||
| 		handleExport() { | ||||
| 			let exportURL, title; | ||||
| 			if (this.activeName === 'his') { | ||||
| 				exportURL = exportEnergyHisExcel; | ||||
| 				title = '深加工能源成本-历史成本'; | ||||
| 			} else { | ||||
| 				exportURL = exportEnergyRealtimeExcel; | ||||
| 				title = '深加工能源成本-成本查询'; | ||||
| 			} | ||||
| 			// 处理查询参数 | ||||
| 			let params = { ...this.listQuery }; | ||||
| 			params.pageNo = undefined; | ||||
| 			params.pageSize = undefined; | ||||
| 			this.$modal | ||||
| 				.confirm('是否确认导出所有数据项?') | ||||
| 				.then(() => { | ||||
| 					return exportURL(params); | ||||
| 				}) | ||||
| 				.then((response) => { | ||||
| 					this.$download.excel(response, title + '报表.xls'); | ||||
| 				}) | ||||
| 				.catch(() => {}); | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
| <style lang="scss"> | ||||
| .energyOverlimitLog { | ||||
| 	.el-tabs__nav::after { | ||||
| 		content: ''; | ||||
| 		position: absolute; | ||||
| 		left: 0; | ||||
| 		bottom: 0; | ||||
| 		width: 100%; | ||||
| 		height: 2px; | ||||
| 		background-color: #e4e7ed; | ||||
| 	} | ||||
|  | ||||
| 	.el-tabs__nav-wrap::after { | ||||
| 		width: 0; | ||||
| 	} | ||||
|  | ||||
| 	.el-tabs__item { | ||||
| 		padding: 0 10px; | ||||
| 	} | ||||
|  | ||||
| 	.el-tabs__item:hover { | ||||
| 		color: rgba(0, 0, 0, 0.85); | ||||
| 	} | ||||
|  | ||||
| 	.el-tabs__item.is-active { | ||||
| 		color: rgba(0, 0, 0, 0.85); | ||||
| 	} | ||||
|  | ||||
| 	.el-tabs__item { | ||||
| 		color: rgba(0, 0, 0, 0.45); | ||||
| 	} | ||||
|  | ||||
| 	.searchBarBox { | ||||
| 		margin-bottom: 0; | ||||
| 	} | ||||
| } | ||||
| </style> | ||||
							
								
								
									
										115
									
								
								src/views/cost/deep/costDeepOthercostHis/add-or-updata.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,115 @@ | ||||
| <!-- | ||||
|  * @Author: zwq | ||||
|  * @Date: 2021-11-18 14:16:25 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-09-05 15:36:49 | ||||
|  * @Description: | ||||
| --> | ||||
| <template> | ||||
| 	<el-form | ||||
| 		:model="dataForm" | ||||
| 		:rules="dataRule" | ||||
| 		ref="dataForm" | ||||
| 		@keyup.enter.native="dataFormSubmit()" | ||||
| 		label-width="80px"> | ||||
| 		<el-row :gutter="20"> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="成本名称" prop="name"> | ||||
| 					<el-select | ||||
| 						v-model="dataForm.name" | ||||
| 						disabled | ||||
| 						:style="{ width: '100%' }" | ||||
| 						placeholder="请选择成本名称"> | ||||
| 						<el-option | ||||
| 							v-for="item in nameArr" | ||||
| 							:key="item.name" | ||||
| 							:label="item.label" | ||||
| 							:value="item.name"></el-option> | ||||
| 					</el-select> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="总价" prop="price"> | ||||
| 					<el-input-number | ||||
| 						:min="0" | ||||
| 						style="width: 80%" | ||||
| 						v-model="dataForm.price" | ||||
| 						clearable | ||||
| 						placeholder="请输入总价" /> | ||||
| 					(元) | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="所属日期" prop="recTime"> | ||||
| 					<el-date-picker | ||||
| 						v-model="dataForm.recTime" | ||||
| 						type="date" | ||||
| 						value-format="timestamp" | ||||
| 						:style="{ width: '100%' }" | ||||
|             disabled | ||||
| 						placeholder="选择所属日期"></el-date-picker> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 		</el-row> | ||||
| 	</el-form> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import basicAdd from '@/mixins/basic-add'; | ||||
| import { | ||||
| 	updateRawOthercostHis, | ||||
| } from '@/api/cost/costOthercostHisDeep'; | ||||
|  | ||||
| export default { | ||||
| 	mixins: [basicAdd], | ||||
| 	props: { | ||||
| 		nameArr: { | ||||
| 			type: Array, | ||||
| 			default: () => [], | ||||
| 		}, | ||||
| 	}, | ||||
| 	data() { | ||||
| 		return { | ||||
| 			urlOptions: { | ||||
| 				updateURL: updateRawOthercostHis, | ||||
| 			}, | ||||
| 			dataForm: { | ||||
| 				id: undefined, | ||||
| 				price: undefined, | ||||
| 				name: undefined, | ||||
| 				recTime: undefined, | ||||
| 			}, | ||||
| 			dataRule: { | ||||
| 				price: [ | ||||
| 					{ required: true, message: '总价不能为空', trigger: 'blur' }, | ||||
| 				], | ||||
| 			}, | ||||
| 		}; | ||||
| 	}, | ||||
| 	methods: { | ||||
|     init(val,statisticType) { | ||||
|       this.visible = true; | ||||
|       this.$nextTick(() => { | ||||
|         this.$refs["dataForm"].resetFields(); | ||||
|         this.dataForm = JSON.parse(JSON.stringify(val)) | ||||
|         this.dataForm.statisticType = statisticType | ||||
|       }); | ||||
|     }, | ||||
| 		// 表单提交 | ||||
| 		dataFormSubmit() { | ||||
| 			this.$refs['dataForm'].validate((valid) => { | ||||
| 				if (!valid) { | ||||
| 					return false; | ||||
| 				} | ||||
|         this.dataForm.modifyPrice = this.dataForm.price | ||||
| 				// 修改的提交 | ||||
| 				this.urlOptions.updateURL(this.dataForm).then((response) => { | ||||
| 					this.$modal.msgSuccess('修改成功'); | ||||
| 					this.visible = false; | ||||
| 					this.$emit('refreshDataList'); | ||||
| 				}); | ||||
| 			}); | ||||
| 		}, | ||||
|   }, | ||||
| }; | ||||
| </script> | ||||
							
								
								
									
										411
									
								
								src/views/cost/deep/costDeepOthercostHis/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,411 @@ | ||||
| <template> | ||||
| 	<div> | ||||
| 		<div style="background: #f2f4f9; height: 40px; width: 100%"> | ||||
| 			<ButtonNav :menus="['历史成本', '成本查询']" @change="currentMenu"> | ||||
| 				<template v-slot:tab1> | ||||
| 					<div>历史成本</div> | ||||
| 				</template> | ||||
| 				<template v-slot:tab2> | ||||
| 					<div>成本查询</div> | ||||
| 				</template> | ||||
| 			</ButtonNav> | ||||
| 		</div> | ||||
| 		<div class="app-container energyOverlimitLog"> | ||||
| 			<div v-show="activeName === 'his'"> | ||||
| 				<!-- 搜索工作栏 --> | ||||
| 				<search-bar | ||||
| 					:formConfigs="formConfig" | ||||
| 					ref="searchBarForm" | ||||
| 					@headBtnClick="buttonClick" /> | ||||
| 			</div> | ||||
| 			<div v-show="activeName === 'now'"> | ||||
| 				<!-- 搜索工作栏 --> | ||||
| 				<search-bar | ||||
| 					:formConfigs="formConfig2" | ||||
| 					ref="searchBarForm2" | ||||
| 					@headBtnClick="buttonClick" /> | ||||
| 			</div> | ||||
| 			<!-- 列表 --> | ||||
| 			<div v-if="activeName === 'his'"> | ||||
| 				<base-table | ||||
| 					:page="listQuery.pageNo" | ||||
| 					:limit="listQuery.pageSize" | ||||
| 					:table-props="tableProps" | ||||
| 					:table-data="tableData" | ||||
| 					:max-height="tableH"> | ||||
| 					<method-btn | ||||
| 						v-if="tableBtn.length" | ||||
| 						slot="handleBtn" | ||||
| 						:width="80" | ||||
| 						label="操作" | ||||
| 						:method-list="tableBtn" | ||||
| 						@clickBtn="handleClick" /> | ||||
| 				</base-table> | ||||
| 			</div> | ||||
| 			<div v-if="activeName === 'now'"> | ||||
| 				<base-table | ||||
| 					:page="listQuery.pageNo" | ||||
| 					:limit="listQuery.pageSize" | ||||
| 					:table-props="tableProps2" | ||||
| 					:table-data="tableData2" | ||||
| 					:max-height="tableH" /> | ||||
| 			</div> | ||||
| 			<pagination | ||||
| 				:page.sync="listQuery.pageNo" | ||||
| 				:limit.sync="listQuery.pageSize" | ||||
| 				:total="listQuery.total" | ||||
| 				@pagination="getNavDataList" /> | ||||
| 			<base-dialog | ||||
| 				:dialogTitle="addOrEditTitle" | ||||
| 				:dialogVisible="addOrUpdateVisible" | ||||
| 				@cancel="handleCancel" | ||||
| 				@confirm="handleConfirm" | ||||
| 				:before-close="handleCancel" | ||||
| 				width="50%"> | ||||
| 				<add-or-update | ||||
| 					ref="addOrUpdate" | ||||
| 					:name-arr="formConfig[1].selectOptions" | ||||
| 					@refreshDataList="successSubmit"></add-or-update> | ||||
| 			</base-dialog> | ||||
| 		</div> | ||||
| 	</div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import AddOrUpdate from './add-or-updata'; | ||||
| import basicPage from '@/mixins/basic-page'; | ||||
| import { getRawOthercostRulePage } from '@/api/cost/deepOthercostRule'; | ||||
| import { | ||||
| 	getRawOthercostHisPage, | ||||
| 	getRawOthercostSunPage, | ||||
|   exportRawOthercostSunExcel, | ||||
|   exportRawOthercostHisExcel | ||||
| } from '@/api/cost/costOthercostHisDeep'; | ||||
| import { parseTime } from '@/filter/code-filter'; | ||||
| import tableHeightMixin from '@/mixins/lb/tableHeightMixin'; | ||||
| import ButtonNav from '@/components/ButtonNav'; | ||||
|  | ||||
| const tableProps = [ | ||||
| 	{ | ||||
| 		prop: 'time', | ||||
| 		label: '日期', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'remark', | ||||
| 		label: '备注', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'otherCostName', | ||||
| 		label: '成本名称', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'price', | ||||
| 		label: '总价(元)', | ||||
| 		align: 'right', | ||||
|     filter: (val) => (val != null ? Number(val).toFixed(2) : '-'), | ||||
| 	}, | ||||
| ]; | ||||
| const tableProps2 = [ | ||||
| 	// { | ||||
| 	// 	prop: 'remark', | ||||
| 	// 	label: '备注', | ||||
| 	// }, | ||||
| 	{ | ||||
| 		prop: 'otherCostName', | ||||
| 		label: '成本名称', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'price', | ||||
| 		label: '总价(元)', | ||||
| 		align: 'right', | ||||
|     filter: (val) => (val != null ? Number(val).toFixed(2) : '-'), | ||||
| 	}, | ||||
| ]; | ||||
| export default { | ||||
| 	name: 'costOthercostHis', | ||||
| 	mixins: [basicPage, tableHeightMixin], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			urlOptions: { | ||||
| 				getDataListURL: getRawOthercostHisPage, | ||||
| 			}, | ||||
| 			formConfig: [ | ||||
| 				{ | ||||
| 					type: 'select', | ||||
| 					label: '维度', | ||||
| 					selectOptions: [ | ||||
| 						{ id: 1, name: '日' }, | ||||
| 						{ id: 2, name: '周' }, | ||||
| 						{ id: 3, name: '月' }, | ||||
| 					], | ||||
| 					param: 'statisticType', | ||||
| 					defaultSelect: 1, // 默认值, | ||||
| 					clearable: false, | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'select', | ||||
| 					label: '成本名称', | ||||
| 					selectOptions: [], | ||||
| 					param: 'name', | ||||
| 					labelField: 'label', | ||||
| 					valueField: 'name', | ||||
| 					filterable: true, | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'datePicker', | ||||
| 					label: '时间范围', | ||||
| 					dateType: 'daterange', | ||||
| 					format: 'yyyy-MM-dd', | ||||
| 					valueFormat: 'yyyy-MM-dd HH:mm:ss', | ||||
| 					rangeSeparator: '-', | ||||
| 					startPlaceholder: '开始时间', | ||||
| 					endPlaceholder: '结束时间', | ||||
| 					param: 'searchTime', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					btnName: '查询', | ||||
| 					name: 'search', | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'separate', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					btnName: '导出', | ||||
| 					name: 'export', | ||||
| 					color: 'warning', | ||||
| 				}, | ||||
| 			], | ||||
| 			formConfig2: [ | ||||
| 				{ | ||||
| 					type: 'select', | ||||
| 					label: '成本名称', | ||||
| 					selectOptions: [], | ||||
| 					param: 'name', | ||||
| 					labelField: 'label', | ||||
| 					valueField: 'name', | ||||
| 					filterable: true, | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'datePicker', | ||||
| 					label: '时间范围', | ||||
| 					dateType: 'datetimerange', | ||||
| 					format: 'yyyy-MM-dd HH:mm:ss', | ||||
| 					valueFormat: 'yyyy-MM-dd HH:mm:ss', | ||||
| 					rangeSeparator: '-', | ||||
| 					startPlaceholder: '开始时间', | ||||
| 					endPlaceholder: '结束时间', | ||||
| 					defaultTime: ['08:30:00', '08:30:00'], | ||||
| 					param: 'searchTime', | ||||
| 					width: 350, | ||||
| 					clearable: false, | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					btnName: '查询', | ||||
| 					name: 'search', | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'separate', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					btnName: '导出', | ||||
| 					name: 'export', | ||||
| 					color: 'warning', | ||||
| 				}, | ||||
| 			], | ||||
| 			listQuery: { | ||||
| 				statisticType: 1, | ||||
| 			}, | ||||
| 			activeName: 'his', | ||||
| 			tableProps, | ||||
| 			tableProps2, | ||||
| 			tableBtn: [{ | ||||
| 							type: 'edit', | ||||
| 							btnName: '编辑', | ||||
| 					  } | ||||
| 			].filter((v) => v), | ||||
| 			tableData: [], | ||||
| 			tableData2: [], | ||||
| 		}; | ||||
| 	}, | ||||
| 	components: { | ||||
| 		AddOrUpdate, | ||||
| 		ButtonNav, | ||||
| 	}, | ||||
| 	created() { | ||||
| 		const params = { | ||||
| 			pageNo: 1, | ||||
| 			pageSize: 100, | ||||
| 		}; | ||||
| 		getRawOthercostRulePage(params).then((response) => { | ||||
| 			this.formConfig[1].selectOptions = response.data.list; | ||||
| 			this.formConfig2[0].selectOptions = response.data.list; | ||||
| 		}); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		buttonClick(val) { | ||||
| 			switch (val.btnName) { | ||||
| 				case 'search': | ||||
| 					this.listQuery.pageNo = 1; | ||||
| 					this.listQuery.pageSize = 20; | ||||
| 					this.listQuery.name = val.name || null; | ||||
| 					this.listQuery.statisticType = val.statisticType || 1; | ||||
| 					this.listQuery.startTime = val.searchTime ? val.searchTime[0] : null; | ||||
| 					this.listQuery.endTime = val.searchTime | ||||
| 						? val.searchTime[1] | ||||
| 						: null; | ||||
| 					if (this.activeName === 'his') { | ||||
| 						this.listQuery.endTime = val.searchTime | ||||
| 							? val.searchTime[1].substr(0, 10) + ' 23:59:59' | ||||
| 							: null; | ||||
| 						this.getDataList(); | ||||
| 					} else { | ||||
| 						this.getDataList2(); | ||||
| 					} | ||||
| 					break; | ||||
| 				case 'add': | ||||
| 					this.addOrUpdateHandle(); | ||||
| 					break; | ||||
| 				case 'export': | ||||
| 					this.listQuery.pageNo = 1; | ||||
| 					this.listQuery.pageSize = 20; | ||||
| 					this.listQuery.name = val.name || null; | ||||
| 					this.listQuery.statisticType = val.statisticType || 1; | ||||
| 					this.listQuery.startTime = val.searchTime ? val.searchTime[0] : null; | ||||
| 					this.listQuery.endTime = val.searchTime | ||||
| 						? val.searchTime[1] | ||||
| 						: null; | ||||
| 					if (this.activeName === 'his') { | ||||
| 						this.listQuery.endTime = val.searchTime | ||||
| 							? val.searchTime[1].substr(0, 10) + ' 23:59:59' | ||||
| 							: null; | ||||
| 					} | ||||
| 					this.handleExport(); | ||||
| 					break; | ||||
| 				default: | ||||
| 					console.log(val); | ||||
| 			} | ||||
| 		}, | ||||
| 		currentMenu(val) { | ||||
| 			this.activeName = val === '历史成本' ? 'his' : 'now'; | ||||
| 			if (this.activeName === 'his') { | ||||
| 				this.$refs.searchBarForm.resetForm(); | ||||
| 				this.listQuery.name = null; | ||||
| 				this.listQuery.startTime = null; | ||||
| 				this.listQuery.endTime = null; | ||||
| 				this.listQuery.statisticType = 1; | ||||
| 				this.listQuery.pageNo = 1; | ||||
| 				this.getDataList(); | ||||
| 			} else { | ||||
| 				this.$refs.searchBarForm2.resetForm(); | ||||
| 				const end = new Date(); | ||||
| 				const start = new Date(); | ||||
| 				start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); | ||||
| 				this.listQuery.startTime = parseTime(start).substr(0, 10) + ' 08:30:00'; | ||||
| 				this.listQuery.endTime = parseTime(end).substr(0, 10) + ' 08:30:00'; | ||||
| 				this.$nextTick(() => { | ||||
| 					this.$refs.searchBarForm2.formInline.searchTime = [ | ||||
| 						this.listQuery.startTime, | ||||
| 						this.listQuery.endTime, | ||||
| 					]; | ||||
| 				}); | ||||
| 				this.listQuery.name = null; | ||||
| 				this.listQuery.pageNo = 1; | ||||
| 				this.getDataList2(); | ||||
| 			} | ||||
| 		}, | ||||
|     getNavDataList(){ | ||||
| 			if (this.activeName === 'his') { | ||||
| 				this.getDataList(); | ||||
| 			} else { | ||||
| 				this.getDataList2(); | ||||
| 			} | ||||
|     }, | ||||
| 		// 获取数据2列表 | ||||
| 		getDataList2() { | ||||
| 			getRawOthercostSunPage(this.listQuery).then((response) => { | ||||
| 				this.tableData2 = response.data.list; | ||||
| 				this.listQuery.total = response.data.total; | ||||
| 			}); | ||||
| 		}, | ||||
| 		//tableBtn点击 | ||||
| 		handleClick(val) { | ||||
| 			if (val.type === 'edit') { | ||||
| 				this.addOrUpdateVisible = true; | ||||
| 				this.addOrEditTitle = '编辑'; | ||||
| 				this.$nextTick(() => { | ||||
| 					this.$refs.addOrUpdate.init(val.data, this.listQuery.statisticType); | ||||
| 				}); | ||||
| 			} else { | ||||
| 				this.otherMethods(val); | ||||
| 			} | ||||
| 		}, | ||||
| 		/** 导出按钮操作 */ | ||||
| 		handleExport() { | ||||
| 			let exportURL, title; | ||||
| 			if (this.activeName === 'his') { | ||||
| 				exportURL = exportRawOthercostHisExcel; | ||||
|         title = '深加工其它成本-历史成本'; | ||||
| 			} else { | ||||
| 				exportURL = exportRawOthercostSunExcel; | ||||
|         title = '深加工其它成本-成本查询'; | ||||
| 			} | ||||
| 			// 处理查询参数 | ||||
| 			let params = { ...this.listQuery }; | ||||
| 			params.pageNo = undefined; | ||||
| 			params.pageSize = undefined; | ||||
| 			this.$modal | ||||
| 				.confirm('是否确认导出所有数据项?') | ||||
| 				.then(() => { | ||||
| 					return exportURL(params); | ||||
| 				}) | ||||
| 				.then((response) => { | ||||
| 					this.$download.excel(response, title + '报表.xls'); | ||||
| 				}) | ||||
| 				.catch(() => {}); | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
| <style lang="scss"> | ||||
| .energyOverlimitLog { | ||||
| 	.el-tabs__nav::after { | ||||
| 		content: ''; | ||||
| 		position: absolute; | ||||
| 		left: 0; | ||||
| 		bottom: 0; | ||||
| 		width: 100%; | ||||
| 		height: 2px; | ||||
| 		background-color: #e4e7ed; | ||||
| 	} | ||||
|  | ||||
| 	.el-tabs__nav-wrap::after { | ||||
| 		width: 0; | ||||
| 	} | ||||
|  | ||||
| 	.el-tabs__item { | ||||
| 		padding: 0 10px; | ||||
| 	} | ||||
|  | ||||
| 	.el-tabs__item:hover { | ||||
| 		color: rgba(0, 0, 0, 0.85); | ||||
| 	} | ||||
|  | ||||
| 	.el-tabs__item.is-active { | ||||
| 		color: rgba(0, 0, 0, 0.85); | ||||
| 	} | ||||
|  | ||||
| 	.el-tabs__item { | ||||
| 		color: rgba(0, 0, 0, 0.45); | ||||
| 	} | ||||
|  | ||||
| 	.searchBarBox { | ||||
| 		margin-bottom: 0; | ||||
| 	} | ||||
| } | ||||
| </style> | ||||
							
								
								
									
										124
									
								
								src/views/cost/deep/costDeepOthercostLog/add-or-updata.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,124 @@ | ||||
| <!-- | ||||
|  * @Author: zwq | ||||
|  * @Date: 2021-11-18 14:16:25 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-09-05 15:35:07 | ||||
|  * @Description: | ||||
| --> | ||||
| <template> | ||||
| 	<el-form | ||||
| 		:model="dataForm" | ||||
| 		:rules="dataRule" | ||||
| 		ref="dataForm" | ||||
| 		@keyup.enter.native="dataFormSubmit()" | ||||
| 		label-position="top" | ||||
| 		label-width="80px"> | ||||
| 		<el-row :gutter="20"> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="成本名称" prop="name"> | ||||
| 					<el-select | ||||
| 						v-model="dataForm.name" | ||||
| 						filterable | ||||
| 						clearable | ||||
| 						:style="{ width: '100%' }" | ||||
|             @change="setLabel" | ||||
| 						placeholder="请选择成本名称"> | ||||
| 						<el-option | ||||
| 							v-for="item in nameArr" | ||||
| 							:key="item.name" | ||||
| 							:label="item.label" | ||||
| 							:value="item.name"></el-option> | ||||
| 					</el-select> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="成本金额" prop="price"> | ||||
| 					<el-input-number | ||||
| 						:min="0" | ||||
| 						style="width: 80%" | ||||
| 						v-model="dataForm.price" | ||||
| 						clearable | ||||
| 						placeholder="请输入成本金额" /> | ||||
| 					(元) | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 		</el-row> | ||||
| 		<el-row :gutter="20"> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="所属日期" prop="recTime"> | ||||
| 					<el-date-picker | ||||
| 						v-model="dataForm.recTime" | ||||
| 						type="date" | ||||
| 						value-format="timestamp" | ||||
| 						:style="{ width: '100%' }" | ||||
| 						placeholder="选择所属日期"></el-date-picker> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="备注" prop="remark"> | ||||
| 					<el-input | ||||
| 						v-model="dataForm.remark" | ||||
| 						clearable | ||||
| 						placeholder="请输入备注" /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 		</el-row> | ||||
| 	</el-form> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import basicAdd from '@/mixins/basic-add'; | ||||
| import { | ||||
| 	createRawOthercostLog, | ||||
| 	updateRawOthercostLog, | ||||
| 	getRawOthercostLog, | ||||
| } from '@/api/cost/costOthercostLogDeep'; | ||||
| import moment from 'moment'; | ||||
|  | ||||
| const nowData = moment().format('YYYY-MM-DD').valueOf() | ||||
| export default { | ||||
| 	mixins: [basicAdd], | ||||
| 	props: { | ||||
| 		nameArr: { | ||||
| 			type: Array, | ||||
| 			default: () => [], | ||||
| 		}, | ||||
| 	}, | ||||
| 	data() { | ||||
| 		return { | ||||
| 			urlOptions: { | ||||
| 				createURL: createRawOthercostLog, | ||||
| 				updateURL: updateRawOthercostLog, | ||||
| 				infoURL: getRawOthercostLog, | ||||
| 			}, | ||||
| 			dataForm: { | ||||
| 				id: undefined, | ||||
| 				price: undefined, | ||||
| 				name: undefined, | ||||
| 				recTime: new Date().getTime(), | ||||
| 				remark: undefined, | ||||
| 			}, | ||||
| 			dataRule: { | ||||
| 				price: [ | ||||
| 					{ required: true, message: '成本金额不能为空', trigger: 'blur' }, | ||||
| 				], | ||||
| 				name: [ | ||||
| 					{ required: true, message: '	成本名称不能为空', trigger: 'blur' }, | ||||
| 				], | ||||
| 				recTime: [ | ||||
| 					{ | ||||
| 						required: true, | ||||
| 						message: '所属日期不能为空', | ||||
| 						trigger: 'change', | ||||
| 					}, | ||||
| 				], | ||||
| 			}, | ||||
| 		}; | ||||
| 	}, | ||||
| 	methods: { | ||||
|     setLabel(val){ | ||||
|       this.dataForm.label = this.nameArr.find(item=>item.name===val).label | ||||
|     } | ||||
|   }, | ||||
| }; | ||||
| </script> | ||||
							
								
								
									
										224
									
								
								src/views/cost/deep/costDeepOthercostLog/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,224 @@ | ||||
| <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" | ||||
| 			:max-height="tableH" | ||||
| 			:table-data="tableData"> | ||||
| 			<method-btn | ||||
| 				v-if="tableBtn.length" | ||||
| 				slot="handleBtn" | ||||
| 				:width="120" | ||||
| 				label="操作" | ||||
| 				:method-list="tableBtn" | ||||
| 				@clickBtn="handleClick" /> | ||||
| 		</base-table> | ||||
| 		<pagination | ||||
| 			:limit.sync="listQuery.pageSize" | ||||
| 			:page.sync="listQuery.pageNo" | ||||
| 			:total="listQuery.total" | ||||
| 			@pagination="getDataList" /> | ||||
| 		<base-dialog | ||||
| 			:dialogTitle="addOrEditTitle" | ||||
| 			:dialogVisible="addOrUpdateVisible" | ||||
| 			@cancel="handleCancel" | ||||
| 			@confirm="handleConfirm" | ||||
| 			:before-close="handleCancel" | ||||
| 			width="50%"> | ||||
| 			<add-or-update | ||||
| 				ref="addOrUpdate" | ||||
| 				:name-arr="formConfig[0].selectOptions" | ||||
| 				@refreshDataList="successSubmit"></add-or-update> | ||||
| 		</base-dialog> | ||||
| 	</div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import AddOrUpdate from './add-or-updata'; | ||||
| import basicPage from '@/mixins/basic-page'; | ||||
| import tableHeightMixin from '@/mixins/lb/tableHeightMixin'; | ||||
| import { parseTime } from '@/filter/code-filter'; | ||||
| import { | ||||
| 	deleteRawOthercostLog, | ||||
| 	getRawOthercostLogPage, | ||||
| 	exportRawOthercostLogExcel, | ||||
| } from '@/api/cost/costOthercostLogDeep'; | ||||
| import { getRawOthercostRulePage } from '@/api/cost/deepOthercostRule'; | ||||
|  | ||||
| const tableProps = [ | ||||
| 	{ | ||||
| 		prop: 'otherCostName', | ||||
| 		label: '成本名称', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'recTime', | ||||
| 		label: '日期', | ||||
| 		filter: (val) => parseTime(val, '{y}年{m}月{d}日'), | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'price', | ||||
| 		label: '成本金额', | ||||
| 		align: 'right', | ||||
|     filter: (val) => (val != null ? Number(val).toFixed(2) : '-'), | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'remark', | ||||
| 		label: '备注', | ||||
| 	}, | ||||
| ]; | ||||
|  | ||||
| export default { | ||||
| 	mixins: [basicPage, tableHeightMixin], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			urlOptions: { | ||||
| 				getDataListURL: getRawOthercostLogPage, | ||||
| 				deleteURL: deleteRawOthercostLog, | ||||
| 				exportURL: exportRawOthercostLogExcel, | ||||
| 			}, | ||||
| 			tableProps, | ||||
| 			tableBtn: [{ | ||||
| 							type: 'edit', | ||||
| 							btnName: '编辑', | ||||
| 					  },{ | ||||
| 							type: 'delete', | ||||
| 							btnName: '删除', | ||||
| 					  } | ||||
| 			].filter((v) => v), | ||||
| 			tableData: [], | ||||
| 			formConfig: [ | ||||
| 				{ | ||||
| 					type: 'select', | ||||
| 					label: '成本名称', | ||||
| 					selectOptions: [], | ||||
| 					param: 'name', | ||||
| 					labelField: 'label', | ||||
| 					valueField: 'name', | ||||
| 					filterable: true, | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'datePicker', | ||||
| 					label: '时间范围', | ||||
| 					dateType: 'daterange', | ||||
| 					format: 'yyyy-MM-dd', | ||||
| 					valueFormat: 'yyyy-MM-dd HH:mm:ss', | ||||
| 					rangeSeparator: '-', | ||||
| 					startPlaceholder: '开始时间', | ||||
| 					endPlaceholder: '结束时间', | ||||
| 					param: 'searchTime', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					btnName: '搜索', | ||||
| 					name: 'search', | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('monitoring:cost-deep-othercost-log:create') | ||||
| 						? 'separate' | ||||
| 						: '', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('monitoring:cost-deep-othercost-log:create') | ||||
| 						? 'button' | ||||
| 						: '', | ||||
| 					btnName: '新增', | ||||
| 					name: 'add', | ||||
| 					color: 'success', | ||||
| 					plain: true, | ||||
| 				}, | ||||
| 				// { | ||||
| 				// 	type: this.$auth.hasPermi('monitoring:cost-othercost-log:create') ? 'separate' : '', | ||||
| 				// }, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					btnName: '导出', | ||||
| 					name: 'export', | ||||
| 					color: 'warning', | ||||
| 				}, | ||||
| 			], | ||||
| 		}; | ||||
| 	}, | ||||
| 	components: { | ||||
| 		AddOrUpdate, | ||||
| 	}, | ||||
| 	created() { | ||||
| 		const params = { | ||||
| 			pageNo: 1, | ||||
| 			pageSize: 100, | ||||
| 		}; | ||||
| 		getRawOthercostRulePage(params).then((response) => { | ||||
| 			this.formConfig[0].selectOptions = response.data.list; | ||||
| 		}); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		buttonClick(val) { | ||||
| 			switch (val.btnName) { | ||||
| 				case 'search': | ||||
| 					this.listQuery.pageNo = 1; | ||||
| 					this.listQuery.pageSize = 20; | ||||
| 					this.listQuery.name = val.name||null; | ||||
| 					this.listQuery.startTime = val.searchTime ? val.searchTime[0] : null; | ||||
| 					this.listQuery.endTime = val.searchTime | ||||
| 						? val.searchTime[1].substr(0, 10) + ' 23:59:59' | ||||
| 						: null; | ||||
| 					this.getDataList(); | ||||
| 					break; | ||||
| 				case 'add': | ||||
| 					this.addOrUpdateHandle(); | ||||
| 					break; | ||||
| 				case 'export': | ||||
| 					this.listQuery.pageNo = 1; | ||||
| 					this.listQuery.pageSize = 20; | ||||
| 					this.listQuery.name = val.name||null; | ||||
| 					this.listQuery.startTime = val.searchTime ? val.searchTime[0] : null; | ||||
| 					this.listQuery.endTime = val.searchTime | ||||
| 						? val.searchTime[1].substr(0, 10) + ' 23:59:59' | ||||
| 						: null; | ||||
| 					this.handleExport(); | ||||
| 					break; | ||||
| 				default: | ||||
| 					console.log(val); | ||||
| 			} | ||||
| 		}, | ||||
|     //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.otherCostName, val.data._pageIndex) | ||||
|       } else { | ||||
|         this.otherMethods(val) | ||||
|       } | ||||
|     }, | ||||
| 		/** 导出按钮操作 */ | ||||
| 		handleExport() { | ||||
| 			let title; | ||||
|       title = '深加工其它成本-成本记录'; | ||||
| 			// 处理查询参数 | ||||
| 			let params = { ...this.listQuery }; | ||||
| 			params.pageNo = undefined; | ||||
| 			params.pageSize = undefined; | ||||
| 			this.$modal | ||||
| 				.confirm('是否确认导出所有数据项?') | ||||
| 				.then(() => { | ||||
| 					return this.urlOptions.exportURL(params); | ||||
| 				}) | ||||
| 				.then((response) => { | ||||
| 					this.$download.excel(response, title + '报表.xls'); | ||||
| 				}) | ||||
| 				.catch(() => {}); | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
							
								
								
									
										159
									
								
								src/views/cost/deep/costDeepOthercostRule/add-or-updata.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,159 @@ | ||||
| <!-- | ||||
|  * @Author: zwq | ||||
|  * @Date: 2023-08-01 13:52:10 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-09-03 14:52:51 | ||||
|  * @Description: | ||||
| --> | ||||
| <template> | ||||
| 	<el-form | ||||
| 		:model="dataForm" | ||||
| 		:rules="dataRule" | ||||
| 		ref="dataForm" | ||||
| 		v-if="visible" | ||||
| 		@keyup.enter.native="dataFormSubmit()" | ||||
| 		label-width="100px" | ||||
| 		label-position="top"> | ||||
| 		<el-row :gutter="20"> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="成本名称" prop="label"> | ||||
| 					<el-input v-model="dataForm.label" clearable disabled /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="自动计算策略" prop="type"> | ||||
| 					<el-radio-group v-model="dataForm.type" @input="setType"> | ||||
| 						<el-radio :label="1">每天等价</el-radio> | ||||
| 						<el-radio :label="2">折旧</el-radio> | ||||
| 					</el-radio-group> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12" v-if="dataForm.type === 1" key="one"> | ||||
| 				<el-form-item label="价格" prop="price"> | ||||
| 					<el-input-number | ||||
| 						:min="0" | ||||
| 						style="width: 80%" | ||||
| 						v-model="dataForm.price" | ||||
| 						clearable /> | ||||
| 					(元) | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12" v-if="dataForm.type === 2" key="two"> | ||||
| 				<el-form-item label="总价" prop="price"> | ||||
| 					<el-input-number | ||||
| 						:min="0" | ||||
| 						style="width: 80%" | ||||
| 						v-model="dataForm.price" | ||||
| 						clearable /> | ||||
| 					(元) | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12" v-if="dataForm.type === 2" key="three"> | ||||
| 				<el-form-item label="年折旧率" prop="ratio"> | ||||
| 					<el-input-number | ||||
| 						:min="0" | ||||
| 						style="width: 80%" | ||||
| 						v-model="dataForm.ratio" | ||||
| 						clearable /> | ||||
| 					(%) | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12" v-if="dataForm.type === 2" key="four"> | ||||
| 				<el-form-item label="折旧年限" prop="timeLimit"> | ||||
| 					<el-input-number | ||||
| 						:min="0" | ||||
| 						style="width: 80%" | ||||
| 						v-model="dataForm.timeLimit" | ||||
| 						clearable /> | ||||
| 					(年) | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="备注" prop="remark"> | ||||
| 					<el-input | ||||
| 						@input="$forceUpdate()" | ||||
| 						v-model="dataForm.remark" | ||||
| 						clearable | ||||
| 						placeholder="请输入备注" /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 		</el-row> | ||||
| 	</el-form> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import { | ||||
| 	updateRawOthercostRule, | ||||
| 	getRawOthercostRule, | ||||
| } from '@/api/cost/deepOthercostRule'; | ||||
|  | ||||
| export default { | ||||
| 	data() { | ||||
| 		return { | ||||
| 			urlOptions: { | ||||
| 				updateURL: updateRawOthercostRule, | ||||
| 				infoURL: getRawOthercostRule, | ||||
| 			}, | ||||
| 			dataForm: { | ||||
| 				label: undefined, | ||||
| 				type: 1, | ||||
| 				price: 0, | ||||
| 				ratio: 0, | ||||
| 				timeLimit: 1, | ||||
| 				remark: '', | ||||
| 			}, | ||||
| 			visible: false, | ||||
| 			dataRule: { | ||||
| 				price: [{ required: true, message: '价格不能为空', trigger: 'blur' }], | ||||
| 				ratio: [{ required: true, message: '折旧率不能为空', trigger: 'blur' }], | ||||
| 				timeLimit: [ | ||||
| 					{ required: true, message: '折旧年限不能为空', trigger: 'blur' }, | ||||
| 				], | ||||
| 			}, | ||||
| 		}; | ||||
| 	}, | ||||
| 	created() {}, | ||||
| 	methods: { | ||||
| 		init(val) { | ||||
| 			this.dataForm = { | ||||
| 				label: undefined, | ||||
| 				type: 1, | ||||
| 				price: 0, | ||||
| 				ratio: 0, | ||||
| 				timeLimit: 1, | ||||
| 				remark: '', | ||||
| 			}; | ||||
| 			this.visible = true; | ||||
| 			this.$nextTick(() => { | ||||
| 				this.$refs['dataForm'].resetFields(); | ||||
| 				this.dataForm = JSON.parse(JSON.stringify(val)); | ||||
| 			}); | ||||
| 		}, | ||||
| 		setType(val) { | ||||
| 			if (val === 1) { | ||||
| 			} else { | ||||
| 			} | ||||
| 		}, | ||||
| 		// 表单提交 | ||||
| 		dataFormSubmit() { | ||||
| 			this.$refs['dataForm'].validate((valid) => { | ||||
| 				if (!valid) { | ||||
| 					return false; | ||||
| 				} | ||||
| 				// 修改的提交 | ||||
| 				this.urlOptions.updateURL(this.dataForm).then((response) => { | ||||
| 					this.$modal.msgSuccess('修改成功'); | ||||
| 					this.visible = false; | ||||
| 					this.$emit('refreshDataList'); | ||||
| 				}); | ||||
| 			}); | ||||
| 		}, | ||||
| 		/** 清空form */ | ||||
| 		formClear() { | ||||
| 			if (this.$refs.dataForm !== undefined) { | ||||
| 				this.$refs.dataForm.resetFields(); | ||||
| 			} | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
							
								
								
									
										106
									
								
								src/views/cost/deep/costDeepOthercostRule/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,106 @@ | ||||
| <!-- | ||||
|  * @Author: zwq | ||||
|  * @Date: 2024-04-15 16:52:38 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-09-11 15:30:41 | ||||
|  * @Description: | ||||
| --> | ||||
| <template> | ||||
| 	<div class="app-container"> | ||||
| 		<!-- 列表 --> | ||||
| 		<base-table | ||||
| 			v-loading="dataListLoading" | ||||
| 			:table-props="tableProps" | ||||
| 			:page="listQuery.pageNo" | ||||
| 			:limit="listQuery.pageSize" | ||||
| 			:max-height="tableH" | ||||
| 			:table-data="tableData"> | ||||
| 			<method-btn | ||||
| 				v-if="tableBtn.length" | ||||
| 				slot="handleBtn" | ||||
| 				:width="80" | ||||
| 				label="操作" | ||||
| 				:method-list="tableBtn" | ||||
| 				@clickBtn="handleClick" /> | ||||
| 		</base-table> | ||||
| 		<pagination | ||||
| 			:limit.sync="listQuery.pageSize" | ||||
| 			:page.sync="listQuery.pageNo" | ||||
| 			:total="listQuery.total" | ||||
| 			@pagination="getDataList" /> | ||||
|  | ||||
| 		<!-- 对话框(添加 / 修改) --> | ||||
| 		<base-dialog | ||||
| 			:dialogTitle="addOrEditTitle" | ||||
| 			:dialogVisible="addOrUpdateVisible" | ||||
| 			@cancel="handleCancel" | ||||
| 			@confirm="handleConfirm" | ||||
| 			:before-close="handleCancel" | ||||
| 			width="40%"> | ||||
| 			<add-or-update | ||||
| 				ref="addOrUpdate" | ||||
| 				@refreshDataList="successSubmit"></add-or-update> | ||||
| 		</base-dialog> | ||||
| 	</div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import AddOrUpdate from './add-or-updata'; | ||||
| import basicPage from '@/mixins/basic-page'; | ||||
| import typeRule from './typeRule'; | ||||
| import { | ||||
| 	getRawOthercostRulePage, | ||||
| } from '@/api/cost/deepOthercostRule'; | ||||
| import tableHeightMixin from '@/mixins/lb/tableHeightMixin'; | ||||
|  | ||||
| const tableProps = [ | ||||
| 	{ | ||||
| 		prop: 'label', | ||||
| 		label: '成本名称', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'type', | ||||
| 		label: '自动计算方式', | ||||
| 		subcomponent: typeRule, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'remark', | ||||
| 		label: '备注', | ||||
| 	}, | ||||
| ]; | ||||
|  | ||||
| export default { | ||||
| 	mixins: [basicPage,tableHeightMixin], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			urlOptions: { | ||||
| 				getDataListURL: getRawOthercostRulePage, | ||||
| 			}, | ||||
| 			tableProps, | ||||
| 			tableBtn: [{ | ||||
| 							type: 'edit', | ||||
| 							btnName: '编辑', | ||||
| 					  } | ||||
| 			].filter((v) => v), | ||||
| 			tableData: [], | ||||
| 		}; | ||||
| 	}, | ||||
| 	components: { | ||||
| 		AddOrUpdate, | ||||
| 	}, | ||||
| 	created() { | ||||
| 	}, | ||||
| 	methods: { | ||||
|     //tableBtn点击 | ||||
|     handleClick(val) { | ||||
|       if (val.type === "edit") { | ||||
|         this.addOrUpdateVisible = true; | ||||
|         this.addOrEditTitle = "编辑"; | ||||
|         this.$nextTick(() => { | ||||
|           this.$refs.addOrUpdate.init(val.data); | ||||
|         }); | ||||
|       } | ||||
|     }, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
							
								
								
									
										31
									
								
								src/views/cost/deep/costDeepOthercostRule/typeRule.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,31 @@ | ||||
| <!-- | ||||
|  * @Author: zwq | ||||
|  * @Date: 2023-12-05 13:45:59 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-04-15 17:12:03 | ||||
|  * @Description | ||||
| --> | ||||
| <template> | ||||
| 	<div> | ||||
| 		<span> | ||||
| 			{{ | ||||
| 				injectData.type == 1 | ||||
| 					? `每天等价,${Number(injectData.price)}元` | ||||
| 					: injectData.type == 2 | ||||
| 					? `总价${Number(injectData.price)}元,年折旧率${injectData.ratio}%,折旧年限${injectData.timeLimit}年` | ||||
| 					: '-' | ||||
| 			}} | ||||
| 		</span> | ||||
| 	</div> | ||||
| </template> | ||||
| <script> | ||||
| export default { | ||||
| 	name: '', | ||||
| 	props: { | ||||
| 		injectData: { | ||||
| 			type: Object, | ||||
| 			default: () => ({}), | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
							
								
								
									
										132
									
								
								src/views/cost/deep/costDeepRatioHis/add-or-updata.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,132 @@ | ||||
| <!-- | ||||
|  * @Author: zwq | ||||
|  * @Date: 2021-11-18 14:16:25 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-09-05 15:35:29 | ||||
|  * @Description: | ||||
| --> | ||||
| <template> | ||||
| 	<el-form | ||||
| 		:model="dataForm" | ||||
| 		:rules="dataRule" | ||||
| 		ref="dataForm" | ||||
| 		@keyup.enter.native="dataFormSubmit()" | ||||
| 		label-position="top" | ||||
| 		label-width="80px"> | ||||
| 		<el-row :gutter="20"> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="产线" prop="productionLineName"> | ||||
| 					<el-input | ||||
| 						style="width: 100%" | ||||
| 						v-model="dataForm.productionLineName" | ||||
| 						disabled /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12" v-if="activeName==='now'"> | ||||
| 				<el-form-item label="工段" prop="workshopSectionName"> | ||||
| 					<el-input | ||||
| 						style="width: 100%" | ||||
| 						v-model="dataForm.workshopSectionName" | ||||
| 						readonly /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item :label="activeName==='his'?'上片数量':'进片数量'" prop="innum"> | ||||
| 					<el-input-number | ||||
| 						:min="0" | ||||
| 						style="width: 90%" | ||||
| 						v-model="dataForm.innum" | ||||
| 						clearable | ||||
| 						placeholder="请输入数量" /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item :label="activeName==='his'?'下片数量':'出片数量'" prop="outnum"> | ||||
| 					<el-input-number | ||||
| 						:min="0" | ||||
| 						style="width: 90%" | ||||
| 						v-model="dataForm.outnum" | ||||
| 						clearable | ||||
| 						placeholder="请输入数量" /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="良品率" prop="ratio"> | ||||
| 					<el-input-number | ||||
| 						:min="0" | ||||
| 						style="width: 90%" | ||||
| 						v-model="dataForm.ratio" | ||||
| 						clearable | ||||
| 						placeholder="请输入良品率" /> | ||||
| 					(%) | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 		</el-row> | ||||
| 	</el-form> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import basicAdd from '@/mixins/basic-add'; | ||||
| import { updateDeepRatioHis } from '@/api/cost/costDeepRatioHis'; | ||||
|  | ||||
| export default { | ||||
| 	mixins: [basicAdd], | ||||
| 	props: { | ||||
| 		nameArr: { | ||||
| 			type: Array, | ||||
| 			default: () => [], | ||||
| 		}, | ||||
| 	}, | ||||
| 	data() { | ||||
| 		return { | ||||
| 			urlOptions: { | ||||
| 				updateURL: updateDeepRatioHis, | ||||
| 			}, | ||||
| 			dataForm: { | ||||
| 				id: undefined, | ||||
| 				productionLineName: undefined, | ||||
| 				innum: undefined, | ||||
| 				outnum: undefined, | ||||
| 				ratio: undefined, | ||||
| 			}, | ||||
| 			dataRule: {}, | ||||
|       activeName: 'his' | ||||
| 		}; | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		init(val, statisticType, activeName) { | ||||
|       this.activeName = activeName | ||||
| 			this.visible = true; | ||||
| 			this.$nextTick(() => { | ||||
| 				this.$refs['dataForm'].resetFields(); | ||||
| 				this.dataForm = JSON.parse(JSON.stringify(val)); | ||||
| 				this.dataForm.statisticType = statisticType; | ||||
| 				this.dataForm.ratio = | ||||
| 					this.dataForm.ratio >= 0 ? this.dataForm.ratio * 100 : ''; | ||||
| 			}); | ||||
| 		}, | ||||
| 		// 表单提交 | ||||
| 		dataFormSubmit() { | ||||
| 			this.$refs['dataForm'].validate((valid) => { | ||||
| 				if (!valid) { | ||||
| 					return false; | ||||
| 				} | ||||
| 				const udata = { | ||||
| 					id: this.dataForm.id, | ||||
| 					statisticType: this.dataForm.statisticType, | ||||
| 					modifyInnum: this.dataForm.innum, | ||||
| 					modifyOutnum: this.dataForm.outnum, | ||||
| 					modifyRatio: | ||||
| 						this.dataForm.ratio >= 0 ? this.dataForm.ratio / 100 : '', | ||||
| 				}; | ||||
| 				// 修改的提交 | ||||
| 				this.urlOptions.updateURL(udata).then((response) => { | ||||
| 					this.$modal.msgSuccess('修改成功'); | ||||
| 					this.visible = false; | ||||
| 					this.$emit('refreshDataList'); | ||||
| 				}); | ||||
| 			}); | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
							
								
								
									
										395
									
								
								src/views/cost/deep/costDeepRatioHis/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,395 @@ | ||||
| <template> | ||||
| 	<div> | ||||
| 		<div style="background: #f2f4f9; height: 40px; width: 100%"> | ||||
| 			<ButtonNav :menus="['产线良品率', '工段良品率']" @change="currentMenu"> | ||||
| 				<template v-slot:tab1> | ||||
| 					<div>产线良品率</div> | ||||
| 				</template> | ||||
| 				<template v-slot:tab2> | ||||
| 					<div>工段良品率</div> | ||||
| 				</template> | ||||
| 			</ButtonNav> | ||||
| 		</div> | ||||
| 		<div class="app-container energyOverlimitLog"> | ||||
| 			<search-bar | ||||
| 				:formConfigs="formConfig" | ||||
| 				ref="searchBarForm" | ||||
| 				@headBtnClick="buttonClick" /> | ||||
| 			<!-- 列表 --> | ||||
| 			<div v-if="activeName === 'his'"> | ||||
| 				<base-table | ||||
| 					:page="listQuery.pageNo" | ||||
| 					:limit="listQuery.pageSize" | ||||
| 					:table-props="tableProps" | ||||
| 					:table-data="tableData" | ||||
| 					:max-height="tableH"> | ||||
| 					<method-btn | ||||
| 						v-if="tableBtn.length" | ||||
| 						slot="handleBtn" | ||||
| 						:width="80" | ||||
| 						label="操作" | ||||
| 						:method-list="tableBtn" | ||||
| 						@clickBtn="handleClick" /> | ||||
| 				</base-table> | ||||
| 			</div> | ||||
| 			<div v-if="activeName === 'now'"> | ||||
| 				<base-table | ||||
| 					:page="listQuery.pageNo" | ||||
| 					:limit="listQuery.pageSize" | ||||
| 					:table-props="tableProps2" | ||||
| 					:table-data="tableData2" | ||||
| 					:max-height="tableH"> | ||||
| 					<method-btn | ||||
| 						v-if="tableBtn.length" | ||||
| 						slot="handleBtn" | ||||
| 						:width="80" | ||||
| 						label="操作" | ||||
| 						:method-list="tableBtn" | ||||
| 						@clickBtn="handleClick" /> | ||||
| 				</base-table> | ||||
| 			</div> | ||||
| 			<pagination | ||||
| 				:page.sync="listQuery.pageNo" | ||||
| 				:limit.sync="listQuery.pageSize" | ||||
| 				:total="listQuery.total" | ||||
| 				@pagination="getNavDataList" /> | ||||
| 			<base-dialog | ||||
| 				:dialogTitle="addOrEditTitle" | ||||
| 				:dialogVisible="addOrUpdateVisible" | ||||
| 				@cancel="handleCancel" | ||||
| 				@confirm="handleConfirm" | ||||
| 				:before-close="handleCancel" | ||||
| 				width="50%"> | ||||
| 				<add-or-update | ||||
| 					ref="addOrUpdate" | ||||
| 					:name-arr="formConfig[1].selectOptions" | ||||
| 					@refreshDataList="successSubmit"></add-or-update> | ||||
| 			</base-dialog> | ||||
| 		</div> | ||||
| 	</div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import AddOrUpdate from './add-or-updata'; | ||||
| import basicPage from '@/mixins/basic-page'; | ||||
| import { getLinePage } from '@/api/base/productionLine'; | ||||
| import { | ||||
| 	getDeepPDRatioHisPage, | ||||
| 	getDeepWSRatioHisPage, | ||||
| 	exportDeepWSRatioHisExcel, | ||||
| 	exportDeepPDRatioHisExcel, | ||||
| } from '@/api/cost/costDeepRatioHis'; | ||||
| import { parseTime } from '@/filter/code-filter'; | ||||
| import tableHeightMixin from '@/mixins/lb/tableHeightMixin'; | ||||
| import ButtonNav from '@/components/ButtonNav'; | ||||
|  | ||||
| const tableProps = [ | ||||
| 	{ | ||||
| 		prop: 'time', | ||||
| 		label: '日期', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'remark', | ||||
| 		label: '备注', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'productionLineName', | ||||
| 		label: '产线', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'spec', | ||||
| 		label: '规格', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'innum', | ||||
| 		label: '上片数量', | ||||
|     filter: (val) => (val != null ? Number(val).toFixed(2) : '-'), | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'outnum', | ||||
| 		label: '下片数量', | ||||
|     filter: (val) => (val != null ? Number(val).toFixed(2) : '-'), | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'ratio', | ||||
| 		label: '良品率', | ||||
| 		filter: (val) => (val ? Number(val * 100).toFixed(2) + '%' : '-'), | ||||
| 	}, | ||||
| ]; | ||||
| const tableProps2 = [ | ||||
| 	{ | ||||
| 		prop: 'time', | ||||
| 		label: '日期', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'remark', | ||||
| 		label: '备注', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'productionLineName', | ||||
| 		label: '产线', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'workshopSectionName', | ||||
| 		label: '工段', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'innum', | ||||
| 		label: '进片数量', | ||||
|     filter: (val) => (val != null ? Number(val).toFixed(2) : '-'), | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'outnum', | ||||
| 		label: '出片数量', | ||||
|     filter: (val) => (val != null ? Number(val).toFixed(2) : '-'), | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'ratio', | ||||
| 		label: '良品率', | ||||
| 		filter: (val) => (val ? Number(val * 100).toFixed(2) + '%' : '-'), | ||||
| 	}, | ||||
| ]; | ||||
| export default { | ||||
| 	name: 'costDeepRatioHis', | ||||
| 	mixins: [basicPage, tableHeightMixin], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			urlOptions: { | ||||
| 				getDataListURL: getDeepPDRatioHisPage, | ||||
| 			}, | ||||
| 			formConfig: [ | ||||
| 				{ | ||||
| 					type: 'select', | ||||
| 					label: '维度', | ||||
| 					selectOptions: [ | ||||
| 						{ id: 1, name: '日' }, | ||||
| 						{ id: 2, name: '周' }, | ||||
| 						{ id: 3, name: '月' }, | ||||
| 					], | ||||
| 					param: 'statisticType', | ||||
| 					defaultSelect: 1, // 默认值, | ||||
| 					clearable: false, | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'select', | ||||
| 					label: '产线', | ||||
| 					selectOptions: [], | ||||
| 					param: 'name', | ||||
| 					filterable: true, | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'datePicker', | ||||
| 					label: '时间范围', | ||||
| 					dateType: 'datetimerange', | ||||
| 					format: 'yyyy-MM-dd HH:mm:ss', | ||||
| 					valueFormat: 'yyyy-MM-dd HH:mm:ss', | ||||
| 					rangeSeparator: '-', | ||||
| 					startPlaceholder: '开始时间', | ||||
| 					endPlaceholder: '结束时间', | ||||
| 					defaultTime: ['08:30:00', '08:30:00'], | ||||
| 					param: 'searchTime', | ||||
| 					width: 350, | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					btnName: '查询', | ||||
| 					name: 'search', | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'separate', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					btnName: '导出', | ||||
| 					name: 'export', | ||||
| 					color: 'warning', | ||||
| 				}, | ||||
| 			], | ||||
| 			listQuery: { | ||||
| 				statisticType: 1, | ||||
| 			}, | ||||
| 			activeName: 'his', | ||||
| 			tableProps, | ||||
| 			tableProps2, | ||||
| 			tableBtn: [{ | ||||
| 							type: 'edit', | ||||
| 							btnName: '编辑', | ||||
| 					  } | ||||
| 			].filter((v) => v), | ||||
| 			tableData: [], | ||||
| 			tableData2: [], | ||||
| 		}; | ||||
| 	}, | ||||
| 	components: { | ||||
| 		AddOrUpdate, | ||||
| 		ButtonNav, | ||||
| 	}, | ||||
| 	created() { | ||||
|     const params ={ | ||||
|       pageNo: 1, | ||||
|       pageSize: 100, | ||||
|       pdType: 0 | ||||
|     } | ||||
| 		getLinePage(params).then((response) => { | ||||
| 			this.formConfig[1].selectOptions = response.data.list; | ||||
| 		}); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		buttonClick(val) { | ||||
| 			switch (val.btnName) { | ||||
| 				case 'search': | ||||
| 					this.listQuery.pageNo = 1; | ||||
| 					this.listQuery.pageSize = 20; | ||||
| 					this.listQuery.productionLineId = val.name || null; | ||||
| 					this.listQuery.statisticType = val.statisticType || 1; | ||||
| 					this.listQuery.startTime = val.searchTime ? val.searchTime[0] : null; | ||||
| 					this.listQuery.endTime = val.searchTime | ||||
| 						? val.searchTime[1] | ||||
| 						: null; | ||||
| 					if (this.activeName === 'his') { | ||||
| 						this.getDataList(); | ||||
| 					} else { | ||||
| 						this.getDataList2(); | ||||
| 					} | ||||
| 					break; | ||||
| 				case 'add': | ||||
| 					this.addOrUpdateHandle(); | ||||
| 					break; | ||||
| 				case 'export': | ||||
| 					this.listQuery.pageNo = 1; | ||||
| 					this.listQuery.pageSize = 20; | ||||
| 					this.listQuery.productionLineId = val.name || null; | ||||
| 					this.listQuery.statisticType = val.statisticType || 1; | ||||
| 					this.listQuery.startTime = val.searchTime ? val.searchTime[0] : null; | ||||
| 					this.listQuery.endTime = val.searchTime | ||||
| 						? val.searchTime[1] | ||||
| 						: null; | ||||
| 					this.handleExport(); | ||||
| 					break; | ||||
| 				default: | ||||
| 					console.log(val); | ||||
| 			} | ||||
| 		}, | ||||
| 		currentMenu(val) { | ||||
| 			this.activeName = val === '产线良品率' ? 'his' : 'now'; | ||||
| 			if (this.activeName === 'his') { | ||||
| 				this.$refs.searchBarForm.resetForm(); | ||||
| 				this.listQuery.productionLineId = null; | ||||
| 				this.listQuery.startTime = null; | ||||
| 				this.listQuery.endTime = null; | ||||
| 				this.listQuery.statisticType = 1; | ||||
| 				this.listQuery.pageNo = 1; | ||||
| 				this.getDataList(); | ||||
| 			} else { | ||||
| 				this.$refs.searchBarForm.resetForm(); | ||||
| 				this.listQuery.productionLineId = null; | ||||
| 				this.listQuery.startTime = null; | ||||
| 				this.listQuery.endTime = null; | ||||
| 				this.listQuery.statisticType = 1; | ||||
| 				this.listQuery.pageNo = 1; | ||||
| 				this.getDataList2(); | ||||
| 			} | ||||
| 		}, | ||||
| 		// 获取数据2列表 | ||||
| 		getDataList2() { | ||||
| 			getDeepWSRatioHisPage(this.listQuery).then((response) => { | ||||
| 				this.tableData2 = response.data.list; | ||||
| 				this.listQuery.total = response.data.total; | ||||
| 			}); | ||||
| 		}, | ||||
| 		//tableBtn点击 | ||||
| 		handleClick(val) { | ||||
| 			if (val.type === 'edit') { | ||||
| 				this.addOrUpdateVisible = true; | ||||
| 				this.addOrEditTitle = '编辑'; | ||||
| 				this.$nextTick(() => { | ||||
| 					this.$refs.addOrUpdate.init( | ||||
| 						val.data, | ||||
| 						this.listQuery.statisticType, | ||||
| 						this.activeName | ||||
| 					); | ||||
| 				}); | ||||
| 			} else { | ||||
| 				this.otherMethods(val); | ||||
| 			} | ||||
| 		}, | ||||
|     getNavDataList(){ | ||||
| 			if (this.activeName === 'his') { | ||||
| 				this.getDataList(); | ||||
| 			} else { | ||||
| 				this.getDataList2(); | ||||
| 			} | ||||
|     }, | ||||
| 		successSubmit() { | ||||
| 			this.handleCancel(); | ||||
| 			if (this.activeName === 'his') { | ||||
| 				this.getDataList(); | ||||
| 			} else { | ||||
| 				this.getDataList2(); | ||||
| 			} | ||||
| 		}, | ||||
| 		/** 导出按钮操作 */ | ||||
| 		handleExport() { | ||||
| 			let exportURL, title; | ||||
| 			if (this.activeName === 'his') { | ||||
| 				exportURL = exportDeepPDRatioHisExcel; | ||||
| 				title = '深加工-产线良品率'; | ||||
| 			} else { | ||||
| 				exportURL = exportDeepWSRatioHisExcel; | ||||
| 				title = '深加工-工段良品率'; | ||||
| 			} | ||||
| 			// 处理查询参数 | ||||
| 			let params = { ...this.listQuery }; | ||||
| 			params.pageNo = undefined; | ||||
| 			params.pageSize = undefined; | ||||
| 			this.$modal | ||||
| 				.confirm('是否确认导出所有数据项?') | ||||
| 				.then(() => { | ||||
| 					return exportURL(params); | ||||
| 				}) | ||||
| 				.then((response) => { | ||||
| 					this.$download.excel(response, title + '报表.xls'); | ||||
| 				}) | ||||
| 				.catch(() => {}); | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
| <style lang="scss"> | ||||
| .energyOverlimitLog { | ||||
| 	.el-tabs__nav::after { | ||||
| 		content: ''; | ||||
| 		position: absolute; | ||||
| 		left: 0; | ||||
| 		bottom: 0; | ||||
| 		width: 100%; | ||||
| 		height: 2px; | ||||
| 		background-color: #e4e7ed; | ||||
| 	} | ||||
|  | ||||
| 	.el-tabs__nav-wrap::after { | ||||
| 		width: 0; | ||||
| 	} | ||||
|  | ||||
| 	.el-tabs__item { | ||||
| 		padding: 0 10px; | ||||
| 	} | ||||
|  | ||||
| 	.el-tabs__item:hover { | ||||
| 		color: rgba(0, 0, 0, 0.85); | ||||
| 	} | ||||
|  | ||||
| 	.el-tabs__item.is-active { | ||||
| 		color: rgba(0, 0, 0, 0.85); | ||||
| 	} | ||||
|  | ||||
| 	.el-tabs__item { | ||||
| 		color: rgba(0, 0, 0, 0.45); | ||||
| 	} | ||||
|  | ||||
| 	.searchBarBox { | ||||
| 		margin-bottom: 0; | ||||
| 	} | ||||
| } | ||||
| </style> | ||||
							
								
								
									
										160
									
								
								src/views/cost/deep/costStatistics/add-or-updata.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,160 @@ | ||||
| <!-- | ||||
|  * @Author: zwq | ||||
|  * @Date: 2021-11-18 14:16:25 | ||||
|  * @LastEditors: zwq | ||||
|  * @LastEditTime: 2024-09-02 15:54:20 | ||||
|  * @Description: | ||||
| --> | ||||
| <template> | ||||
| 	<el-form | ||||
| 		:model="dataForm" | ||||
| 		:rules="dataRule" | ||||
| 		ref="dataForm" | ||||
| 		@keyup.enter.native="dataFormSubmit()" | ||||
| 		label-position="top" | ||||
| 		label-width="80px"> | ||||
| 		<el-row :gutter="20"> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="产线" prop="bindObjectName"> | ||||
| 					<el-input | ||||
| 						v-model="dataForm.bindObjectName" | ||||
| 						disabled | ||||
| 						placeholder="产线" /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="上片数量" prop="inCount"> | ||||
| 					<el-input-number | ||||
| 						:min="0" | ||||
| 						style="width: 80%" | ||||
| 						v-model="dataForm.inCount" | ||||
| 						clearable | ||||
| 						placeholder="请输入上片数量" /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="下片数量" prop="outCount"> | ||||
| 					<el-input-number | ||||
| 						:min="0" | ||||
| 						style="width: 80%" | ||||
| 						v-model="dataForm.outCount" | ||||
| 						clearable | ||||
| 						placeholder="请输入下片数量" /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="良品率" prop="ratio"> | ||||
| 					<el-input-number | ||||
| 						:min="0" | ||||
| 						style="width: 80%" | ||||
| 						v-model="dataForm.ratio" | ||||
| 						clearable | ||||
| 						placeholder="请输入良品率" /> | ||||
|             (%) | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="深加工成本" prop="costSum"> | ||||
| 					<el-input-number | ||||
| 						:min="0" | ||||
| 						style="width: 80%" | ||||
| 						v-model="dataForm.costSum" | ||||
| 						clearable | ||||
| 						placeholder="请输入深加工成本" /> | ||||
| 					(元) | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="单片成本" prop="costPiece"> | ||||
| 					<el-input-number | ||||
| 						:min="0" | ||||
| 						style="width: 80%" | ||||
| 						v-model="dataForm.costPiece" | ||||
| 						clearable | ||||
| 						placeholder="请输入单片成本" /> | ||||
| 					(元) | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="每平米成本" prop="costArea"> | ||||
| 					<el-input-number | ||||
| 						:min="0" | ||||
| 						style="width: 80%" | ||||
| 						v-model="dataForm.costArea" | ||||
| 						clearable | ||||
| 						placeholder="请输入每平米成本" /> | ||||
| 					(元) | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 		</el-row> | ||||
| 	</el-form> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import basicAdd from '@/mixins/basic-add'; | ||||
| import { updateDeepCostStatistics } from '@/api/cost/deepCostStatistics'; | ||||
|  | ||||
| export default { | ||||
| 	mixins: [basicAdd], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			urlOptions: { | ||||
| 				updateURL: updateDeepCostStatistics, | ||||
| 			}, | ||||
| 			dataForm: { | ||||
| 				id: undefined, | ||||
| 				bindObjectName: undefined, | ||||
| 				inCount: undefined, | ||||
| 				ratio: undefined, | ||||
| 				costPiece: undefined, | ||||
| 				costArea: undefined, | ||||
| 				costSum: undefined, | ||||
| 				outCount: undefined, | ||||
| 			}, | ||||
| 			dataRule: { | ||||
| 				costSum: [ | ||||
| 					{ required: true, message: '深加工成本不能为空', trigger: 'blur' }, | ||||
| 				], | ||||
| 			}, | ||||
| 		}; | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		init(val, statisticType) { | ||||
| 			this.visible = true; | ||||
| 			this.$nextTick(() => { | ||||
| 				this.$refs['dataForm'].resetFields(); | ||||
| 				this.dataForm = JSON.parse(JSON.stringify(val)); | ||||
| 				this.dataForm.statisticType = statisticType; | ||||
| 				this.dataForm.ratio = | ||||
| 					this.dataForm.ratio >= 0 ? this.dataForm.ratio * 100 : ''; | ||||
| 			}); | ||||
| 		}, | ||||
| 		// 表单提交 | ||||
| 		dataFormSubmit() { | ||||
| 			this.$refs['dataForm'].validate((valid) => { | ||||
| 				if (!valid) { | ||||
| 					return false; | ||||
| 				} | ||||
| 				const data = { | ||||
| 					id: this.dataForm.id, | ||||
|           statisticType: this.dataForm.statisticType, | ||||
| 					bindObjectName: this.dataForm.bindObjectName, | ||||
| 					modifyInCount: this.dataForm.inCount, | ||||
| 					modifyRatio: | ||||
| 						this.dataForm.ratio >= 0 ? this.dataForm.ratio / 100 : '', | ||||
| 					modifyCostPiece: this.dataForm.costPiece, | ||||
| 					modifyCostArea: this.dataForm.costArea, | ||||
| 					modifyCostSum: this.dataForm.costSum, | ||||
| 					modifyOutCount: this.dataForm.outCount, | ||||
| 				}; | ||||
| 				// 修改的提交 | ||||
| 				this.urlOptions.updateURL(data).then((response) => { | ||||
| 					this.$modal.msgSuccess('修改成功'); | ||||
| 					this.visible = false; | ||||
| 					this.$emit('refreshDataList'); | ||||
| 				}); | ||||
| 			}); | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||