Compare commits
	
		
			219 Commits
		
	
	
		
			949675b3a2
			...
			projects/m
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| ab56bc354a | |||
| 1c7c10205e | |||
|  | 74003e9d89 | ||
|  | cb72e2b68a | ||
| 025b061ec2 | |||
|  | f2912eaee1 | ||
|  | 8025d00709 | ||
| 60edd8f2c4 | |||
| c0214c9eb7 | |||
| da85e5211a | |||
| 23afb0db0d | |||
| d0adf3a63e | |||
|  | b81c95f796 | ||
| e7f21456a3 | |||
|  | 1537b1be58 | ||
|  | b2304941a4 | ||
| 14b2a49053 | |||
|  | 6adac714f0 | ||
|  | 0349f3cde0 | ||
|  | 4cafa78908 | ||
| 61ef172534 | |||
|  | 19d913a49e | ||
|  | 70c3fd44d6 | ||
| 78d6f0bb23 | |||
|  | cf51eff0b7 | ||
|  | 539dddf217 | ||
|  | 317d01934b | ||
|  | cdfe5c9c1b | ||
| c1ea5157a5 | |||
| 41ceefc20e | |||
| 54425859b5 | |||
| a2a4f8dccd | |||
|  | fd3b054108 | ||
|  | dacae0cbd8 | ||
|  | be83c8196e | ||
|  | ef3f5d3fe7 | ||
|  | ec550f22ec | ||
|  | 60633ac581 | ||
|  | 9351b82d11 | ||
| 5e4227ba25 | |||
| 82f63dc4ff | |||
| 9a29185410 | |||
| 43e824f958 | |||
|  | de831b339f | ||
|  | f0105c377c | ||
| 3ba5574669 | |||
|  | 082988d6d7 | ||
|  | 7acb861919 | ||
| c41153a946 | |||
| 6d658d9212 | |||
| bf4bab2f3c | |||
| 20f0efa413 | |||
|  | c48f81b1d9 | ||
|  | 7233720c2e | ||
| 6a491ff498 | |||
|  | be607e4bf3 | ||
|  | 87ef42e277 | ||
| aa65a7e97e | |||
|  | b8d26c87d8 | ||
| b89f510e61 | |||
|  | 0e60f426bc | ||
|  | 21f4879394 | ||
| 067cd4765e | |||
| 3c4fe6daaa | |||
|  | e24f9c1079 | ||
|  | 61567ce86a | ||
| 2ee66714ca | |||
| ab5867c4fd | |||
| 9a53391999 | |||
| ec0c09a674 | |||
|  | 90e9b179eb | ||
|  | 8e2b332c7b | ||
| f37a12d2e1 | |||
| cb19872012 | |||
|  | 8ba79185d4 | ||
|  | 104cda5a41 | ||
|  | 151c5708c4 | ||
| 837735b7e8 | |||
|  | e00a08385f | ||
|  | a8c3d2c585 | ||
| eb097e77bd | |||
|  | 30eecb8bd1 | ||
|  | f4a6229170 | ||
| ab593bff20 | |||
| 4b01dd3ec3 | |||
| ed3ea7dde8 | |||
| 1d9e272f99 | |||
|  | 43c9153777 | ||
|  | c6d504583b | ||
|  | 22f3c87f02 | ||
|  | 1f54c9179d | ||
| f7247f5161 | |||
|  | c8856f34b5 | ||
|  | 42c42abc08 | ||
| 0fffed9b0e | |||
|  | d251daa3f5 | ||
|  | ed5120ca97 | ||
|  | becf34d089 | ||
| f0d64de77b | |||
| 56819176b3 | |||
| d302179f6f | |||
| 8c117fae8e | |||
|  | b6cf7b2ddc | ||
|  | 2f98b42bd2 | ||
| fb8ae9226a | |||
| 3d3763c4ef | |||
| ea675b9dea | |||
| bda065e4be | |||
|  | 5ea4c219ed | ||
|  | 16186667da | ||
|  | c7cd6e7b1e | ||
|  | 29c3a9fb72 | ||
|  | 1e1313d090 | ||
| d0eb1d84c8 | |||
|  | 445d8f4818 | ||
|  | 46ce982cfc | ||
| 391e06a382 | |||
| 72e1b4e8f9 | |||
| b41ba04cb4 | |||
|  | 4482ce0433 | ||
|  | ecf6745c8a | ||
| c9128ce946 | |||
| ba08175de8 | |||
|  | 22f8322baf | ||
|  | 6f8abc9758 | ||
| 59d53b60c7 | |||
| d448280782 | |||
| 0337b54202 | |||
|  | 9dec81e0b2 | ||
|  | 64de2c50b6 | ||
|  | bd0f9e24fd | ||
|  | f3043ee11f | ||
| 5584a47575 | |||
| b0078cb099 | |||
| e5acd497b5 | |||
| 6b452dce36 | |||
| aacf87f6d3 | |||
|  | bfa17e422d | ||
|  | e25f872589 | ||
| 83b834d2fc | |||
| 1b2c16fcdb | |||
| 475ec35ec5 | |||
| 1328da9616 | |||
| 92b9ec7da7 | |||
| c1af47db81 | |||
| 15afbcd612 | |||
|  | dabbc6b63a | ||
|  | cfab3353d3 | ||
|  | 2298fc56b6 | ||
| bb77d0f8c6 | |||
|  | e8938a62eb | ||
|  | 2a599d96b3 | ||
|  | 6050eb4df5 | ||
| 02c3b3db0d | |||
| 3308fcbef9 | |||
| cb7135bad5 | |||
| 4a56f92961 | |||
|  | 8f11c2f47c | ||
|  | b41dc9593c | ||
| 862fe20760 | |||
| 1ed409a98e | |||
| 68e738cf12 | |||
|  | 4866198a98 | ||
|  | 49df8a72bd | ||
|  | 087af452de | ||
|  | 63a753d7d6 | ||
| b1cdf083dd | |||
| 673ddcb996 | |||
| a9e60dbe82 | |||
|  | 92d197a513 | ||
|  | e7f440a142 | ||
| 5d3622bf62 | |||
| 5ccb9297e1 | |||
| ce528f18b6 | |||
|  | 024060182e | ||
|  | 4f111a95d6 | ||
| 8fc6b73179 | |||
| 7f504e5cdd | |||
| 7c5d8bde0b | |||
|  | 0b1761e83c | ||
|  | cafa156d72 | ||
| ed46ed7d09 | |||
|  | f89c6dfe14 | ||
|  | a3b2eae33f | ||
| e70ff40554 | |||
| d3d93acd0f | |||
| 93236f9828 | |||
|  | fef8824844 | ||
| a4fceeb981 | |||
| 84468cc883 | |||
| ea04d55fc1 | |||
| ef1078360a | |||
| 60f6c3a8fe | |||
| a4b340ac5d | |||
|  | 2592551e66 | ||
|  | 1fde96e677 | ||
| 0b16e1fe0d | |||
| abcec3bcdc | |||
| bdd14eec70 | |||
| 44e7e219a4 | |||
|  | ec51beb8ea | ||
|  | 433618e71d | ||
| 812b72f10d | |||
|  | 05f10ab51d | ||
|  | e7828fd277 | ||
| 58457487d1 | |||
|  | 6c54c223c5 | ||
|  | b2cc509f8e | ||
| b6236e89b1 | |||
| cbc7cbc574 | |||
| b5b952e1cc | |||
| 33ed9f15fa | |||
| c85c6e4323 | |||
| 30d22b34e1 | |||
| 3d3fa2ccee | |||
| f960ece594 | |||
| f52815abe6 | |||
|  | ac4cea0c7e | ||
|  | 93fea84c79 | 
| @@ -1,3 +1,3 @@ | ||||
| .dockerignore | ||||
| dist | ||||
| #dist | ||||
| node_modules | ||||
|   | ||||
							
								
								
									
										59
									
								
								.drone.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								.drone.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,59 @@ | ||||
| --- | ||||
| kind: pipeline | ||||
| type: docker | ||||
| name: default | ||||
|  | ||||
| steps: | ||||
| - name: build | ||||
|   image: node:16-alpine | ||||
|   pull: if_not_exists | ||||
|   environment: | ||||
|     NODE_ENV: "" | ||||
|   commands: | ||||
|   #- yarn install --frozen-lockfile | ||||
|   - yarn install  | ||||
|   - env ${NODE_ENV} yarn build:prod  | ||||
|  | ||||
| - name: publish | ||||
|   image: docker:dind | ||||
|   pull: if_not_exists | ||||
|   volumes: | ||||
|   - name: dockersock | ||||
|     path: /var/run/docker.sock | ||||
|   - name: dockerconfig | ||||
|     path: /root/.docker | ||||
|   commands: | ||||
|   - docker build -t hub.kszny.picaiba.com/kszny/xcac-ui ./ | ||||
|   - docker push hub.kszny.picaiba.com/kszny/xcac-ui | ||||
|   depends_on: | ||||
|   - build | ||||
|  | ||||
| - name: deploy | ||||
|   image: appleboy/drone-ssh | ||||
|   pull: if-not-exists | ||||
|   settings: | ||||
|     host: | ||||
|       - 172.24.145.74 | ||||
|     username: root | ||||
|     password: Root@123 | ||||
|     port: 22 | ||||
|     command_timeout: 2m | ||||
|     script: | ||||
|     - docker pull hub.kszny.picaiba.com/kszny/xcac-ui | ||||
|     - docker run --rm -v /data/www/xcac:/tmp hub.kszny.picaiba.com/kszny/xcac-ui sh -c "rm -rf /tmp/* && mv -f /html /tmp" | ||||
|   depends_on: | ||||
|   - publish | ||||
|  | ||||
| volumes: | ||||
| - name: dockersock | ||||
|   host: | ||||
|     path: /var/run/docker.sock | ||||
| - name: dockerconfig | ||||
|   host: | ||||
|     path: /root/.docker | ||||
|  | ||||
| trigger: | ||||
|   branch: | ||||
|   - projects/mesxc-test | ||||
|   event: | ||||
|   - push | ||||
							
								
								
									
										31
									
								
								.env.dev
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								.env.dev
									
									
									
									
									
								
							| @@ -1,8 +1,8 @@ | ||||
| ### | ||||
|  # @Author: Do not edit | ||||
|  # @Date: 2023-08-29 09:40:39 | ||||
|  # @LastEditTime: 2024-04-03 11:22:19 | ||||
|  # @LastEditors: DY | ||||
|  # @Author: zhp | ||||
|  # @Date: 2024-04-12 14:30:48 | ||||
|  # @LastEditTime: 2024-04-25 10:07:02 | ||||
|  # @LastEditors: zhp | ||||
|  # @Description: | ||||
| ### | ||||
| # 开发环境配置 | ||||
| @@ -12,24 +12,19 @@ ENV = 'development' | ||||
| VUE_APP_TITLE = MES系统 | ||||
|  | ||||
| # 芋道管理系统/开发环境 | ||||
| # VUE_APP_BASE_API = 'http://100.64.0.26:48082' | ||||
| # VUE_APP_BASE_API = 'http://192.168.0.33:48082' | ||||
| VUE_APP_BASE_API = 'http://192.168.1.104:48082' | ||||
| # VUE_APP_BASE_API = 'http://10.70.2.2:8080' | ||||
| # VUE_APP_BASE_API = 'http://192.168.1.20:48080' | ||||
| # VUE_APP_BASE_API = 'http://192.168.2.173:48080' | ||||
| # VUE_APP_BASE_API = 'http://192.168.1.49:48082' | ||||
| # VUE_APP_BASE_API = 'http://192.168.1.8:48082' | ||||
| # VUE_APP_BASE_API = 'http://192.168.4.173:9001' | ||||
| # VUE_APP_BASE_API = 'http://192.168.1.104:48082' | ||||
| VUE_APP_BASE_API = 'http://192.168.0.33:48082' | ||||
| # VUE_APP_BASE_API = 'http://192.168.1.62:48082' | ||||
| # VUE_APP_BASE_API = 'http://192.168.1.78:48082' | ||||
| # VUE_APP_BASE_API = 'http://192.168.1.47:48082' | ||||
| # socket地址 | ||||
| # 积木报表指向地址 | ||||
| VUE_APP_JIMU_API = 'http://192.168.1.101:48082' | ||||
|  | ||||
| # socket地址(现场) | ||||
| VUE_APP_Socket_API = 'ws://10.70.2.2:8080' | ||||
| # socket地址(公司线上) | ||||
| # VUE_APP_Socket_API = 'ws://192.168.0.33:48082' | ||||
| # socket dcs地址(只有现场) | ||||
| VUE_APP_Socket_Dcs_API = 'ws://10.70.180.10:8081' | ||||
|  | ||||
| # 积木报表指向地址 | ||||
| VUE_APP_JIMU_API = 'http://10.70.2.22:8080' | ||||
|  | ||||
| # 路由懒加载 | ||||
| VUE_CLI_BABEL_TRANSPILE_MODULES = true | ||||
|   | ||||
| @@ -1,11 +1,4 @@ | ||||
| ### | ||||
|  # @Author: zhp | ||||
|  # @Date: 2023-11-07 19:11:40 | ||||
|  # @LastEditTime: 2023-11-16 16:40:59 | ||||
|  # @LastEditors: zhp | ||||
|  # @Description: | ||||
| ### | ||||
| # 生产环境配置 | ||||
| # 生产环境配置(许昌现场) | ||||
| ENV = 'production' | ||||
|  | ||||
| # 页面标题 | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| # 生产环境配置 | ||||
| # 公司线上环境(33服务器) | ||||
| ENV = 'production' | ||||
|  | ||||
| # 页面标题 | ||||
| @@ -7,15 +7,12 @@ VUE_APP_TITLE = MES系统 | ||||
| # 芋道管理系统/生产环境 | ||||
| VUE_APP_BASE_API = '/prod-api' | ||||
|  | ||||
| # dcs地址 | ||||
| VUE_APP_Socket_Dcs_API = 'ws://10.70.180.10:8081' | ||||
| # socket地址 | ||||
| VUE_APP_Socket_API = 'ws://10.70.2.2:8080' | ||||
|  | ||||
| # 积木报表指向地址 | ||||
| VUE_APP_JIMU_API = 'http://192.168.0.33:48082' | ||||
| # socket地址 | ||||
| VUE_APP_Socket_API = 'ws://192.168.0.33:48082' | ||||
| # dcs地址(只有现场的) | ||||
| VUE_APP_Socket_Dcs_API = 'ws://10.70.180.10:8081' | ||||
|  | ||||
|  | ||||
| # 根据服务器或域名修改 | ||||
|   | ||||
							
								
								
									
										24
									
								
								Dockerfile
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								Dockerfile
									
									
									
									
									
								
							| @@ -1,21 +1,3 @@ | ||||
| FROM node:16-alpine as build-stage | ||||
|  | ||||
| WORKDIR /admim | ||||
|  | ||||
| COPY .npmrc package.json yarn.lock ./ | ||||
| RUN --mount=type=cache,id=yarn-store,target=/root/.yarn-store \ | ||||
|     yarn install --frozen-lockfile | ||||
|  | ||||
| COPY . . | ||||
| ARG NODE_ENV="" | ||||
| RUN env ${NODE_ENV} yarn build:prod | ||||
|  | ||||
| ## -- stage: dist => nginx -- | ||||
| FROM nginx:alpine | ||||
|  | ||||
| ENV TZ=Asia/Shanghai | ||||
|  | ||||
| COPY ./nginx.conf /etc/nginx/conf.d/default.conf | ||||
| COPY --from=build-stage /admim/dist /usr/share/nginx/html | ||||
|  | ||||
| EXPOSE 80 | ||||
| FROM busybox  | ||||
| LABEL maintainer thomas.hairong@gmail.com | ||||
| COPY dist /html/ | ||||
|   | ||||
| @@ -50,7 +50,7 @@ | ||||
|     "benz-amr-recorder": "^1.1.5", | ||||
|     "bpmn-js-token-simulation": "0.10.0", | ||||
|     "clipboard": "2.0.8", | ||||
|     "code-brick-zj": "^1.0.5", | ||||
|     "code-brick-zj": "^1.1.0", | ||||
|     "core-js": "^3.26.0", | ||||
|     "crypto-js": "^4.0.0", | ||||
|     "diagram-js": "^12.3.0", | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| /* | ||||
|  * @Author: Do not edit | ||||
|  * @Date: 2023-10-21 11:50:46 | ||||
|  * @LastEditTime: 2023-10-30 14:37:28 | ||||
|  * @LastEditTime: 2024-04-19 17:13:24 | ||||
|  * @LastEditors: DY | ||||
|  * @Description:  | ||||
|  */ | ||||
| @@ -66,3 +66,12 @@ export function getCoreDepartmentList(query) { | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 设备获得所有列表 | ||||
| export function getDepartmentList(query) { | ||||
|   return request({ | ||||
|     url: '/system/dept/list-all-simple', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
| /* | ||||
|  * @Author: zhp | ||||
|  * @Date: 2023-11-06 15:38:12 | ||||
|  * @LastEditTime: 2023-12-15 15:29:16 | ||||
|  * @LastEditTime: 2024-04-11 14:57:02 | ||||
|  * @LastEditors: zhp | ||||
|  * @Description: | ||||
|  */ | ||||
| @@ -94,7 +94,7 @@ export function getWorkerList(query) { | ||||
|  | ||||
| export function getMaterialCheckList(query) { | ||||
|   return request({ | ||||
|     url: '/base/core-hot-material-check/listByMaterial', | ||||
|     url: 'base/quality-hot-material-det/filterList', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| @@ -102,7 +102,7 @@ export function getMaterialCheckList(query) { | ||||
|  | ||||
| export function createQualityHotMaterialDet(query){ | ||||
|    return request({ | ||||
|     url: '/base/quality-hot-material-det/create', | ||||
|     url: 'base/quality-hot-material-det/createBatch', | ||||
|     method: 'post', | ||||
|     data: query | ||||
|   }) | ||||
| @@ -110,7 +110,7 @@ export function createQualityHotMaterialDet(query){ | ||||
|  | ||||
| export function updateQualityHotMaterialDet(query){ | ||||
|    return request({ | ||||
|     url: '/base/quality-hot-material-det/listbyfilter', | ||||
|     url: 'base/quality-hot-material-det/updateBatch', | ||||
|     method: 'put', | ||||
|     data: query | ||||
|   }) | ||||
| @@ -118,7 +118,7 @@ export function updateQualityHotMaterialDet(query){ | ||||
|  | ||||
| export function getQualityHotMaterialDetList(query){ | ||||
|    return request({ | ||||
|     url: '/base/quality-hot-material-det/listbyfilter', | ||||
|     url: '/base/quality-hot-material-det/filterList', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| /* | ||||
|  * @Author: zhp | ||||
|  * @Date: 2023-11-07 15:02:37 | ||||
|  * @LastEditTime: 2023-11-07 18:32:07 | ||||
|  * @LastEditTime: 2024-04-09 15:14:42 | ||||
|  * @LastEditors: zhp | ||||
|  * @Description: | ||||
|  */ | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| /* | ||||
|  * @Author: zhp | ||||
|  * @Date: 2023-11-07 14:10:18 | ||||
|  * @LastEditTime: 2023-11-16 17:49:52 | ||||
|  * @LastEditTime: 2024-04-11 16:16:05 | ||||
|  * @LastEditors: zhp | ||||
|  * @Description: | ||||
|  */ | ||||
| @@ -18,14 +18,14 @@ export function getStatisticalDataPage(query) { | ||||
|  | ||||
| export function getWorkOrderList(query) { | ||||
|   return request({ | ||||
|     url: '/base/core-work-order/listbyfilter', | ||||
|     url: 'base/core-work-order/listbyfilter', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|   }) | ||||
| } | ||||
| export function getProductList(query) { | ||||
|   return request({ | ||||
|     url: '/base/core-product/listAll', | ||||
|     url: 'base/core-product/listAll', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|   }) | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| /* | ||||
|  * @Author: zhp | ||||
|  * @Date: 2023-10-31 10:55:20 | ||||
|  * @LastEditTime: 2023-12-06 14:09:14 | ||||
|  * @LastEditors: zhp | ||||
|  * @LastEditTime: 2024-04-25 15:28:44 | ||||
|  * @LastEditors: DY | ||||
|  * @Description: | ||||
|  */ | ||||
| import request from '@/utils/request' | ||||
| @@ -34,11 +34,11 @@ export function exportEnergyPlcExcel(query) { | ||||
|   }) | ||||
| } | ||||
|  | ||||
| export function getOriginalGlassRetrace(query) { | ||||
| export function getOriginalGlassRetrace(data) { | ||||
|    return request({ | ||||
|     url: '/base/original-glass-statistics/originalGlassRetrace', | ||||
|     method: 'get', | ||||
|     params: query, | ||||
|     method: 'post', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
|  | ||||
|   | ||||
							
								
								
									
										45
									
								
								src/api/report/customizedReports.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								src/api/report/customizedReports.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | ||||
| import request from '@/utils/request' | ||||
| // 原片工段数据 | ||||
| export function originalSection(data) { | ||||
|   return request({ | ||||
|     url: '/extend/customized-reports/originalSection', | ||||
|     method: 'post', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 原片产线数据 | ||||
| export function getOriginalLine(query) { | ||||
|   return request({ | ||||
|     url: '/extend/customized-reports/getOriginalLine', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 深加工产线数据 | ||||
| export function getProcessingLine(query) { | ||||
|   return request({ | ||||
|     url: '/extend/customized-reports/getProcessingLine', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 深加工工段数据 | ||||
| export function processing(data) { | ||||
|   return request({ | ||||
|     url: '/extend/customized-reports/processing', | ||||
|     method: 'post', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // isra数据记录 | ||||
| export function israData(data) { | ||||
|   return request({ | ||||
|     url: '/extend/customized-reports/isra', | ||||
|     method: 'post', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
| @@ -1,7 +1,7 @@ | ||||
| /* | ||||
|  * @Author: Do not edit | ||||
|  * @Date: 2023-12-08 10:26:48 | ||||
|  * @LastEditTime: 2023-12-13 17:16:00 | ||||
|  * @LastEditTime: 2024-04-24 16:31:37 | ||||
|  * @LastEditors: DY | ||||
|  * @Description:  | ||||
|  */ | ||||
| @@ -59,3 +59,39 @@ export function exportGlasscExcel(query) { | ||||
|     responseType: 'blob' | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 生产月报查询--冷端生产线 | ||||
| export function productionMonthY(data) { | ||||
|   return request({ | ||||
|     url: '/extend/customized-reports/productionMonthY', | ||||
|     method: 'post', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 生产月报查询--深加工生产线 | ||||
| export function productionMonthD(data) { | ||||
|   return request({ | ||||
|     url: '/extend/customized-reports/productionMonthD', | ||||
|     method: 'post', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 生产年报查询--冷端生产线 | ||||
| export function productionYearY(data) { | ||||
|   return request({ | ||||
|     url: '/extend/customized-reports/productionYearY', | ||||
|     method: 'post', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| // 生产年报查询--冷端生产线 | ||||
| export function productionYearD(data) { | ||||
|   return request({ | ||||
|     url: '/extend/customized-reports/productionYearD', | ||||
|     method: 'post', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|   | ||||
							
								
								
									
										96
									
								
								src/api/report/qcReport.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										96
									
								
								src/api/report/qcReport.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,96 @@ | ||||
| /* | ||||
|  * @Author: zhp | ||||
|  * @Date: 2024-04-18 09:27:54 | ||||
|  * @LastEditTime: 2024-04-23 15:16:12 | ||||
|  * @LastEditors: zhp | ||||
|  * @Description: | ||||
|  */ | ||||
| import request from '@/utils/request' | ||||
|  | ||||
| // 更新质量检测类型基础 | ||||
| export function getOriginalData(data) { | ||||
|   return request({ | ||||
|     url: 'extend/customized-reports/original', | ||||
|     method: 'post', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
| export function getIngredientData(data) { | ||||
|   return request({ | ||||
|     url: 'extend/customized-reports/materialCost', | ||||
|     method: 'post', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| export function getCuttingtData(data) { | ||||
|   return request({ | ||||
|     url: 'extend/customized-reports/cutting', | ||||
|     method: 'post', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| export function getAutoDailyData(data) { | ||||
|   return request({ | ||||
|     url: 'base/report-auto-daily/listAll', | ||||
|     method: 'post', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| export function getQualityRecordReport(data) { | ||||
|   return request({ | ||||
|     url: 'base/quality-inspection-record/qualityRecordReport', | ||||
|     method: 'post', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| export function getProductChildData(data) { | ||||
|   return request({ | ||||
|     url: 'base/report-auto-ydaily-det/list', | ||||
|     method: 'post', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| export function updateAutoDailyData(data) { | ||||
|   return request({ | ||||
|     url: 'base/report-auto-daily/update', | ||||
|     method: 'put', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| export function getCWSectionList(query) { | ||||
|   return request({ | ||||
|     url: 'base/core-production-line/listAll', | ||||
|     method: 'get', | ||||
|     params: query | ||||
|   }) | ||||
| } | ||||
|  | ||||
| export function getCuttingReportDataList(data) { | ||||
|   return request({ | ||||
|     url: 'extend/customized-reports/cuttingReport', | ||||
|     method: 'post', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| export function getProcessingLineDataList(data) { | ||||
|   return request({ | ||||
|     url: 'extend/customized-reports/getProcessingLine', | ||||
|     method: 'get', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
|  | ||||
| export function getOriginalLineDataList(data) { | ||||
|   return request({ | ||||
|     url: 'extend/customized-reports/getOriginalLine', | ||||
|     method: 'get', | ||||
|     data: data | ||||
|   }) | ||||
| } | ||||
							
								
								
									
										138
									
								
								src/components/ButtonNav/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										138
									
								
								src/components/ButtonNav/index.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,138 @@ | ||||
| <!--  | ||||
|     filename: index.vue | ||||
|     author: liubin | ||||
|     date: 2024-04-02 09:49:36 | ||||
|     description:  | ||||
| --> | ||||
|  | ||||
| <template> | ||||
| 	<!-- 按钮切换 --> | ||||
| 	<div | ||||
| 		v-if="buttonMode" | ||||
| 		class="button-nav"> | ||||
| 		<button | ||||
| 			v-for="m in menus" | ||||
| 			:key="m" | ||||
| 			@click="currentMenu = m" | ||||
| 			:data-text="m" | ||||
| 			:class="[m === currentMenu ? 'active' : '']"></button> | ||||
| 	</div> | ||||
| 	<!-- 标签切换 --> | ||||
| 	<div | ||||
| 		v-else | ||||
| 		class="custom-tabs" | ||||
| 		style="height: 100%; width: 100%"> | ||||
| 		<el-tabs | ||||
| 			class="tag-nav" | ||||
| 			v-model="currentMenu" | ||||
| 			style="height: 100%"> | ||||
| 			<el-tab-pane | ||||
| 				v-for="(m, idx) in menus" | ||||
| 				:key="m" | ||||
| 				:label="idx == 0 ? `\u2002${m}\u2002` : `\u3000${m}\u3000`" | ||||
| 				:name="m"> | ||||
| 				<slot :name="`tab${idx + 1}`"></slot> | ||||
| 			</el-tab-pane> | ||||
| 		</el-tabs> | ||||
| 	</div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| export default { | ||||
| 	name: 'ButtonNav', | ||||
| 	props: { | ||||
| 		menus: { | ||||
| 			type: Array, | ||||
| 			required: true, | ||||
| 			default: () => [], | ||||
| 			validator: (val) => { | ||||
| 				return val.length > 0; | ||||
| 			}, | ||||
| 		}, | ||||
| 		buttonMode: { | ||||
| 			type: Boolean, | ||||
| 			default: true, | ||||
| 		}, | ||||
| 	}, | ||||
| 	data() { | ||||
| 		return { | ||||
| 			currentMenu: '', | ||||
| 		}; | ||||
| 	}, | ||||
| 	created() { | ||||
| 		this.currentMenu = this.menus[0]; | ||||
| 	}, | ||||
| 	watch: { | ||||
| 		currentMenu(val) { | ||||
| 			this.$emit('change', val); | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
|  | ||||
| <style scoped lang="scss"> | ||||
| .button-nav { | ||||
| 	width: 100%; | ||||
| 	// padding: 12px 0; | ||||
| 	display: flex; | ||||
| 	gap: 12px; | ||||
|  | ||||
| 	* { | ||||
| 		user-select: none; | ||||
| 	} | ||||
|  | ||||
| 	button { | ||||
| 		cursor: pointer; | ||||
| 		appearance: none; | ||||
| 		outline: none; | ||||
| 		border: none; | ||||
| 		background: #fff; | ||||
| 		border-radius: 8px; | ||||
| 		padding: 20px; | ||||
| 		color: #888; | ||||
| 		letter-spacing: 2px; | ||||
| 		flex: 1; | ||||
| 		box-sizing: padding-box; | ||||
| 		position: relative; | ||||
|  | ||||
| 		&::after { | ||||
| 			content: attr(data-text); | ||||
| 			position: absolute; | ||||
| 			top: 10px; | ||||
| 			left: 50%; | ||||
| 			font-size: 18px; | ||||
| 			font-weight: 500; | ||||
| 			transform: translate(-50%); | ||||
| 		} | ||||
|  | ||||
| 		&.active { | ||||
| 			color: #111; | ||||
| 			border-bottom: 4px solid #0b58ff; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| </style> | ||||
|  | ||||
| <style scoped> | ||||
| .custom-tabs >>> .el-tabs__header { | ||||
| 	margin-bottom: 8px; | ||||
| 	display: inline-block; | ||||
| 	/* transform: translateY(-12px); */ | ||||
| } | ||||
| .custom-tabs >>> .el-tabs__item { | ||||
| 	padding-left: 0px !important; | ||||
| 	padding-right: 0px !important; | ||||
| 	line-height: 36px !important; | ||||
| 	height: 36px; | ||||
| } | ||||
|  | ||||
| .custom-tabs >>> .el-tabs__content { | ||||
| 	height: calc(100% - 42px); | ||||
| } | ||||
| .custom-tabs >>> .el-tab-pane { | ||||
| 	box-sizing: border-box; | ||||
| 	height: 100%; | ||||
| 	padding: 20px; | ||||
| 	border: 10px solid #f002; | ||||
| } | ||||
| </style> | ||||
| @@ -1,7 +1,7 @@ | ||||
| <!-- | ||||
|  * @Author: zhp | ||||
|  * @Date: 2024-01-29 16:50:26 | ||||
|  * @LastEditTime: 2024-04-03 17:10:15 | ||||
|  * @LastEditTime: 2024-04-25 09:03:50 | ||||
|  * @LastEditors: zhp | ||||
|  * @Description: | ||||
| --> | ||||
| @@ -34,7 +34,7 @@ | ||||
|         </el-col> | ||||
|  | ||||
|         <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8"> | ||||
|           <base-container :no-content-padding="true" :title="'产量及良率统计'" :size="'small'" | ||||
|           <base-container :show-time="true" :no-content-padding="true" :title="'产量及良率统计'" :size="'small'" | ||||
|             :title-icon="'energyMonitoring'"> | ||||
|             <!-- <div style="width: 45%;position: absolute; top: 3em; right: 3em;"> | ||||
|               <top-radio-group /> | ||||
| @@ -53,7 +53,8 @@ | ||||
|         </el-col> | ||||
|  | ||||
|         <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8"> | ||||
|           <base-container :no-content-padding="true" :title="'ISRA 缺陷数据'" :size="'small'" :title-icon="'scrap'"> | ||||
|           <base-container :show-time="true" :no-content-padding="true" :title="'ISRA 缺陷数据'" :size="'small'" | ||||
|             :title-icon="'scrap'"> | ||||
|             <!-- <base-table1 :page="1" :limit="999" :show-index="false" :table-config="ISRATableProps" | ||||
|               :table-data="ISRAList" /> --> | ||||
|             <ISRAChart ref="ISRAChart" /> | ||||
| @@ -64,8 +65,8 @@ | ||||
|  | ||||
|       <el-row :style="{ padding: '0 ' + 9 + 'px' }" :gutter="10" type="flex" class="flex-1"> | ||||
|         <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12"> | ||||
|           <base-container :no-content-padding="true" :height="256" :title="'废片 缺陷数据'" :size="'eqStatus'" | ||||
|             :title-icon="'scrap'"> | ||||
|           <base-container :show-time="true" :no-content-padding="true" :height="256" :title="'废片 缺陷数据'" | ||||
|             :size="'eqStatus'" :title-icon="'scrap'"> | ||||
|             <!-- <div style="width: 45%;position: absolute; top: 3em; right: 3em;"> | ||||
|               <top-radio-group /> | ||||
|             </div> --> | ||||
| @@ -98,7 +99,8 @@ | ||||
|           </base-container> | ||||
|         </el-col> | ||||
|         <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="14"> | ||||
|           <base-container :height="318 + 338 + 16" :size="'eqStatus'" :title="'设备状态监控'" :title-icon="'eqMonitoring'"> | ||||
|           <base-container :show-time="false" :height="318 + 338 + 16" :size="'eqStatus'" :title="'设备状态监控'" | ||||
|             :title-icon="'eqMonitoring'"> | ||||
|             <!-- <div style="width: 45%;position: absolute; top: 3em; right: 3em;"> | ||||
|               <top-radio-group /> | ||||
|             </div> --> | ||||
| @@ -418,7 +420,7 @@ export default { | ||||
|         //   yield:ele.yield | ||||
|         // }) | ||||
|         sumAreaList.push(ele.sumArea) | ||||
|         yieldList.push((ele.yield * 100).toFixed(3)) | ||||
|         yieldList.push((ele.yield * 100).toFixed(0)) | ||||
|       }) | ||||
|       this.$nextTick(() => { | ||||
|         this.$refs.productChart.initChart(nameList, yieldList, sumAreaList) | ||||
| @@ -625,8 +627,8 @@ export default { | ||||
|             `<span style="color:rgba(255,255,255,0.5)">${this.getSize(item.size) || ''}</span>`, | ||||
|             `<span style="color:rgba(255,255,255,0.5)">${this.NumFormat(item.productArea) + '㎡' || ''}</span>`, | ||||
|             `<span style="color:rgba(255,255,255,0.5)">${this.NumFormat(item.wasteArea) + '㎡' || ''}</span>`, | ||||
|             `<div style = "${(item.product * 100).toFixed(2) > 91 ? 'display:block;color:#00FFF7' : 'display:none;'}">${(item.product * 100).toFixed(2) + '%' || ''}</div> | ||||
|            <div style = "${(item.product * 100).toFixed(2) < 91 ? 'display:block; color:rgba(255, 209, 96, 1)' : 'display:none;'}">${(item.product * 100).toFixed(2) + '%' || ''}</div>` | ||||
|             `<div style = "${(item.product * 100).toFixed(0) >= 91 ? 'display:block;color:#00FFF7' : 'display:none;'}">${(item.product * 100).toFixed(0) + '%' || ''}</div> | ||||
|            <div style = "${(item.product * 100).toFixed(0) <= 91 ? 'display:block; color:rgba(255, 209, 96, 1)' : 'display:none;'}">${(item.product * 100).toFixed(2) + '%' || ''}</div>` | ||||
|           ]) | ||||
|           this.cutConfig.data = cutArr | ||||
|           // this.$nextTick(() => { | ||||
| @@ -635,6 +637,7 @@ export default { | ||||
|           // this.cutConfig.data = cutArr | ||||
|           // this.$refs['cutScrollBoard'].updateRows(cutArr) | ||||
|         } else if (this.cutWsData.type === 'cutting' && this.cutWsData.name === 'chart' && this.cutWsData.dateType === 'day') { | ||||
|           if (this.cutWsData.coldDetData.length !== 0) { | ||||
|             let nameList = [] | ||||
|             let nameWasteList = [] | ||||
|             let topNameList = [] | ||||
| @@ -651,7 +654,7 @@ export default { | ||||
|               wasteList.push(ele.wastArea) | ||||
|               nameWasteList.push('缺陷面积:' + this.NumFormat(ele.wastArea) + '㎡') | ||||
|               sumAreaList.push(ele.sumArea) | ||||
|             yieldList.push(parseFloat((ele.yield * 100).toFixed(0))) | ||||
|               yieldList.push(parseFloat((ele.yield * 100).toFixed(2))) | ||||
|             }) | ||||
|             this.$nextTick(() => { | ||||
|               this.$refs.firstPileChart.initChart(nameList, [topNameList[0]], [nameWasteList[0]], [productList[0]], [wasteList[0]]) | ||||
| @@ -662,6 +665,7 @@ export default { | ||||
|               this.$refs.productChart.initChart(nameList, yieldList, sumAreaList) | ||||
|             }) | ||||
|           } | ||||
|         } | ||||
|       }; | ||||
|       // if (typeof (WebSocket) === 'undefined') { | ||||
|       //   alert('您的浏览器不支持WebSocket') | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| <!-- | ||||
|  * @Author: zhp | ||||
|  * @Date: 2024-01-29 13:45:56 | ||||
|  * @LastEditTime: 2024-03-13 08:58:01 | ||||
|  * @LastEditTime: 2024-04-24 15:48:32 | ||||
|  * @LastEditors: zhp | ||||
|  * @Description: | ||||
| --> | ||||
| @@ -13,6 +13,7 @@ | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import { position } from '@antv/x6-common/lib/dom/position'; | ||||
| import * as echarts from 'echarts'; | ||||
| // import resize from './../mixins/resize' | ||||
| // import NotMsg from './../components/NotMsg' | ||||
| @@ -26,7 +27,7 @@ export default { | ||||
| 		return { | ||||
| 			chart: null, | ||||
| 			// notMsg:true, | ||||
| 			colors:['#2760ff', '#518eec', '#0ee8e4', '#ddb523'], | ||||
|       colors: ['#2760ff', '#518eec', '#49FBD6', '#ddb523'], | ||||
| 			chartData: [] | ||||
| 		}; | ||||
| 	}, | ||||
| @@ -46,7 +47,48 @@ export default { | ||||
| 			} | ||||
| 		} | ||||
|   }, | ||||
|   mounted() { | ||||
|     this.chartData = [ | ||||
|       { | ||||
|         name: '0904褶皱/严重', | ||||
|         num: 1112, | ||||
|         yield: 0.97, | ||||
|       }, | ||||
|       { | ||||
|         name: '0904褶皱/严重', | ||||
|         num: 1112, | ||||
|         yield: 0.97, | ||||
|       }, | ||||
|        { | ||||
|          name: '0904褶皱/严重', | ||||
|         num: 1112, | ||||
|         yield: 0.97, | ||||
|       }, | ||||
|        { | ||||
|          name: '0904褶皱/严重', | ||||
|         num: 1112, | ||||
|         yield: 0.97, | ||||
|       } | ||||
|     ] | ||||
|     this.updateChart() | ||||
|   }, | ||||
|   methods: { | ||||
|     getEqualNewlineString(params, length) { | ||||
|       let text = '' | ||||
|       let count = Math.ceil(params.length / length) // 向上取整数 | ||||
|       // 一行展示length个 | ||||
|       if (count > 1) { | ||||
|         for (let z = 1; z <= count; z++) { | ||||
|           text += params.substr((z - 1) * length, length) | ||||
|           if (z < count) { | ||||
|             text += '\n' | ||||
|           } | ||||
|         } | ||||
|       } else { | ||||
|         text += params.substr(0, length) | ||||
|       } | ||||
|       return text | ||||
|     }, | ||||
| 		updateChart() { | ||||
| 			console.log('update') | ||||
| 			let num = 0 | ||||
| @@ -71,7 +113,7 @@ export default { | ||||
| 				color:this.colors, | ||||
| 				title:{ | ||||
| 					text: num, | ||||
| 					subtext: '总数', | ||||
| 					subtext: '总数/个', | ||||
| 					top: '32%', | ||||
| 					left: '49%', | ||||
| 					textAlign: 'center', | ||||
| @@ -84,44 +126,76 @@ export default { | ||||
| 						color: '#fff00', | ||||
| 					}, | ||||
|         }, | ||||
| 				legend: { | ||||
| 					bottom: '10%', | ||||
| 					left: 'center', | ||||
| 					itemWidth: 12, | ||||
| 					itemHeight:12, | ||||
|           icon: 'rect', | ||||
| 					textStyle: { | ||||
| 						color: '#fff' | ||||
| 					}, | ||||
| 					data:this.chartData && this.chartData.length > 0 && this.chartData.map((item,index)=>({ | ||||
| 						name:item.name, | ||||
| 						itemStyle:{ | ||||
| 							color: this.colors[index%4] | ||||
| 						} | ||||
| 					})) | ||||
|         grid: { | ||||
|           left: '1%', | ||||
|           right: '1%', | ||||
|           bottom: '0', | ||||
|           containLabel: true | ||||
|         }, | ||||
| 				// legend: { | ||||
| 				// 	bottom: '10%', | ||||
| 				// 	left: 'center', | ||||
| 				// 	itemWidth: 12, | ||||
| 				// 	itemHeight:12, | ||||
|         //   icon: 'roundRect', | ||||
| 				// 	textStyle: { | ||||
| 				// 		color: '#fff' | ||||
| 				// 	}, | ||||
| 				// 	data:this.chartData && this.chartData.length > 0 && this.chartData.map((item,index)=>({ | ||||
| 				// 		name:item.name, | ||||
| 				// 		itemStyle:{ | ||||
| 				// 			color: this.colors[index%4] | ||||
| 				// 		} | ||||
| 				// 	})) | ||||
| 				// }, | ||||
| 				series:[{ | ||||
| 						name: 'ISRA缺陷检测', | ||||
|             type: 'pie', | ||||
|             // position:outerHeight, | ||||
| 						center: ['50%', '40%'], | ||||
| 						radius: ['45%', '70%'], | ||||
| 						avoidLabelOverlap: true, | ||||
|           label: { | ||||
| 							show: false | ||||
|             show: true, | ||||
|             normal: { | ||||
|               alignTo: 'labelLine', | ||||
|               margin: 10, | ||||
|               edgeDistance: 10, | ||||
|               lineHeight: 16, | ||||
|               // 各分区的提示内容 | ||||
|               // params: 即下面传入的data数组,通过自定义函数,展示你想要的内容和格式 | ||||
|               formatter: function (params) { | ||||
|                 console.log(params); | ||||
|                 return ; | ||||
|               }, | ||||
|               formatter: (params) => { | ||||
|                 //调用自定义显示格式 | ||||
|                 return this.getEqualNewlineString(params.value + " | " + params.percent.toFixed(0) + "%"); | ||||
|               }, | ||||
|               textStyle: {            // 提示文字的样式 | ||||
|                 // color: '#595959', | ||||
|                 fontSize: 16 | ||||
|               } | ||||
|             } | ||||
| 						}, | ||||
| 						labelLine: { | ||||
|               show: true, | ||||
|               length: 25, | ||||
|               length2: 10, | ||||
| 						}, | ||||
| 						data: this.chartData && this.chartData.length > 0 && this.chartData.map((item, index) => ({ | ||||
| 						name:item.name, | ||||
|             value: item.num, | ||||
|             label: { | ||||
|               color: this.colors[index % 4] | ||||
|             }, | ||||
| 						itemStyle:{ | ||||
| 							color:{ | ||||
| 								type: 'linear', | ||||
| 								x: 1, | ||||
| 								y: 1, | ||||
| 								x: 0, | ||||
| 								y: 0, | ||||
| 								x2: 0, | ||||
| 								y2: 0, | ||||
| 								y2: 1, | ||||
| 								global: false, | ||||
| 								colorStops:[ | ||||
| 									{offset: 0,color: this.colors[index%4]}, | ||||
| @@ -145,15 +219,19 @@ export default { | ||||
| .isra-chart { | ||||
| 	width: 100%; | ||||
| 	height: 100%; | ||||
|   position: absolute; | ||||
|   top: 7%; | ||||
| } | ||||
| </style> | ||||
| <style> | ||||
|     .isra-chart-tooltip { | ||||
|       background: #0a2b4f77 !important; | ||||
|       border: none !important; | ||||
|       backdrop-filter: blur(12px); | ||||
|     } | ||||
|  | ||||
|     .isra-chart-tooltip * { | ||||
|       color: #fff !important; | ||||
|     } | ||||
| </style> | ||||
| <style> | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
|  * @Author: gtz | ||||
|  * @Date: 2022-01-19 15:58:17 | ||||
|  * @LastEditors: zhp | ||||
|  * @LastEditTime: 2024-03-29 14:47:29 | ||||
|  * @LastEditTime: 2024-04-22 09:41:21 | ||||
|  * @Description: file content | ||||
|  * @FilePath: \mt-bus-fe\src\views\OperationalOverview\components\baseContainer\index.vue | ||||
| --> | ||||
| @@ -30,7 +30,7 @@ | ||||
|         <!-- <span v-if="showTime" style="font-size: 20px;color:#52FFF8;margin-left: 10px;margin-top: 2px;"> | ||||
|           {{ time2 +'-'+ time }} | ||||
|         </span> --> | ||||
|         <span  style="font-size: 20px;color:#52FFF8;margin-left: 10px;margin-top: 2px;"> | ||||
|         <span v-if="showTime"  style="font-size: 20px;color:#52FFF8;margin-left: 10px;margin-top: 2px;"> | ||||
|           {{ startTime + '-' + endTime }} | ||||
|         </span> | ||||
|       </div> | ||||
| @@ -56,6 +56,10 @@ export default { | ||||
|       type: Boolean, | ||||
|       default: true | ||||
|     }, | ||||
|     showTime: { | ||||
|       type: Boolean, | ||||
|       default: true | ||||
|     }, | ||||
|     noPadding: { | ||||
|       type: Boolean, | ||||
|       default: false | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
| <!-- | ||||
|  * @Author: zhp | ||||
|  * @Date: 2023-09-21 09:06:28 | ||||
|  * @LastEditTime: 2024-04-03 16:28:40 | ||||
|  * @LastEditTime: 2024-04-23 15:34:56 | ||||
|  * @LastEditors: zhp | ||||
|  * @Description: | ||||
| --> | ||||
| @@ -83,6 +83,9 @@ export default { | ||||
|     this.chart = null | ||||
|   }, | ||||
|   methods: { | ||||
|     // getNumLength(num) { | ||||
|     //   return num.toString().length; | ||||
|     // }, | ||||
|     initChart(nameList, passRateList, outputNumList) { | ||||
|       console.log(nameList, passRateList) | ||||
|      let  series= [ | ||||
| @@ -97,7 +100,7 @@ export default { | ||||
|                { offset: 0.3, color: '#1295FF' } | ||||
|              ]), | ||||
|              label: { | ||||
|                show: true,		//开启显示 | ||||
|                show: false,		//开启显示 | ||||
|                position: 'top',	//在上方显示 | ||||
|                textStyle: {	    //数值样式 | ||||
|                  color: 'rgba(255,255,255,0.5)', // 坐标值得具体的颜色 | ||||
| @@ -156,6 +159,8 @@ export default { | ||||
|       this.chart.setOption({ | ||||
|         // color: colors, | ||||
|         tooltip: { | ||||
|           trigger: 'item', | ||||
|           className: "isra-chart-tooltip", | ||||
|           trigger: 'axis', | ||||
|           axisPointer: { | ||||
|             type: 'cross' | ||||
| @@ -220,11 +225,13 @@ export default { | ||||
|               return 0 | ||||
|             }, | ||||
|             max: function (value) { // 取最大值向上取整为最大刻度 | ||||
|               return Math.ceil(value.max) | ||||
|             }, | ||||
|             scale: true, | ||||
|             type: 'value', | ||||
|             name: '良品率/%', | ||||
|             max: 100,//最大值 | ||||
|             min: 0,//最小值 | ||||
|             interval: 20,//间隔 | ||||
|             nameTextStyle: {// y轴上方单位的颜色 | ||||
|               color: 'rgba(255,255,255,0.5)', // 坐标值得具体的颜色 | ||||
|               align: "left", | ||||
| @@ -265,8 +272,13 @@ export default { | ||||
|               return 0 | ||||
|             }, | ||||
|             max: function (value) { // 取最大值向上取整为最大刻度 | ||||
|               return Math.ceil(value.max) | ||||
|  | ||||
|               // console.log(value.max.toString().length) | ||||
|               // String(value.max)[0] | ||||
|               // for | ||||
|               // return String(value.max)[0] + | ||||
|             }, | ||||
|             minInterval: 5,//间隔 | ||||
|             scale: true, | ||||
|             type: 'value', | ||||
|             name: '产量/㎡', // y轴上方的单位 | ||||
| @@ -315,8 +327,16 @@ export default { | ||||
| } | ||||
| </script> | ||||
| <style> | ||||
|  | ||||
| .coldProductChart{ | ||||
|   top: -10px; | ||||
| } | ||||
| .isra-chart-tooltip { | ||||
|   background: #0a2b4f77 !important; | ||||
|   border: none !important; | ||||
|   backdrop-filter: blur(12px); | ||||
|   } | ||||
|  | ||||
|  .isra-chart-tooltip * { | ||||
|   color: #fff !important; | ||||
|   } | ||||
| </style> | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| <!-- | ||||
|  * @Author: zhp | ||||
|  * @Date: 2023-09-21 09:06:28 | ||||
|  * @LastEditTime: 2024-04-03 17:09:12 | ||||
|  * @LastEditTime: 2024-04-23 15:36:35 | ||||
|  * @LastEditors: zhp | ||||
|  * @Description: | ||||
| --> | ||||
| @@ -162,6 +162,8 @@ export default { | ||||
|         this.chart.setOption({ | ||||
|           // color: colors, | ||||
|           tooltip: { | ||||
|             trigger: 'item', | ||||
|             className: "isra-chart-tooltip", | ||||
|             trigger: 'axis', | ||||
|             axisPointer: { | ||||
|               type: 'cross' | ||||
| @@ -215,15 +217,17 @@ export default { | ||||
|           // }, | ||||
|           yAxis: [ | ||||
|             { | ||||
|               // min: function() { // 取最小值向下取整为最小刻度 | ||||
|               //   return 0 | ||||
|               // }, | ||||
|               // max: function(value) { // 取最大值向上取整为最大刻度 | ||||
|               //   return Math.ceil(value.max) | ||||
|               // }, | ||||
|               min: function () { // 取最小值向下取整为最小刻度 | ||||
|                 return 0 | ||||
|               }, | ||||
|               max: function (value) { // 取最大值向上取整为最大刻度 | ||||
|               }, | ||||
|               scale: true, | ||||
|               type: 'value', | ||||
|               name: '良品率/%', | ||||
|               max: 100,//最大值 | ||||
|               min: 0,//最小值 | ||||
|               interval: 20,//间隔 | ||||
|               nameTextStyle: {// y轴上方单位的颜色 | ||||
|                 color: 'rgba(255,255,255,0.5)', // 坐标值得具体的颜色 | ||||
|                 align: "left", | ||||
| @@ -260,12 +264,17 @@ export default { | ||||
|               // }, | ||||
|             }, | ||||
|             { | ||||
|               // min: function() { // 取最小值向下取整为最小刻度 | ||||
|               //   return 0 | ||||
|               // }, | ||||
|               // max: function(value) { // 取最大值向上取整为最大刻度 | ||||
|               //   return Math.ceil(value.max) | ||||
|               // }, | ||||
|               min: function () { // 取最小值向下取整为最小刻度 | ||||
|                 return 0 | ||||
|               }, | ||||
|               max: function (value) { // 取最大值向上取整为最大刻度 | ||||
|  | ||||
|                 // console.log(value.max.toString().length) | ||||
|                 // String(value.max)[0] | ||||
|                 // for | ||||
|                 // return String(value.max)[0] + | ||||
|               }, | ||||
|               minInterval: 5,//间隔 | ||||
|               scale: true, | ||||
|               type: 'value', | ||||
|               name: '产量/片', // y轴上方的单位 | ||||
| @@ -324,4 +333,13 @@ export default { | ||||
|   width: 100%; | ||||
|   top: -30px; | ||||
| } | ||||
|     .isra-chart-tooltip { | ||||
|       background: #0a2b4f77 !important; | ||||
|       border: none !important; | ||||
|       backdrop-filter: blur(12px); | ||||
|     } | ||||
|  | ||||
|     .isra-chart-tooltip * { | ||||
|       color: #fff !important; | ||||
|     } | ||||
| </style> | ||||
|   | ||||
| @@ -128,6 +128,8 @@ export default { | ||||
|         this.chart.setOption({ | ||||
|           tooltip: { | ||||
|             trigger: 'axis', | ||||
|             trigger: 'item', | ||||
|             className: "isra-chart-tooltip", | ||||
|             axisPointer: { | ||||
|               // 坐标轴指示器,坐标轴触发有效 | ||||
|               type: 'shadow' // 默认为直线,可选为:'line' | 'shadow' | ||||
| @@ -226,4 +228,13 @@ export default { | ||||
|   width: 100%; | ||||
|   top: -30px; | ||||
| } | ||||
| .isra-chart-tooltip { | ||||
|   background: #0a2b4f77 !important; | ||||
|   border: none !important; | ||||
|   backdrop-filter: blur(12px); | ||||
| } | ||||
|  | ||||
| .isra-chart-tooltip * { | ||||
|   color: #fff !important; | ||||
| } | ||||
| </style> | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| <!-- | ||||
|  * @Author: zhp | ||||
|  * @Date: 2023-12-27 13:54:52 | ||||
|  * @LastEditTime: 2024-04-03 18:12:18 | ||||
|  * @LastEditTime: 2024-04-19 15:43:08 | ||||
|  * @LastEditors: zhp | ||||
|  * @Description: | ||||
| --> | ||||
| @@ -101,6 +101,9 @@ export default { | ||||
|       });; | ||||
|     }, | ||||
|     initChart(nameList, topNameList, nameWasteList, passRateList, wasteList) { | ||||
|       if (topNameList.length === 0 && nameWasteList.length === 0 && passRateList === 0 && wasteList === 0) { | ||||
|         return | ||||
|       } else { | ||||
|         let rawData = [] | ||||
|         let colors = ['#0fdedb', '#2359ec'] | ||||
|         rawData.push(passRateList, wasteList) | ||||
| @@ -167,7 +170,7 @@ export default { | ||||
|               let singleData = series.filter(function (item) { | ||||
|                 return item.name == name | ||||
|               }) | ||||
|             return name + parseFloat((singleData[0].data * 100).toFixed(0)) + '%' | ||||
|               return name + parseFloat((singleData[0].data * 100).toFixed(2)) + '%' | ||||
|             }, | ||||
|             itemWidth: 12, | ||||
|             itemHeight: 12, | ||||
| @@ -257,6 +260,8 @@ export default { | ||||
|             this.resize() | ||||
|           }, 1000); | ||||
|         }) | ||||
|       } | ||||
|  | ||||
|       // this.chart.resize({ | ||||
|       //   width: 'auto', | ||||
|       //   height: 90 | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
|  * @Author: zwq | ||||
|  * @Date: 2021-07-19 15:18:30 | ||||
|  * @LastEditors: zhp | ||||
|  * @LastEditTime: 2024-04-03 17:14:03 | ||||
|  * @LastEditTime: 2024-04-26 09:57:41 | ||||
|  * @Description: | ||||
| --> | ||||
| <template> | ||||
| @@ -25,25 +25,46 @@ | ||||
|     <el-row class="container-main flex-col" type="flex"> | ||||
|       <el-row :style="{ padding: '0 ' + 9 + 'px' }" :gutter="15" type="flex" class="flex-1" style="height: 50%"> | ||||
|         <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8" height="100%"> | ||||
|           <base-container :title="'设备报警'" :size="'small'" :height="318" :title-icon="'eqAlarm'"> | ||||
|           <base-container :show-time="true" :title="'设备报警'" :size="'small'" :height="318" :title-icon="'eqAlarm'"> | ||||
|             <dv-scroll-board class="eqTable" :config="eqConfig" style="width: 100%; height: 350px" | ||||
|               ref="eqScrollBoard" /> | ||||
|           </base-container> | ||||
|         </el-col> | ||||
|         <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8" height="100%"> | ||||
|           <base-container :title="'各工序缺陷汇总'" :size="'small'" :title-icon="'scrap'"> | ||||
|           <base-container :show-time="true" :title="'各工序缺陷汇总'" :size="'small'" :title-icon="'scrap'"> | ||||
|             <dv-scroll-board :config="processConfig" style="width: 100%; height: 350px" ref="processScrollBoard" /> | ||||
|           </base-container> | ||||
|         </el-col> | ||||
|  | ||||
|         <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8" height="100%"> | ||||
|           <base-container :height="318" :size="'small'" :title="'工单监控'" :title-icon="'eqMonitoring'"> | ||||
|           <base-container :show-time="false" :height="318" :size="'small'" :title="'工单监控'" :title-icon="'eqMonitoring'"> | ||||
|             <div class="order" style="width: 100%; overflow: hidden scroll; height: 350px"> | ||||
|               <el-row v-for="op in orderList" :key="op.id" style="margin-bottom: .5em"> | ||||
|               <el-row v-for="op in orderList" :key="op.id" style="margin-bottom: .5em;overflow: hidden;"> | ||||
|                 <!-- <el-col :span="12"> --> | ||||
|  | ||||
|                 <p class="now-secondary-title" style="font-size: 14px;opacity: calc(.6);">{{ op.name }}</p> | ||||
|                 <el-progress style="width: 620px;" text-color="rgba(255, 255, 255, .6)" :stroke-width="10" | ||||
|                 <!-- <div style="height: 34px;"> --> | ||||
|                 <span style="display: inline-block;width: 400px"> | ||||
|                   <span v-if="op.name" class="now-secondary-title" style="font-size: 14px;opacity: calc(.6);">{{ op.name | ||||
|                   }}</span> | ||||
|                   <el-divider v-if="op.specifications" class="split" direction="vertical"></el-divider> | ||||
|                   <!-- <span v-if="op.size" class="split"></span> --> | ||||
|                   <span v-if="op.specifications" class="orderSize" style="font-size: 14px;opacity: calc(.6);">{{ | ||||
|                   op.specifications }}</span> | ||||
|                   <el-divider class="split" v-if="op.planQuantity" direction="vertical"></el-divider> | ||||
|                   <span v-if="op.planQuantity" class="orderPlan" style="font-size: 14px;opacity: calc(.6);">{{ | ||||
|                   op.planQuantity }}</span> | ||||
|                   <span v-if="op.planQuantity" class="orderFinishTwo" | ||||
|                     style="font-size: 14px;opacity: calc(.6);">片</span> | ||||
|                 </span> | ||||
|                 <!-- <span style="overflow: hidden;"> --> | ||||
|                 <span class="orderFinish" style="font-size: 14px;margin-left: 40px;">{{ | ||||
|                 op.actualQuantity | ||||
|                 }}</span> | ||||
|                 <span v-if="op.actualQuantity" class="orderFinishTwo" style="font-size: 14px">片</span> | ||||
|                 <el-divider class="split" style="background-color: rgba(0, 255, 247, 1)" v-if="op.actualQuantity" | ||||
|                   direction="vertical"></el-divider> | ||||
|                 <!-- </span> --> | ||||
|                 <!-- </div> --> | ||||
|                 <el-progress style="width: 620px;" text-color="rgba(0, 255, 247, 1)" :stroke-width="10" | ||||
|                   define-back-color="rgba(32, 57, 96, 1)" :percentage="op.progressRate" class="custom-progress-bar" /> | ||||
|               </el-row> | ||||
|             </div> | ||||
| @@ -54,8 +75,8 @@ | ||||
|  | ||||
|       <el-row :style="{ padding: '0 ' + 9 + 'px' }" :gutter="12" type="flex" class="flex-1"> | ||||
|         <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12"> | ||||
|           <base-container :show-yes-time="true" :no-content-padding="true" :height="256" :size="'eqStatus'" | ||||
|             :title="'能源监控'" :title-icon="'energyMonitoring'"> | ||||
|           <base-container :show-time="true" :show-yes-time="true" :no-content-padding="true" :height="256" | ||||
|             :size="'eqStatus'" :title="'能源监控'" :title-icon="'energyMonitoring'"> | ||||
|             <el-row :gutter="9"> | ||||
|               <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="24"> | ||||
|                 <linear-bar-chart ref="EnergyMonitoringChart" :name-list="EnergyMonitoringNameList" | ||||
| @@ -96,79 +117,79 @@ const qualityYearList = [ | ||||
| 		name: '翻转机', | ||||
| 		code: 'EQ20240110112358000235', | ||||
| 		status: '运行', | ||||
| 		error: '否', | ||||
|     error: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: '烘干炉', | ||||
| 		code: 'EQ20240110112537000241', | ||||
| 		status: '运行', | ||||
| 		error: '否', | ||||
| 		status: '停机', | ||||
|     error: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: '清洗机', | ||||
| 		code: '	EQ20240110112310000232', | ||||
| 		status: '运行', | ||||
| 		error: '否', | ||||
|     status: '故障', | ||||
|     error: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: '钢化清洗机', | ||||
| 		code: 'EQ20240110111700000208', | ||||
| 		status: '运行', | ||||
| 		error: '否', | ||||
|     status: '故障', | ||||
|     error: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: '固化机', | ||||
| 		code: 'EQ20240110111700000201', | ||||
| 		status: '运行', | ||||
| 		error: '否', | ||||
|     status: '停机', | ||||
|     error: false, | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: '磨边清洗机', | ||||
| 		code: '	EQ20240110111700000208', | ||||
| 		status: '运行', | ||||
| 		error: '否', | ||||
|     status: '停机', | ||||
|     error: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: '预热机', | ||||
| 		code: 'EQ20240110111700000205', | ||||
| 		status: '故障', | ||||
| 		error: '是', | ||||
|     status: '运行', | ||||
|     error: false, | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: '下片机', | ||||
|     code: 'EQ20240115151435000279', | ||||
| 		status: '运行', | ||||
| 		error: '否', | ||||
|     status: '故障', | ||||
|     error: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: '冷却机', | ||||
| 		code: 'EQ20240110111700000203', | ||||
|     status: '运行', | ||||
| 		error: '否', | ||||
|     error: false, | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: 'A储片机106', | ||||
| 		code: 'EQ20240110111700000202', | ||||
| 		status: '运行', | ||||
| 		error: '否', | ||||
|     status: '停机', | ||||
|     error: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: '二次清洗机', | ||||
| 		code: 'EQ20240110111700000209', | ||||
| 		status: '运行', | ||||
| 		error: '否', | ||||
|     status: '停机', | ||||
|     error: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: '二次磨边机', | ||||
| 		code: '	EQ20240110110927000181', | ||||
| 		status: '故障', | ||||
| 		error: '是', | ||||
|     status: '停机', | ||||
|     error: false, | ||||
| 	}, | ||||
| 	{ | ||||
| 		name: '测试设备', | ||||
| 		code: 'EQ20240110111700000201', | ||||
|     status: '运行', | ||||
| 		error: '否', | ||||
|     error: true, | ||||
| 	}, | ||||
| ]; | ||||
| const qualityMonthList = [ | ||||
| @@ -217,37 +238,37 @@ const qualityMonthList = [ | ||||
| ]; | ||||
| const orderProcessList = [ | ||||
| 	{ | ||||
| 		id: '1', | ||||
| 		id: 1, | ||||
| 		outRate: '.8', | ||||
| 		name: '凯盛0322', | ||||
| 	}, | ||||
| 	{ | ||||
| 		id: '2', | ||||
| 		id: 2, | ||||
| 		outRate: '.4', | ||||
| 		name: '光伏玻璃4.0', | ||||
| 	}, | ||||
| 	{ | ||||
| 		id: '3', | ||||
| 		id: 3, | ||||
| 		outRate: '.5', | ||||
| 		name: '光伏玻璃3.0', | ||||
| 	}, | ||||
| 	{ | ||||
| 		id: '4', | ||||
| 		id: 4, | ||||
| 		outRate: '.3', | ||||
| 		name: '光伏玻璃2.0', | ||||
| 	}, | ||||
| 	{ | ||||
| 		id: '5', | ||||
| 		id: 5, | ||||
| 		outRate: '.5', | ||||
| 		name: '光伏玻璃1.0', | ||||
| 	}, | ||||
| 	{ | ||||
| 		id: '6', | ||||
| 		id: 6, | ||||
| 		outRate: '.8', | ||||
| 		name: '光伏玻璃', | ||||
| 	}, | ||||
| 	{ | ||||
| 		id: '7', | ||||
| 		id: 7, | ||||
| 		outRate: '.8', | ||||
| 		name: '统计订单', | ||||
| 	}, | ||||
| @@ -278,11 +299,11 @@ export default { | ||||
| 			// equipmentList:[], | ||||
| 			EnergyMonitoringList: [], | ||||
| 			eqConfig: { | ||||
| 				header: ['序号', '设备名称', '设备编码', '设备状态', '是否故障'], | ||||
|         header: ['序号', '产线名', '设备名称', '设备状态'], | ||||
| 				headerBGC: 'rgba(32, 55, 96, 0.8)', | ||||
| 				oddRowBGC: 'rgba(32, 55, 96, 0.8)', | ||||
| 				evenRowBGC: 'rgba(14, 32, 62, 0.8)', | ||||
| 				columnWidth: [70, 100, 200, 90, 90], | ||||
| 				columnWidth: [70, 150, 200, 120], | ||||
| 				align: ['center'], | ||||
| 				data: [], | ||||
| 				// index:true, | ||||
| @@ -363,43 +384,67 @@ export default { | ||||
| 		let detData = [ | ||||
| 			{ | ||||
| 				id: '1', | ||||
| 				name: '测试工单', | ||||
|         name: '镀釉光伏玻璃GW', | ||||
|         progressRate: 0.933333, | ||||
|         specifications: '1100*5554*22', | ||||
|         plan: 111111111111, | ||||
|         actualQuantity:1000000111111, | ||||
| 			}, | ||||
| 			{ | ||||
| 				id: '2', | ||||
| 				name: '测试工单2', | ||||
|         progressRate: 0.932323, | ||||
|         size: '1100*5554*22', | ||||
|         plan: 11111, | ||||
|         actualQuantity: 111, | ||||
| 			}, | ||||
| 			{ | ||||
| 				id: '3', | ||||
| 				name: '测试工单3', | ||||
|         progressRate: 0.23232, | ||||
|         size: '1100*5554*22', | ||||
|         plan: 11111, | ||||
|         actualQuantity: 111, | ||||
| 			}, | ||||
| 			{ | ||||
| 				id: '4', | ||||
| 				name: '测试工单4', | ||||
|         progressRate: 0.32323, | ||||
|         size: '1100*5554*22', | ||||
|         plan: 11111, | ||||
|         actualQuantity: 111, | ||||
|       }, | ||||
|       { | ||||
|         id: '4', | ||||
|         id: '5', | ||||
|         name: '测试工单4', | ||||
|         progressRate: 0.32323, | ||||
|         size: '1100*5554*22', | ||||
|         plan: 11111, | ||||
|         actualQuantity: 111, | ||||
|       }, | ||||
|       { | ||||
|         id: '4', | ||||
|         id: '6', | ||||
|         name: '测试工单4', | ||||
|         size: '1100*5554*22', | ||||
|         progressRate: 0.32323, | ||||
|         plan: 11111, | ||||
|         actualQuantity: 111, | ||||
|       }, | ||||
|       { | ||||
|         id: '4', | ||||
|         id: '7', | ||||
|         name: '测试工单4', | ||||
|         size: '1100*5554*22', | ||||
|         progressRate: 0.32323, | ||||
|         plan: 11111, | ||||
|         actualQuantity: 111, | ||||
|       }, | ||||
|       { | ||||
|         id: '4', | ||||
|         id: '8', | ||||
|         name: '测试工单4', | ||||
|         progressRate: 0.32323, | ||||
|         size: '1100*5554*22', | ||||
|         plan: 11111, | ||||
|         actualQuantity: 111, | ||||
|       }, | ||||
| 			// { | ||||
| 			//   id: '5', | ||||
| @@ -415,8 +460,11 @@ export default { | ||||
| 			if (ele.progressRate && ele.progressRate != 1) { | ||||
| 				return { | ||||
|           id: ele.id, | ||||
| 					name: ele.name, | ||||
|           name: this.getStr(String(ele.name), 8), | ||||
|           progressRate: parseFloat((ele.progressRate * 100).toFixed(0)), | ||||
|           specifications: ele.specifications ? '规格' + ele.specifications : '', | ||||
|           planQuantity: ele.plan ? '计划' + this.getStr(String(ele.plan), 6) : '', | ||||
|           actualQuantity: ele.actualQuantity ? this.getStr(String(ele.actualQuantity), 6) : '', | ||||
| 				}; | ||||
| 			} | ||||
| 		}); | ||||
| @@ -436,12 +484,10 @@ export default { | ||||
| 			`<span style="color:rgba(255,255,255,0.5)" >${index + 1 || ''} | ||||
|             </span>`, | ||||
| 			// formatDate(item.planStartTime) || '', | ||||
| 			` | ||||
|       `<span style="color:rgba(255,255,255,0.5)">${item.lineName || ''}</span>`,` | ||||
|           <span style="color:rgba(255,255,255,0.5)" >${item.name || ''} | ||||
|             </span>`, | ||||
| 			`<span style="color:rgba(255,255,255,0.5)">${item.code || ''}</span>`, | ||||
| 			`<span style="color:rgba(255,255,255,0.5)">${item.status || ''}</span>`, | ||||
| 			`<span style="color:rgba(255,255,255,0.5)">${item.error || ''}</span>`, | ||||
|       `<span style="color:rgba(255,255,255,0.5)"><div style="${item.status == '运行' ? 'box-shadow: 0px 0px 2px 1px #2760FF;width:6px;height:6px;border-radius: 50%;background-color: #2760FF;float:left;margin:13px 10px 0 0' : item.status == '停机' ? 'box-shadow: 0px 0px 2px 1px #FFBD02;width:6px;height:6px;border-radius: 50%;background-color: #FFBD02;float:left;margin:13px 10px 0 0 ' : 'box-shadow: 0px 0px 2px 1px red;width:6px;height:6px;border-radius: 50%;  background-color: red;float:left;margin:13px 10px 0 0'}"></div>  ${item.status || ''}</span>`, | ||||
| 		]); | ||||
|     this.eqConfig.data = eqArr; | ||||
|     let data = [ | ||||
| @@ -520,6 +566,15 @@ export default { | ||||
| 	//   removeEventListener('resize', resizeFun) | ||||
| 	// }, | ||||
|   methods: { | ||||
|     getStr(str,num) { | ||||
|           //你要处理的字符串 | ||||
|       if (str.length > num) {      //如果字符长度超过10,后面的字符就变成...可自行调整长度和代替字符 | ||||
|         str = str.substr(0, num) + "..."   //截取从第一个字符开始,往后取10个字符,剩余的用...代替 | ||||
|         return str | ||||
|       } else { | ||||
|         return str | ||||
|       } | ||||
|     }, | ||||
| 		getData() { | ||||
| 			let processArr = qualityMonthList.map((item, index) => [ | ||||
| 				// console.log(item) | ||||
| @@ -689,8 +744,11 @@ export default { | ||||
| 						if (ele.progressRate && ele.progressRate != 1) { | ||||
| 							return { | ||||
|                 id: ele.id, | ||||
| 								name: ele.name, | ||||
|                 name: this.getStr(String(ele.name), 8), | ||||
|                 progressRate: parseFloat((ele.progressRate * 100).toFixed(0)), | ||||
|                 specifications: ele.specifications ? '规格' + ele.specifications : '', | ||||
|                 planQuantity: ele.planQuantity ? '计划' + this.getStr(String(ele.planQuantity),6) : '', | ||||
|                 actualQuantity: ele.actualQuantity ? this.getStr(String(ele.actualQuantity), 6) : '', | ||||
| 							}; | ||||
| 						} | ||||
| 					}); | ||||
| @@ -699,17 +757,13 @@ export default { | ||||
| 					let eqArr = this.SJGWsData.detData.map((item, index) => [ | ||||
| 						`<span style="color:rgba(255,255,255,0.5)" >${index + 1 || ''} | ||||
|             </span>`, | ||||
|             `<span style="color:rgba(255,255,255,0.5)">${item.lineName || '' | ||||
|             }</span>`, | ||||
| 						`<span style="color:rgba(255,255,255,0.5)" >${item.name || ''} | ||||
|             </span>`, | ||||
| 						`<span style="color:rgba(255,255,255,0.5)">${ | ||||
| 							item.code || '' | ||||
| 						}</span>`, | ||||
| 						`<span style="color:rgba(255,255,255,0.5)"><span style="color:rgba(255,255,255,0.5)"></span>  ${ | ||||
| 							item.status || '' | ||||
| 						}</span>`, | ||||
| 						`<span style="color:rgba(255,255,255,0.5)">${ | ||||
| 							item.error || '' | ||||
| 						}</span>`, | ||||
|  | ||||
|             `<span style="color:rgba(255,255,255,0.5)"><div style="${item.status == '运行' ? 'box-shadow: 0px 0px 2px 1px #2760FF;width:6px;height:6px;border-radius: 50%;background-color: #2760FF;float:left;margin:13px 10px 0 0' : item.status == '停机' ? 'box-shadow: 0px 0px 2px 1px #FFBD02;width:6px;height:6px;border-radius: 50%;background-color: #FFBD02;float:left;margin:13px 10px 0 0 ' : 'box-shadow: 0px 0px 2px 1px red;width:6px;height:6px;border-radius: 50%;  background-color: red;float:left;margin:13px 10px 0 0'}"></div>  ${item.status || ''}</span>`, | ||||
|             // `<span style="color:rgba(255,255,255,0.5)"><div style="${item.error == false ? 'box-shadow: 0px 0px 2px 1px #2760FF;width:6px;height:6px;border-radius: 50%;background-color: #2760FF;float:left;margin:10px 10px 0 0 ' : 'box-shadow: 0px 0px 2px 1px red;width:6px;height:6px;border-radius: 50%;  background-color: red;float:left;margin:10px 10px 0 0 '}"></div>  ${item.error == true ?'是' :'否'  || ''}</span>`, | ||||
| 					]); | ||||
|           this.eqConfig.data = eqArr; | ||||
|           // this.$nextTick(() => { | ||||
| @@ -751,7 +805,23 @@ export default { | ||||
|               outputNumList | ||||
|             ); | ||||
|           }) | ||||
| 				} else if (this.SJGInitWebSocket === 'inspection') { | ||||
|         } else if (this.SJGWsData.type === 'inspection') { | ||||
|           let processArr = this.SJGWsData.detData.map((item, index) => [ | ||||
|             `<span style="color:rgba(255,255,255,0.5)" >${index + 1 || ''} | ||||
|             </span>`, | ||||
|             `<span style="color:rgba(255,255,255,0.5)" >${item.productionLineName || ''} | ||||
|             </span>`, | ||||
|             `<span style="color:rgba(255,255,255,0.5)">${item.sectionName || '' | ||||
|             }</span>`, | ||||
|             `<span style="color:rgba(255,255,255,0.5)">${item.count || '' | ||||
|             }</span>`, | ||||
|             `<span style="color:rgba(255,255,255,0.5)">${item.inspectionTypeName || '' | ||||
|             }</span>`, | ||||
|           ]); | ||||
|           this.processConfig.data = processArr; | ||||
|           // this.$nextTick(() => { | ||||
|           this.$refs['processScrollBoard'].updateRows(processArr); | ||||
|           // }) | ||||
| 				} | ||||
| 			}; | ||||
| 		}, | ||||
| @@ -802,6 +872,18 @@ export default { | ||||
| </script> | ||||
|  | ||||
| <style lang="scss" scoped> | ||||
| .split{ | ||||
|   width: 1px; | ||||
|   // display: inline-block; | ||||
|   height: 14px; | ||||
|   // margin-top: 2px; | ||||
|   // line-height: 0; | ||||
|   margin-left: 8px; | ||||
|   opacity:calc(.6); | ||||
|   margin-right: 8px; | ||||
|   background-color: #C8CDD7; | ||||
|   // border: 1px solid #C8CDD7; | ||||
| } | ||||
| .myLegend { | ||||
|   position: absolute; | ||||
|   top: -28px; | ||||
| @@ -902,12 +984,50 @@ export default { | ||||
| } | ||||
|  | ||||
| .now-secondary-title { | ||||
|   display: inline-block; | ||||
|   width: 110px; | ||||
| 	margin: 0; | ||||
| 	font-size: 1em; | ||||
| 	font-size: 14px; | ||||
| 	line-height: 2em; | ||||
| 	color: #fff; | ||||
| } | ||||
|  | ||||
| .orderSize { | ||||
|   display: inline-block; | ||||
|   width: 120px; | ||||
|   margin: 0; | ||||
|   font-size: 14px; | ||||
|   line-height: 2em; | ||||
|   color: #fff; | ||||
| } | ||||
| .orderFinish { | ||||
|   display: inline-block; | ||||
|   width: 60px; | ||||
|   margin: 0; | ||||
|   font-size: 14px; | ||||
|   text-align: right; | ||||
|   color: rgba(0, 255, 247, 1); | ||||
| } | ||||
| .orderFinishTwo{ | ||||
|   display: inline-block; | ||||
|   width: 15px; | ||||
|   margin: 0; | ||||
|   font-size: 14px; | ||||
|   line-height: 2em; | ||||
|   // text-overflow: ellipsis; | ||||
|   // white-space: nowrap; | ||||
|   // overflow: hidden; | ||||
|   text-align: right; | ||||
|   color: rgba(0, 255, 247, 1); | ||||
| } | ||||
| .orderPlan { | ||||
|   display: inline-block; | ||||
|   // width: 80px; | ||||
|   margin: 0; | ||||
|   font-size: 14px; | ||||
|   // line-height: 2em; | ||||
|   color: #fff; | ||||
|   text-align: left; | ||||
| } | ||||
| .now-team-content { | ||||
| 	font-size: 3em; | ||||
| 	line-height: 1em; | ||||
|   | ||||
| @@ -138,7 +138,7 @@ export default { | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'separate', | ||||
| 					type: this.$auth.hasPermi('base:core-customer:create') ? 'separate' : '', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('base:core-customer:create') ? 'button' : '', | ||||
|   | ||||
| @@ -110,7 +110,7 @@ export default { | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'separate', | ||||
| 					type: this.$auth.hasPermi('base:core-department:create') ? 'separate' : '', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('base:core-department:create') ? 'button' : '', | ||||
|   | ||||
| @@ -156,11 +156,11 @@ export default { | ||||
| 					prop: 'createTime', | ||||
| 					label: '添加时间', | ||||
| 					fixed: true, | ||||
| 					width: 180, | ||||
| 					minWidth: 180, | ||||
| 					filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'), | ||||
| 				}, | ||||
| 				{ prop: 'name', label: '设备名称', width: 180, showOverflowtooltip: true }, | ||||
| 				{ width: 250, prop: 'code', label: '设备编码' }, | ||||
| 				{ prop: 'name', label: '设备名称', minWidth: 180, showOverflowtooltip: true }, | ||||
| 				{ minWidth: 250, prop: 'code', label: '设备编码' }, | ||||
| 				{ prop: 'equipmentTypeName', label: '设备类型' }, | ||||
| 				{ prop: 'enName', label: '英文名称' }, | ||||
| 				{ prop: 'abbr', label: '缩写' }, | ||||
| @@ -211,7 +211,7 @@ export default { | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'separate', | ||||
| 					type: (this.$auth.hasPermi('base:core-equipment:export') || this.$auth.hasPermi('base:core-equipment:create')) ? 'separate' : '', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('base:core-equipment:export') | ||||
|   | ||||
| @@ -126,7 +126,8 @@ export default { | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'separate', | ||||
| 					type: this.$auth.hasPermi('base:core-equipment-bind-section:create') | ||||
| 						? 'separate' : '', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('base:core-equipment-bind-section:create') | ||||
|   | ||||
| @@ -90,7 +90,7 @@ export default { | ||||
| 					prop: 'createTime', | ||||
| 					label: '添加时间', | ||||
| 					fixed: true, | ||||
| 					width: 180, | ||||
| 					minWidth: 180, | ||||
| 					filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'), | ||||
| 				}, | ||||
| 				{ prop: 'name', label: '类型名称' }, | ||||
| @@ -111,7 +111,8 @@ export default { | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'separate', | ||||
| 					type: this.$auth.hasPermi('base:core-equipment-type:create') | ||||
| 						? 'separate' : '', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('base:core-equipment-type:create') | ||||
|   | ||||
| @@ -137,7 +137,7 @@ export default { | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'separate', | ||||
| 					type: this.$auth.hasPermi('base:core-hot-material-check:create') ? 'separate' : '', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('base:core-hot-material-check:create') ? 'button' : '', | ||||
|   | ||||
| @@ -110,7 +110,7 @@ export default { | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'separate', | ||||
| 					type: this.$auth.hasPermi('base:core-major:create') ? 'separate' : '', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('base:core-major:create') ? 'button' : '', | ||||
|   | ||||
| @@ -14,7 +14,7 @@ | ||||
| 			<method-btn | ||||
| 				v-if="tableBtn.length" | ||||
| 				slot="handleBtn" | ||||
| 				:width="120" | ||||
| 				:Width="120" | ||||
| 				label="操作" | ||||
| 				:method-list="tableBtn" | ||||
| 				@clickBtn="handleClick" /> | ||||
| @@ -48,45 +48,45 @@ const tableProps = [ | ||||
| 		prop: 'createTime', | ||||
| 		label: '添加时间', | ||||
| 		filter: parseTime, | ||||
| 		width: 150, | ||||
| 		minWidth: 150, | ||||
| 		showOverflowtooltip: true | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'name', | ||||
| 		label: '产品名称', | ||||
| 		width: 150, | ||||
| 		minWidth: 150, | ||||
| 		showOverflowtooltip: true | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'code', | ||||
| 		label: '产品编码', | ||||
| 		width: 190, | ||||
| 		minWidth: 190, | ||||
| 		showOverflowtooltip: true | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'productType', | ||||
| 		label: '产品类型', | ||||
| 		filter: publicFormatter('product_type'), | ||||
| 		width: 180, | ||||
| 		minWidth: 180, | ||||
| 		showOverflowtooltip: true | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'specifications', | ||||
| 		label: '规格', | ||||
| 		width: 150, | ||||
| 		minWidth: 150, | ||||
| 		showOverflowtooltip: true | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'unit', | ||||
| 		label: '单位', | ||||
| 		filter: publicFormatter('unit_dict'), | ||||
| 		width: 90, | ||||
| 		minWidth: 90, | ||||
| 		showOverflowtooltip: true | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'remark', | ||||
| 		label: '备注', | ||||
| 		width: 120, | ||||
| 		minWidth: 120, | ||||
| 		showOverflowtooltip: true | ||||
| 	}, | ||||
| ]; | ||||
| @@ -141,7 +141,7 @@ export default { | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'separate', | ||||
| 					type: this.$auth.hasPermi('base:core-product:create') ? 'separate' : '', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('base:core-product:create') ? 'button' : '', | ||||
|   | ||||
| @@ -14,7 +14,7 @@ | ||||
| 			<method-btn | ||||
| 				v-if="tableBtn.length" | ||||
| 				slot="handleBtn" | ||||
| 				:width="120" | ||||
| 				:minWidth="120" | ||||
| 				label="操作" | ||||
| 				:method-list="tableBtn" | ||||
| 				@clickBtn="handleClick" /> | ||||
| @@ -30,7 +30,7 @@ | ||||
| 			@cancel="handleCancel" | ||||
| 			@confirm="handleConfirm" | ||||
| 			:before-close="handleCancel" | ||||
| 			width="50%"> | ||||
| 			minWidth="50%"> | ||||
| 			<add-or-update | ||||
| 				ref="addOrUpdate" | ||||
| 				@refreshDataList="successSubmit"></add-or-update> | ||||
| @@ -56,39 +56,39 @@ const tableProps = [ | ||||
| 		prop: 'createTime', | ||||
| 		label: '添加时间', | ||||
| 		filter: parseTime, | ||||
| 		width: 150, | ||||
| 		minWidth: 150, | ||||
| 		showOverflowtooltip: true | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'factoryName', | ||||
| 		label: '工厂', | ||||
| 		width: 150, | ||||
| 		minWidth: 150, | ||||
| 		showOverflowtooltip: true | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'roomNameDict', | ||||
| 		label: '车间名称', | ||||
| 		filter: publicFormatter('workshop'), | ||||
| 		width: 120, | ||||
| 		minWidth: 120, | ||||
| 		showOverflowtooltip: true | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'name', | ||||
| 		label: '产线名称', | ||||
| 		width: 120, | ||||
| 		minWidth: 120, | ||||
| 		showOverflowtooltip: true | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'code', | ||||
| 		label: '产线编码', | ||||
| 		width: 150, | ||||
| 		minWidth: 150, | ||||
| 		showOverflowtooltip: true | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'enabled', | ||||
| 		label: '当前状态', | ||||
| 		filter: codeFilter('lineStatus'), | ||||
| 		width: 120, | ||||
| 		minWidth: 120, | ||||
| 		showOverflowtooltip: true | ||||
| 	}, | ||||
| 	// { | ||||
| @@ -98,13 +98,13 @@ const tableProps = [ | ||||
| 	{ | ||||
| 		prop: 'description', | ||||
| 		label: '描述', | ||||
| 		width: 120, | ||||
| 		minWidth: 120, | ||||
| 		showOverflowtooltip: true | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'remark', | ||||
| 		label: '备注', | ||||
| 		width: 120, | ||||
| 		minWidth: 120, | ||||
| 		showOverflowtooltip: true | ||||
| 	} | ||||
| ]; | ||||
| @@ -147,7 +147,7 @@ export default { | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'separate', | ||||
| 					type: this.$auth.hasPermi('base:core-production-line:create') ? 'separate' : '', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('base:core-production-line:create') ? 'button' : '', | ||||
|   | ||||
| @@ -132,7 +132,7 @@ export default { | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'separate', | ||||
| 					type: this.$auth.hasPermi('base:core-supplier:create') ? 'separate' : '', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('base:core-supplier:create') ? 'button' : '', | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
|  * @Author: zwq | ||||
|  * @Date: 2021-11-18 14:16:25 | ||||
|  * @LastEditors: DY | ||||
|  * @LastEditTime: 2024-03-22 08:53:20 | ||||
|  * @LastEditTime: 2024-04-08 10:21:46 | ||||
|  * @Description: | ||||
| --> | ||||
| <template> | ||||
| @@ -214,7 +214,9 @@ export default { | ||||
| 								actualQuantity: this.dataForm.actualQuantity | ||||
| 							}).then(response => { | ||||
| 								this.$modal.msgSuccess("操作成功!工单状态稍后将会更新!"); | ||||
| 								if (tempList.length > 0) { | ||||
| 									this.saveData(tempList) | ||||
| 								} | ||||
| 								this.visible = false; | ||||
| 								this.$emit("refreshDataList"); | ||||
| 							}); | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
|  * @Author: zwq | ||||
|  * @Date: 2021-11-18 14:16:25 | ||||
|  * @LastEditors: DY | ||||
|  * @LastEditTime: 2024-03-21 16:52:46 | ||||
|  * @LastEditTime: 2024-04-10 16:16:31 | ||||
|  * @Description: | ||||
| --> | ||||
| <template> | ||||
| @@ -182,7 +182,8 @@ | ||||
| 					:table-props="tableProps" | ||||
| 					:page="listQuery.pageNo" | ||||
| 					:limit="listQuery.pageSize" | ||||
| 					:table-data="orderList"> | ||||
| 					:table-data="orderList" | ||||
| 					:max-height="tableH"> | ||||
| 					<method-btn | ||||
| 						v-if="!isdetail" | ||||
| 						slot="handleBtn" | ||||
| @@ -200,6 +201,7 @@ | ||||
| 					@pagination="getList" /> --> | ||||
| 			</div> | ||||
|  | ||||
| 			<div v-if="$auth.hasPermiAnd(['base:material-product-bom-det:query', 'extend:process-flow:query'])"> | ||||
| 				<div class="card" style="padding-bottom: 16px;"> | ||||
| 					<div class="boxTitle"> | ||||
| 						<span class="blueTitle"></span> | ||||
| @@ -209,7 +211,8 @@ | ||||
| 						:table-props="tableProps1" | ||||
| 						:page="listQuery1.pageNo" | ||||
| 						:limit="listQuery1.pageSize" | ||||
| 					:table-data="materialList" /> | ||||
| 						:table-data="materialList" | ||||
| 						:max-height="tableH" /> | ||||
| 					<!-- <pagination | ||||
| 						v-show="listQuery1.total > 0" | ||||
| 						:total="listQuery1.total" | ||||
| @@ -218,6 +221,7 @@ | ||||
| 						:page-sizes="[5, 10, 15]" | ||||
| 						@pagination="getList" /> --> | ||||
| 				</div> | ||||
| 			</div> | ||||
|  | ||||
| 			<!-- <div class="drawer-body__footer"> | ||||
| 				<el-button type="primary" @click="goback()">关闭</el-button> | ||||
| @@ -235,6 +239,7 @@ import SmallTitle from './SmallTitle'; | ||||
| import { publicFormatter } from "@/utils/dict"; | ||||
| import { parseTime } from '@/utils/ruoyi' | ||||
| import topTabVue from '../../order/base/orderManage/components/topTab.vue'; | ||||
| import tableHeightMixin from '@/mixins/lb/tableHeightMixin'; | ||||
|  | ||||
| const tableBtn = [ | ||||
| 	{ | ||||
| @@ -292,9 +297,11 @@ const tableProps1 = [ | ||||
| ]; | ||||
|  | ||||
| export default { | ||||
| 	mixins: [tableHeightMixin], | ||||
| 	components: { SmallTitle, topTabVue }, | ||||
| 	data() { | ||||
| 		return { | ||||
| 			heightNum: 380, | ||||
| 			tableBtn, | ||||
| 			tableProps, | ||||
| 			tableProps1, | ||||
| @@ -455,8 +462,8 @@ export default { | ||||
| 				// this.listQuery.total = response.data.total; | ||||
| 			}); | ||||
| 			// 获取预使用原料列表 | ||||
| 			console.log() | ||||
| 			if (this.dataForm.id) { | ||||
| 			console.log('111我看看', this.dataForm.materialMethod) | ||||
| 			if (this.dataForm.id && this.$auth.hasPermiAnd(['base:material-product-bom-det:query', 'extend:process-flow:query'])) { | ||||
| 				if (this.dataForm.materialMethod === 1) { | ||||
| 					// 产品 | ||||
| 					getlistByProductId({ | ||||
|   | ||||
| @@ -9,7 +9,8 @@ | ||||
| 			:table-props="tableProps" | ||||
| 			:page="listQuery.pageNo" | ||||
| 			:limit="listQuery.pageSize" | ||||
| 			:table-data="tableData"> | ||||
| 			:table-data="tableData" | ||||
| 			:max-height="tableH"> | ||||
| 			<method-btn | ||||
| 				v-if="tableBtn.length" | ||||
| 				slot="handleBtn" | ||||
| @@ -62,7 +63,7 @@ import { | ||||
| 	getCoreWOList | ||||
| } from '@/api/base/coreWorkOrder'; | ||||
| import { publicFormatter } from '@/utils/dict'; | ||||
|  | ||||
| import tableHeightMixin from '@/mixins/lb/tableHeightMixin'; | ||||
|  | ||||
| const tableProps = [ | ||||
| 	{ | ||||
| @@ -132,7 +133,7 @@ const tableProps = [ | ||||
| ]; | ||||
|  | ||||
| export default { | ||||
| 	mixins: [basicPage], | ||||
| 	mixins: [basicPage, tableHeightMixin], | ||||
| 	components: { | ||||
| 		AddWorkOrder, | ||||
| 		AddOrUpdate, | ||||
| @@ -156,7 +157,8 @@ export default { | ||||
| 				// 			showTip: '预使用原料信息' | ||||
| 				// 	  } | ||||
| 				// 	: undefined, | ||||
| 					{ | ||||
| 					this.$auth.hasPermi(`base:core-work-order:update`) | ||||
| 					? { | ||||
| 							type: 'active', | ||||
| 							btnName: '激活', | ||||
| 							showParam: { | ||||
| @@ -174,8 +176,10 @@ export default { | ||||
| 									} | ||||
| 								] | ||||
| 							} | ||||
| 					}, | ||||
| 					{ | ||||
| 						} | ||||
| 					: undefined, | ||||
| 					this.$auth.hasPermi(`base:core-work-order:update`) | ||||
| 					? { | ||||
| 							type: 'pause', | ||||
| 							btnName: '暂停', | ||||
| 							showParam: { | ||||
| @@ -188,8 +192,10 @@ export default { | ||||
| 									} | ||||
| 								] | ||||
| 							} | ||||
| 					}, | ||||
| 					{ | ||||
| 						} | ||||
| 					: undefined, | ||||
| 					this.$auth.hasPermi(`base:core-work-order:update`) | ||||
| 					? { | ||||
| 							type: 'nullify', | ||||
| 							btnName: '作废', | ||||
| 							showParam: { | ||||
| @@ -202,8 +208,10 @@ export default { | ||||
| 									} | ||||
| 								] | ||||
| 							} | ||||
| 					}, | ||||
| 					{ | ||||
| 						} | ||||
| 					: undefined, | ||||
| 					this.$auth.hasPermi(`base:core-work-order:update`) | ||||
| 					? { | ||||
| 							type: 'finish', | ||||
| 							btnName: '完成', | ||||
| 							showParam: { | ||||
| @@ -221,8 +229,10 @@ export default { | ||||
| 									} | ||||
| 								] | ||||
| 							} | ||||
| 					}, | ||||
| 					{ | ||||
| 						} | ||||
| 					: undefined, | ||||
| 					this.$auth.hasPermi(`base:core-work-order:update`) | ||||
| 					? { | ||||
| 							type: 'stop', | ||||
| 							btnName: '终止', | ||||
| 							showParam: { | ||||
| @@ -240,8 +250,12 @@ export default { | ||||
| 									} | ||||
| 								] | ||||
| 							} | ||||
| 					}, | ||||
| 					this.$auth.hasPermi(`base:core-work-order:detail`) | ||||
| 						} | ||||
| 					: undefined, | ||||
| 					this.$auth.hasPermiAnd([ | ||||
| 						'base:core-work-order:query', | ||||
| 						'base:order:query' | ||||
| 					]) | ||||
| 					? { | ||||
| 							type: 'detail', | ||||
| 							btnName: '查看详情', | ||||
|   | ||||
| @@ -163,7 +163,7 @@ export default { | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'separate', | ||||
| 					type: this.$auth.hasPermi('base:core-worker:create') ? 'separate' : '', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('base:core-worker:create') ? 'button' : '', | ||||
|   | ||||
| @@ -52,8 +52,7 @@ const tableProps = [ | ||||
| 	{ | ||||
| 		prop: 'createTime', | ||||
| 		label: '添加时间', | ||||
| 		filter: parseTime, | ||||
|  | ||||
| 		filter: parseTime | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'code', | ||||
| @@ -116,7 +115,7 @@ export default { | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'separate', | ||||
| 					type: this.$auth.hasPermi('base:core-workshop-section:create') ? 'separate' : '', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('base:core-workshop-section:create') ? 'button' : '', | ||||
|   | ||||
| @@ -1,6 +1,11 @@ | ||||
| <template> | ||||
|   <el-drawer :visible.sync="drawer" :append-to-body="true" size="80%" > | ||||
|     <small-title slot="title" :no-padding="true"> | ||||
| 	<el-drawer | ||||
| 		:visible.sync="drawer" | ||||
| 		:append-to-body="true" | ||||
| 		size="80%"> | ||||
| 		<small-title | ||||
| 			slot="title" | ||||
| 			:no-padding="true"> | ||||
| 			<!-- <template v-for="demo in demoList"> --> | ||||
| 			<!-- <el-button :key="demo.name" :type="demo.name === curDemo ? 'primary' : ' '" @click="curDemo = demo.name"> --> | ||||
| 			<!-- {{ $t('module.packingManage.printModelDesign') }} --> | ||||
| @@ -10,7 +15,7 @@ | ||||
| 		</small-title> | ||||
| 		<el-card> | ||||
| 			<el-row style="margin-bottom: 10px"> | ||||
|         <el-col :span="4"> | ||||
| 				<!-- <el-col :span="4"> --> | ||||
| 				<!-- 模板选择 --> | ||||
|  | ||||
| 				<!-- <el-select | ||||
| @@ -25,26 +30,65 @@ | ||||
|             {{ opt.name }} | ||||
|           </el-option> | ||||
|         </el-select> --> | ||||
|         </el-col> | ||||
|         <el-col :span="20"> | ||||
| 				<!-- </el-col> --> | ||||
| 				<el-col :span="24"> | ||||
| 					<!-- 纸张设置 --> | ||||
| 					<el-button-group style="margin: 0 10px"> | ||||
|             <el-button v-for="(value,type) in paperTypes" :key="type" :type="curPaperType === type ? 'primary' : ' '" | ||||
| 						<el-button | ||||
| 							v-for="(value, type) in paperTypes" | ||||
| 							:key="type" | ||||
| 							:type="curPaperType === type ? 'primary' : ' '" | ||||
| 							@click="setPaper(type, value)"> | ||||
| 							{{ type }} | ||||
| 						</el-button> | ||||
| 					</el-button-group> | ||||
|           <el-input-number style="margin:0 10px" :value="scaleValue " :precision="2" :step="0.1" :min="scaleMin" | ||||
|             :max="scaleMax" @change="changeScale" /> | ||||
|           <el-popover v-model="paperPopVisible" placement="bottom" width="300" title="设置纸张宽高(mm)"> | ||||
|             <div style="display: flex;align-items: center;justify-content: space-between;margin-bottom: 10px"> | ||||
|               <el-input v-model="paperWidth" type="number" style=" width: 100px; text-align: center" place="宽(mm)" />~ | ||||
|               <el-input v-model="paperHeight" type="number" style=" width: 100px; text-align: center" place="高(mm)" /> | ||||
| 					<el-input-number | ||||
| 						style="margin: 0 10px; width: 140px" | ||||
| 						:value="scaleValue" | ||||
| 						:precision="2" | ||||
| 						:step="0.1" | ||||
| 						:min="scaleMin" | ||||
| 						:max="scaleMax" | ||||
| 						@change="changeScale" /> | ||||
| 					<el-popover | ||||
| 						v-model="paperPopVisible" | ||||
| 						placement="bottom" | ||||
| 						width="300" | ||||
| 						title="设置纸张宽高(mm)"> | ||||
| 						<div | ||||
| 							style=" | ||||
| 								display: flex; | ||||
| 								align-items: center; | ||||
| 								justify-content: space-between; | ||||
| 								margin-bottom: 10px; | ||||
| 							"> | ||||
| 							<el-input | ||||
| 								v-model="paperWidth" | ||||
| 								type="number" | ||||
| 								style="width: 100px; text-align: center" | ||||
| 								place="宽(mm)" /> | ||||
| 							~ | ||||
| 							<el-input | ||||
| 								v-model="paperHeight" | ||||
| 								type="number" | ||||
| 								style="width: 100px; text-align: center" | ||||
| 								place="高(mm)" /> | ||||
| 						</div> | ||||
| 						<div> | ||||
|               <el-button type="primary" style="width: 100%" size="mini" @click="otherPaper">确定</el-button> | ||||
| 							<el-button | ||||
| 								type="primary" | ||||
| 								style="width: 100%" | ||||
| 								size="mini" | ||||
| 								@click="otherPaper"> | ||||
| 								确定 | ||||
| 							</el-button> | ||||
| 						</div> | ||||
|             <el-button slot="reference" type="primary" style="margin:0 10px">自定义宽高</el-button> | ||||
| 						<el-button | ||||
| 							slot="reference" | ||||
| 							type="primary" | ||||
| 							style="margin: 0 10px"> | ||||
| 							自定义宽高 | ||||
| 						</el-button> | ||||
| 					</el-popover> | ||||
|  | ||||
| 					<!--          <a-button-group>--> | ||||
| @@ -72,38 +116,57 @@ | ||||
|  | ||||
| 					<!-- 预览/打印 --> | ||||
| 					<el-button-group> | ||||
|             <el-button type="primary" icon="redo" @click="rotatePaper()">旋转</el-button> | ||||
|             <el-button type="primary" icon="el-icon-view" @click="preView"> | ||||
| 						<el-button | ||||
| 							type="primary" | ||||
| 							icon="redo" | ||||
| 							@click="rotatePaper()"> | ||||
| 							旋转 | ||||
| 						</el-button> | ||||
| 						<el-button | ||||
| 							type="primary" | ||||
| 							icon="el-icon-view" | ||||
| 							@click="preView"> | ||||
| 							预览 | ||||
| 						</el-button> | ||||
| 						<!-- <el-button type="primary" icon="el-icon-printer" @click="print"> | ||||
|             直接打印 | ||||
|           </el-button> --> | ||||
|             <el-button type="primary" icon="el-icon-s-management" @click="save"> | ||||
| 						<el-button | ||||
| 							type="primary" | ||||
| 							icon="el-icon-s-management" | ||||
| 							@click="save"> | ||||
| 							保存 | ||||
| 						</el-button> | ||||
|             <el-button type="danger" icon="el-icon-delete" @click="clearPaper"> | ||||
| 						<el-button | ||||
| 							type="danger" | ||||
| 							icon="el-icon-delete" | ||||
| 							@click="clearPaper"> | ||||
| 							清空 | ||||
| 						</el-button> | ||||
| 					</el-button-group> | ||||
| 					<!-- 保存/清空 --> | ||||
|  | ||||
| 				</el-col> | ||||
| 			</el-row> | ||||
| 			<el-row :gutter="24"> | ||||
| 				<el-col :span="4"> | ||||
| 					<el-card style="height: 100vh"> | ||||
| 						<el-row> | ||||
|               <el-col :span="24" class="rect-printElement-types hiprintEpContainer" /> | ||||
| 							<el-col | ||||
| 								:span="24" | ||||
| 								class="rect-printElement-types hiprintEpContainer" /> | ||||
| 						</el-row> | ||||
| 					</el-card> | ||||
| 				</el-col> | ||||
| 				<el-col :span="16"> | ||||
| 					<el-card class="card-design"> | ||||
|             <div id="hiprint-printTemplate" class="hiprint-printTemplate" /> | ||||
| 						<div | ||||
| 							id="hiprint-printTemplate" | ||||
| 							class="hiprint-printTemplate" /> | ||||
| 					</el-card> | ||||
| 				</el-col> | ||||
|         <el-col :span="4" class="params_setting_container"> | ||||
| 				<el-col | ||||
| 					:span="4" | ||||
| 					class="params_setting_container"> | ||||
| 					<el-card> | ||||
| 						<el-row class="hinnn-layout-sider"> | ||||
| 							<div id="PrintElementOptionSetting" /> | ||||
| @@ -118,15 +181,14 @@ | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
|  | ||||
| import printPreview from './preview' | ||||
| import { MessageBox } from 'element-ui' | ||||
| import { hiprint } from 'vue-plugin-hiprint' | ||||
| import providers from './providers' | ||||
| import printPreview from './preview'; | ||||
| import { MessageBox } from 'element-ui'; | ||||
| import { hiprint } from 'vue-plugin-hiprint'; | ||||
| import providers from './providers'; | ||||
| // import printData from './print-data' | ||||
| import $ from 'jquery' | ||||
| import SmallTitle from './SmallTitle.vue' | ||||
| let hiprintTemplate = null | ||||
| import $ from 'jquery'; | ||||
| import SmallTitle from './SmallTitle.vue'; | ||||
| let hiprintTemplate = null; | ||||
| export default { | ||||
| 	name: 'PrintCustom', | ||||
| 	components: { printPreview, SmallTitle }, | ||||
| @@ -153,30 +215,34 @@ export default { | ||||
| 			drawer: false, | ||||
| 			// 纸张类型 | ||||
| 			paperTypes: { | ||||
|         'A3': { | ||||
| 				A3: { | ||||
| 					width: 420, | ||||
|           height: 296.6 | ||||
| 					height: 296.6, | ||||
| 				}, | ||||
|         'A4': { | ||||
| 				A4: { | ||||
| 					width: 210, | ||||
|           height: 297 | ||||
| 					height: 297, | ||||
| 				}, | ||||
|         'A5': { | ||||
| 				A5: { | ||||
| 					width: 210, | ||||
|           height: 147.6 | ||||
| 					height: 147.6, | ||||
| 				}, | ||||
|         'B3': { | ||||
| 				A6: { | ||||
| 					width: 95, | ||||
| 					height: 125, | ||||
| 				}, | ||||
| 				B3: { | ||||
| 					width: 500, | ||||
|           height: 352.6 | ||||
| 					height: 352.6, | ||||
| 				}, | ||||
|         'B4': { | ||||
| 				B4: { | ||||
| 					width: 250, | ||||
|           height: 352.6 | ||||
| 					height: 352.6, | ||||
| 				}, | ||||
|         'B5': { | ||||
| 				B5: { | ||||
| 					width: 250, | ||||
|           height: 175.6 | ||||
|         } | ||||
| 					height: 175.6, | ||||
| 				}, | ||||
| 			}, | ||||
| 			scaleValue: 1, | ||||
| 			scaleMax: 5, | ||||
| @@ -184,59 +250,59 @@ export default { | ||||
| 			// 自定义纸张 | ||||
| 			paperPopVisible: false, | ||||
| 			paperWidth: '210', | ||||
|       paperHeight: '297' | ||||
|     } | ||||
| 			paperHeight: '297', | ||||
| 		}; | ||||
| 	}, | ||||
| 	computed: { | ||||
| 		curPaperType() { | ||||
|       let type = 'other' | ||||
|       const types = this.paperTypes | ||||
| 			let type = 'other'; | ||||
| 			const types = this.paperTypes; | ||||
| 			for (const key in types) { | ||||
|         const item = types[key] | ||||
|         const { width, height } = this.curPaper | ||||
| 				const item = types[key]; | ||||
| 				const { width, height } = this.curPaper; | ||||
| 				if (item.width === width && item.height === height) { | ||||
|           type = key | ||||
| 					type = key; | ||||
| 				} | ||||
| 			} | ||||
|       return type | ||||
|     } | ||||
| 			return type; | ||||
| 		}, | ||||
| 	}, | ||||
| 	created() { | ||||
| 		// $('.hiprintEpContainer').empty() | ||||
| 	}, | ||||
| 	destroyed() { | ||||
|     $('.hiprintEpContainer').empty() | ||||
|     console.log(11111) | ||||
| 		$('.hiprintEpContainer').empty(); | ||||
| 		console.log(11111); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		// handleClose() { | ||||
| 		//   $('.hiprintEpContainer').empty() | ||||
| 		// }, | ||||
| 		closed() { | ||||
|       $('.hiprintEpContainer').empty() | ||||
|       $('.hiprint-printTemplate').empty() | ||||
| 			$('.hiprintEpContainer').empty(); | ||||
| 			$('.hiprint-printTemplate').empty(); | ||||
| 		}, | ||||
| 		init(data) { | ||||
|       this.drawer = true | ||||
|       this.modelData = data | ||||
| 			this.drawer = true; | ||||
| 			this.modelData = data; | ||||
| 			this.modeList = providers.map((e) => { | ||||
|         return { type: e.type, name: e.name, value: e.value } | ||||
|       }) | ||||
|       this.changeMode() | ||||
| 				return { type: e.type, name: e.name, value: e.value }; | ||||
| 			}); | ||||
| 			this.changeMode(); | ||||
| 		}, | ||||
| 		changeMode() { | ||||
| 			// hiprintTemplate.clear() | ||||
| 			// console.log(this.modelData) | ||||
| 			this.$nextTick(() => { | ||||
|         const { mode } = this | ||||
|         const provider = providers[mode] | ||||
| 				const { mode } = this; | ||||
| 				const provider = providers[mode]; | ||||
| 				hiprint.init({ | ||||
|           providers: [provider.f] | ||||
|         }) | ||||
| 					providers: [provider.f], | ||||
| 				}); | ||||
|  | ||||
| 				// $('#hiprint-printTemplate').empty() | ||||
| 				// console.log(JSON.parse(this.modelData)) | ||||
|         hiprint.setConfig() | ||||
| 				hiprint.setConfig(); | ||||
| 				// 替换配置 | ||||
| 				hiprint.setConfig({ | ||||
| 					movingDistance: 2.5, | ||||
| @@ -244,15 +310,15 @@ export default { | ||||
| 						supportOptions: [ | ||||
| 							{ | ||||
| 								name: 'styler', | ||||
|                 hidden: true | ||||
| 								hidden: true, | ||||
| 							}, | ||||
| 							{ | ||||
| 								name: 'formatter', | ||||
|                 hidden: true | ||||
|               } | ||||
|             ] | ||||
|           } | ||||
|         }) | ||||
| 								hidden: true, | ||||
| 							}, | ||||
| 						], | ||||
| 					}, | ||||
| 				}); | ||||
|  | ||||
| 				// console.log(this.modelData) | ||||
| 				// console.log($('#hiprint-printTemplate').empty()) | ||||
| @@ -267,35 +333,38 @@ export default { | ||||
| 				//   paginationContainer: '.hiprint-printPagination' | ||||
| 				// }) | ||||
| 				// } else { | ||||
|           $('.hiprintEpContainer').empty() | ||||
| 				$('.hiprintEpContainer').empty(); | ||||
| 				console.log(this.modelData || {}); | ||||
|           hiprint.PrintElementTypeManager.build('.hiprintEpContainer', provider.value) | ||||
|           $('.hiprint-printTemplate').empty() | ||||
| 				hiprint.PrintElementTypeManager.build( | ||||
| 					'.hiprintEpContainer', | ||||
| 					provider.value | ||||
| 				); | ||||
| 				$('.hiprint-printTemplate').empty(); | ||||
| 				// const templates = this.$ls.get('KEY_TEMPLATES', {}) | ||||
|           const template = provider.value | ||||
| 				const template = provider.value; | ||||
| 				// console.log(template) | ||||
| 				if (this.modelData) { | ||||
| 					hiprintTemplate = new hiprint.PrintTemplate({ | ||||
| 						template: JSON.parse(this.modelData), | ||||
| 						settingContainer: '#PrintElementOptionSetting', | ||||
|             paginationContainer: '.hiprint-printPagination' | ||||
|           }) | ||||
| 						paginationContainer: '.hiprint-printPagination', | ||||
| 					}); | ||||
| 				} else { | ||||
| 					hiprintTemplate = new hiprint.PrintTemplate({ | ||||
| 						template: {}, | ||||
| 						settingContainer: '#PrintElementOptionSetting', | ||||
|             paginationContainer: '.hiprint-printPagination' | ||||
|           }) | ||||
| 						paginationContainer: '.hiprint-printPagination', | ||||
| 					}); | ||||
| 				} | ||||
| 				// } | ||||
|         hiprintTemplate.design('#hiprint-printTemplate') | ||||
| 				hiprintTemplate.design('#hiprint-printTemplate'); | ||||
| 				// console.log(hiprintTemplate) | ||||
| 				console.log(hiprintTemplate); | ||||
| 				// hiprintTemplate.design('#hiprint-printTemplate', { grid: true }) | ||||
| 				// 获取当前放大比例, 当zoom时传true 才会有 | ||||
|         this.scaleValue = hiprintTemplate.editingPanel.scale || 1 | ||||
| 				this.scaleValue = hiprintTemplate.editingPanel.scale || 1; | ||||
| 				// this.scaleValue = hiprintTemplate.editingPanel.scale || 1 | ||||
|       }) | ||||
| 			}); | ||||
| 		}, | ||||
| 		/** | ||||
| 		 * 设置纸张大小 | ||||
| @@ -305,97 +374,110 @@ export default { | ||||
| 		setPaper(type, value) { | ||||
| 			try { | ||||
| 				if (Object.keys(this.paperTypes).includes(type)) { | ||||
|           this.curPaper = { type: type, width: value.width, height: value.height } | ||||
|           hiprintTemplate.setPaper(value.width, value.height) | ||||
| 					this.curPaper = { | ||||
| 						type: type, | ||||
| 						width: value.width, | ||||
| 						height: value.height, | ||||
| 					}; | ||||
| 					hiprintTemplate.setPaper(value.width, value.height); | ||||
| 				} else { | ||||
|           this.curPaper = { type: 'other', width: value.width, height: value.height } | ||||
|           hiprintTemplate.setPaper(value.width, value.height) | ||||
| 					this.curPaper = { | ||||
| 						type: 'other', | ||||
| 						width: value.width, | ||||
| 						height: value.height, | ||||
| 					}; | ||||
| 					hiprintTemplate.setPaper(value.width, value.height); | ||||
| 				} | ||||
| 			} catch (error) { | ||||
|         this.$message.error(`操作失败: ${error}`) | ||||
| 				this.$message.error(`操作失败: ${error}`); | ||||
| 			} | ||||
| 		}, | ||||
| 		changeScale(currentValue, oldValue) { | ||||
|       let big = false | ||||
|       currentValue <= oldValue ? big = false : big = true | ||||
|       let scaleValue = this.scaleValue | ||||
| 			let big = false; | ||||
| 			currentValue <= oldValue ? (big = false) : (big = true); | ||||
| 			let scaleValue = this.scaleValue; | ||||
| 			if (big) { | ||||
|         scaleValue += 0.1 | ||||
|         if (scaleValue > this.scaleMax) scaleValue = 5 | ||||
| 				scaleValue += 0.1; | ||||
| 				if (scaleValue > this.scaleMax) scaleValue = 5; | ||||
| 			} else { | ||||
|         scaleValue -= 0.1 | ||||
|         if (scaleValue < this.scaleMin) scaleValue = 0.5 | ||||
| 				scaleValue -= 0.1; | ||||
| 				if (scaleValue < this.scaleMin) scaleValue = 0.5; | ||||
| 			} | ||||
| 			if (hiprintTemplate) { | ||||
| 				// scaleValue: 放大缩小值, false: 不保存(不传也一样), 如果传 true, 打印时也会放大 | ||||
|         hiprintTemplate.zoom(scaleValue) | ||||
|         this.scaleValue = scaleValue | ||||
| 				hiprintTemplate.zoom(scaleValue); | ||||
| 				this.scaleValue = scaleValue; | ||||
| 			} | ||||
| 		}, | ||||
| 		clearPaper() { | ||||
| 			MessageBox.confirm('是否确认清空模板信息?', '警告', { | ||||
| 				confirmButtonText: '确定', | ||||
| 				cancelButtonText: '取消', | ||||
|         type: 'warning' | ||||
|       }).then(() => { | ||||
|         try { | ||||
|           hiprintTemplate.clear() | ||||
|         } catch (error) { | ||||
|           this.$message.error(`操作失败: ${error}`) | ||||
|         } | ||||
|       }).catch((err) => { | ||||
|         console.log(err) | ||||
| 				type: 'warning', | ||||
| 			}) | ||||
| 				.then(() => { | ||||
| 					try { | ||||
| 						hiprintTemplate.clear(); | ||||
| 					} catch (error) { | ||||
| 						this.$message.error(`操作失败: ${error}`); | ||||
| 					} | ||||
| 				}) | ||||
| 				.catch((err) => { | ||||
| 					console.log(err); | ||||
| 				}); | ||||
| 		}, | ||||
| 		otherPaper() { | ||||
|       const value = {} | ||||
|       value.width = this.paperWidth | ||||
|       value.height = this.paperHeight | ||||
|       this.paperPopVisible = false | ||||
|       this.setPaper('other', value) | ||||
| 			const value = {}; | ||||
| 			value.width = this.paperWidth; | ||||
| 			value.height = this.paperHeight; | ||||
| 			this.paperPopVisible = false; | ||||
| 			this.setPaper('other', value); | ||||
| 		}, | ||||
| 		rotatePaper() { | ||||
| 			if (hiprintTemplate) { | ||||
|         hiprintTemplate.rotatePaper() | ||||
| 				hiprintTemplate.rotatePaper(); | ||||
| 			} | ||||
| 		}, | ||||
| 		preView() { | ||||
|       const { width } = this.curPaper | ||||
|       this.$refs.preView.show(hiprintTemplate, this.printData, width) | ||||
| 			const { width } = this.curPaper; | ||||
| 			this.$refs.preView.show(hiprintTemplate, this.printData, width); | ||||
| 		}, | ||||
| 		print() { | ||||
| 			// if (window.hiwebSocket.opened) { | ||||
|       const printerList = hiprintTemplate.getPrinterList() | ||||
|       console.log(printerList) | ||||
|       hiprintTemplate.print2(this.printData, { printer: '', title: '预览打印' }) | ||||
| 			const printerList = hiprintTemplate.getPrinterList(); | ||||
| 			console.log(printerList); | ||||
| 			hiprintTemplate.print2(this.printData, { | ||||
| 				printer: '', | ||||
| 				title: '预览打印', | ||||
| 			}); | ||||
| 			// return | ||||
| 			// } | ||||
| 			// this.$message.error('客户端未连接,无法直接打印') | ||||
| 		}, | ||||
| 		save() { | ||||
| 			// console.log(hiprintTemplate.getJson()) | ||||
|       const { mode } = this | ||||
|       const provider = providers[mode] | ||||
| 			const { mode } = this; | ||||
| 			const provider = providers[mode]; | ||||
| 			// console.log(hiprintTemplate.getJson()) | ||||
| 			this.setTemplate({ | ||||
| 				name: provider.value, | ||||
|         json: hiprintTemplate.getJson() | ||||
|       }) | ||||
| 				json: hiprintTemplate.getJson(), | ||||
| 			}); | ||||
| 		}, | ||||
| 		setTemplate(payload) { | ||||
| 			// const templates = this.$ls.get('KEY_TEMPLATES', {}) | ||||
| 			// console.log(payload.json) | ||||
| 			// templates[payload.name] = payload.json | ||||
| 			// this.$ls.set('KEY_TEMPLATES', templates) | ||||
|       this.$message.info('保存成功') | ||||
| 			this.$message.info('保存成功'); | ||||
| 			// console.log(JSON.stringify(payload.json)) | ||||
|       this.drawer = false | ||||
|       this.$emit('saveData', payload.json) | ||||
|       $('.hiprintEpContainer').empty() | ||||
| 			this.drawer = false; | ||||
| 			this.$emit('saveData', payload.json); | ||||
| 			$('.hiprintEpContainer').empty(); | ||||
| 			// this.$parent.$parent.getModelData(payload.json) | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
|  | ||||
| <style lang="scss" scoped> | ||||
| @@ -413,5 +495,4 @@ export default { | ||||
| 	overflow-x: auto; | ||||
| 	overflow-y: auto; | ||||
| } | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
|  * @Author: zwq | ||||
|  * @Date: 2021-11-18 14:16:25 | ||||
|  * @LastEditors: DY | ||||
|  * @LastEditTime: 2024-03-21 15:21:32 | ||||
|  * @LastEditTime: 2024-04-11 16:22:19 | ||||
|  * @Description: | ||||
| --> | ||||
| <template> | ||||
| @@ -122,14 +122,14 @@ | ||||
| 				</el-form> | ||||
| 			</div> | ||||
|  | ||||
| 			<div class="attr-list" v-if="idAttrShow"> | ||||
| 			<div class="attr-list" v-if="idAttrShow && this.$auth.hasPermi('base:material-attr:query')"> | ||||
| 				<small-title | ||||
| 					style="margin: 16px 0; padding-left: 8px" | ||||
| 					:no-padding="true"> | ||||
| 					物料属性 | ||||
| 				</small-title> | ||||
|  | ||||
| 				<div v-if="!isdetail" class="action_btn"> | ||||
| 				<div v-if="!isdetail && this.$auth.hasPermi('base:material-attr:create')" class="action_btn"> | ||||
|           <template> | ||||
|             <span style="display: inline-block;"> | ||||
|               <el-button type="text" @click="addNew()" icon="el-icon-plus">新增</el-button> | ||||
| @@ -182,16 +182,23 @@ import { parseTime } from '../../core/mixins/code-filter'; | ||||
| import attrAdd from './attr-add'; | ||||
| import { getDictDatas } from "@/utils/dict"; | ||||
|  | ||||
| const tableBtn = [ | ||||
| 	{ | ||||
| 		type: 'edit', | ||||
| 		btnName: '编辑', | ||||
| 	}, | ||||
| 	{ | ||||
| 		type: 'delete', | ||||
| 		btnName: '删除', | ||||
| 	}, | ||||
| ]; | ||||
| // const tableBtn = [ | ||||
| // 		this.$auth.hasPermiAnd([ | ||||
| // 			'base:material-attr:create', | ||||
| // 			'base:material-attr:update' | ||||
| // 		]) ? | ||||
| // 		{ | ||||
| // 			type: 'edit', | ||||
| // 			btnName: '编辑', | ||||
| // 		} | ||||
| // 		: undefined, | ||||
| // 	this.$auth.hasPermi('base:material-attr:delete') ?  | ||||
| // 		{ | ||||
| // 			type: 'delete', | ||||
| // 			btnName: '删除', | ||||
| // 		} | ||||
| // 	: undefined, | ||||
| // ]; | ||||
| const tableProps = [ | ||||
| 	{ | ||||
| 		prop: 'createTime', | ||||
| @@ -213,7 +220,23 @@ export default { | ||||
| 	components: { SmallTitle, attrAdd }, | ||||
| 	data() { | ||||
| 		return { | ||||
| 			tableBtn, | ||||
| 			tableBtn: [ | ||||
| 				this.$auth.hasPermiAnd([ | ||||
| 					'base:material-attr:create', | ||||
| 					'base:material-attr:update' | ||||
| 				]) ? | ||||
| 				{ | ||||
| 					type: 'edit', | ||||
| 					btnName: '编辑', | ||||
| 				} | ||||
| 				: undefined, | ||||
| 			this.$auth.hasPermi('base:material-attr:delete') ?  | ||||
| 				{ | ||||
| 					type: 'delete', | ||||
| 					btnName: '删除', | ||||
| 				} | ||||
| 			: undefined, | ||||
| 			], | ||||
| 			tableProps, | ||||
| 			addOrUpdateVisible: false, | ||||
| 			urlOptions: { | ||||
|   | ||||
| @@ -134,7 +134,7 @@ export default { | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'separate', | ||||
| 					type: this.$auth.hasPermi('base:material:create') ? 'separate' : '', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('base:material:create') ? 'button' : '', | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
|  * @Author: zwq | ||||
|  * @Date: 2021-11-18 14:16:25 | ||||
|  * @LastEditors: DY | ||||
|  * @LastEditTime: 2024-03-21 14:39:52 | ||||
|  * @LastEditTime: 2024-04-11 16:44:41 | ||||
|  * @Description: | ||||
| --> | ||||
| <template> | ||||
| @@ -56,14 +56,14 @@ | ||||
| 					</el-row> | ||||
| 				</el-form> | ||||
| 			</div> | ||||
| 			<div class="attr-list" v-if="idAttrShow"> | ||||
| 			<div class="attr-list" v-if="idAttrShow && $auth.hasPermiAnd(['base:material-product-bom:query', 'base:material-product-bom-det:query'])"> | ||||
| 				<small-title | ||||
| 					style="margin: 16px 0; padding-left: 8px" | ||||
| 					:no-padding="true"> | ||||
| 					BOM明细 | ||||
| 				</small-title> | ||||
|  | ||||
| 				<div v-if="!isdetail" class="action_btn"> | ||||
| 				<div v-if="!isdetail && $auth.hasPermi('base:material-product-bom:create')" class="action_btn"> | ||||
|           <template> | ||||
|             <span style="display: inline-block;"> | ||||
|               <el-button type="text" @click="addNew()" icon="el-icon-plus">添加</el-button> | ||||
| @@ -116,16 +116,16 @@ import { parseTime } from '../../core/mixins/code-filter'; | ||||
| import attrAdd from './attr-add'; | ||||
| import { publicFormatter } from '@/utils/dict'; | ||||
|  | ||||
| const tableBtn = [ | ||||
| 	{ | ||||
| 		type: 'edit', | ||||
| 		btnName: '编辑', | ||||
| 	}, | ||||
| 	{ | ||||
| 		type: 'delete', | ||||
| 		btnName: '删除', | ||||
| 	}, | ||||
| ]; | ||||
| // const tableBtn = [ | ||||
| // 	{ | ||||
| // 		type: 'edit', | ||||
| // 		btnName: '编辑', | ||||
| // 	}, | ||||
| // 	{ | ||||
| // 		type: 'delete', | ||||
| // 		btnName: '删除', | ||||
| // 	}, | ||||
| // ]; | ||||
| const tableProps = [ | ||||
| 	{ | ||||
| 		prop: 'createTime', | ||||
| @@ -160,7 +160,24 @@ export default { | ||||
| 	components: { SmallTitle, attrAdd }, | ||||
| 	data() { | ||||
| 		return { | ||||
| 			tableBtn, | ||||
| 			tableBtn: [ | ||||
| 				this.$auth.hasPermiAnd([ | ||||
| 					'base:material-product-bom:update', | ||||
| 					'base:material-product-bom-det:create', | ||||
| 					'base:material-product-bom-det:update' | ||||
| 				]) ? | ||||
| 				{ | ||||
| 					type: 'edit', | ||||
| 					btnName: '编辑', | ||||
| 				} | ||||
| 				: undefined, | ||||
| 				this.$auth.hasPermi('base:material-product-bom:delete') ?  | ||||
| 					{ | ||||
| 						type: 'delete', | ||||
| 						btnName: '删除', | ||||
| 					} | ||||
| 				: undefined, | ||||
| 			], | ||||
| 			tableProps, | ||||
| 			addOrUpdateVisible: false, | ||||
| 			urlOptions: { | ||||
|   | ||||
| @@ -110,7 +110,7 @@ export default { | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'separate', | ||||
| 					type: this.$auth.hasPermi('base:material:create') ? 'separate' : '', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('base:material:create') ? 'button' : '', | ||||
|   | ||||
							
								
								
									
										45
									
								
								src/views/base/packagingPrintLog/components/InputArea.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								src/views/base/packagingPrintLog/components/InputArea.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | ||||
| <template> | ||||
| 	<div class="tableInner"> | ||||
| 		<el-input | ||||
| 			v-if="list.isEdit" | ||||
| 			type="number" | ||||
| 			v-model="list[itemProp]" | ||||
| 			@blur="changeInput" /> | ||||
| 		<span v-else>{{ list[itemProp] }}</span> | ||||
| 	</div> | ||||
| </template> | ||||
| <script> | ||||
| export default { | ||||
| 	name: 'InputArea', | ||||
| 	props: { | ||||
| 		injectData: { | ||||
| 			type: Object, | ||||
| 			default: () => ({}), | ||||
| 		}, | ||||
| 		itemProp: { | ||||
| 			type: String, | ||||
| 		}, | ||||
| 	}, | ||||
| 	data() { | ||||
| 		return { | ||||
| 			list: {}, | ||||
| 		}; | ||||
| 	}, | ||||
| 	mounted() { | ||||
| 		this.initData(); | ||||
| 	}, | ||||
| 	watch: { | ||||
| 		injectData() { | ||||
| 			this.initData(); | ||||
| 		}, | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		initData() { | ||||
| 			this.list = this.injectData; | ||||
| 		}, | ||||
| 		changeInput() { | ||||
| 			this.$emit('emitData', this.list); | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
							
								
								
									
										227
									
								
								src/views/base/packagingPrintLog/components/OtherMsg.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										227
									
								
								src/views/base/packagingPrintLog/components/OtherMsg.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,227 @@ | ||||
| <template> | ||||
| 	<div class="other-msg-box"> | ||||
| 		<el-radio-group | ||||
| 			v-model="chooseMsg" | ||||
| 			@change="changeChoose"> | ||||
| 			<el-radio :label="1"> | ||||
| 				<div style="display: inline-block"> | ||||
| 					<el-form | ||||
| 						:inline="true" | ||||
| 						:model="printMsg1" | ||||
| 						class="demo-form-inline"> | ||||
| 						<el-form-item label="客户"> | ||||
| 							<el-select | ||||
| 								size="small" | ||||
| 								v-model="printMsg1.customerId" | ||||
| 								filterable | ||||
| 								placeholder="客户"> | ||||
| 								<el-option | ||||
| 									v-for="item in customerList" | ||||
| 									:key="item.id" | ||||
| 									:label="item.name" | ||||
| 									:value="item.id"></el-option> | ||||
| 							</el-select> | ||||
| 						</el-form-item> | ||||
| 						<el-form-item label="封箱人员工号"> | ||||
| 							<el-input | ||||
| 								v-model="printMsg1.sealWorker" | ||||
| 								size="small" | ||||
| 								placeholder="封箱人员工号"></el-input> | ||||
| 						</el-form-item> | ||||
| 						<el-form-item label="打包人员工号"> | ||||
| 							<el-input | ||||
| 								v-model="printMsg1.packWorker" | ||||
| 								size="small" | ||||
| 								placeholder="打包人员工号"></el-input> | ||||
| 						</el-form-item> | ||||
| 						<el-form-item label="流程卡号"> | ||||
| 							<el-input | ||||
| 								v-model="printMsg1.processCard" | ||||
| 								size="small" | ||||
| 								style="width: 120px" | ||||
| 								placeholder="流程卡号"></el-input> | ||||
| 						</el-form-item> | ||||
| 						<el-form-item label="托盘规格"> | ||||
| 							<el-input | ||||
| 								v-model="printMsg1.pallet" | ||||
| 								size="small" | ||||
| 								style="width: 120px" | ||||
| 								placeholder="托盘规格"></el-input> | ||||
| 						</el-form-item> | ||||
| 						<el-form-item label="备注"> | ||||
| 							<el-input | ||||
| 								v-model="printMsg1.remark" | ||||
| 								size="small" | ||||
| 								placeholder="备注"></el-input> | ||||
| 						</el-form-item> | ||||
| 					</el-form> | ||||
| 				</div> | ||||
| 			</el-radio> | ||||
| 			<el-radio :label="2"> | ||||
| 				<div style="display: inline-block"> | ||||
| 					<el-form | ||||
| 						:inline="true" | ||||
| 						:model="printMsg2" | ||||
| 						class="demo-form-inline"> | ||||
| 						<el-form-item label="客户"> | ||||
| 							<el-select | ||||
| 								size="small" | ||||
| 								v-model="printMsg2.customerId" | ||||
| 								filterable | ||||
| 								placeholder="客户"> | ||||
| 								<el-option | ||||
| 									v-for="item in customerList" | ||||
| 									:key="item.id" | ||||
| 									:label="item.name" | ||||
| 									:value="item.id"></el-option> | ||||
| 							</el-select> | ||||
| 						</el-form-item> | ||||
| 						<el-form-item label="封箱人员工号"> | ||||
| 							<el-input | ||||
| 								v-model="printMsg2.sealWorker" | ||||
| 								size="small" | ||||
| 								placeholder="封箱人员工号"></el-input> | ||||
| 						</el-form-item> | ||||
| 						<el-form-item label="打包人员工号"> | ||||
| 							<el-input | ||||
| 								v-model="printMsg2.packWorker" | ||||
| 								size="small" | ||||
| 								placeholder="打包人员工号"></el-input> | ||||
| 						</el-form-item> | ||||
| 						<el-form-item label="流程卡号"> | ||||
| 							<el-input | ||||
| 								v-model="printMsg2.processCard" | ||||
| 								size="small" | ||||
| 								style="width: 120px" | ||||
| 								placeholder="流程卡号"></el-input> | ||||
| 						</el-form-item> | ||||
| 						<el-form-item label="托盘规格"> | ||||
| 							<el-input | ||||
| 								v-model="printMsg2.pallet" | ||||
| 								size="small" | ||||
| 								style="width: 120px" | ||||
| 								placeholder="托盘规格"></el-input> | ||||
| 						</el-form-item> | ||||
| 						<el-form-item label="备注"> | ||||
| 							<el-input | ||||
| 								v-model="printMsg2.remark" | ||||
| 								size="small" | ||||
| 								placeholder="备注"></el-input> | ||||
| 						</el-form-item> | ||||
| 					</el-form> | ||||
| 				</div> | ||||
| 			</el-radio> | ||||
| 			<el-radio :label="3"> | ||||
| 				<div style="display: inline-block"> | ||||
| 					<el-form | ||||
| 						:inline="true" | ||||
| 						:model="printMsg3" | ||||
| 						class="demo-form-inline"> | ||||
| 						<el-form-item label="客户"> | ||||
| 							<el-select | ||||
| 								size="small" | ||||
| 								v-model="printMsg3.customerId" | ||||
| 								filterable | ||||
| 								placeholder="客户"> | ||||
| 								<el-option | ||||
| 									v-for="item in customerList" | ||||
| 									:key="item.id" | ||||
| 									:label="item.name" | ||||
| 									:value="item.id"></el-option> | ||||
| 							</el-select> | ||||
| 						</el-form-item> | ||||
| 						<el-form-item label="封箱人员工号"> | ||||
| 							<el-input | ||||
| 								v-model="printMsg3.sealWorker" | ||||
| 								size="small" | ||||
| 								placeholder="封箱人员工号"></el-input> | ||||
| 						</el-form-item> | ||||
| 						<el-form-item label="打包人员工号"> | ||||
| 							<el-input | ||||
| 								v-model="printMsg3.packWorker" | ||||
| 								size="small" | ||||
| 								placeholder="打包人员工号"></el-input> | ||||
| 						</el-form-item> | ||||
| 						<el-form-item label="流程卡号"> | ||||
| 							<el-input | ||||
| 								v-model="printMsg3.processCard" | ||||
| 								size="small" | ||||
| 								style="width: 120px" | ||||
| 								placeholder="流程卡号"></el-input> | ||||
| 						</el-form-item> | ||||
| 						<el-form-item label="托盘规格"> | ||||
| 							<el-input | ||||
| 								v-model="printMsg3.pallet" | ||||
| 								size="small" | ||||
| 								style="width: 120px" | ||||
| 								placeholder="托盘规格"></el-input> | ||||
| 						</el-form-item> | ||||
| 						<el-form-item label="备注"> | ||||
| 							<el-input | ||||
| 								v-model="printMsg3.remark" | ||||
| 								size="small" | ||||
| 								placeholder="备注"></el-input> | ||||
| 						</el-form-item> | ||||
| 					</el-form> | ||||
| 				</div> | ||||
| 			</el-radio> | ||||
| 		</el-radio-group> | ||||
| 	</div> | ||||
| </template> | ||||
| <script> | ||||
| import { getCustomerList } from '@/api/base/packingInfo'; | ||||
| export default { | ||||
| 	name: 'OtherMsg', | ||||
| 	props: { | ||||
| 		printMsg1: { | ||||
| 			type: Object, | ||||
| 			default: () => ({}), | ||||
| 		}, | ||||
| 		printMsg2: { | ||||
| 			type: Object, | ||||
| 			default: () => ({}), | ||||
| 		}, | ||||
| 		printMsg3: { | ||||
| 			type: Object, | ||||
| 			default: () => ({}), | ||||
| 		}, | ||||
| 	}, | ||||
| 	data() { | ||||
| 		return { | ||||
| 			chooseMsg: 1, | ||||
| 			customerList: [], | ||||
| 		}; | ||||
| 	}, | ||||
| 	mounted() { | ||||
| 		this.getCList(); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		getCList() { | ||||
| 			getCustomerList().then((res) => { | ||||
| 				console.log(res); | ||||
| 				console.log('customer'); | ||||
| 				this.customerList = res.data; | ||||
| 			}); | ||||
| 		}, | ||||
| 		changeChoose(val) { | ||||
| 			console.log(val); | ||||
| 			this.$emit('changeChoose', val); | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
| <style lang="scss" scoped> | ||||
| .other-msg-box { | ||||
| 	.el-radio { | ||||
| 		display: block; | ||||
| 		line-height: 36px; | ||||
| 		.demo-form-inline { | ||||
| 			width: 100%; | ||||
| 			white-space: normal; | ||||
| 		} | ||||
| 		.el-form-item { | ||||
| 			margin-bottom: 0px; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| </style> | ||||
							
								
								
									
										182
									
								
								src/views/base/packagingPrintLog/components/Printed.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										182
									
								
								src/views/base/packagingPrintLog/components/Printed.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,182 @@ | ||||
| <template> | ||||
| 	<div class="show-box"> | ||||
| 		<!-- 搜索工作栏 --> | ||||
| 		<search-bar | ||||
| 			:formConfigs="formConfig" | ||||
| 			ref="searchBarForm" | ||||
| 			@headBtnClick="buttonClick2" /> | ||||
| 		<!-- 列表 --> | ||||
| 		<base-table | ||||
| 			:page="queryParams2.pageNo" | ||||
| 			:limit="queryParams2.pageSize" | ||||
| 			:table-props="tableProps" | ||||
| 			:table-data="list2"> | ||||
| 			<method-btn | ||||
| 				v-if="tableBtn2.length" | ||||
| 				slot="handleBtn" | ||||
| 				:width="240" | ||||
| 				label="操作" | ||||
| 				:method-list="tableBtn2" | ||||
| 				@clickBtn="handleClick2" /> | ||||
| 		</base-table> | ||||
| 		<pagination | ||||
| 			:page.sync="queryParams2.pageNo" | ||||
| 			:limit.sync="queryParams2.pageSize" | ||||
| 			:total="total2" | ||||
| 			@pagination="getList2" /> | ||||
| 	</div> | ||||
| </template> | ||||
| <script> | ||||
| import { parseTime } from '@/utils/ruoyi'; | ||||
| import { getPackingPage } from '@/api/base/packingInfo'; | ||||
| import { getCorePLList } from '@/api/base/coreProductionLine'; | ||||
| const tableProps = [ | ||||
| 	{ | ||||
| 		prop: 'packagingCode', | ||||
| 		label: '成品周转编号', | ||||
| 		minWidth: 180, | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'lineId', | ||||
| 		label: '产线', | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'specifications', | ||||
| 		label: '规格', | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'check', | ||||
| 		label: '判定', | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'workStation', | ||||
| 		label: '工位号', | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'num', | ||||
| 		label: '片数', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'remark', | ||||
| 		label: '备注1', | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'printStatus', | ||||
| 		label: '打印状态', | ||||
| 		filter: (val) => (val == 1 ? '未打印' : '已打印'), | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'createTime', | ||||
| 		label: '时间', | ||||
| 		filter: parseTime, | ||||
| 		minWidth: 160, | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'groupClass', | ||||
| 		label: '班次', | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| ]; | ||||
| export default { | ||||
| 	name: 'Printed', | ||||
| 	data() { | ||||
| 		return { | ||||
| 			formConfig: [ | ||||
| 				{ | ||||
| 					type: 'select', | ||||
| 					label: '产线', | ||||
| 					selectOptions: [], | ||||
| 					param: 'lineId', | ||||
| 					filterable: true, | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'datePicker', | ||||
| 					label: '时间段', | ||||
| 					dateType: 'daterange', | ||||
| 					format: 'yyyy-MM-dd HH:mm:ss', | ||||
| 					valueFormat: 'yyyy-MM-dd HH:mm:ss', | ||||
| 					rangeSeparator: '-', | ||||
| 					startPlaceholder: '开始时间', | ||||
| 					endPlaceholder: '结束时间', | ||||
| 					param: 'timeVal', | ||||
| 					defaultSelect: [], | ||||
| 					width: 350, | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					btnName: '查询', | ||||
| 					name: 'search', | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 			], | ||||
| 			// 查询参数 | ||||
| 			queryParams2: { | ||||
| 				pageNo: 1, | ||||
| 				pageSize: 20, | ||||
| 				printStatus: '2', | ||||
| 				lineId: '', | ||||
| 				createTime: [], | ||||
| 			}, | ||||
| 			total2: 0, | ||||
| 			tableProps, | ||||
| 			list2: [], | ||||
| 			tableBtn2: [ | ||||
| 				this.$auth.hasPermi('base:order-group:update') | ||||
| 					? { | ||||
| 							type: 'reprint', | ||||
| 							btnName: '重打', | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 				this.$auth.hasPermi('base:order-group:query') | ||||
| 					? { | ||||
| 							type: 'detail', | ||||
| 							btnName: '详情', | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 				this.$auth.hasPermiAnd([ | ||||
| 					'base:order-group:update', | ||||
| 					'base:core-product:query', | ||||
| 					'base:core-customer:query', | ||||
| 				]) | ||||
| 					? { | ||||
| 							type: 'edit', | ||||
| 							btnName: '编辑', | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 			].filter((v) => v), | ||||
| 		}; | ||||
| 	}, | ||||
| 	mounted() { | ||||
| 		this.getLineList(); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		getLineList() { | ||||
| 			getCorePLList().then((res) => { | ||||
| 				console.log(res); | ||||
| 				this.formConfig[0].selectOptions = res.data; | ||||
| 			}); | ||||
| 		}, | ||||
| 		getList2() { | ||||
| 			getPackingPage({ ...this.queryParams2 }).then((res) => { | ||||
| 				console.log(res); | ||||
| 				this.list2 = res.data.records || []; | ||||
| 				this.total2 = res.data.total; | ||||
| 			}); | ||||
| 		}, | ||||
| 		buttonClick2(val) { | ||||
| 			console.log(val); | ||||
| 			this.queryParams2.lineId = val.lineId; | ||||
| 			this.queryParams2.createTime = val.timeVal; | ||||
| 			this.getList2(); | ||||
| 		}, | ||||
| 		handleClick2() {}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
							
								
								
									
										409
									
								
								src/views/base/packagingPrintLog/components/UnPrint.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										409
									
								
								src/views/base/packagingPrintLog/components/UnPrint.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,409 @@ | ||||
| <template> | ||||
| 	<div class="show-box"> | ||||
| 		<!-- 单选 --> | ||||
| 		<other-msg | ||||
| 			:printMsg1="printMsg1" | ||||
| 			:printMsg2="printMsg2" | ||||
| 			:printMsg3="printMsg3" | ||||
| 			@changeChoose="changeChoose" /> | ||||
| 		<!-- 搜索工作栏 --> | ||||
| 		<search-bar | ||||
| 			:formConfigs="formConfig" | ||||
| 			ref="searchBarForm" | ||||
| 			@headBtnClick="buttonClick" /> | ||||
| 		<!-- 列表 --> | ||||
| 		<base-table | ||||
| 			:page="queryParams.pageNo" | ||||
| 			:limit="queryParams.pageSize" | ||||
| 			:table-props="tableProps" | ||||
| 			:table-data="list" | ||||
| 			@emitFun="inputChange"> | ||||
| 			<method-btn | ||||
| 				v-if="tableBtn.length" | ||||
| 				slot="handleBtn" | ||||
| 				:width="260" | ||||
| 				label="操作" | ||||
| 				:method-list="tableBtn" | ||||
| 				@clickBtn="handleClick" /> | ||||
| 		</base-table> | ||||
| 		<pagination | ||||
| 			:page.sync="queryParams.pageNo" | ||||
| 			:limit.sync="queryParams.pageSize" | ||||
| 			:total="total" | ||||
| 			@pagination="getList" /> | ||||
| 		<!-- 预览 --> | ||||
| 		<print-preview ref="preView" /> | ||||
| 	</div> | ||||
| </template> | ||||
| <script> | ||||
| import { parseTime } from '@/utils/ruoyi'; | ||||
| import inputArea from './InputArea.vue'; | ||||
| const tableProps = [ | ||||
| 	{ | ||||
| 		prop: 'packagingCode', | ||||
| 		label: '成品周转编号', | ||||
| 		minWidth: 160, | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'lineName', | ||||
| 		label: '产线', | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'specifications', | ||||
| 		label: '规格', | ||||
| 		minWidth: 140, | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'checkGoodName', | ||||
| 		label: '判定', | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'workStation', | ||||
| 		label: '工位号', | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'num', | ||||
| 		label: '片数', | ||||
| 		subcomponent: inputArea, | ||||
| 		minWidth: 120, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'remark', | ||||
| 		label: '备注1', | ||||
| 		minWidth: 120, | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'printStatusName', | ||||
| 		label: '打印状态', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'createTime', | ||||
| 		label: '时间', | ||||
| 		filter: parseTime, | ||||
| 		minWidth: 160, | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'groupClass', | ||||
| 		label: '班次', | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| ]; | ||||
| import OtherMsg from './OtherMsg'; | ||||
| import { getPackingPage, updatePacking } from '@/api/base/packingInfo'; | ||||
| import { getCorePLList } from '@/api/base/coreProductionLine'; | ||||
| import printPreview from './preview'; | ||||
| import printTemplate from '../print-template'; | ||||
| export default { | ||||
| 	name: 'UnPrint', | ||||
| 	components: { OtherMsg, printPreview }, | ||||
| 	data() { | ||||
| 		return { | ||||
| 			printMsg1: { | ||||
| 				customerId: '', | ||||
| 				customerName: '', | ||||
| 				sealWorker: '', | ||||
| 				packWorker: '', | ||||
| 				processCard: '', | ||||
| 				pallet: '', | ||||
| 				remarkT: '', | ||||
| 			}, | ||||
| 			printMsg2: { | ||||
| 				customerId: '', | ||||
| 				customerName: '', | ||||
| 				sealWorker: '', | ||||
| 				packWorker: '', | ||||
| 				processCard: '', | ||||
| 				pallet: '', | ||||
| 				remarkT: '', | ||||
| 			}, | ||||
| 			printMsg3: { | ||||
| 				customerId: '', | ||||
| 				customerName: '', | ||||
| 				sealWorker: '', | ||||
| 				packWorker: '', | ||||
| 				processCard: '', | ||||
| 				pallet: '', | ||||
| 				remarkT: '', | ||||
| 			}, | ||||
| 			chooseMsg: 1, //单选 | ||||
| 			formConfig: [ | ||||
| 				{ | ||||
| 					type: 'select', | ||||
| 					label: '产线', | ||||
| 					selectOptions: [], | ||||
| 					param: 'lineId', | ||||
| 					filterable: true, | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'datePicker', | ||||
| 					label: '时间段', | ||||
| 					dateType: 'daterange', | ||||
| 					format: 'yyyy-MM-dd HH:mm:ss', | ||||
| 					valueFormat: 'yyyy-MM-dd HH:mm:ss', | ||||
| 					rangeSeparator: '-', | ||||
| 					startPlaceholder: '开始时间', | ||||
| 					endPlaceholder: '结束时间', | ||||
| 					param: 'timeVal', | ||||
| 					defaultSelect: [], | ||||
| 					width: 350, | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					btnName: '查询', | ||||
| 					name: 'search', | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 			], | ||||
| 			lineList: [], | ||||
| 			printStatusList: [ | ||||
| 				{ id: 1, name: '未打印' }, | ||||
| 				{ id: 2, name: '已打印' }, | ||||
| 				{ id: 3, name: '已重打' }, | ||||
| 			], | ||||
| 			checkGoodList: [ | ||||
| 				{ id: 0, name: '否' }, | ||||
| 				{ id: 1, name: '是' }, | ||||
| 			], | ||||
| 			// 查询参数 | ||||
| 			queryParams: { | ||||
| 				pageNo: 1, | ||||
| 				pageSize: 20, | ||||
| 				printStatus: '1', | ||||
| 				lineId: '', | ||||
| 				createTime: [], | ||||
| 			}, | ||||
| 			total: 0, | ||||
| 			tableProps, | ||||
| 			list: [], | ||||
| 			tableBtn: [ | ||||
| 				this.$auth.hasPermiAnd([ | ||||
| 					'base:order:query', | ||||
| 					'base:order-con-group-order:create', | ||||
| 				]) | ||||
| 					? { | ||||
| 							type: 'view', | ||||
| 							btnName: '预览', | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 				this.$auth.hasPermi('base:order-group:update') | ||||
| 					? { | ||||
| 							type: 'print', | ||||
| 							btnName: '打印', | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 				this.$auth.hasPermi('base:order-group:update') | ||||
| 					? { | ||||
| 							type: 'printed', | ||||
| 							btnName: '已打印', | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 				this.$auth.hasPermiAnd([ | ||||
| 					'base:order-group:update', | ||||
| 					'base:core-product:query', | ||||
| 					'base:core-customer:query', | ||||
| 				]) | ||||
| 					? { | ||||
| 							type: 'edit', | ||||
| 							btnName: '编辑', | ||||
| 							showParam: { | ||||
| 								type: '&', | ||||
| 								data: [ | ||||
| 									{ | ||||
| 										type: 'unequal', | ||||
| 										name: 'isEdit', | ||||
| 										value: true, | ||||
| 									}, | ||||
| 								], | ||||
| 							}, | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 				this.$auth.hasPermiAnd([ | ||||
| 					'base:order-group:update', | ||||
| 					'base:core-product:query', | ||||
| 					'base:core-customer:query', | ||||
| 				]) | ||||
| 					? { | ||||
| 							type: 'save', | ||||
| 							btnName: '保存', | ||||
| 							showParam: { | ||||
| 								type: '&', | ||||
| 								data: [ | ||||
| 									{ | ||||
| 										type: 'equal', | ||||
| 										name: 'isEdit', | ||||
| 										value: true, | ||||
| 									}, | ||||
| 								], | ||||
| 							}, | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 				this.$auth.hasPermi('base:order-group:query') | ||||
| 					? { | ||||
| 							type: 'delete', | ||||
| 							btnName: '删除', | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 			].filter((v) => v), | ||||
| 			printData: {}, | ||||
| 		}; | ||||
| 	}, | ||||
| 	mounted() { | ||||
| 		this.getLineList(); | ||||
| 		this.getTopTitle(); | ||||
| 		console.log(JSON.stringify(printTemplate)); | ||||
| 		console.log('================printTemplate'); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		getLineList() { | ||||
| 			getCorePLList().then((res) => { | ||||
| 				this.formConfig[0].selectOptions = res.data || []; | ||||
| 				this.lineList = res.data || []; | ||||
| 				this.getList(); | ||||
| 			}); | ||||
| 		}, | ||||
| 		getList() { | ||||
| 			getPackingPage({ ...this.queryParams }).then((res) => { | ||||
| 				let arr = res.data.records || []; | ||||
| 				arr.map((item) => { | ||||
| 					this.lineList.map((subItem) => { | ||||
| 						if (item.lineId === subItem.id) { | ||||
| 							item.lineName = subItem.name; | ||||
| 						} | ||||
| 					}); | ||||
| 					this.printStatusList.map((subItem2) => { | ||||
| 						if (item.printStatus === subItem2.id) { | ||||
| 							item.printStatusName = subItem2.name; | ||||
| 						} | ||||
| 					}); | ||||
| 					this.checkGoodList.map((subItem3) => { | ||||
| 						if (item.checkGood === subItem3.id) { | ||||
| 							item.checkGoodName = subItem3.name; | ||||
| 						} | ||||
| 					}); | ||||
| 				}); | ||||
| 				this.list = arr; | ||||
| 				this.total = res.data.total; | ||||
| 			}); | ||||
| 		}, | ||||
| 		// 单选 | ||||
| 		changeChoose(val) { | ||||
| 			this.chooseMsg = val; | ||||
| 		}, | ||||
| 		buttonClick(val) { | ||||
| 			this.queryParams.lineId = val.lineId; | ||||
| 			this.queryParams.createTime = val.timeVal; | ||||
| 			this.getList(); | ||||
| 		}, | ||||
| 		handleClick(val) { | ||||
| 			console.log(val); | ||||
| 			switch (val.type) { | ||||
| 				case 'edit': | ||||
| 					this.editNum(val.data); | ||||
| 					break; | ||||
| 				case 'save': | ||||
| 					this.saveNum(val.data); | ||||
| 					break; | ||||
| 				case 'view': | ||||
| 					// 保存选中的内容 | ||||
| 					this.saveTopTitle(); | ||||
| 					this.preView(val.data); | ||||
| 					break; | ||||
| 				case 'print': | ||||
| 					// 保存选中的内容 | ||||
| 					this.saveTopTitle(); | ||||
| 					this.printTemp(); | ||||
| 					break; | ||||
| 				default: | ||||
| 			} | ||||
| 		}, | ||||
| 		// 编辑 | ||||
| 		editNum(val) { | ||||
| 			let obj = this.list[val._pageIndex - 1]; | ||||
| 			obj.isEdit = true; | ||||
| 			this.$set(this.list, val._pageIndex - 1, obj); | ||||
| 		}, | ||||
| 		// 保存 | ||||
| 		saveNum(val) { | ||||
| 			// 调用修改接口 | ||||
| 			updatePacking({ id: val.id, num: val.num }).then(() => { | ||||
| 				this.getList(); | ||||
| 			}); | ||||
| 		}, | ||||
| 		// 输入框改变num | ||||
| 		inputChange(val) { | ||||
| 			this.list[val._pageIndex - 1][val.prop] = val[val.prop]; | ||||
| 		}, | ||||
| 		// 预览 | ||||
| 		preView(data) { | ||||
| 			let topMsg = | ||||
| 				this.chooseMsg === 1 | ||||
| 					? this.printMsg1 | ||||
| 					: this.chooseMsg === 2 | ||||
| 					? this.printMsg2 | ||||
| 					: this.printMsg3; | ||||
| 			let printData = { ...data, ...topMsg }; | ||||
| 			var hiprintTemplate = new hiprint.PrintTemplate({ | ||||
| 				template: printTemplate, | ||||
| 			}); | ||||
| 			this.$refs.preView.show(hiprintTemplate, printData); | ||||
| 		}, | ||||
| 		// 打印 | ||||
| 		printTemp() { | ||||
| 			console.log('11'); | ||||
| 			var printData = {}; | ||||
| 			let hiprintTemplate = this.$print( | ||||
| 				undefined, | ||||
| 				printTemplate, | ||||
| 				printData, | ||||
| 				{}, | ||||
| 				{ | ||||
| 					styleHandler: () => { | ||||
| 						let css = | ||||
| 							'<link href="http://hiprint.io/Content/hiprint/css/print-lock.css" media="print" rel="stylesheet">'; | ||||
| 						return css; | ||||
| 					}, | ||||
| 				} | ||||
| 			); | ||||
| 			console.log(hiprintTemplate); | ||||
| 		}, | ||||
| 		// 保存选中的内容 | ||||
| 		saveTopTitle() { | ||||
| 			switch (this.chooseMsg) { | ||||
| 				case 1: | ||||
| 					localStorage.setItem('printMsg1', JSON.stringify(this.printMsg1)); | ||||
| 					break; | ||||
| 				case 2: | ||||
| 					localStorage.setItem('printMsg2', JSON.stringify(this.printMsg2)); | ||||
| 					break; | ||||
| 				case 3: | ||||
| 					localStorage.setItem('printMsg3', JSON.stringify(this.printMsg3)); | ||||
| 					break; | ||||
| 				default: | ||||
| 					throw new Error(`${this.chooseMsg}的值不正确,请检查!`); | ||||
| 			} | ||||
| 		}, | ||||
| 		// 获取打印内容top | ||||
| 		getTopTitle() { | ||||
| 			let pm1 = localStorage.getItem('printMsg1'); | ||||
| 			let pm2 = localStorage.getItem('printMsg2'); | ||||
| 			let pm3 = localStorage.getItem('printMsg3'); | ||||
| 			if (pm1) { | ||||
| 				this.printMsg1 = JSON.parse(pm1); | ||||
| 			} | ||||
| 			if (pm2) { | ||||
| 				this.printMsg2 = JSON.parse(pm2); | ||||
| 			} | ||||
| 			if (pm3) { | ||||
| 				this.printMsg3 = JSON.parse(pm3); | ||||
| 			} | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
							
								
								
									
										69
									
								
								src/views/base/packagingPrintLog/components/UnPrintEdit.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								src/views/base/packagingPrintLog/components/UnPrintEdit.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,69 @@ | ||||
| <template> | ||||
| 	<el-form | ||||
| 		ref="unPrintEdit" | ||||
| 		:rules="rules" | ||||
| 		label-width="130px" | ||||
| 		:model="form"> | ||||
| 		<el-row :gutter="20"> | ||||
| 			<el-col :span="24"> | ||||
| 				<el-form-item | ||||
| 					label="成品周转编号" | ||||
| 					prop="packagingCode"> | ||||
| 					<el-input | ||||
| 						readonly | ||||
| 						v-model="form.packagingCode"></el-input> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="24"> | ||||
| 				<el-form-item | ||||
| 					label="片数" | ||||
| 					prop="num"> | ||||
| 					<el-input-number | ||||
| 						v-model="form.num" | ||||
| 						:min="0" | ||||
| 						:max="999999" | ||||
| 						style="width: 100%" | ||||
| 						label="片数"></el-input-number> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 		</el-row> | ||||
| 	</el-form> | ||||
| </template> | ||||
| <script> | ||||
| import { getPacking } from '@/api/base/packingInfo'; | ||||
| export default { | ||||
| 	name: 'UnPrintEdit', | ||||
| 	data() { | ||||
| 		return { | ||||
| 			form: { | ||||
| 				id: '', | ||||
| 				packagingCode: '', | ||||
| 				num: null, | ||||
| 			}, | ||||
| 			rules: { | ||||
| 				num: [{ required: true, message: '片数不能为空', trigger: 'blur' }], | ||||
| 			}, | ||||
| 		}; | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		init(id) { | ||||
| 			console.log('init'); | ||||
| 			this.form.id = id; | ||||
| 			getPacking(id).then((res) => { | ||||
| 				console.log(res); | ||||
| 			}); | ||||
| 		}, | ||||
| 		submitForm() { | ||||
| 			this.$refs['unPrintEdit'].validate((valid) => { | ||||
| 				if (valid) { | ||||
| 					console.log('保存'); | ||||
| 					this.$emit('successSubmit'); | ||||
| 				} | ||||
| 			}); | ||||
| 		}, | ||||
| 		formClear() { | ||||
| 			this.$refs.unPrintEdit.resetFields(); | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
							
								
								
									
										100
									
								
								src/views/base/packagingPrintLog/components/preview.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										100
									
								
								src/views/base/packagingPrintLog/components/preview.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,100 @@ | ||||
| <template> | ||||
| 	<base-dialog | ||||
| 		dialogTitle="预览" | ||||
| 		:dialogVisible="visible" | ||||
| 		width="50%" | ||||
| 		@cancel="hideModal" | ||||
| 		:before-close="hideModal"> | ||||
| 		<!-- <div> | ||||
| 			<el-button | ||||
| 				:loading="waitShowPrinter" | ||||
| 				type="primary" | ||||
| 				icon="printer" | ||||
| 				@click.stop="print"> | ||||
| 				打印 | ||||
| 			</el-button> | ||||
| 			<el-button | ||||
| 				type="primary" | ||||
| 				icon="printer" | ||||
| 				@click.stop="toPdf"> | ||||
| 				pdf | ||||
| 			</el-button> | ||||
| 		</div> --> | ||||
| 		<div id="preview_content" /> | ||||
| 		<template slot="footer"> | ||||
| 			<el-button | ||||
| 				key="close" | ||||
| 				@click="hideModal"> | ||||
| 				关闭 | ||||
| 			</el-button> | ||||
| 		</template> | ||||
| 	</base-dialog> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| export default { | ||||
| 	name: 'PrintPreview', | ||||
| 	props: {}, | ||||
| 	data() { | ||||
| 		return { | ||||
| 			visible: false, | ||||
| 			spinning: true, | ||||
| 			waitShowPrinter: false, | ||||
| 			// 纸张宽 mm | ||||
| 			width: 0, | ||||
| 			// 模板 | ||||
| 			hiprintTemplate: {}, | ||||
| 			// 数据 | ||||
| 			printData: {}, | ||||
| 		}; | ||||
| 	}, | ||||
| 	computed: {}, | ||||
| 	watch: {}, | ||||
| 	created() {}, | ||||
| 	mounted() {}, | ||||
| 	methods: { | ||||
| 		hideModal() { | ||||
| 			this.visible = false; | ||||
| 		}, | ||||
| 		show(hiprintTemplate, printData, width = '210') { | ||||
| 			this.visible = true; | ||||
| 			this.spinning = true; | ||||
| 			this.width = width; | ||||
| 			this.hiprintTemplate = hiprintTemplate; | ||||
| 			this.printData = printData; | ||||
| 			console.log(hiprintTemplate); | ||||
| 			console.log(printData); | ||||
| 			setTimeout(() => { | ||||
| 				// eslint-disable-next-line no-undef | ||||
| 				$('#preview_content').html(hiprintTemplate.getHtml(printData)); | ||||
| 				this.spinning = false; | ||||
| 			}, 500); | ||||
| 		}, | ||||
| 		print() { | ||||
| 			this.waitShowPrinter = true; | ||||
| 			this.hiprintTemplate.print( | ||||
| 				this.printData, | ||||
| 				{}, | ||||
| 				{ | ||||
| 					callback: () => { | ||||
| 						console.log('callback'); | ||||
| 						this.waitShowPrinter = false; | ||||
| 					}, | ||||
| 				} | ||||
| 			); | ||||
| 		}, | ||||
| 		toPdf() { | ||||
| 			this.hiprintTemplate.toPdf({}, '打印预览'); | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
| <!-- <style lang="less" scoped> | ||||
| /deep/ .ant-modal-body { | ||||
|   padding: 0px; | ||||
| } | ||||
|  | ||||
| /deep/ .ant-modal-content { | ||||
|   margin-bottom: 24px; | ||||
| } | ||||
| </style> --> | ||||
| @@ -1,344 +1,47 @@ | ||||
| <!-- | ||||
|  * @Author: zwq | ||||
|  * @Date: 2023-08-01 14:55:51 | ||||
|  * @LastEditors: zhp | ||||
|  * @LastEditTime: 2024-02-28 10:38:34 | ||||
|  * @Description: | ||||
| --> | ||||
| <template> | ||||
|   <div class="app-container"> | ||||
|     <search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" /> | ||||
|     <base-table :max-height="tableH" :table-props="tableProps" :page="listQuery.pageNo" :limit="listQuery.pageSize" | ||||
|       :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" /> | ||||
|     <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList" /> | ||||
| 	<div class="packagingPrintLog-box"> | ||||
| 		<div style="width: 100%"> | ||||
| 			<ButtonNav | ||||
| 				:menus="['未打印', '已打印']" | ||||
| 				:button-mode="true" | ||||
| 				@change="currentMenu"></ButtonNav> | ||||
| 		</div> | ||||
| 		<!-- 未打印 --> | ||||
| 		<UnPrint v-if="activeMenu == '未打印'" /> | ||||
| 		<!-- 已打印 --> | ||||
| 		<Printed v-else /> | ||||
| 	</div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import AddOrUpdate from './add-or-updata'; | ||||
| // import unitDict from './unitDict'; | ||||
| import basicPage from '../mixins/basic-page'; | ||||
| import { parseTime } from '../mixins/code-filter'; | ||||
| import tableHeightMixin from '@/mixins/lb/tableHeightMixin'; | ||||
| import { | ||||
|   getPackingModel, | ||||
| } from '@/api/base/printModel.js' | ||||
| import { | ||||
| 	deletePacking, | ||||
|   getPackingPage, | ||||
|   getWorkOrderList, | ||||
| 	exportPackingExcel, | ||||
| } from '@/api/base/packingInfo'; | ||||
|  | ||||
| const tableProps = [ | ||||
| 	{ | ||||
|     prop: 'packagingCode', | ||||
|     label: '包装流水号' | ||||
|   }, | ||||
|   { | ||||
|     prop: 'packagingBarCode', | ||||
|     label: '包装条码' | ||||
|   }, | ||||
| 	{ | ||||
|     prop: 'workOrderName', | ||||
| 		label: '所属工单' | ||||
| 	}, | ||||
| 	{ | ||||
|     prop: 'customerName', | ||||
| 		label: '客户' | ||||
| 	}, | ||||
| 	{ | ||||
|     prop: 'content', | ||||
| 		label: '内容', | ||||
| 		// subcomponent: unitDict, | ||||
|   }, | ||||
|   { | ||||
|     prop: 'modelName', | ||||
|     label: '标签模板', | ||||
|     // subcomponent: unitDict, | ||||
|   }, | ||||
|   { | ||||
|     prop: 'printStatus', | ||||
|     label: '打印状态', | ||||
|     filter: (val) => val == 1 ? '未打印' : '已打印', | ||||
|   }, | ||||
| 	{ | ||||
|     prop: 'createTime', | ||||
| 		label: '生成日期', | ||||
| 		filter: parseTime | ||||
| 	}, | ||||
| ]; | ||||
|  | ||||
| import ButtonNav from '@/components/ButtonNav'; | ||||
| import UnPrint from './components/UnPrint'; | ||||
| import Printed from './components/Printed'; | ||||
| export default { | ||||
|   mixins: [basicPage, tableHeightMixin], | ||||
| 	name: 'packagingPrintLog', | ||||
| 	components: { ButtonNav, UnPrint, Printed }, | ||||
| 	data() { | ||||
| 		return { | ||||
| 			urlOptions: { | ||||
|         getDataListURL: getPackingPage, | ||||
| 				deleteURL: deletePacking, | ||||
| 				exportURL: exportPackingExcel, | ||||
| 			}, | ||||
| 			tableProps, | ||||
|       tableBtn: [ | ||||
|         { | ||||
|           type: 'print', | ||||
|           btnName: '打印', | ||||
|         }, | ||||
|         this.$auth.hasPermi(`base:packaging-print-log:update`) | ||||
| 					? { | ||||
| 							type: 'edit', | ||||
| 							btnName: '编辑', | ||||
| 					  } | ||||
|           : undefined, | ||||
|         this.$auth.hasPermi(`base:packaging-print-log:delete`) | ||||
| 					? { | ||||
| 							type: 'delete', | ||||
| 							btnName: '删除', | ||||
| 					  } | ||||
|           : undefined, | ||||
| 			].filter((v) => v), | ||||
| 			tableData: [], | ||||
|       formConfig: [ | ||||
|         { | ||||
|           type: 'select', | ||||
|           label: '工单', | ||||
|           selectOptions: [], | ||||
|           labelField: 'name', | ||||
|           valueField: 'id', | ||||
|           param: 'workOrderId', | ||||
|           filterable: true, | ||||
|         }, | ||||
|         { | ||||
|           // parent: 'dateFilterType', | ||||
|           // 时间段选择 | ||||
|           type: 'datePicker', | ||||
|           // label: '时间段', | ||||
|           dateType: 'daterange', | ||||
|           format: 'yyyy-MM-dd HH:mm:ss', | ||||
|           valueFormat: 'yyyy-MM-dd HH:mm:ss', | ||||
|           defaultTime: ['00:00:00', '00:00:00'], | ||||
|           rangeSeparator: '-', | ||||
|           startPlaceholder: '开始时间', | ||||
|           endPlaceholder: '结束时间', | ||||
|           param: 'createTime', | ||||
|         }, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					btnName: '搜索', | ||||
| 					name: 'search', | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				// { | ||||
| 				// 	type: 'separate', | ||||
| 				// }, | ||||
| 				// { | ||||
| 				// 	type: 'button', | ||||
| 				// 	btnName: '重置', | ||||
| 				// 	name: 'reset', | ||||
| 				// }, | ||||
| 				{ | ||||
| 					type: 'separate', | ||||
| 				}, | ||||
| 				{ | ||||
|           type: this.$auth.hasPermi('base:packaging-print-log:create') ? 'button' : '', | ||||
| 					btnName: '新增', | ||||
| 					name: 'add', | ||||
| 					color: 'success', | ||||
| 					plain: true, | ||||
| 				}, | ||||
| 				// { | ||||
| 				// 	type: 'separate', | ||||
| 				// 	type: this.$auth.hasPermi('base:product:create') ? 'separate' : '', | ||||
| 				// }, | ||||
| 				// { | ||||
| 				// 	type: this.$auth.hasPermi('base:product:export') ? 'button' : '', | ||||
| 				// 	btnName: '导出', | ||||
| 				// 	name: 'export', | ||||
| 				// 	color: 'warning', | ||||
| 				// }, | ||||
| 			], | ||||
| 			activeMenu: '未打印', | ||||
| 		}; | ||||
| 	}, | ||||
| 	components: { | ||||
| 		AddOrUpdate, | ||||
| 	}, | ||||
|   created() { | ||||
|     this.getDict() | ||||
|   }, | ||||
| 	methods: { | ||||
|     getDataList() { | ||||
|       this.dataListLoading = true; | ||||
|       this.urlOptions.getDataListURL(this.listQuery).then(response => { | ||||
|         this.tableData = response.data.records; | ||||
|         this.listQuery.total = response.data.total; | ||||
|         this.dataListLoading = false; | ||||
|       }); | ||||
|     }, | ||||
|     getDict() { | ||||
|       // 获取产品的属性列表 | ||||
|       // getCustomerList().then((response) => { | ||||
|       //   console.log(response); | ||||
|       //   this.customerList = response.data | ||||
|       //   // this.listQuery.total = response.data.total; | ||||
|       // }) | ||||
|       // getModelList().then((response) => { | ||||
|       //   console.log(response); | ||||
|       //   this.modelList = response.data | ||||
|       //   // this.listQuery.total = response.data.total; | ||||
|       // }) | ||||
|       getWorkOrderList().then((response) => { | ||||
|         // console.log(response); | ||||
|         this.formConfig[0].selectOptions = response.data.map((item) => { | ||||
|           return { | ||||
|             name: item.name, | ||||
|             id: item.id | ||||
|           } | ||||
|         }) | ||||
|         console.log(this.formConfig[0].selectOptions); | ||||
|         // this.listQuery.total = response.data.total; | ||||
|       }) | ||||
|     }, | ||||
|     deleteHandle(id, name, index, packagingCode) { | ||||
|       this.$confirm(`是否确认删除${'[' + packagingCode + ']'}数据项?`, "提示", { | ||||
|         confirmButtonText: "确定", | ||||
|         cancelButtonText: "取消", | ||||
|         type: "warning", | ||||
|       }) | ||||
|         .then(() => { | ||||
|           this.urlOptions.deleteURL(id).then(({ data }) => { | ||||
|             this.$message({ | ||||
|               message: "操作成功", | ||||
|               type: "success", | ||||
|               duration: 1500, | ||||
|               onClose: () => { | ||||
|                 this.getDataList(); | ||||
|               }, | ||||
|             }); | ||||
|           }); | ||||
|         }) | ||||
|         .catch(() => { }); | ||||
|     }, | ||||
|     handlePrint(id) { | ||||
|       if (id) { | ||||
|         getPackingModel(id).then(res => { | ||||
|           var obj = { | ||||
|             code: '11111222', | ||||
|             test: '11111', | ||||
|             test2: '3333333', | ||||
|             test1: '222222', | ||||
|           } | ||||
|           console.log(res); | ||||
|           // getPackingListInfo({ | ||||
|           //   size: 20, | ||||
|           //   current: 1, | ||||
|           //   boxNo: printModel.boxNo | ||||
|           // }).then(result => { | ||||
|           //   this.substrateList = result.data.records | ||||
|           //   var obj = { | ||||
|           //     // time: this.getNewDate(), | ||||
|           //     boxNo: this.currentData.boxNo, | ||||
|           //     orderNum: this.currentData.orderNum, | ||||
|           //     powerLevel: this.currentData.powerLevel, | ||||
|           //     sapMaterial: this.currentData.sapMaterial, | ||||
|           //     img: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAHVklEQVR4nO2dT2wUVRzHv2/2T5eSAlvFilwgQUH+eLACaUxEiJLAxdh44MDZi2ChUIrSFtoCgbbSP4GDdwgeEA8kRTAI0iIGBL1ITLxgLAlCsCKBYndnx7zd35pl2+7On/de387OJ9l00515/z7z/szMmzfs7869mD0yCjw2gZAB4VhAiln4/dUaRGdU18aOnzw9dn24ioGJj0soFsJr1z2yNm+qN2/fvRFL8XyMYqTmFfxZ+TwMc1xKDsL/f2Ms8xGeLwuIRpCKx99MHf/i4uPrw5GQ9jIAfsCMXfw2HkuOX03Wb1qLh4+uIGFJjzecPoS5iEhUTg1hDMaM2GuRk6cGMTQUCYmPQQq86CMAkkPDkQirGAzXf7Du34ejN9IHmETCRjQGPL6D+4NnYDEJDQmXbaY6on/dm2Vm/jHdZe0Almm6Ll+YNQbzasX7765BNHI1o0sOYRghwExg7MG9dDQSiqsdwHuZmlFKMjLwQ3QcFtjlSxHTenLO3Lp7vfU09AOS41Ka+HC6CjIDIaqmguvIPgBtIgOcDhjVlMTQtarKOScumR/teCdpxoeNZGJCapjFt7Rcywrb2MYtnQBatCpZTzCkYCF+5suKRXf+6EvOmv0GSzwrhB/QpmGkBYZSpqvIZAlp8ZeMLFwKUH3z2gqWyd/+3F/5b1yRQQMCN8gQspeaKt+SAItSCxCiPjIjhDEkjRAMxmCZSbgZkYke537qdxl57KM8C0OkkD0ADohMXIlwgPIuBFFC9uS3p2XGflFSRAgpdxlZeBl84jUQr0ImjDTKGWZZBwE0eCkCL0J20UgjgGCwEDHNPjB86PbiilshfGRxOBCRD0tLCSWTnzMLO9yE4EbIzjIdTdmGpc8/rB4qK0c4FcKbqe7pyWZJ0k1lZhsnQnZq3EzV00dHDjupKXaFNGtcM7YA+Io+WzRIz2R0UxkWxY6QJgCHlCbfPlzAsZytj2ks5RCVZUGKCdkOoEt+Wl3RkCcjyzGv5wIS6aIynZJCQni7d0TTjPFaMFDg9wGNa8qRQn3KVEI+1rjPmKpm5KNzTemmMp7AZEK2AehXmz7bbC1SM/IZoH10pJ/K+hnyhXBrvZpmoBHAURf7HaV9daQ3v6Zk7hhWVr4AYDOAzzRNeKPHAyW7r459Yj/deUynMcyqqpY9/fXW+RTwkiF/ms5pADcd7nMbwAkBcfMM3wOwwOF+rys46TxCt+T72d2NG0YSg2fnC58ANDkbAZyVH41QNgAYVBTXNiMxeLYG6qawvagmGqGoTHOfwcAe6T8TvWwYlTC7OsALgRDNCIRoRiBEMwIhmhEI0YxAiGYEQjRDtZCY9iUyEaVpVi3kvuL4RKA0zSqF8Ad5TimMTxSnKO1KUCWEZ6hDVaYk0KFKigohbSUuI0uHiieKZQtp89kM+U7ZUmQKafHp4wpSH/eWJaTT5zPkD8g62GQI8cXqDTZok/HEsWgh+3Of2y4D2kU/0idKyEOaJdgqKLxSotXlfLFJESXkicKZGTrys6g0iRIyD8AvAFYLCq+UWC1yACOyD+Hrf1wAUCcwTN2pozzXiEqn6E59JoBvANQKDldHaimvM0WmTcawlydw2Oc1pY7yKFQGJJ4YxqiTXyEp/OlkBeVNyn0SmZdO5gC47rOOfjXlaY6sCGRfXKwA8LVP+pRaykuFzEhUXH7nR9P3AFYqiEsWKykP0mpGFlU3qKI0IlmlKD6RrKK0R1VEpvIW7uwSHXnVUdqVoHqSwz+K4xOB0jQH87I0IxCiGYEQzQiEaEYgRDMCIZoRCNGMQIhmBEI0gwuJK0xScKZemHiY1mzqUxThYgBLHO7zQOAzGnMBPOdwn8WC4rbDNjaSWVajQaEUp9wBsB7ALY/hLAVwHsB89VmwRXrhuGwf0q/xIl/z6f6105qVyxIKQ1cZjdlV/HI79V6N1yjk/dxlAMtc7LuM9lXZVzqhIXdxtvxR1kCxZUynkbl0o2ihgyQspH3mapqn7flrSE427O3TuKbwGZI/AlhuY9vltO08Belyw6T99lTnIQN2VmGeJqppskGhpfoW0DbVmuahaarVVQudGPZo3tH/RCOnfJbSbzp34D1T/VjsTL3X6esWFMJngJwDsCgnykX0P+mzQ1yyq9jqqtnzkGI0a7wgPz9pfJm+/6ZxB77bzus+7L7pkwdkarr8OBdwJee7jjQVaqZysVtDsuwK3j3lmGYnb5hwerW3S+PRl440OX3dh5vL7z0iXzXqY/bYbaZycXs/5KDdV/iUKc1URo7xcoOqq0yfui1Gq5e3EoUava1qzS/aJQGs8xKIj2jx+gCoVyGcoUBKGs8yIEgIAiliZEDwJAehL3ovIYS+2F9UDckyRH/fFhmoxuwTvdaJaCGc7+gyi9+br1YZSzTJEAIaffHrZG/JCFwDpK16JEsI5yK9uMdvzVe7zAUxZQrhXKKBwxqZkSikQ8aiZbnIFgKS4oea0i5bBhQJgQ+kKJEBhUJAUkqxo+cduJqVrQH8B6xBgBhvJFNDAAAAAElFTkSuQmCC', | ||||
|           //     // lineBody: this.currentData.lineBody == 1 ? 'F ' : 'S', | ||||
|           //     createTime: moment(this.currentData.createTime).format('YYYY-MM-DD HH:mm:ss') | ||||
|           //     // modul1: '20210320000012', | ||||
|           //     // modul2: '20210320000012', | ||||
|           //     // modul3: '20210320000012' | ||||
|           //   } | ||||
|           //   for (var i = 0; i < this.substrateList.length; i++) { | ||||
|           //     var model = 'model' + Number(i + 1) | ||||
|           //     var pmpp = 'PMPP' + Number(i + 1) | ||||
|           //     var m = 'm' + Number(i + 1) | ||||
|  | ||||
|           //     console.log(model) | ||||
|           //     // console.log(this.list[i].woSubstrateId) | ||||
|           //     // console.log(this.list[i].woSubstrateId) | ||||
|           //     obj['' + model + ''] = this.substrateList[i].woSubstrateId | ||||
|           //     obj['' + pmpp + ''] = this.substrateList[i].pmpp | ||||
|           //     obj['' + m + ''] = i + 1 | ||||
|           //   } | ||||
|           //   console.log(obj) | ||||
|           // this.printPreview('预览', res.data) | ||||
|           const hiprintTemplate = this.$print(undefined, JSON.parse(res.data.content), obj, {}, { | ||||
|             // styleHandler: () => { | ||||
|             //   const css = '<link href="http://hiprint.io/Content/hiprint/css/print-lock.css" media="print" rel="stylesheet">' | ||||
|             //   return css | ||||
|             // } | ||||
|           }) | ||||
|  | ||||
|           hiprintTemplate.on('printSuccess', function () { | ||||
|             console.log(1111); | ||||
|             // that.$notification.success({ | ||||
|             //   // key: key, | ||||
|             //   placement: 'topRight', | ||||
|             //   message: key + ' 打印成功', | ||||
|             //   description: 'Api单独直接打印回调', | ||||
|             // }); | ||||
|           }); | ||||
|           console.log(hiprintTemplate) | ||||
|         }) | ||||
|       } else { | ||||
|         this.$message({ | ||||
|           message: '请选择打印标签模板', | ||||
|           type: 'warning' | ||||
|         }); | ||||
|       } | ||||
|     }, | ||||
|     closeCallback(vue) { | ||||
|       console.log('关闭了打印工具') | ||||
|     }, | ||||
| 		buttonClick(val) { | ||||
| 			switch (val.btnName) { | ||||
| 				case 'search': | ||||
| 					this.listQuery.pageNo = 1; | ||||
| 					this.listQuery.pageSize = 20; | ||||
|           this.listQuery.workOrderId = val.workOrderId; | ||||
|           if (val.createTime && val.createTime.length != 0) { | ||||
|             this.listQuery.createTime = val.createTime | ||||
|             // this.listQuery.createTime[1] = val.timeVal[1] | ||||
|           } else { | ||||
|             this.listQuery.createTime = undefined | ||||
|             // this.listQuery.endTime = undefined | ||||
|           } | ||||
|           this.getDataList(); | ||||
|           console.log(this.tableData) | ||||
| 					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: | ||||
| 		currentMenu(val) { | ||||
| 			console.log(val); | ||||
| 			} | ||||
| 		}, | ||||
|     otherMethods(val) { | ||||
|       this.handlePrint(val.data.modelId) | ||||
| 			// this.addOrUpdateVisible = true; | ||||
| 			// this.addOrEditTitle = '详情'; | ||||
| 			// this.$nextTick(() => { | ||||
| 			// 	this.$refs.addOrUpdate.init(val.data.id, true); | ||||
| 			// }); | ||||
| 			this.activeMenu = val; | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
| <style lang="scss" scoped> | ||||
| .packagingPrintLog-box { | ||||
| 	min-height: calc(100vh - 120px - 8px); | ||||
| 	background-color: #f2f4f9; | ||||
| 	.show-box { | ||||
| 		min-height: calc(100vh - 128px - 52px); | ||||
| 		margin-top: 8px; | ||||
| 		padding: 16px; | ||||
| 		border-radius: 8px; | ||||
| 		background-color: #fff; | ||||
| 	} | ||||
| } | ||||
| </style> | ||||
|   | ||||
							
								
								
									
										889
									
								
								src/views/base/packagingPrintLog/print-template.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										889
									
								
								src/views/base/packagingPrintLog/print-template.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,889 @@ | ||||
| export default { | ||||
|   "panels":[ | ||||
|   { | ||||
|   "index":0, | ||||
|   "name":1, | ||||
|   "height":125, | ||||
|   "width":95, | ||||
|   "paperHeader":0, | ||||
|   "paperFooter":354.33070866141736, | ||||
|   "printElements":[ | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":5, | ||||
|   "top":5, | ||||
|   "height":30, | ||||
|   "width":256.5, | ||||
|   "right":262.2421875, | ||||
|   "bottom":34.9921875, | ||||
|   "vCenter":133.9921875, | ||||
|   "hCenter":19.9921875, | ||||
|   "coordinateSync":false, | ||||
|   "widthHeightSync":false, | ||||
|   "borderColor":"green", | ||||
|   "backgroundColor":"green" | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"矩形", | ||||
|   "type":"rect" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":35, | ||||
|   "top":15, | ||||
|   "height":20, | ||||
|   "width":195, | ||||
|   "title":"厂内镀膜/钢化片周转标签", | ||||
|   "coordinateSync":false, | ||||
|   "widthHeightSync":false, | ||||
|   "fontSize":16.5, | ||||
|   "color":"#ffffff", | ||||
|   "qrCodeLevel":0, | ||||
|   "right":232.9921875, | ||||
|   "bottom":35.24609375, | ||||
|   "vCenter":135.4921875, | ||||
|   "hCenter":25.24609375 | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"文本", | ||||
|   "type":"text" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":50, | ||||
|   "top":35, | ||||
|   "height":52.5, | ||||
|   "width":9 | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"竖线", | ||||
|   "type":"vline" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":5, | ||||
|   "top":35, | ||||
|   "height":309, | ||||
|   "width":256.5, | ||||
|   "right":261.4921875, | ||||
|   "bottom":343.9921875, | ||||
|   "vCenter":133.2421875, | ||||
|   "hCenter":189.4921875 | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"矩形", | ||||
|   "type":"rect" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":10, | ||||
|   "top":42.5, | ||||
|   "height":18, | ||||
|   "width":36, | ||||
|   "title":"线别", | ||||
|   "coordinateSync":false, | ||||
|   "widthHeightSync":false, | ||||
|   "fontSize":12, | ||||
|   "qrCodeLevel":0, | ||||
|   "right":45.99609375, | ||||
|   "bottom":60.4921875, | ||||
|   "vCenter":27.99609375, | ||||
|   "hCenter":51.4921875 | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"文本", | ||||
|   "type":"text" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":55, | ||||
|   "top":42.5, | ||||
|   "height":18, | ||||
|   "width":200, | ||||
|   "title":"判定", | ||||
|   "coordinateSync":false, | ||||
|   "widthHeightSync":false, | ||||
|   "fontSize":12, | ||||
|   "qrCodeLevel":0, | ||||
|   "right":93.4921875, | ||||
|   "bottom":59.25, | ||||
|   "vCenter":75.4921875, | ||||
|   "hCenter":50.25, | ||||
|   "field":"checkGoodName" | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"文本", | ||||
|   "type":"text" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":5, | ||||
|   "top":62.5, | ||||
|   "height":9, | ||||
|   "width":256.5, | ||||
|   "right":259.9921875, | ||||
|   "bottom":72.4921875, | ||||
|   "vCenter":132.4921875, | ||||
|   "hCenter":67.9921875 | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"横线", | ||||
|   "type":"hline" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":55, | ||||
|   "top":70, | ||||
|   "height":18, | ||||
|   "width":199.5, | ||||
|   "title":"备注", | ||||
|   "coordinateSync":false, | ||||
|   "widthHeightSync":false, | ||||
|   "fontSize":12, | ||||
|   "qrCodeLevel":0, | ||||
|   "right":91.2421875, | ||||
|   "bottom":86.25, | ||||
|   "vCenter":73.2421875, | ||||
|   "hCenter":77.25, | ||||
|   "field":"remarkT" | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"文本", | ||||
|   "type":"text" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":190, | ||||
|   "top":87.5, | ||||
|   "height":169.5, | ||||
|   "width":9, | ||||
|   "right":199.74609375, | ||||
|   "bottom":255.75, | ||||
|   "vCenter":195.24609375, | ||||
|   "hCenter":171 | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"竖线", | ||||
|   "type":"vline" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":5, | ||||
|   "top":87.5, | ||||
|   "height":9, | ||||
|   "width":256.5, | ||||
|   "right":260.7421875, | ||||
|   "bottom":96.75, | ||||
|   "vCenter":132.4921875, | ||||
|   "hCenter":92.25 | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"横线", | ||||
|   "type":"hline" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":77.5, | ||||
|   "top":90, | ||||
|   "height":15, | ||||
|   "width":36, | ||||
|   "title":"规格", | ||||
|   "coordinateSync":false, | ||||
|   "widthHeightSync":false, | ||||
|   "fontSize":12, | ||||
|   "qrCodeLevel":0, | ||||
|   "right":113.49609375, | ||||
|   "bottom":105.4921875, | ||||
|   "vCenter":95.49609375, | ||||
|   "hCenter":97.9921875 | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"文本", | ||||
|   "type":"text" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":207.5, | ||||
|   "top":100, | ||||
|   "height":18, | ||||
|   "width":36, | ||||
|   "title":"用户", | ||||
|   "coordinateSync":false, | ||||
|   "widthHeightSync":false, | ||||
|   "fontSize":12, | ||||
|   "qrCodeLevel":0, | ||||
|   "right":242.7421875, | ||||
|   "bottom":116.25, | ||||
|   "vCenter":224.7421875, | ||||
|   "hCenter":107.25 | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"文本", | ||||
|   "type":"text" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":25, | ||||
|   "top":102.5, | ||||
|   "height":15, | ||||
|   "width":156, | ||||
|   "title":"长*宽*厚度(单位:mm)", | ||||
|   "coordinateSync":false, | ||||
|   "widthHeightSync":false, | ||||
|   "fontSize":12, | ||||
|   "qrCodeLevel":0, | ||||
|   "right":179.25, | ||||
|   "bottom":117.4921875, | ||||
|   "vCenter":101.25, | ||||
|   "hCenter":109.9921875 | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"文本", | ||||
|   "type":"text" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":5, | ||||
|   "top":117.5, | ||||
|   "height":9, | ||||
|   "width":256.5, | ||||
|   "right":263.7421875, | ||||
|   "bottom":125.7421875, | ||||
|   "vCenter":135.4921875, | ||||
|   "hCenter":121.2421875 | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"横线", | ||||
|   "type":"hline" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":130, | ||||
|   "top":145, | ||||
|   "height":55.5, | ||||
|   "width":9, | ||||
|   "right":138.99609375, | ||||
|   "bottom":199.5, | ||||
|   "vCenter":134.49609375, | ||||
|   "hCenter":171.75 | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"竖线", | ||||
|   "type":"vline" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":5, | ||||
|   "top":145, | ||||
|   "height":9, | ||||
|   "width":256.5, | ||||
|   "right":260.25, | ||||
|   "bottom":154.2421875, | ||||
|   "vCenter":132, | ||||
|   "hCenter":149.7421875 | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"横线", | ||||
|   "type":"hline" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":45, | ||||
|   "top":155, | ||||
|   "height":18, | ||||
|   "width":36, | ||||
|   "title":"编号", | ||||
|   "coordinateSync":false, | ||||
|   "widthHeightSync":false, | ||||
|   "fontSize":12, | ||||
|   "qrCodeLevel":0, | ||||
|   "right":82.2421875, | ||||
|   "bottom":171.75, | ||||
|   "vCenter":64.2421875, | ||||
|   "hCenter":162.75 | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"文本", | ||||
|   "type":"text" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":135, | ||||
|   "top":155, | ||||
|   "height":18, | ||||
|   "width":49.5, | ||||
|   "title":"工位号", | ||||
|   "coordinateSync":false, | ||||
|   "widthHeightSync":false, | ||||
|   "fontSize":12, | ||||
|   "qrCodeLevel":0, | ||||
|   "right":186, | ||||
|   "bottom":172.9921875, | ||||
|   "vCenter":161.25, | ||||
|   "hCenter":163.9921875 | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"文本", | ||||
|   "type":"text" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":197.5, | ||||
|   "top":155, | ||||
|   "height":18, | ||||
|   "width":60, | ||||
|   "title":"流程卡号", | ||||
|   "coordinateSync":false, | ||||
|   "widthHeightSync":false, | ||||
|   "fontSize":12, | ||||
|   "qrCodeLevel":0, | ||||
|   "right":256.74609375, | ||||
|   "bottom":143.7421875, | ||||
|   "vCenter":226.74609375, | ||||
|   "hCenter":134.7421875 | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"文本", | ||||
|   "type":"text" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":5, | ||||
|   "top":175, | ||||
|   "height":9, | ||||
|   "width":256.5, | ||||
|   "right":259.2421875, | ||||
|   "bottom":183.75, | ||||
|   "vCenter":130.9921875, | ||||
|   "hCenter":179.25 | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"横线", | ||||
|   "type":"hline" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":50, | ||||
|   "top":200, | ||||
|   "height":58.5, | ||||
|   "width":9, | ||||
|   "right":58.9921875, | ||||
|   "bottom":259.5, | ||||
|   "vCenter":54.4921875, | ||||
|   "hCenter":230.25 | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"竖线", | ||||
|   "type":"vline" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":110, | ||||
|   "top":200, | ||||
|   "height":58.5, | ||||
|   "width":9, | ||||
|   "right":117.75, | ||||
|   "bottom":256.9921875, | ||||
|   "vCenter":113.25, | ||||
|   "hCenter":227.7421875 | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"竖线", | ||||
|   "type":"vline" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":5, | ||||
|   "top":200, | ||||
|   "height":9, | ||||
|   "width":256.5, | ||||
|   "right":262.9921875, | ||||
|   "bottom":210.24609375, | ||||
|   "vCenter":134.7421875, | ||||
|   "hCenter":205.74609375 | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"横线", | ||||
|   "type":"hline" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":10, | ||||
|   "top":210, | ||||
|   "height":18, | ||||
|   "width":36, | ||||
|   "title":"日期", | ||||
|   "coordinateSync":false, | ||||
|   "widthHeightSync":false, | ||||
|   "fontSize":12, | ||||
|   "qrCodeLevel":0, | ||||
|   "right":45.99609375, | ||||
|   "bottom":228, | ||||
|   "vCenter":27.99609375, | ||||
|   "hCenter":219 | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"文本", | ||||
|   "type":"text" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":67.5, | ||||
|   "top":210, | ||||
|   "height":18, | ||||
|   "width":36, | ||||
|   "title":"班次", | ||||
|   "coordinateSync":false, | ||||
|   "widthHeightSync":false, | ||||
|   "fontSize":12, | ||||
|   "qrCodeLevel":0, | ||||
|   "right":103.5, | ||||
|   "bottom":228, | ||||
|   "vCenter":85.5, | ||||
|   "hCenter":219 | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"文本", | ||||
|   "type":"text" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":207.5, | ||||
|   "top":210, | ||||
|   "height":18, | ||||
|   "width":36, | ||||
|   "title":"片数", | ||||
|   "coordinateSync":false, | ||||
|   "widthHeightSync":false, | ||||
|   "fontSize":12, | ||||
|   "qrCodeLevel":0, | ||||
|   "right":243.4921875, | ||||
|   "bottom":228, | ||||
|   "vCenter":225.4921875, | ||||
|   "hCenter":219 | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"文本", | ||||
|   "type":"text" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":5, | ||||
|   "top":230, | ||||
|   "height":9, | ||||
|   "width":256.5, | ||||
|   "right":261.4921875, | ||||
|   "bottom":239.25, | ||||
|   "vCenter":133.2421875, | ||||
|   "hCenter":234.75 | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"横线", | ||||
|   "type":"hline" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":5, | ||||
|   "top":257.5, | ||||
|   "height":9, | ||||
|   "width":256.5, | ||||
|   "right":261.4921875, | ||||
|   "bottom":266.49609375, | ||||
|   "vCenter":133.2421875, | ||||
|   "hCenter":261.99609375 | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"横线", | ||||
|   "type":"hline" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":10, | ||||
|   "top":262.5, | ||||
|   "height":18, | ||||
|   "width":243, | ||||
|   "title":"封箱人员工号", | ||||
|   "coordinateSync":false, | ||||
|   "widthHeightSync":false, | ||||
|   "fontSize":12, | ||||
|   "qrCodeLevel":0, | ||||
|   "right":46.9921875, | ||||
|   "bottom":279.24609375, | ||||
|   "vCenter":28.9921875, | ||||
|   "hCenter":270.24609375, | ||||
|   "field":"sealWorker" | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"文本", | ||||
|   "type":"text" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":5, | ||||
|   "top":280, | ||||
|   "height":9, | ||||
|   "width":256.5, | ||||
|   "right":262.2421875, | ||||
|   "bottom":289.2421875, | ||||
|   "vCenter":133.9921875, | ||||
|   "hCenter":284.7421875 | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"横线", | ||||
|   "type":"hline" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":10, | ||||
|   "top":285, | ||||
|   "height":18, | ||||
|   "width":244.5, | ||||
|   "title":"打包人员工号", | ||||
|   "coordinateSync":false, | ||||
|   "widthHeightSync":false, | ||||
|   "fontSize":12, | ||||
|   "qrCodeLevel":0, | ||||
|   "right":96.4921875, | ||||
|   "bottom":301.74609375, | ||||
|   "vCenter":52.9921875, | ||||
|   "hCenter":292.74609375, | ||||
|   "field":"packWorker" | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"文本", | ||||
|   "type":"text" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":5, | ||||
|   "top":300, | ||||
|   "height":9, | ||||
|   "width":256.5, | ||||
|   "right":264.4921875, | ||||
|   "bottom":308.49609375, | ||||
|   "vCenter":136.2421875, | ||||
|   "hCenter":303.99609375 | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"横线", | ||||
|   "type":"hline" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":10, | ||||
|   "top":305, | ||||
|   "height":18, | ||||
|   "width":247.5, | ||||
|   "title":"备注1:单层镀/双层镀/丝印打孔/打孔钢片", | ||||
|   "coordinateSync":false, | ||||
|   "widthHeightSync":false, | ||||
|   "fontSize":12, | ||||
|   "qrCodeLevel":0, | ||||
|   "right":96.99609375, | ||||
|   "bottom":322.9921875, | ||||
|   "vCenter":53.49609375, | ||||
|   "hCenter":313.9921875 | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"文本", | ||||
|   "type":"text" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":5, | ||||
|   "top":322.5, | ||||
|   "height":9, | ||||
|   "width":256.5, | ||||
|   "right":262.2421875, | ||||
|   "bottom":332.7421875, | ||||
|   "vCenter":133.9921875, | ||||
|   "hCenter":328.2421875 | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"横线", | ||||
|   "type":"hline" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":10, | ||||
|   "top":327.5, | ||||
|   "height":18, | ||||
|   "width":244.5, | ||||
|   "title":"备注2:", | ||||
|   "coordinateSync":false, | ||||
|   "widthHeightSync":false, | ||||
|   "fontSize":12, | ||||
|   "qrCodeLevel":0, | ||||
|   "right":97.9921875, | ||||
|   "bottom":343.74609375, | ||||
|   "vCenter":54.4921875, | ||||
|   "hCenter":334.74609375 | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"文本", | ||||
|   "type":"text" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":20, | ||||
|   "top":122.5, | ||||
|   "height":18, | ||||
|   "width":157.5, | ||||
|   "coordinateSync":false, | ||||
|   "widthHeightSync":false, | ||||
|   "fontSize":12, | ||||
|   "qrCodeLevel":0, | ||||
|   "right":54.99609375, | ||||
|   "bottom":142.5, | ||||
|   "vCenter":36.99609375, | ||||
|   "hCenter":133.5, | ||||
|   "field":"specifications", | ||||
|   "hideTitle":true | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"文本", | ||||
|   "type":"text" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":195, | ||||
|   "top":122.5, | ||||
|   "height":18, | ||||
|   "width":58.5, | ||||
|   "coordinateSync":false, | ||||
|   "widthHeightSync":false, | ||||
|   "fontSize":12, | ||||
|   "qrCodeLevel":0, | ||||
|   "right":250.9921875, | ||||
|   "bottom":140.49609375, | ||||
|   "vCenter":223.2421875, | ||||
|   "hCenter":131.49609375, | ||||
|   "field":"customerName", | ||||
|   "hideTitle":true | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"文本", | ||||
|   "type":"text" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":12.5, | ||||
|   "top":177.5, | ||||
|   "height":18, | ||||
|   "width":112.5, | ||||
|   "coordinateSync":false, | ||||
|   "widthHeightSync":false, | ||||
|   "fontSize":12, | ||||
|   "qrCodeLevel":0, | ||||
|   "right":48.24609375, | ||||
|   "bottom":195, | ||||
|   "vCenter":30.24609375, | ||||
|   "hCenter":186, | ||||
|   "field":"packagingCode", | ||||
|   "hideTitle":true | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"文本", | ||||
|   "type":"text" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":135, | ||||
|   "top":177.5, | ||||
|   "height":18, | ||||
|   "width":49.5, | ||||
|   "coordinateSync":false, | ||||
|   "widthHeightSync":false, | ||||
|   "fontSize":12, | ||||
|   "qrCodeLevel":0, | ||||
|   "right":186.24609375, | ||||
|   "bottom":196.5, | ||||
|   "vCenter":161.49609375, | ||||
|   "hCenter":187.5, | ||||
|   "field":"workStation", | ||||
|   "hideTitle":true | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"文本", | ||||
|   "type":"text" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":195, | ||||
|   "top":177.5, | ||||
|   "height":18, | ||||
|   "width":60, | ||||
|   "coordinateSync":false, | ||||
|   "widthHeightSync":false, | ||||
|   "fontSize":12, | ||||
|   "qrCodeLevel":0, | ||||
|   "right":254.7421875, | ||||
|   "bottom":194.25, | ||||
|   "vCenter":224.7421875, | ||||
|   "hCenter":185.25, | ||||
|   "field":"processCard", | ||||
|   "hideTitle":true | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"文本", | ||||
|   "type":"text" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":10, | ||||
|   "top":235, | ||||
|   "height":18, | ||||
|   "width":36, | ||||
|   "coordinateSync":false, | ||||
|   "widthHeightSync":false, | ||||
|   "fontSize":12, | ||||
|   "qrCodeLevel":0, | ||||
|   "right":46.9921875, | ||||
|   "bottom":252.24609375, | ||||
|   "vCenter":28.9921875, | ||||
|   "hCenter":243.24609375, | ||||
|   "field":"date", | ||||
|   "hideTitle":true | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"文本", | ||||
|   "type":"text" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":60, | ||||
|   "top":235, | ||||
|   "height":18, | ||||
|   "width":48, | ||||
|   "coordinateSync":false, | ||||
|   "widthHeightSync":false, | ||||
|   "fontSize":12, | ||||
|   "qrCodeLevel":0, | ||||
|   "right":97.2421875, | ||||
|   "bottom":253.9921875, | ||||
|   "vCenter":79.2421875, | ||||
|   "hCenter":244.9921875, | ||||
|   "field":"groupClass", | ||||
|   "hideTitle":true | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"文本", | ||||
|   "type":"text" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":120, | ||||
|   "top":235, | ||||
|   "height":18, | ||||
|   "width":64.5, | ||||
|   "coordinateSync":false, | ||||
|   "widthHeightSync":false, | ||||
|   "fontSize":12, | ||||
|   "qrCodeLevel":0, | ||||
|   "right":167.49609375, | ||||
|   "bottom":253.9921875, | ||||
|   "vCenter":143.49609375, | ||||
|   "hCenter":244.9921875, | ||||
|   "field":"time", | ||||
|   "hideTitle":true | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"文本", | ||||
|   "type":"text" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":202.5, | ||||
|   "top":235, | ||||
|   "height":18, | ||||
|   "width":48, | ||||
|   "coordinateSync":false, | ||||
|   "widthHeightSync":false, | ||||
|   "fontSize":12, | ||||
|   "qrCodeLevel":0, | ||||
|   "right":250.74609375, | ||||
|   "bottom":253.2421875, | ||||
|   "vCenter":226.74609375, | ||||
|   "hCenter":244.2421875, | ||||
|   "field":"num", | ||||
|   "hideTitle":true | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"文本", | ||||
|   "type":"text" | ||||
|   } | ||||
|   }, | ||||
|   { | ||||
|   "options":{ | ||||
|   "left":7.5, | ||||
|   "top":62.5, | ||||
|   "height":18, | ||||
|   "width":36, | ||||
|   "coordinateSync":false, | ||||
|   "widthHeightSync":false, | ||||
|   "fontSize":12, | ||||
|   "qrCodeLevel":0, | ||||
|   "right":44.7421875, | ||||
|   "bottom":81.24609375, | ||||
|   "vCenter":26.7421875, | ||||
|   "hCenter":72.24609375, | ||||
|   "field":"lineName", | ||||
|   "hideTitle":true | ||||
|   }, | ||||
|   "printElementType":{ | ||||
|   "title":"文本", | ||||
|   "type":"text" | ||||
|   } | ||||
|   } | ||||
|   ], | ||||
|   "paperNumberLeft":372.5, | ||||
|   "paperNumberTop":337.5, | ||||
|   "paperNumberContinue":true, | ||||
|   "watermarkOptions":{ | ||||
|   } | ||||
|   } | ||||
|   ] | ||||
|   } | ||||
							
								
								
									
										344
									
								
								src/views/base/packagingPrintLog1/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										344
									
								
								src/views/base/packagingPrintLog1/index.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,344 @@ | ||||
| <!-- | ||||
|  * @Author: zwq | ||||
|  * @Date: 2023-08-01 14:55:51 | ||||
|  * @LastEditors: zhp | ||||
|  * @LastEditTime: 2024-04-10 16:34:40 | ||||
|  * @Description: | ||||
| --> | ||||
| <template> | ||||
|   <div class="app-container"> | ||||
|     <search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" /> | ||||
|     <base-table :max-height="tableH" :table-props="tableProps" :page="listQuery.pageNo" :limit="listQuery.pageSize" | ||||
|       :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" /> | ||||
|     <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList" /> | ||||
|   </div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import AddOrUpdate from './add-or-updata'; | ||||
| // import unitDict from './unitDict'; | ||||
| import basicPage from '../mixins/basic-page'; | ||||
| import { parseTime } from '../mixins/code-filter'; | ||||
| import tableHeightMixin from '@/mixins/lb/tableHeightMixin'; | ||||
| import { | ||||
|   getPackingModel, | ||||
| } from '@/api/base/printModel.js' | ||||
| import { | ||||
| 	deletePacking, | ||||
|   getPackingPage, | ||||
|   getWorkOrderList, | ||||
| 	exportPackingExcel, | ||||
| } from '@/api/base/packingInfo'; | ||||
|  | ||||
| const tableProps = [ | ||||
| 	{ | ||||
|     prop: 'packagingCode', | ||||
|     label: '包装流水号' | ||||
|   }, | ||||
|   { | ||||
|     prop: 'packagingBarCode', | ||||
|     label: '包装条码' | ||||
|   }, | ||||
| 	{ | ||||
|     prop: 'workOrderName', | ||||
| 		label: '所属工单' | ||||
| 	}, | ||||
| 	{ | ||||
|     prop: 'customerName', | ||||
| 		label: '客户' | ||||
| 	}, | ||||
| 	{ | ||||
|     prop: 'content', | ||||
| 		label: '内容', | ||||
| 		// subcomponent: unitDict, | ||||
|   }, | ||||
|   { | ||||
|     prop: 'modelName', | ||||
|     label: '标签模板', | ||||
|     // subcomponent: unitDict, | ||||
|   }, | ||||
|   { | ||||
|     prop: 'printStatus', | ||||
|     label: '打印状态', | ||||
|     filter: (val) => val == 1 ? '未打印' : '已打印', | ||||
|   }, | ||||
| 	{ | ||||
|     prop: 'createTime', | ||||
| 		label: '生成日期', | ||||
| 		filter: parseTime | ||||
| 	}, | ||||
| ]; | ||||
|  | ||||
| export default { | ||||
|   mixins: [basicPage, tableHeightMixin], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			urlOptions: { | ||||
|         getDataListURL: getPackingPage, | ||||
| 				deleteURL: deletePacking, | ||||
| 				exportURL: exportPackingExcel, | ||||
| 			}, | ||||
| 			tableProps, | ||||
|       tableBtn: [ | ||||
|         { | ||||
|           type: 'print', | ||||
|           btnName: '打印', | ||||
|         }, | ||||
|         this.$auth.hasPermi(`base:packaging-print-log:update`) | ||||
| 					? { | ||||
| 							type: 'edit', | ||||
| 							btnName: '编辑', | ||||
| 					  } | ||||
|           : undefined, | ||||
|         this.$auth.hasPermi(`base:packaging-print-log:delete`) | ||||
| 					? { | ||||
| 							type: 'delete', | ||||
| 							btnName: '删除', | ||||
| 					  } | ||||
|           : undefined, | ||||
| 			].filter((v) => v), | ||||
| 			tableData: [], | ||||
|       formConfig: [ | ||||
|         { | ||||
|           type: 'select', | ||||
|           label: '工单', | ||||
|           selectOptions: [], | ||||
|           labelField: 'name', | ||||
|           valueField: 'id', | ||||
|           param: 'workOrderId', | ||||
|           filterable: true, | ||||
|         }, | ||||
|         { | ||||
|           // parent: 'dateFilterType', | ||||
|           // 时间段选择 | ||||
|           type: 'datePicker', | ||||
|           // label: '时间段', | ||||
|           dateType: 'daterange', | ||||
|           format: 'yyyy-MM-dd HH:mm:ss', | ||||
|           valueFormat: 'yyyy-MM-dd HH:mm:ss', | ||||
|           defaultTime: ['00:00:00', '00:00:00'], | ||||
|           rangeSeparator: '-', | ||||
|           startPlaceholder: '开始时间', | ||||
|           endPlaceholder: '结束时间', | ||||
|           param: 'createTime', | ||||
|         }, | ||||
| 				{ | ||||
|           type: this.$auth.hasPermi('base:packaging-print-log:query') ? 'button' : '', | ||||
| 					btnName: '搜索', | ||||
| 					name: 'search', | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				// { | ||||
| 				// 	type: 'separate', | ||||
| 				// }, | ||||
| 				// { | ||||
| 				// 	type: 'button', | ||||
| 				// 	btnName: '重置', | ||||
| 				// 	name: 'reset', | ||||
| 				// }, | ||||
|         { | ||||
|           type: this.$auth.hasPermi('base:packaging-print-log:create') ? 'separate' : '', | ||||
| 				}, | ||||
| 				{ | ||||
|           type: this.$auth.hasPermi('base:packaging-print-log:create') ? 'button' : '', | ||||
| 					btnName: '新增', | ||||
| 					name: 'add', | ||||
| 					color: 'success', | ||||
| 					plain: true, | ||||
| 				}, | ||||
| 				// { | ||||
| 				// 	type: 'separate', | ||||
| 				// 	type: this.$auth.hasPermi('base:product:create') ? 'separate' : '', | ||||
| 				// }, | ||||
| 				// { | ||||
| 				// 	type: this.$auth.hasPermi('base:product:export') ? 'button' : '', | ||||
| 				// 	btnName: '导出', | ||||
| 				// 	name: 'export', | ||||
| 				// 	color: 'warning', | ||||
| 				// }, | ||||
| 			], | ||||
| 		}; | ||||
| 	}, | ||||
| 	components: { | ||||
| 		AddOrUpdate, | ||||
| 	}, | ||||
|   created() { | ||||
|     this.getDict() | ||||
|   }, | ||||
|   methods: { | ||||
|     getDataList() { | ||||
|       this.dataListLoading = true; | ||||
|       this.urlOptions.getDataListURL(this.listQuery).then(response => { | ||||
|         this.tableData = response.data.records; | ||||
|         this.listQuery.total = response.data.total; | ||||
|         this.dataListLoading = false; | ||||
|       }); | ||||
|     }, | ||||
|     getDict() { | ||||
|       // 获取产品的属性列表 | ||||
|       // getCustomerList().then((response) => { | ||||
|       //   console.log(response); | ||||
|       //   this.customerList = response.data | ||||
|       //   // this.listQuery.total = response.data.total; | ||||
|       // }) | ||||
|       // getModelList().then((response) => { | ||||
|       //   console.log(response); | ||||
|       //   this.modelList = response.data | ||||
|       //   // this.listQuery.total = response.data.total; | ||||
|       // }) | ||||
|       getWorkOrderList().then((response) => { | ||||
|         // console.log(response); | ||||
|         this.formConfig[0].selectOptions = response.data.map((item) => { | ||||
|           return { | ||||
|             name: item.name, | ||||
|             id: item.id | ||||
|           } | ||||
|         }) | ||||
|         console.log(this.formConfig[0].selectOptions); | ||||
|         // this.listQuery.total = response.data.total; | ||||
|       }) | ||||
|     }, | ||||
|     deleteHandle(id, name, index, packagingCode) { | ||||
|       this.$confirm(`是否确认删除${'[' + packagingCode + ']'}数据项?`, "提示", { | ||||
|         confirmButtonText: "确定", | ||||
|         cancelButtonText: "取消", | ||||
|         type: "warning", | ||||
|       }) | ||||
|         .then(() => { | ||||
|           this.urlOptions.deleteURL(id).then(({ data }) => { | ||||
|             this.$message({ | ||||
|               message: "操作成功", | ||||
|               type: "success", | ||||
|               duration: 1500, | ||||
|               onClose: () => { | ||||
|                 this.getDataList(); | ||||
|               }, | ||||
|             }); | ||||
|           }); | ||||
|         }) | ||||
|         .catch(() => { }); | ||||
|     }, | ||||
|     handlePrint(id) { | ||||
|       if (id) { | ||||
|         getPackingModel(id).then(res => { | ||||
|           var obj = { | ||||
|             code: '11111222', | ||||
|             test: '11111', | ||||
|             test2: '3333333', | ||||
|             test1: '222222', | ||||
|           } | ||||
|           console.log(res); | ||||
|           // getPackingListInfo({ | ||||
|           //   size: 20, | ||||
|           //   current: 1, | ||||
|           //   boxNo: printModel.boxNo | ||||
|           // }).then(result => { | ||||
|           //   this.substrateList = result.data.records | ||||
|           //   var obj = { | ||||
|           //     // time: this.getNewDate(), | ||||
|           //     boxNo: this.currentData.boxNo, | ||||
|           //     orderNum: this.currentData.orderNum, | ||||
|           //     powerLevel: this.currentData.powerLevel, | ||||
|           //     sapMaterial: this.currentData.sapMaterial, | ||||
|           //     img: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAHVklEQVR4nO2dT2wUVRzHv2/2T5eSAlvFilwgQUH+eLACaUxEiJLAxdh44MDZi2ChUIrSFtoCgbbSP4GDdwgeEA8kRTAI0iIGBL1ITLxgLAlCsCKBYndnx7zd35pl2+7On/de387OJ9l00515/z7z/szMmzfs7869mD0yCjw2gZAB4VhAiln4/dUaRGdU18aOnzw9dn24ioGJj0soFsJr1z2yNm+qN2/fvRFL8XyMYqTmFfxZ+TwMc1xKDsL/f2Ms8xGeLwuIRpCKx99MHf/i4uPrw5GQ9jIAfsCMXfw2HkuOX03Wb1qLh4+uIGFJjzecPoS5iEhUTg1hDMaM2GuRk6cGMTQUCYmPQQq86CMAkkPDkQirGAzXf7Du34ejN9IHmETCRjQGPL6D+4NnYDEJDQmXbaY6on/dm2Vm/jHdZe0Almm6Ll+YNQbzasX7765BNHI1o0sOYRghwExg7MG9dDQSiqsdwHuZmlFKMjLwQ3QcFtjlSxHTenLO3Lp7vfU09AOS41Ka+HC6CjIDIaqmguvIPgBtIgOcDhjVlMTQtarKOScumR/teCdpxoeNZGJCapjFt7Rcywrb2MYtnQBatCpZTzCkYCF+5suKRXf+6EvOmv0GSzwrhB/QpmGkBYZSpqvIZAlp8ZeMLFwKUH3z2gqWyd/+3F/5b1yRQQMCN8gQspeaKt+SAItSCxCiPjIjhDEkjRAMxmCZSbgZkYke537qdxl57KM8C0OkkD0ADohMXIlwgPIuBFFC9uS3p2XGflFSRAgpdxlZeBl84jUQr0ImjDTKGWZZBwE0eCkCL0J20UgjgGCwEDHNPjB86PbiilshfGRxOBCRD0tLCSWTnzMLO9yE4EbIzjIdTdmGpc8/rB4qK0c4FcKbqe7pyWZJ0k1lZhsnQnZq3EzV00dHDjupKXaFNGtcM7YA+Io+WzRIz2R0UxkWxY6QJgCHlCbfPlzAsZytj2ks5RCVZUGKCdkOoEt+Wl3RkCcjyzGv5wIS6aIynZJCQni7d0TTjPFaMFDg9wGNa8qRQn3KVEI+1rjPmKpm5KNzTemmMp7AZEK2AehXmz7bbC1SM/IZoH10pJ/K+hnyhXBrvZpmoBHAURf7HaV9daQ3v6Zk7hhWVr4AYDOAzzRNeKPHAyW7r459Yj/deUynMcyqqpY9/fXW+RTwkiF/ms5pADcd7nMbwAkBcfMM3wOwwOF+rys46TxCt+T72d2NG0YSg2fnC58ANDkbAZyVH41QNgAYVBTXNiMxeLYG6qawvagmGqGoTHOfwcAe6T8TvWwYlTC7OsALgRDNCIRoRiBEMwIhmhEI0YxAiGYEQjRDtZCY9iUyEaVpVi3kvuL4RKA0zSqF8Ad5TimMTxSnKO1KUCWEZ6hDVaYk0KFKigohbSUuI0uHiieKZQtp89kM+U7ZUmQKafHp4wpSH/eWJaTT5zPkD8g62GQI8cXqDTZok/HEsWgh+3Of2y4D2kU/0idKyEOaJdgqKLxSotXlfLFJESXkicKZGTrys6g0iRIyD8AvAFYLCq+UWC1yACOyD+Hrf1wAUCcwTN2pozzXiEqn6E59JoBvANQKDldHaimvM0WmTcawlydw2Oc1pY7yKFQGJJ4YxqiTXyEp/OlkBeVNyn0SmZdO5gC47rOOfjXlaY6sCGRfXKwA8LVP+pRaykuFzEhUXH7nR9P3AFYqiEsWKykP0mpGFlU3qKI0IlmlKD6RrKK0R1VEpvIW7uwSHXnVUdqVoHqSwz+K4xOB0jQH87I0IxCiGYEQzQiEaEYgRDMCIZoRCNGMQIhmBEI0gwuJK0xScKZemHiY1mzqUxThYgBLHO7zQOAzGnMBPOdwn8WC4rbDNjaSWVajQaEUp9wBsB7ALY/hLAVwHsB89VmwRXrhuGwf0q/xIl/z6f6105qVyxIKQ1cZjdlV/HI79V6N1yjk/dxlAMtc7LuM9lXZVzqhIXdxtvxR1kCxZUynkbl0o2ihgyQspH3mapqn7flrSE427O3TuKbwGZI/AlhuY9vltO08Belyw6T99lTnIQN2VmGeJqppskGhpfoW0DbVmuahaarVVQudGPZo3tH/RCOnfJbSbzp34D1T/VjsTL3X6esWFMJngJwDsCgnykX0P+mzQ1yyq9jqqtnzkGI0a7wgPz9pfJm+/6ZxB77bzus+7L7pkwdkarr8OBdwJee7jjQVaqZysVtDsuwK3j3lmGYnb5hwerW3S+PRl440OX3dh5vL7z0iXzXqY/bYbaZycXs/5KDdV/iUKc1URo7xcoOqq0yfui1Gq5e3EoUava1qzS/aJQGs8xKIj2jx+gCoVyGcoUBKGs8yIEgIAiliZEDwJAehL3ovIYS+2F9UDckyRH/fFhmoxuwTvdaJaCGc7+gyi9+br1YZSzTJEAIaffHrZG/JCFwDpK16JEsI5yK9uMdvzVe7zAUxZQrhXKKBwxqZkSikQ8aiZbnIFgKS4oea0i5bBhQJgQ+kKJEBhUJAUkqxo+cduJqVrQH8B6xBgBhvJFNDAAAAAElFTkSuQmCC', | ||||
|           //     // lineBody: this.currentData.lineBody == 1 ? 'F ' : 'S', | ||||
|           //     createTime: moment(this.currentData.createTime).format('YYYY-MM-DD HH:mm:ss') | ||||
|           //     // modul1: '20210320000012', | ||||
|           //     // modul2: '20210320000012', | ||||
|           //     // modul3: '20210320000012' | ||||
|           //   } | ||||
|           //   for (var i = 0; i < this.substrateList.length; i++) { | ||||
|           //     var model = 'model' + Number(i + 1) | ||||
|           //     var pmpp = 'PMPP' + Number(i + 1) | ||||
|           //     var m = 'm' + Number(i + 1) | ||||
|  | ||||
|           //     console.log(model) | ||||
|           //     // console.log(this.list[i].woSubstrateId) | ||||
|           //     // console.log(this.list[i].woSubstrateId) | ||||
|           //     obj['' + model + ''] = this.substrateList[i].woSubstrateId | ||||
|           //     obj['' + pmpp + ''] = this.substrateList[i].pmpp | ||||
|           //     obj['' + m + ''] = i + 1 | ||||
|           //   } | ||||
|           //   console.log(obj) | ||||
|           // this.printPreview('预览', res.data) | ||||
|           const hiprintTemplate = this.$print(undefined, JSON.parse(res.data.content), obj, {}, { | ||||
|             // styleHandler: () => { | ||||
|             //   const css = '<link href="http://hiprint.io/Content/hiprint/css/print-lock.css" media="print" rel="stylesheet">' | ||||
|             //   return css | ||||
|             // } | ||||
|           }) | ||||
|  | ||||
|           hiprintTemplate.on('printSuccess', function () { | ||||
|             console.log(1111); | ||||
|             // that.$notification.success({ | ||||
|             //   // key: key, | ||||
|             //   placement: 'topRight', | ||||
|             //   message: key + ' 打印成功', | ||||
|             //   description: 'Api单独直接打印回调', | ||||
|             // }); | ||||
|           }); | ||||
|           console.log(hiprintTemplate) | ||||
|         }) | ||||
|       } else { | ||||
|         this.$message({ | ||||
|           message: '请选择打印标签模板', | ||||
|           type: 'warning' | ||||
|         }); | ||||
|       } | ||||
|     }, | ||||
|     closeCallback(vue) { | ||||
|       console.log('关闭了打印工具') | ||||
|     }, | ||||
| 		buttonClick(val) { | ||||
| 			switch (val.btnName) { | ||||
| 				case 'search': | ||||
| 					this.listQuery.pageNo = 1; | ||||
| 					this.listQuery.pageSize = 20; | ||||
|           this.listQuery.workOrderId = val.workOrderId; | ||||
|           if (val.createTime && val.createTime.length != 0) { | ||||
|             this.listQuery.createTime = val.createTime | ||||
|             // this.listQuery.createTime[1] = val.timeVal[1] | ||||
|           } else { | ||||
|             this.listQuery.createTime = undefined | ||||
|             // this.listQuery.endTime = undefined | ||||
|           } | ||||
|           this.getDataList(); | ||||
|           console.log(this.tableData) | ||||
| 					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); | ||||
| 			} | ||||
| 		}, | ||||
|     otherMethods(val) { | ||||
|       this.handlePrint(val.data.modelId) | ||||
| 			// this.addOrUpdateVisible = true; | ||||
| 			// this.addOrEditTitle = '详情'; | ||||
| 			// this.$nextTick(() => { | ||||
| 			// 	this.$refs.addOrUpdate.init(val.data.id, true); | ||||
| 			// }); | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
| @@ -6,138 +6,130 @@ | ||||
|  * @Description: | ||||
| --> | ||||
| <template> | ||||
|   <el-dialog class="baseDialog" :visible.sync="visible" :show-close="false" :wrapper-closable="false" width="30%" show-close="true"> | ||||
|     <small-title slot="title" :no-padding="true"> | ||||
| 	<el-dialog | ||||
| 		class="baseDialog" | ||||
| 		:visible.sync="visible" | ||||
| 		:show-close="true" | ||||
| 		:wrapper-closable="false" | ||||
| 		width="50%"> | ||||
| 		<small-title | ||||
| 			slot="title" | ||||
| 			:no-padding="true"> | ||||
| 			{{ !dataForm.id ? '新增' : '编辑' }} | ||||
| 		</small-title> | ||||
|  | ||||
| 		<div class="content"> | ||||
| 			<div class="visual-part"> | ||||
|         <el-form ref="dataForm" :model="dataForm" :rules="dataRule" label-width="100px" | ||||
| 				<el-form | ||||
| 					ref="dataForm" | ||||
| 					:model="dataForm" | ||||
| 					:rules="dataRule" | ||||
| 					label-width="100px" | ||||
| 					@keyup.enter.native="dataFormSubmit"> | ||||
| 					<el-row :gutter="20"> | ||||
|             <el-col :span="12"> | ||||
|               <el-form-item label="模板名称" prop="name"> | ||||
|                 <el-input v-model="dataForm.name" clearable placeholder="请输入模板名称" /> | ||||
|               </el-form-item> | ||||
|             </el-col> | ||||
|             <el-col :span="12"> | ||||
|               <el-form-item label="标签类型" prop="typeId"> | ||||
|                 <el-select v-model="dataForm.typeId" style="width: 100%;" placeholder="请选择标签类型" clearable> | ||||
|                   <el-option v-for="dict in typeList" :key="dict.id" :label="dict.name" :value="dict.id" /> | ||||
|                 </el-select> | ||||
|               </el-form-item> | ||||
|             </el-col> | ||||
|           </el-row> | ||||
|           <el-row :gutter="20"> | ||||
|             <el-col :span="12"> | ||||
|               <el-form-item label="打印方式" prop="printModel"> | ||||
|                 <el-select v-model="dataForm.printModel" style="width: 100%;" placeholder="请选择打印方式" clearable> | ||||
|                   <el-option v-for="dict in printModelList" :key="dict.id" :label="dict.name" :value="dict.id" /> | ||||
|                 </el-select> | ||||
|               </el-form-item> | ||||
|             </el-col> | ||||
|             <el-col :span="12"> | ||||
|               <el-form-item label="标签备注" prop="remark"> | ||||
|                 <el-input v-model="dataForm.remark" clearable placeholder="请输入标签备注" /> | ||||
|               </el-form-item> | ||||
|             </el-col> | ||||
|           </el-row> | ||||
|           <el-row :gutter="20"> | ||||
|             <el-col :span="12"> | ||||
|               <el-form-item label="模板设计" prop="content"> | ||||
|                 <el-button  icon="el-icon-edit" @click="btnClickDesign()">模板设计</el-button> | ||||
|               </el-form-item> | ||||
|             </el-col> | ||||
|             <!-- <el-col :span="12"> | ||||
|               <el-form-item label="单位平方数" prop="area"> | ||||
|                 <el-input v-model="dataForm.area" placeholder="请输入单位平方数" /> | ||||
|               </el-form-item> | ||||
|             </el-col> --> | ||||
|           </el-row> | ||||
|           <!-- <el-row :gutter="20"> | ||||
| 						<el-col :span="24"> | ||||
|               <el-form-item label="完成单位产品用时" prop="processTime"> | ||||
|                 <el-input v-model="dataForm.processTime" placeholder="请输入完成单位产品用时" /> | ||||
| 							<el-form-item | ||||
| 								label="模板名称" | ||||
| 								prop="name"> | ||||
| 								<el-input | ||||
| 									v-model="dataForm.name" | ||||
| 									clearable | ||||
| 									placeholder="请输入模板名称" /> | ||||
| 							</el-form-item> | ||||
| 						</el-col> | ||||
|           </el-row> --> | ||||
|         </el-form> | ||||
|  | ||||
|         <!-- <small-title | ||||
| 					style="margin: 16px 0; padding-left: 8px" | ||||
| 					:no-padding="true"> | ||||
| 					产品属性列表 | ||||
| 				</small-title> | ||||
|  | ||||
| 				<div class="attr-list"> | ||||
| 					<base-table | ||||
| 						:table-props="tableProps" | ||||
| 						:page="listQuery.pageNo" | ||||
| 						:limit="listQuery.pageSize" | ||||
| 						:add-button-show="isdetail ? null : '添加属性'" | ||||
| 						@emitButtonClick="addNew()" | ||||
| 						:table-data="productAttributeList"> | ||||
| 						<method-btn | ||||
| 							v-if="!isdetail" | ||||
| 							slot="handleBtn" | ||||
| 							:width="120" | ||||
| 							label="操作" | ||||
| 							:method-list="tableBtn" | ||||
| 							@clickBtn="handleClick" /> | ||||
| 					</base-table> | ||||
| 					<pagination | ||||
| 						v-show="listQuery.total > 0" | ||||
| 						:total="listQuery.total" | ||||
| 						:page.sync="listQuery.pageNo" | ||||
| 						:limit.sync="listQuery.pageSize" | ||||
| 						:page-sizes="[5, 10, 15]" | ||||
| 						@pagination="getList" /> | ||||
| 				</div> --> | ||||
|       </div> | ||||
|     </div> | ||||
|  | ||||
|     <!-- <div style="position: absolute; bottom: 24px; right: 24px"> | ||||
| 			<el-button style="margin-right: 10px" @click="goback()">返回</el-button> | ||||
| 			<el-button v-if="isdetail" type="primary" @click="goEdit()"> | ||||
| 				编辑 | ||||
| 			</el-button> | ||||
| 			<span v-if="!isdetail"> | ||||
| 				<el-button type="primary" @click="dataFormSubmit()">保存</el-button> | ||||
| 						<el-col :span="24"> | ||||
| 							<el-form-item | ||||
| 								label="标签类型" | ||||
| 								prop="typeId"> | ||||
| 								<el-select | ||||
| 									v-model="dataForm.typeId" | ||||
| 									style="width: 100%" | ||||
| 									placeholder="请选择标签类型" | ||||
| 									clearable> | ||||
| 									<el-option | ||||
| 										v-for="dict in typeList" | ||||
| 										:key="dict.id" | ||||
| 										:label="dict.name" | ||||
| 										:value="dict.id" /> | ||||
| 								</el-select> | ||||
| 							</el-form-item> | ||||
| 						</el-col> | ||||
| 					</el-row> | ||||
| 					<el-row :gutter="20"> | ||||
| 						<el-col :span="24"> | ||||
| 							<el-form-item | ||||
| 								label="打印方式" | ||||
| 								prop="printModel"> | ||||
| 								<el-select | ||||
| 									v-model="dataForm.printModel" | ||||
| 									style="width: 100%" | ||||
| 									placeholder="请选择打印方式" | ||||
| 									clearable> | ||||
| 									<el-option | ||||
| 										v-for="dict in printModelList" | ||||
| 										:key="dict.id" | ||||
| 										:label="dict.name" | ||||
| 										:value="dict.id" /> | ||||
| 								</el-select> | ||||
| 							</el-form-item> | ||||
| 						</el-col> | ||||
| 						<el-col :span="24"> | ||||
| 							<el-form-item | ||||
| 								label="标签备注" | ||||
| 								prop="remark"> | ||||
| 								<el-input | ||||
| 									v-model="dataForm.remark" | ||||
| 									clearable | ||||
| 									placeholder="请输入标签备注" /> | ||||
| 							</el-form-item> | ||||
| 						</el-col> | ||||
| 					</el-row> | ||||
| 					<el-row :gutter="20"> | ||||
| 						<el-col :span="24"> | ||||
| 							<el-form-item | ||||
| 								label="模板设计" | ||||
| 								prop="content"> | ||||
| 								<el-button | ||||
| 					v-if="dataForm.id && !isdetail" | ||||
| 					type="primary" | ||||
| 					@click="addNew()"> | ||||
| 					添加属性 | ||||
| 									icon="el-icon-edit" | ||||
| 									@click="btnClickDesign()"> | ||||
| 									模板设计 | ||||
| 								</el-button> | ||||
| 			</span> | ||||
| 		</div> --> | ||||
| 							</el-form-item> | ||||
| 						</el-col> | ||||
| 					</el-row> | ||||
| 				</el-form> | ||||
| 			</div> | ||||
| 		</div> | ||||
| 		<template slot="footer"> | ||||
|       <el-button style="" @click="goback()">取消</el-button> | ||||
|       <!-- <el-button v-if="isdetail" type="primary" @click="goEdit()"> | ||||
| 				编辑 | ||||
| 			</el-button> --> | ||||
|       <el-button type="primary" @click="dataFormSubmit()">确定</el-button> | ||||
| 			<el-button | ||||
| 				style="" | ||||
| 				@click="goback()"> | ||||
| 				取消 | ||||
| 			</el-button> | ||||
| 			<el-button | ||||
| 				type="primary" | ||||
| 				@click="dataFormSubmit()"> | ||||
| 				确定 | ||||
| 			</el-button> | ||||
| 		</template> | ||||
|     <print-model-design v-if="modelShow" ref="printModelDesign" @saveData="getModelData" /> | ||||
| 		<print-model-design | ||||
| 			v-if="modelShow" | ||||
| 			ref="printModelDesign" | ||||
| 			@saveData="getModelData" /> | ||||
| 	</el-dialog> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
|  | ||||
| import { | ||||
| 	createPackingModel, | ||||
| 	updatePackingModel, | ||||
| 	getPackingModel, | ||||
|   // getWorkOrderList, | ||||
|   // getCode, | ||||
|   // getCustomerList, | ||||
|   getTypeList | ||||
| 	getTypeList, | ||||
| } from '@/api/base/printModel.js'; | ||||
| // import productAttrAdd from './attr-add'; | ||||
| import { parseTime } from '../mixins/code-filter'; | ||||
| import SmallTitle from './SmallTitle'; | ||||
| import printModelDesign from '../custom/index' | ||||
| import printModelDesign from '../custom/index'; | ||||
|  | ||||
| const tableBtn = [ | ||||
| 	{ | ||||
| @@ -188,11 +180,11 @@ export default { | ||||
| 			printModelList: [ | ||||
| 				{ | ||||
| 					id: 1, | ||||
|           name:'自动' | ||||
| 					name: '自动', | ||||
| 				}, | ||||
| 				{ | ||||
| 					id: 2, | ||||
|           name: '手动' | ||||
| 					name: '手动', | ||||
| 				}, | ||||
| 			], | ||||
| 			listQuery: { | ||||
| @@ -254,17 +246,17 @@ export default { | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		getModelData(data) { | ||||
|       console.log(data) | ||||
|       this.content = JSON.stringify(data) | ||||
|       this.dataForm.content = JSON.stringify(data) | ||||
| 			console.log(data); | ||||
| 			this.content = JSON.stringify(data); | ||||
| 			this.dataForm.content = JSON.stringify(data); | ||||
| 		}, | ||||
| 		btnClickDesign() { | ||||
|       console.log(11111) | ||||
|       this.modelShow = true | ||||
| 			console.log(11111); | ||||
| 			this.modelShow = true; | ||||
| 			this.$nextTick(() => { | ||||
|         this.$refs.printModelDesign.init(this.dataForm.content) | ||||
|         console.log(this.dataForm.content) | ||||
|       }) | ||||
| 				this.$refs.printModelDesign.init(this.dataForm.content); | ||||
| 				console.log(this.dataForm.content); | ||||
| 			}); | ||||
| 			// this.$router.push({ | ||||
| 			//   path: '/printModelDesign' | ||||
| 			// }) | ||||
| @@ -274,7 +266,7 @@ export default { | ||||
| 		// 	this.listQuery.total = 0; | ||||
| 		// }, | ||||
| 		init(id) { | ||||
|       this.getDict() | ||||
| 			this.getDict(); | ||||
| 			// this.initData(); | ||||
| 			// this.isdetail = isdetail || false; | ||||
| 			this.dataForm.id = id || null; | ||||
| @@ -306,9 +298,9 @@ export default { | ||||
| 			// }) | ||||
| 			getTypeList().then((response) => { | ||||
| 				console.log(response); | ||||
|         this.typeList = response.data | ||||
| 				this.typeList = response.data; | ||||
| 				// this.listQuery.total = response.data.total; | ||||
|       }) | ||||
| 			}); | ||||
| 			// getWorkOrderList().then((response) => { | ||||
| 			//   // console.log(response); | ||||
| 			//   this.workOrderList = response.data | ||||
| @@ -439,8 +431,6 @@ export default { | ||||
| } | ||||
| </style> --> | ||||
| <style> | ||||
|  | ||||
|  | ||||
| .baseDialog .el-dialog__header { | ||||
| 	font-size: 16px; | ||||
| 	color: rgba(0, 0, 0, 0.85); | ||||
| @@ -453,7 +443,7 @@ export default { | ||||
| 	display: inline-block; | ||||
| 	width: 4px; | ||||
| 	height: 16px; | ||||
|   background-color: #0B58FF; | ||||
| 	background-color: #0b58ff; | ||||
| 	border-radius: 1px; | ||||
| 	margin-right: 8px; | ||||
| 	position: relative; | ||||
| @@ -468,6 +458,4 @@ export default { | ||||
| 	padding: 9px 10px 9px 16px; | ||||
| 	font-size: 14px; | ||||
| } | ||||
|  | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -6,106 +6,72 @@ | ||||
|  * @Description: | ||||
| --> | ||||
| <template> | ||||
|   <el-dialog class="baseDialog" :visible.sync="visible" :show-close="false" :wrapper-closable="false" width="40%" show-close="true"> | ||||
|     <small-title slot="title" :no-padding="true"> | ||||
| 	<el-dialog | ||||
| 		class="baseDialog" | ||||
| 		:visible.sync="visible" | ||||
| 		:show-close="true" | ||||
| 		:wrapper-closable="false" | ||||
| 		width="50%"> | ||||
| 		<small-title | ||||
| 			slot="title" | ||||
| 			:no-padding="true"> | ||||
| 			{{ !dataForm.id ? '新增' : '编辑' }} | ||||
| 		</small-title> | ||||
|  | ||||
| 		<div class="content"> | ||||
| 			<div class="visual-part"> | ||||
|         <el-form ref="dataForm" :model="dataForm" :rules="dataRule" label-width="auto" | ||||
| 				<el-form | ||||
| 					ref="dataForm" | ||||
| 					:model="dataForm" | ||||
| 					:rules="dataRule" | ||||
| 					label-width="auto" | ||||
| 					@keyup.enter.native="dataFormSubmit"> | ||||
| 					<el-row :gutter="20"> | ||||
|             <el-col :span="12"> | ||||
|               <el-form-item label="名称" prop="name"> | ||||
|                 <el-input v-model="dataForm.name" clearable placeholder="名称" /> | ||||
| 						<el-col :span="24"> | ||||
| 							<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="description"> | ||||
|                 <el-input v-model="dataForm.description" clearable placeholder="类型描述" /> | ||||
| 						<el-col :span="24"> | ||||
| 							<el-form-item | ||||
| 								label="类型描述" | ||||
| 								prop="description"> | ||||
| 								<el-input | ||||
| 									v-model="dataForm.description" | ||||
| 									clearable | ||||
| 									placeholder="类型描述" /> | ||||
| 							</el-form-item> | ||||
| 						</el-col> | ||||
| 					</el-row> | ||||
|           <!-- <el-row :gutter="20"> | ||||
|             <el-col :span="24"> | ||||
|               <el-form-item label="完成单位产品用时" prop="processTime"> | ||||
|                 <el-input v-model="dataForm.processTime" placeholder="请输入完成单位产品用时" /> | ||||
|               </el-form-item> | ||||
|             </el-col> | ||||
|           </el-row> --> | ||||
| 				</el-form> | ||||
|  | ||||
|         <!-- <small-title | ||||
| 					style="margin: 16px 0; padding-left: 8px" | ||||
| 					:no-padding="true"> | ||||
| 					产品属性列表 | ||||
| 				</small-title> | ||||
|  | ||||
| 				<div class="attr-list"> | ||||
| 					<base-table | ||||
| 						:table-props="tableProps" | ||||
| 						:page="listQuery.pageNo" | ||||
| 						:limit="listQuery.pageSize" | ||||
| 						:add-button-show="isdetail ? null : '添加属性'" | ||||
| 						@emitButtonClick="addNew()" | ||||
| 						:table-data="productAttributeList"> | ||||
| 						<method-btn | ||||
| 							v-if="!isdetail" | ||||
| 							slot="handleBtn" | ||||
| 							:width="120" | ||||
| 							label="操作" | ||||
| 							:method-list="tableBtn" | ||||
| 							@clickBtn="handleClick" /> | ||||
| 					</base-table> | ||||
| 					<pagination | ||||
| 						v-show="listQuery.total > 0" | ||||
| 						:total="listQuery.total" | ||||
| 						:page.sync="listQuery.pageNo" | ||||
| 						:limit.sync="listQuery.pageSize" | ||||
| 						:page-sizes="[5, 10, 15]" | ||||
| 						@pagination="getList" /> | ||||
| 				</div> --> | ||||
| 			</div> | ||||
| 		</div> | ||||
|  | ||||
|     <!-- <div style="position: absolute; bottom: 24px; right: 24px"> | ||||
| 			<el-button style="margin-right: 10px" @click="goback()">返回</el-button> | ||||
| 			<el-button v-if="isdetail" type="primary" @click="goEdit()"> | ||||
| 				编辑 | ||||
| 			</el-button> | ||||
| 			<span v-if="!isdetail"> | ||||
| 				<el-button type="primary" @click="dataFormSubmit()">保存</el-button> | ||||
| 				<el-button | ||||
| 					v-if="dataForm.id && !isdetail" | ||||
| 					type="primary" | ||||
| 					@click="addNew()"> | ||||
| 					添加属性 | ||||
| 				</el-button> | ||||
| 			</span> | ||||
| 		</div> --> | ||||
| 		<template slot="footer"> | ||||
|       <el-button style="" @click="goback()">取消</el-button> | ||||
|       <!-- <el-button v-if="isdetail" type="primary" @click="goEdit()"> | ||||
| 				编辑 | ||||
| 			</el-button> --> | ||||
|       <el-button type="primary" @click="dataFormSubmit()">确定</el-button> | ||||
| 			<el-button | ||||
| 				style="" | ||||
| 				@click="goback()"> | ||||
| 				取消 | ||||
| 			</el-button> | ||||
| 			<el-button | ||||
| 				type="primary" | ||||
| 				@click="dataFormSubmit()"> | ||||
| 				确定 | ||||
| 			</el-button> | ||||
| 		</template> | ||||
| 	</el-dialog> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
|  | ||||
| import { | ||||
| 	createPackingType, | ||||
| 	updatePackingType, | ||||
| 	getPackingType, | ||||
|   // getWorkOrderList, | ||||
|   // getCode, | ||||
|   // getCustomerList, | ||||
|   // getModelList | ||||
| } from '@/api/base/modelType.js'; | ||||
| // import productAttrAdd from './attr-add'; | ||||
| import { parseTime } from '../mixins/code-filter'; | ||||
| import SmallTitle from './SmallTitle'; | ||||
|  | ||||
| @@ -149,13 +115,8 @@ export default { | ||||
| 			productAttributeList: [], | ||||
| 			dataForm: { | ||||
| 				id: null, | ||||
| 				// name: '', // 产品名称 | ||||
| 				name: '', // 产品编码 | ||||
| 				// area: 0, // 单位平方数(float only) | ||||
| 				description: null, // 产品类型id | ||||
|         // workOrderId: null, // 单位产品用时 (s) | ||||
|         // customerId: '', // 规格 | ||||
|         // content: '', // 单位id | ||||
| 			}, | ||||
| 			listQuery: { | ||||
| 				pageSize: 10, | ||||
| @@ -171,18 +132,10 @@ export default { | ||||
| 					}, | ||||
| 				], | ||||
| 			}, | ||||
| 			// isdetail: false, | ||||
| 		}; | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		// initData() { | ||||
| 		// 	this.productAttributeList.splice(0); | ||||
| 		// 	this.listQuery.total = 0; | ||||
| 		// }, | ||||
| 		init(id) { | ||||
|       // this.getDict() | ||||
| 			// this.initData(); | ||||
| 			// this.isdetail = isdetail || false; | ||||
| 			this.dataForm.id = id || null; | ||||
| 			this.visible = true; | ||||
|  | ||||
| @@ -194,66 +147,10 @@ export default { | ||||
| 					getPackingType(id).then((response) => { | ||||
| 						this.dataForm = response.data; | ||||
| 					}); | ||||
| 					// 获取产品的属性列表 | ||||
| 					// this.getList(); | ||||
| 				} else { | ||||
| 					// getCode().then((res) => { | ||||
|           //   this.dataForm.packagingCode = res.data; | ||||
| 					// }); | ||||
| 				} | ||||
| 			}); | ||||
| 		}, | ||||
|  | ||||
| 		// getDict() { | ||||
|     //   // 获取产品的属性列表 | ||||
|     //   getCustomerList().then((response) => { | ||||
|     //     console.log(response); | ||||
|     //     this.customerList = response.data | ||||
|     //     // this.listQuery.total = response.data.total; | ||||
|     //   }) | ||||
|     //   getModelList().then((response) => { | ||||
|     //     console.log(response); | ||||
|     //     this.modelList = response.data | ||||
|     //     // this.listQuery.total = response.data.total; | ||||
|     //   }) | ||||
|     //   getWorkOrderList().then((response) => { | ||||
|     //     // console.log(response); | ||||
|     //     this.workOrderList = response.data | ||||
| 		// 		// this.listQuery.total = response.data.total; | ||||
| 		// 	}) | ||||
| 		// }, | ||||
| 		// handleClick(raw) { | ||||
| 		// 	if (raw.type === 'delete') { | ||||
| 		// 		this.$confirm( | ||||
| 		// 			`确定对${ | ||||
| 		// 				raw.data.name | ||||
| 		// 					? '[名称=' + raw.data.name + ']' | ||||
| 		// 					: '[序号=' + raw.data._pageIndex + ']' | ||||
| 		// 			}进行删除操作?`, | ||||
| 		// 			'提示', | ||||
| 		// 			{ | ||||
| 		// 				confirmButtonText: '确定', | ||||
| 		// 				cancelButtonText: '取消', | ||||
| 		// 				type: 'warning', | ||||
| 		// 			} | ||||
| 		// 		) | ||||
| 		// 			.then(() => { | ||||
| 		// 				deleteProductAttr(raw.data.id).then(({ data }) => { | ||||
| 		// 					this.$message({ | ||||
| 		// 						message: '操作成功', | ||||
| 		// 						type: 'success', | ||||
| 		// 						duration: 1500, | ||||
| 		// 						onClose: () => { | ||||
| 		// 							this.getList(); | ||||
| 		// 						}, | ||||
| 		// 					}); | ||||
| 		// 				}); | ||||
| 		// 			}) | ||||
| 		// 			.catch(() => {}); | ||||
| 		// 	} else { | ||||
| 		// 		this.addNew(raw.data.id); | ||||
| 		// 	} | ||||
| 		// }, | ||||
| 		// 表单提交 | ||||
| 		dataFormSubmit() { | ||||
| 			this.$refs['dataForm'].validate((valid) => { | ||||
| @@ -294,60 +191,7 @@ export default { | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
|  | ||||
| <!-- <style scoped> | ||||
| .drawer >>> .el-drawer { | ||||
| 	border-radius: 8px 0 0 8px; | ||||
| 	display: flex; | ||||
| 	flex-direction: column; | ||||
| } | ||||
|  | ||||
| .drawer >>> .el-form-item__label { | ||||
| 	padding: 0; | ||||
| } | ||||
|  | ||||
| .drawer >>> .el-drawer__header { | ||||
| 	margin: 0; | ||||
| 	padding: 32px 32px 24px; | ||||
| 	border-bottom: 1px solid #dcdfe6; | ||||
| } | ||||
| .drawer >>> .el-drawer__body { | ||||
| 	flex: 1; | ||||
| 	height: 1px; | ||||
| 	display: flex; | ||||
| 	flex-direction: column; | ||||
| } | ||||
|  | ||||
| .drawer >>> .content { | ||||
| 	padding: 30px 24px; | ||||
| 	flex: 1; | ||||
| 	display: flex; | ||||
| 	flex-direction: column; | ||||
| 	/* height: 100%; */ | ||||
| } | ||||
|  | ||||
| .drawer >>> .visual-part { | ||||
| 	flex: 1 auto; | ||||
| 	max-height: 76vh; | ||||
| 	overflow: hidden; | ||||
| 	overflow-y: scroll; | ||||
| 	padding-right: 10px; /* 调整滚动条样式 */ | ||||
| } | ||||
|  | ||||
| .drawer >>> .el-form, | ||||
| .drawer >>> .attr-list { | ||||
| 	padding: 0 16px; | ||||
| } | ||||
|  | ||||
| .drawer-body__footer { | ||||
| 	display: flex; | ||||
| 	justify-content: flex-end; | ||||
| 	padding: 18px; | ||||
| } | ||||
| </style> --> | ||||
| <style> | ||||
|  | ||||
|  | ||||
| .baseDialog .el-dialog__header { | ||||
| 	font-size: 16px; | ||||
| 	color: rgba(0, 0, 0, 0.85); | ||||
| @@ -360,7 +204,7 @@ export default { | ||||
| 	display: inline-block; | ||||
| 	width: 4px; | ||||
| 	height: 16px; | ||||
|   background-color: #0B58FF; | ||||
| 	background-color: #0b58ff; | ||||
| 	border-radius: 1px; | ||||
| 	margin-right: 8px; | ||||
| 	position: relative; | ||||
| @@ -375,7 +219,4 @@ export default { | ||||
| 	padding: 9px 10px 9px 16px; | ||||
| 	font-size: 14px; | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -2,17 +2,28 @@ | ||||
| 	<div class="choicepart-container"> | ||||
| 		<navbar /> | ||||
| 		<div class="choicepart-wrapper"> | ||||
|       <div class="choicepart-box" id="choicepartBox" :style="'transform:scale('+scale+');width:1710px;height:538px;'" v-show="showItem"> | ||||
| 			<div | ||||
| 				class="choicepart-box" | ||||
| 				id="choicepartBox" | ||||
| 				:style="'transform:scale(' + scale + ')'" | ||||
| 				style="width: 1710px; height: 538px" | ||||
| 				v-show="showItem"> | ||||
| 				<div class="choicepart-line1"> | ||||
| 					<div | ||||
| 						v-for="(item, index) in menuArr1" | ||||
| 						:key="index" | ||||
| 						class="choicepart-item" | ||||
| 						@click="handelClick(item, item.choicepart)" | ||||
|           :style="{opacity: item.visible?1:0.4, pointerEvents:item.visible?'auto':'none'}" | ||||
|         > | ||||
| 						:style="{ | ||||
| 							opacity: item.visible ? 1 : 0.4, | ||||
| 							pointerEvents: item.visible ? 'auto' : 'none', | ||||
| 						}"> | ||||
| 						<div> | ||||
|             <img :src="require(`../../assets/images/choicepart/${item.name}.png`)" alt=""> | ||||
| 							<img | ||||
| 								:src=" | ||||
| 									require(`../../assets/images/choicepart/${item.name}.png`) | ||||
| 								" | ||||
| 								alt="" /> | ||||
| 						</div> | ||||
| 						<div class="choicepart-item-title">{{ item.meta.title }}</div> | ||||
| 					</div> | ||||
| @@ -23,10 +34,16 @@ | ||||
| 						:key="index" | ||||
| 						class="choicepart-item" | ||||
| 						@click="handelClick(item, item.choicepart)" | ||||
|           :style="{opacity: item.visible?1:0.4, pointerEvents:item.visible?'auto':'none'}" | ||||
|         > | ||||
| 						:style="{ | ||||
| 							opacity: item.visible ? 1 : 0.4, | ||||
| 							pointerEvents: item.visible ? 'auto' : 'none', | ||||
| 						}"> | ||||
| 						<div> | ||||
|             <img :src="require(`../../assets/images/choicepart/${item.name}.png`)" alt=""> | ||||
| 							<img | ||||
| 								:src=" | ||||
| 									require(`../../assets/images/choicepart/${item.name}.png`) | ||||
| 								" | ||||
| 								alt="" /> | ||||
| 						</div> | ||||
| 						<div class="choicepart-item-title">{{ item.meta.title }}</div> | ||||
| 					</div> | ||||
| @@ -37,14 +54,13 @@ | ||||
| 	</div> | ||||
| </template> | ||||
| <script> | ||||
| import Navbar from './components/Navbar' | ||||
| import { debounce } from '@/utils/debounce' | ||||
| import Navbar from './components/Navbar'; | ||||
| import { debounce } from '@/utils/debounce'; | ||||
| export default { | ||||
| 	components: { Navbar }, | ||||
| 	name: 'choicePart', | ||||
| 	data() { | ||||
| 		return { | ||||
|       boxReset: '', | ||||
| 			scale: 1, | ||||
| 			menuArr1: [ | ||||
| 				{ | ||||
| @@ -52,65 +68,65 @@ export default { | ||||
| 					title: '基础核心', | ||||
| 					visible: false, | ||||
| 					meta: { | ||||
|             title: '' | ||||
|           } | ||||
| 						title: '', | ||||
| 					}, | ||||
| 				}, | ||||
| 				{ | ||||
| 					name: 'Order', | ||||
| 					title: '订单管理', | ||||
| 					visible: false, | ||||
| 					meta: { | ||||
|             title: '' | ||||
|           } | ||||
| 						title: '', | ||||
| 					}, | ||||
| 				}, | ||||
| 				{ | ||||
| 					name: 'Equipment', | ||||
| 					title: '设备管理', | ||||
| 					visible: false, | ||||
| 					meta: { | ||||
|             title: '' | ||||
|           } | ||||
| 						title: '', | ||||
| 					}, | ||||
| 				}, | ||||
| 				{ | ||||
| 					name: 'Group', | ||||
| 					title: '班组管理', | ||||
| 					visible: false, | ||||
| 					meta: { | ||||
|             title: '' | ||||
|           } | ||||
| 						title: '', | ||||
| 					}, | ||||
| 				}, | ||||
| 				{ | ||||
| 					name: 'Quality', | ||||
| 					title: '质量管理', | ||||
| 					visible: false, | ||||
| 					meta: { | ||||
|             title: '' | ||||
|           } | ||||
| 						title: '', | ||||
| 					}, | ||||
| 				}, | ||||
| 				{ | ||||
| 					name: 'Warehouse', | ||||
| 					title: '仓库管理', | ||||
| 					visible: false, | ||||
| 					meta: { | ||||
|             title: '' | ||||
|           } | ||||
| 						title: '', | ||||
| 					}, | ||||
| 				}, | ||||
| 				{ | ||||
| 					name: 'Energy', | ||||
| 					title: '能源管理', | ||||
| 					visible: false, | ||||
| 					meta: { | ||||
|             title: '' | ||||
|           } | ||||
| 						title: '', | ||||
| 					}, | ||||
| 				}, | ||||
| 				{ | ||||
| 					name: 'Packaging', | ||||
| 					title: '包装管理', | ||||
| 					visible: false, | ||||
| 					meta: { | ||||
|             title: '' | ||||
|           } | ||||
|         } | ||||
| 						title: '', | ||||
| 					}, | ||||
| 				}, | ||||
| 			], | ||||
| 			menuArr2: [ | ||||
| 				{ | ||||
| @@ -118,16 +134,16 @@ export default { | ||||
| 					title: '物料管理', | ||||
| 					visible: false, | ||||
| 					meta: { | ||||
|             title: '' | ||||
|           } | ||||
| 						title: '', | ||||
| 					}, | ||||
| 				}, | ||||
| 				{ | ||||
| 					name: 'Extend', | ||||
| 					title: '工艺管理', | ||||
| 					visible: false, | ||||
| 					meta: { | ||||
|             title: '' | ||||
|           } | ||||
| 						title: '', | ||||
| 					}, | ||||
| 				}, | ||||
| 				// { | ||||
| 				//   name: 'Delivery', | ||||
| @@ -142,91 +158,94 @@ export default { | ||||
| 					title: '报表管理', | ||||
| 					visible: false, | ||||
| 					meta: { | ||||
|             title: '' | ||||
|           } | ||||
| 						title: '', | ||||
| 					}, | ||||
| 				}, | ||||
| 				{ | ||||
| 					name: 'Cost', | ||||
| 					title: '成本管理', | ||||
| 					visible: false, | ||||
| 					meta: { | ||||
|             title: '' | ||||
|           } | ||||
| 						title: '', | ||||
| 					}, | ||||
| 				}, | ||||
| 				{ | ||||
| 					name: 'SafetyEnvironmental', | ||||
| 					title: '安环管理', | ||||
| 					visible: false, | ||||
| 					meta: { | ||||
|             title: '' | ||||
|           } | ||||
| 						title: '', | ||||
| 					}, | ||||
| 				}, | ||||
| 				{ | ||||
| 					name: 'Databoard', | ||||
| 					title: '数据驾驶舱', | ||||
| 					visible: false, | ||||
| 					meta: { | ||||
|             title: '' | ||||
|           } | ||||
| 						title: '', | ||||
| 					}, | ||||
| 				}, | ||||
| 				{ | ||||
| 					name: 'System', | ||||
| 					title: '系统管理', | ||||
| 					visible: false, | ||||
| 					meta: { | ||||
|             title: '' | ||||
|           } | ||||
|         } | ||||
| 						title: '', | ||||
| 					}, | ||||
| 				}, | ||||
| 			], | ||||
|       showItem: false | ||||
|     } | ||||
| 			showItem: false, | ||||
| 		}; | ||||
| 	}, | ||||
| 	// computed:{ | ||||
| 	//   ...mapGetters(['sidebarRouters']) | ||||
| 	// }, | ||||
| 	mounted() { | ||||
|     this.getMsg() | ||||
|     this.boxReset = debounce(() => { | ||||
|       this.resetSize() | ||||
|     }, 300) | ||||
|     this.boxReset() | ||||
|     window.addEventListener('resize', () => { | ||||
|       this.boxReset() | ||||
|     }) | ||||
| 		this.getMsg(); | ||||
| 		this.boxReset(); | ||||
| 		window.addEventListener('resize', this.boxReset); | ||||
| 	}, | ||||
| 	destroyed() { | ||||
| 		window.removeEventListener('resize', this.boxReset); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		boxReset() { | ||||
| 			debounce(() => { | ||||
| 				this.resetSize(); | ||||
| 			}, 300)(); | ||||
| 		}, | ||||
| 		getMsg() { | ||||
|       let menuList = this.$store.state.permission.sidebarRouters | ||||
|       console.log(menuList) | ||||
| 			let menuList = this.$store.state.permission.sidebarRouters; | ||||
| 			console.log(menuList); | ||||
| 			if (menuList.length > 0) { | ||||
| 				for (let i = 0; i < menuList.length; i++) { | ||||
| 					for (let k = 0; k < 8; k++) { | ||||
| 						if (menuList[i].name === this.menuArr1[k].name) { | ||||
|               this.menuArr1[k].visible = true | ||||
|               this.menuArr1[k].id = menuList[i].id | ||||
|               this.menuArr1[k].choicepart = i | ||||
|               this.menuArr1[k].children = menuList[i].children | ||||
|               this.menuArr1[k].meta = menuList[i].meta | ||||
| 							this.menuArr1[k].visible = true; | ||||
| 							this.menuArr1[k].id = menuList[i].id; | ||||
| 							this.menuArr1[k].choicepart = i; | ||||
| 							this.menuArr1[k].children = menuList[i].children; | ||||
| 							this.menuArr1[k].meta = menuList[i].meta; | ||||
| 						} | ||||
| 					} | ||||
| 					for (let j = 0; j < 7; j++) { | ||||
| 						if (menuList[i].name === this.menuArr2[j].name) { | ||||
|               this.menuArr2[j].visible = true | ||||
|               this.menuArr2[j].id = menuList[i].id | ||||
|               this.menuArr2[j].choicepart = i | ||||
|               this.menuArr2[j].children = menuList[i].children | ||||
|               this.menuArr2[j].meta = menuList[i].meta | ||||
| 							this.menuArr2[j].visible = true; | ||||
| 							this.menuArr2[j].id = menuList[i].id; | ||||
| 							this.menuArr2[j].choicepart = i; | ||||
| 							this.menuArr2[j].children = menuList[i].children; | ||||
| 							this.menuArr2[j].meta = menuList[i].meta; | ||||
| 						} | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
|       console.log(this.menuArr1) | ||||
|       console.log(this.menuArr2) | ||||
| 			console.log(this.menuArr1); | ||||
| 			console.log(this.menuArr2); | ||||
| 		}, | ||||
| 		handelClick(item, index) { | ||||
| 			// this.$router.push({name: 'SystemUser'}) | ||||
|       this.$store.dispatch('app/setChoicepart', index) | ||||
|       this.toRouter(item) | ||||
| 			this.$store.dispatch('app/setChoicepart', index); | ||||
| 			this.toRouter(item); | ||||
| 			// if (item.meta.unuse) { | ||||
| 			//   this.$message.warning(this.$t('暂无数据')) | ||||
| 			// } else { | ||||
| @@ -234,36 +253,36 @@ export default { | ||||
| 			// } | ||||
| 		}, | ||||
| 		toRouter(item) { | ||||
|       console.log(item) | ||||
| 			console.log(item); | ||||
| 			if (item.children) { | ||||
|         this.toRouter(item.children[0]) | ||||
| 				this.toRouter(item.children[0]); | ||||
| 			} else { | ||||
|         this.$router.push({ name: item.name }) | ||||
| 				this.$router.push({ name: item.name }); | ||||
| 			} | ||||
| 		}, | ||||
| 		resetSize() { | ||||
|       let _this = this | ||||
|       _this.showItem = false | ||||
|       _this.loading = true | ||||
|       let choicepartBox = document.querySelector('#choicepartBox') | ||||
|       let rw = parseFloat(window.innerWidth) | ||||
|       let rh = parseFloat(window.innerHeight) | ||||
|       let bw = parseFloat(choicepartBox.style.width) | ||||
|       let bh = parseFloat(choicepartBox.style.height) | ||||
|       let wx = 0.82/(bw / rw) | ||||
|       let hx = 0.56/(bh / rh) | ||||
|       _this.scale = wx > hx ? hx : wx | ||||
|       setTimeout(_this.showItemFun, 700) | ||||
| 			let _this = this; | ||||
| 			_this.showItem = false; | ||||
| 			_this.loading = true; | ||||
| 			let choicepartBox = document.querySelector('#choicepartBox'); | ||||
| 			let rw = parseFloat(window.innerWidth); | ||||
| 			let rh = parseFloat(window.innerHeight); | ||||
| 			let bw = parseFloat(choicepartBox.style.width); | ||||
| 			let bh = parseFloat(choicepartBox.style.height); | ||||
| 			let wx = 0.82 / (bw / rw); | ||||
| 			let hx = 0.56 / (bh / rh); | ||||
| 			_this.scale = wx > hx ? hx : wx; | ||||
| 			setTimeout(_this.showItemFun, 700); | ||||
| 		}, | ||||
| 		showItemFun() { | ||||
|       this.loading = false | ||||
|       this.showItem = true | ||||
|     } | ||||
| 			this.loading = false; | ||||
| 			this.showItem = true; | ||||
| 		}, | ||||
| 	}, | ||||
| 	beforeDestroy() { | ||||
|     this.showItem = false | ||||
|   } | ||||
| } | ||||
| 		this.showItem = false; | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
| <style lang='scss' scoped> | ||||
| .choicepart-container { | ||||
| @@ -296,7 +315,8 @@ export default { | ||||
| 		.choicepart-item { | ||||
| 			width: 184px; | ||||
| 			height: 224px; | ||||
|       background: url('../../assets/images/choicepart/choice-item-back.png') no-repeat; | ||||
| 			background: url('../../assets/images/choicepart/choice-item-back.png') | ||||
| 				no-repeat; | ||||
| 			background-size: 100% 100%; | ||||
| 			border-radius: 5px; | ||||
| 			overflow: hidden; | ||||
| @@ -334,7 +354,7 @@ export default { | ||||
| 	.choicepart-footer { | ||||
| 		position: absolute; | ||||
| 		width: 100%; | ||||
|     color: #C7C7C7; | ||||
| 		color: #c7c7c7; | ||||
| 		user-select: none; | ||||
| 		font-size: 12px; | ||||
| 		letter-spacing: 1px; | ||||
|   | ||||
| @@ -125,7 +125,7 @@ export default { | ||||
| 				// 	name: 'reset', | ||||
| 				// }, | ||||
| 				{ | ||||
| 					type: 'separate', | ||||
| 					type: this.$auth.hasPermi('base:core-factory:create') ? 'separate' : '', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('base:core-factory:create') ? 'button' : '', | ||||
|   | ||||
| @@ -32,6 +32,7 @@ import { | ||||
| import { getEnergyTypeListAll } from '@/api/base/energyType'; | ||||
| import { publicFormatter } from '@/utils/dict'; | ||||
| import moment from 'moment'; | ||||
| import tableHeightMixin from '@/mixins/lb/tableHeightMixin'; | ||||
|  | ||||
| const tableProps = [ | ||||
| 	{ | ||||
| @@ -61,7 +62,7 @@ const tableProps = [ | ||||
| ]; | ||||
|  | ||||
| export default { | ||||
| 	mixins: [basicPage], | ||||
| 	mixins: [basicPage,tableHeightMixin], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			urlOptions: { | ||||
| @@ -70,7 +71,6 @@ export default { | ||||
| 			}, | ||||
| 			tableData: [], | ||||
| 			tableProps, | ||||
|       tableH: this.tableHeight(260), | ||||
| 			drawerVisible: false, | ||||
| 			formConfig: [ | ||||
| 				{ | ||||
| @@ -92,13 +92,15 @@ export default { | ||||
| 					param: 'searchTime', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					type: this.$auth.hasPermi('extend:cost-energy-search:query') | ||||
| 						? 'button' | ||||
| 						: '', | ||||
| 					btnName: '查询', | ||||
| 					name: 'search', | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('cost:energyCost:export') | ||||
| 					type: this.$auth.hasPermi('extend:cost-energy-search:export') | ||||
| 						? 'button' | ||||
| 						: '', | ||||
| 					btnName: '导出', | ||||
| @@ -111,9 +113,6 @@ export default { | ||||
| 	}, | ||||
| 	components: {}, | ||||
| 	created() { | ||||
|     window.addEventListener('resize', () => { | ||||
|       this.tableH = this.tableHeight(260) | ||||
|     }) | ||||
| 		getEnergyTypeListAll().then((response) => { | ||||
| 			this.formConfig[0].selectOptions = response.data; | ||||
| 		}); | ||||
|   | ||||
| @@ -32,6 +32,7 @@ import { | ||||
| import { getEnergyTypeListAll } from '@/api/base/energyType'; | ||||
| import { publicFormatter } from '@/utils/dict'; | ||||
| import moment from 'moment'; | ||||
| import tableHeightMixin from '@/mixins/lb/tableHeightMixin'; | ||||
|  | ||||
| const tableProps = [ | ||||
| 	{ | ||||
| @@ -71,7 +72,7 @@ const tableProps = [ | ||||
| ]; | ||||
|  | ||||
| export default { | ||||
| 	mixins: [basicPage], | ||||
| 	mixins: [basicPage,tableHeightMixin], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			urlOptions: { | ||||
| @@ -80,7 +81,6 @@ export default { | ||||
| 			}, | ||||
| 			tableData: [], | ||||
| 			tableProps, | ||||
|       tableH: this.tableHeight(260), | ||||
| 			drawerVisible: false, | ||||
| 			formConfig: [ | ||||
| 				{ | ||||
| @@ -116,13 +116,15 @@ export default { | ||||
| 					defaultSelect: [], | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					type: this.$auth.hasPermi('extend:cost-enery-auto-report:query') | ||||
| 						? 'button' | ||||
| 						: '', | ||||
| 					btnName: '查询', | ||||
| 					name: 'search', | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('cost:energyCostHis:export') | ||||
| 					type: this.$auth.hasPermi('extend:cost-enery-auto-report:export') | ||||
| 						? 'button' | ||||
| 						: '', | ||||
| 					btnName: '导出', | ||||
| @@ -135,9 +137,6 @@ export default { | ||||
| 	}, | ||||
| 	components: {}, | ||||
| 	created() { | ||||
|     window.addEventListener('resize', () => { | ||||
|       this.tableH = this.tableHeight(260) | ||||
|     }) | ||||
| 		const end = new Date(); | ||||
| 		const start = new Date(); | ||||
| 		start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); | ||||
|   | ||||
| @@ -53,6 +53,7 @@ import { | ||||
| } from '@/api/cost/costMaterialSet'; | ||||
| import { getHotMaterialList } from '@/api/base/coreHotMaterial'; | ||||
| import { publicFormatter } from '@/utils/dict'; | ||||
| import tableHeightMixin from '@/mixins/lb/tableHeightMixin'; | ||||
|  | ||||
| const tableProps = [ | ||||
| 	{ | ||||
| @@ -91,7 +92,7 @@ const tableProps = [ | ||||
| ]; | ||||
|  | ||||
| export default { | ||||
| 	mixins: [basicPage], | ||||
| 	mixins: [basicPage,tableHeightMixin], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			urlOptions: { | ||||
| @@ -99,15 +100,14 @@ export default { | ||||
| 				deleteURL: deleteCostMaterialSet, | ||||
| 			}, | ||||
| 			tableProps, | ||||
|       tableH: this.tableHeight(260), | ||||
| 			tableBtn: [ | ||||
| 				this.$auth.hasPermi(`cost:rawMaterialConfig:update`) | ||||
| 				this.$auth.hasPermi(`extend:cost-material-set:update`) | ||||
| 					? { | ||||
| 							type: 'edit', | ||||
| 							btnName: '编辑', | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 				this.$auth.hasPermi(`cost:rawMaterialConfig:delete`) | ||||
| 				this.$auth.hasPermi(`extend:cost-material-set:delete`) | ||||
| 					? { | ||||
| 							type: 'delete', | ||||
| 							btnName: '删除', | ||||
| @@ -124,16 +124,22 @@ export default { | ||||
| 					filterable: true, | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					type: this.$auth.hasPermi('extend:cost-material-set:query') | ||||
| 						? 'button' | ||||
| 						: '', | ||||
| 					btnName: '查询', | ||||
| 					name: 'search', | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'separate', | ||||
| 					type: | ||||
| 						this.$auth.hasPermi('extend:cost-material-set:create') && | ||||
| 						this.$auth.hasPermi('extend:cost-material-set:query') | ||||
| 							? 'separate' | ||||
| 							: '', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('cost:rawMaterialConfig:create') | ||||
| 					type: this.$auth.hasPermi('extend:cost-material-set:create') | ||||
| 						? 'button' | ||||
| 						: '', | ||||
| 					btnName: '新增', | ||||
| @@ -148,9 +154,6 @@ export default { | ||||
| 		AddOrUpdate, | ||||
| 	}, | ||||
| 	created() { | ||||
|     window.addEventListener('resize', () => { | ||||
|       this.tableH = this.tableHeight(260) | ||||
|     }) | ||||
| 		getHotMaterialList().then((response) => { | ||||
| 			this.formConfig[0].selectOptions = response.data; | ||||
| 		}); | ||||
|   | ||||
| @@ -32,6 +32,7 @@ import { | ||||
| import { getHotMaterialList } from '@/api/base/coreHotMaterial'; | ||||
| import { publicFormatter } from '@/utils/dict'; | ||||
| import moment from 'moment'; | ||||
| import tableHeightMixin from '@/mixins/lb/tableHeightMixin'; | ||||
|  | ||||
| const tableProps = [ | ||||
| 	{ | ||||
| @@ -66,7 +67,7 @@ const tableProps = [ | ||||
| ]; | ||||
|  | ||||
| export default { | ||||
| 	mixins: [basicPage], | ||||
| 	mixins: [basicPage,tableHeightMixin], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			urlOptions: { | ||||
| @@ -75,7 +76,6 @@ export default { | ||||
| 			}, | ||||
| 			tableData: [], | ||||
| 			tableProps, | ||||
|       tableH: this.tableHeight(260), | ||||
| 			drawerVisible: false, | ||||
| 			formConfig: [ | ||||
| 				{ | ||||
| @@ -97,13 +97,15 @@ export default { | ||||
| 					param: 'searchTime', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					type: this.$auth.hasPermi('extend:cost-material-search:query') | ||||
| 						? 'button' | ||||
| 						: '', | ||||
| 					btnName: '查询', | ||||
| 					name: 'search', | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('cost:rawMaterialCost:export') | ||||
| 					type: this.$auth.hasPermi('extend:cost-material-search:export') | ||||
| 						? 'button' | ||||
| 						: '', | ||||
| 					btnName: '导出', | ||||
| @@ -116,9 +118,6 @@ export default { | ||||
| 	}, | ||||
| 	components: {}, | ||||
| 	created() { | ||||
|     window.addEventListener('resize', () => { | ||||
|       this.tableH = this.tableHeight(260) | ||||
|     }) | ||||
| 		getHotMaterialList().then((response) => { | ||||
| 			this.formConfig[0].selectOptions = response.data; | ||||
| 		}); | ||||
|   | ||||
| @@ -32,6 +32,7 @@ import { | ||||
| import { getHotMaterialList } from '@/api/base/coreHotMaterial'; | ||||
| import { publicFormatter } from '@/utils/dict'; | ||||
| import moment from 'moment'; | ||||
| import tableHeightMixin from '@/mixins/lb/tableHeightMixin'; | ||||
|  | ||||
| const tableProps = [ | ||||
| 	{ | ||||
| @@ -70,7 +71,7 @@ const tableProps = [ | ||||
| ]; | ||||
|  | ||||
| export default { | ||||
| 	mixins: [basicPage], | ||||
| 	mixins: [basicPage,tableHeightMixin], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			urlOptions: { | ||||
| @@ -79,7 +80,6 @@ export default { | ||||
| 			}, | ||||
| 			tableData: [], | ||||
| 			tableProps, | ||||
|       tableH: this.tableHeight(260), | ||||
| 			drawerVisible: false, | ||||
| 			formConfig: [ | ||||
| 				{ | ||||
| @@ -115,13 +115,15 @@ export default { | ||||
| 					defaultSelect: [], | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					type: this.$auth.hasPermi('extend:cost-material-auto-report:query') | ||||
| 						? 'button' | ||||
| 						: '', | ||||
| 					btnName: '查询', | ||||
| 					name: 'search', | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('cost:rawMaterialCostHis:export') | ||||
| 					type: this.$auth.hasPermi('extend:cost-material-auto-report:export') | ||||
| 						? 'button' | ||||
| 						: '', | ||||
| 					btnName: '导出', | ||||
| @@ -134,9 +136,6 @@ export default { | ||||
| 	}, | ||||
| 	components: {}, | ||||
| 	created() { | ||||
|     window.addEventListener('resize', () => { | ||||
|       this.tableH = this.tableHeight(260) | ||||
|     }) | ||||
| 		const end = new Date(); | ||||
| 		const start = new Date(); | ||||
| 		start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); | ||||
|   | ||||
| @@ -1,14 +1,18 @@ | ||||
| <template> | ||||
| 	<div> | ||||
| 		<NotMsg v-show="notMsg" /> | ||||
| 		<div id='gasChart' class="gas-chart" style="width:600px;height:200px;" v-show='!notMsg'></div> | ||||
| 		<div | ||||
| 			id="gasChart" | ||||
| 			class="gas-chart" | ||||
| 			style="width: 600px; height: 200px" | ||||
| 			v-show="!notMsg"></div> | ||||
| 	</div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import * as echarts from 'echarts'; | ||||
| import resize from './../mixins/resize' | ||||
| import NotMsg from './../components/NotMsg' | ||||
| import resize from './../mixins/resize'; | ||||
| import NotMsg from './../components/NotMsg'; | ||||
|  | ||||
| export default { | ||||
| 	name: 'GasChart', | ||||
| @@ -16,7 +20,7 @@ export default { | ||||
| 	components: { NotMsg }, | ||||
| 	props: { | ||||
| 		chartType: '', // 能源类型 | ||||
| 		chartTime: '' | ||||
| 		chartTime: '', | ||||
| 	}, | ||||
| 	data() { | ||||
| 		const colors = [ | ||||
| @@ -31,150 +35,161 @@ export default { | ||||
| 		]; | ||||
| 		return { | ||||
| 			chart: null, | ||||
| 			notMsg:false | ||||
| 			notMsg: false, | ||||
| 		}; | ||||
| 	}, | ||||
| 	computed: { | ||||
| 		gasChartMsg() { | ||||
| 			return this.$store.state.websocket.sumGasInfo | ||||
| 			return this.$store.state.websocket.sumGasInfo; | ||||
| 		}, | ||||
| 		energyWeekTrend() { | ||||
| 			return this.$store.state.websocket.energyWeekTrend | ||||
| 			return this.$store.state.websocket.energyWeekTrend; | ||||
| 		}, | ||||
| 		energyMonthTrend() { | ||||
| 			return this.$store.state.websocket.energyMonthTrend | ||||
| 			return this.$store.state.websocket.energyMonthTrend; | ||||
| 		}, | ||||
| 		energyYearTrend() { | ||||
| 			return this.$store.state.websocket.energyYearTrend | ||||
| 		} | ||||
| 			return this.$store.state.websocket.energyYearTrend; | ||||
| 		}, | ||||
| 	}, | ||||
| 	watch: { | ||||
| 		energyWeekTrend: {// 监听周电能,更新图 | ||||
| 		energyWeekTrend: { | ||||
| 			// 监听周电能,更新图 | ||||
| 			handler(newVal, oldVal) { | ||||
| 				if (this.chartTime === '周' && this.chartType === '电耗能') { | ||||
| 					this.updateChart() | ||||
| 					this.$emit('emitFun') | ||||
| 				} | ||||
| 					this.updateChart(); | ||||
| 					this.$emit('emitFun'); | ||||
| 				} | ||||
| 			}, | ||||
| 		energyMonthTrend: {// 监听月电能,更新图 | ||||
| 		}, | ||||
| 		energyMonthTrend: { | ||||
| 			// 监听月电能,更新图 | ||||
| 			handler(newVal, oldVal) { | ||||
| 				if (this.chartTime === '月' && this.chartType === '电耗能') { | ||||
| 					this.updateChart() | ||||
| 					this.$emit('emitFun') | ||||
| 				} | ||||
| 					this.updateChart(); | ||||
| 					this.$emit('emitFun'); | ||||
| 				} | ||||
| 			}, | ||||
| 		energyYearTrend: {// 监听年电能,更新图 | ||||
| 		}, | ||||
| 		energyYearTrend: { | ||||
| 			// 监听年电能,更新图 | ||||
| 			handler(newVal, oldVal) { | ||||
| 				if (this.chartTime === '年' && this.chartType === '电耗能') { | ||||
| 					this.updateChart() | ||||
| 					this.$emit('emitFun') | ||||
| 				} | ||||
| 					this.updateChart(); | ||||
| 					this.$emit('emitFun'); | ||||
| 				} | ||||
| 			}, | ||||
| 		gasChartMsg: {// 监听天然气,更新图 | ||||
| 		}, | ||||
| 		gasChartMsg: { | ||||
| 			// 监听天然气,更新图 | ||||
| 			handler(newVal, oldVal) { | ||||
| 				if (this.chartType === '天然气I' || this.chartType === '天然气II') { | ||||
| 					this.updateChart() | ||||
| 					this.$emit('emitFun') | ||||
| 				} | ||||
| 					this.updateChart(); | ||||
| 					this.$emit('emitFun'); | ||||
| 				} | ||||
| 			}, | ||||
| 		chartTime: {// 监听时间变化,更新图 | ||||
| 			handler(newVal, oldVal) { | ||||
| 				this.updateChart() | ||||
| 			} | ||||
| 		}, | ||||
| 		chartType: {// 监听能源类型变化,更新图 | ||||
| 		chartTime: { | ||||
| 			// 监听时间变化,更新图 | ||||
| 			handler(newVal, oldVal) { | ||||
| 				this.updateChart() | ||||
| 			} | ||||
| 		} | ||||
| 				this.updateChart(); | ||||
| 			}, | ||||
| 		}, | ||||
| 		chartType: { | ||||
| 			// 监听能源类型变化,更新图 | ||||
| 			handler(newVal, oldVal) { | ||||
| 				this.updateChart(); | ||||
| 			}, | ||||
| 		}, | ||||
| 	}, | ||||
| 	mounted() { | ||||
| 		this.$el.addEventListener('resize', () => { | ||||
| 			console.log('resziing.....'); | ||||
| 		}); | ||||
| 		this.updateChart() | ||||
| 		this.updateChart(); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		updateChart() { | ||||
| 			let gasName  = '' | ||||
| 			let gasName = ''; | ||||
| 			const colors = ['#FFCB59']; | ||||
| 			let temp = [] | ||||
| 			let seriesData = [] | ||||
| 			let xData = [] | ||||
| 			let yData = [] | ||||
| 			let temp = []; | ||||
| 			let seriesData = []; | ||||
| 			let xData = []; | ||||
| 			let yData = []; | ||||
| 			switch (this.chartType) { | ||||
| 				case '电耗能': { | ||||
| 					gasName = '电耗能' | ||||
| 					gasName = '电耗能'; | ||||
| 					if (this.chartTime === '周') { | ||||
| 						temp = this.energyWeekTrend || [] | ||||
| 						temp = this.energyWeekTrend || []; | ||||
| 					} else if (this.chartTime === '月') { | ||||
| 						temp = this.energyMonthTrend || [] | ||||
| 						temp = this.energyMonthTrend || []; | ||||
| 					} else { | ||||
| 						temp = this.energyYearTrend || [] | ||||
| 						temp = this.energyYearTrend || []; | ||||
| 					} | ||||
| 					temp && temp.map(i => { | ||||
| 						xData.push(i.time) | ||||
| 						yData.push(i.qty) | ||||
| 					}) | ||||
| 					temp && | ||||
| 						temp.map((i) => { | ||||
| 							xData.push(i.time); | ||||
| 							yData.push(i.qty); | ||||
| 						}); | ||||
| 					break; | ||||
| 				} | ||||
| 				case '天然气I': { | ||||
| 					if (this.chartTime === '周') { | ||||
| 						yData = this.gasChartMsg.hisSumGas1For7Day || [] | ||||
| 						yData = this.gasChartMsg.hisSumGas1For7Day || []; | ||||
| 					} else if (this.chartTime === '月') { | ||||
| 						yData = this.gasChartMsg.sumGas1ForMonth || [] | ||||
| 						yData = this.gasChartMsg.sumGas1ForMonth || []; | ||||
| 					} else { | ||||
| 						yData = this.gasChartMsg.sumGas1ForYear || [] | ||||
| 						yData = this.gasChartMsg.sumGas1ForYear || []; | ||||
| 					} | ||||
| 					gasName = '天然气I' | ||||
| 					xData = this.getXdata() | ||||
| 					gasName = '天然气I'; | ||||
| 					xData = this.getXdata(); | ||||
| 					break; | ||||
| 				} | ||||
| 				default: | ||||
| 				gasName = '天然气II' | ||||
| 					gasName = '天然气II'; | ||||
| 					if (this.chartTime === '周') { | ||||
| 						yData = this.gasChartMsg.hisSumGas2For7Day || [] | ||||
| 						yData = this.gasChartMsg.hisSumGas2For7Day || []; | ||||
| 					} else if (this.chartTime === '月') { | ||||
| 						yData = this.gasChartMsg.sumGas2ForMonth || [] | ||||
| 						yData = this.gasChartMsg.sumGas2ForMonth || []; | ||||
| 					} else { | ||||
| 						yData = this.gasChartMsg.sumGas2ForYear || [] | ||||
| 						yData = this.gasChartMsg.sumGas2ForYear || []; | ||||
| 					} | ||||
| 				xData = this.getXdata() | ||||
| 					xData = this.getXdata(); | ||||
| 			} | ||||
| 			if (yData.length === 0) { | ||||
|          this.notMsg = true | ||||
|          return | ||||
| 				this.notMsg = true; | ||||
| 				return; | ||||
| 			} else { | ||||
|         this.notMsg = false | ||||
| 				this.notMsg = false; | ||||
| 			} | ||||
| 			if (yData.length == 0) { | ||||
| 				seriesData = [] | ||||
| 				seriesData = []; | ||||
| 			} else { | ||||
| 				seriesData = [{ | ||||
| 				yData = yData.map((item) => { | ||||
| 					return (item = Number(item.toFixed(2))); | ||||
| 				}); | ||||
| 				seriesData = [ | ||||
| 					{ | ||||
| 						name: gasName, | ||||
| 						data: yData, | ||||
| 					type: "line", | ||||
| 						type: 'line', | ||||
| 						areaStyle: { | ||||
| 							color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ | ||||
| 							{ offset: 0, color: '#FFCB59' + "40" }, | ||||
| 							{ offset: 0.5, color: '#FFCB59' + "20" }, | ||||
| 							{ offset: 1, color: '#FFCB59' + "00" }, | ||||
| 								{ offset: 0, color: '#FFCB59' + '40' }, | ||||
| 								{ offset: 0.5, color: '#FFCB59' + '20' }, | ||||
| 								{ offset: 1, color: '#FFCB59' + '00' }, | ||||
| 							]), | ||||
| 						}, | ||||
| 						lineStyle: { | ||||
| 							width: 1 | ||||
| 							width: 1, | ||||
| 						}, | ||||
| 						symbol: 'circle', | ||||
| 						symbolSize: 5, | ||||
| 						emphasis: { | ||||
| 							focus: 'series' | ||||
| 					} | ||||
| 				}] | ||||
| 					 | ||||
| 							focus: 'series', | ||||
| 						}, | ||||
| 					}, | ||||
| 				]; | ||||
| 			} | ||||
| 			// 绘图 | ||||
| 			if ( | ||||
| @@ -182,7 +197,7 @@ export default { | ||||
| 				this.chart !== '' && | ||||
| 				this.chart !== undefined | ||||
| 			) { | ||||
|         this.chart.dispose() // 页面多次刷新会出现警告,Dom已经初始化了一个实例,这是销毁实例 | ||||
| 				this.chart.dispose(); // 页面多次刷新会出现警告,Dom已经初始化了一个实例,这是销毁实例 | ||||
| 			} | ||||
| 			this.chart = echarts.init(document.getElementById('gasChart')); | ||||
| 			var option = { | ||||
| @@ -230,10 +245,10 @@ export default { | ||||
| 				series: seriesData, | ||||
| 				tooltip: { | ||||
| 					trigger: 'axis', | ||||
| 					className: "gas-tooltip" | ||||
| 					className: 'gas-tooltip', | ||||
| 				}, | ||||
| 			} | ||||
| 			option && this.chart.setOption(option) | ||||
| 			}; | ||||
| 			option && this.chart.setOption(option); | ||||
| 		}, | ||||
| 		getXdata() { | ||||
| 			const today = new Date(); | ||||
| @@ -246,8 +261,12 @@ export default { | ||||
| 					.map((_, index) => { | ||||
| 						const today = new Date(); | ||||
| 						const dtimestamp = today - (index + 1) * 24 * 60 * 60 * 1000; | ||||
| 							return `${new Date(dtimestamp).getMonth()+1}.${new Date(dtimestamp).getDate()}`;}).reverse() | ||||
| 			}else if (this.chartTime == "月") { | ||||
| 						return `${new Date(dtimestamp).getMonth() + 1}.${new Date( | ||||
| 							dtimestamp | ||||
| 						).getDate()}`; | ||||
| 					}) | ||||
| 					.reverse(); | ||||
| 			} else if (this.chartTime == '月') { | ||||
| 				if (currentMonth in [1, 3, 5, 7, 8, 10, 12]) { | ||||
| 					days = 31; | ||||
| 				} else if (currentMonth == 2) { | ||||
| @@ -256,17 +275,21 @@ export default { | ||||
| 				return Array(days) | ||||
| 					.fill(1) | ||||
| 					.map((_, index) => { | ||||
| 							return `${currentMonth}.${days - index}`;}).reverse() | ||||
| 						return `${currentMonth}.${days - index}`; | ||||
| 					}) | ||||
| 					.reverse(); | ||||
| 			} else { | ||||
| 				return Array(12) | ||||
| 					.fill(1) | ||||
| 					.map((_, index) => { | ||||
| 							return `${12 - index}`;}).reverse() | ||||
| 						return `${12 - index}`; | ||||
| 					}) | ||||
| 					.reverse(); | ||||
| 			} | ||||
| 		}, | ||||
| 		isLeapYear(year) { | ||||
| 			return year % 400 == 0 || (year % 4 == 0 && year % 100 != 0); | ||||
| 		} | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
|   | ||||
| @@ -1,14 +1,18 @@ | ||||
| <template> | ||||
| 	<div> | ||||
| 		<NotMsg v-show="notMsg" /> | ||||
| 		<div id="israChart" class="isra-chart" style="width:600px;height:390px;" v-show='!notMsg'></div> | ||||
| 		<div | ||||
| 			id="israChart" | ||||
| 			class="isra-chart" | ||||
| 			style="width: 600px; height: 390px" | ||||
| 			v-show="!notMsg"></div> | ||||
| 	</div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import * as echarts from 'echarts'; | ||||
| import resize from './../mixins/resize' | ||||
| import NotMsg from './../components/NotMsg' | ||||
| import resize from './../mixins/resize'; | ||||
| import NotMsg from './../components/NotMsg'; | ||||
|  | ||||
| export default { | ||||
| 	name: 'ISRAChart', | ||||
| @@ -20,51 +24,68 @@ export default { | ||||
| 			chart: null, | ||||
| 			notMsg: true, | ||||
| 			colors: ['#2760ff', '#518eec', '#0ee8e4', '#ddb523'], | ||||
| 			chartData: [] | ||||
| 			chartData: [], | ||||
| 		}; | ||||
| 	}, | ||||
| 	activated() { | ||||
| 	}, | ||||
| 	activated() {}, | ||||
| 	computed: { | ||||
| 		israChartMsg() { | ||||
| 			return this.$store.state.websocket.israKiln | ||||
| 		} | ||||
| 			return this.$store.state.websocket.israKiln; | ||||
| 		}, | ||||
| 	}, | ||||
| 	watch: { | ||||
| 		israChartMsg: { | ||||
| 			handler(newVal, oldVal) { | ||||
| 				this.chartData = newVal || [] | ||||
| 				this.updateChart() | ||||
| 				this.$emit('emitFun') | ||||
| 			} | ||||
| 		} | ||||
| 				this.chartData = newVal || []; | ||||
| 				this.updateChart(); | ||||
| 				this.$emit('emitFun'); | ||||
| 			}, | ||||
| 		}, | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		getEqualNewlineString(params, length) { | ||||
| 			let text = ''; | ||||
| 			let count = Math.ceil(params.length / length); // 向上取整数 | ||||
| 			// 一行展示length个 | ||||
| 			if (count > 1) { | ||||
| 				for (let z = 1; z <= count; z++) { | ||||
| 					text += params.substr((z - 1) * length, length); | ||||
| 					if (z < count) { | ||||
| 						text += '\n'; | ||||
| 					} | ||||
| 				} | ||||
| 			} else { | ||||
| 				text += params.substr(0, length); | ||||
| 			} | ||||
| 			return text; | ||||
| 		}, | ||||
| 		updateChart() { | ||||
| 			console.log('update') | ||||
| 			let num = 0 | ||||
| 			this.chartData && this.chartData.length > 0 && this.chartData.map(i => { | ||||
| 				num+=i.num | ||||
| 			}) | ||||
| 			console.log('update'); | ||||
| 			let num = 0; | ||||
| 			this.chartData && | ||||
| 				this.chartData.length > 0 && | ||||
| 				this.chartData.map((i) => { | ||||
| 					num += i.num; | ||||
| 				}); | ||||
| 			if ( | ||||
| 				this.chart !== null && | ||||
| 				this.chart !== '' && | ||||
| 				this.chart !== undefined | ||||
| 			) { | ||||
|         this.chart.dispose() | ||||
| 				this.chart.dispose(); | ||||
| 			} | ||||
| 			if (this.chartData && this.chartData.length > 0) { | ||||
|          this.notMsg = false | ||||
| 				this.notMsg = false; | ||||
| 			} else { | ||||
|         this.notMsg = true | ||||
| 				return | ||||
| 				this.notMsg = true; | ||||
| 				return; | ||||
| 			} | ||||
| 			this.chart = echarts.init(document.getElementById('israChart')); | ||||
| 			var option = { | ||||
| 				color: this.colors, | ||||
| 				title: { | ||||
| 					text: num, | ||||
| 					subtext: '总数', | ||||
| 					subtext: '总数/个', | ||||
| 					top: '32%', | ||||
| 					left: '49%', | ||||
| 					textAlign: 'center', | ||||
| @@ -84,30 +105,65 @@ export default { | ||||
| 					itemHeight: 18, | ||||
| 					icon: 'circle', | ||||
| 					textStyle: { | ||||
| 						color: '#fff' | ||||
| 						color: '#fff', | ||||
| 					}, | ||||
| 					data:this.chartData && this.chartData.length > 0 && this.chartData.map((item,index)=>({ | ||||
| 					data: | ||||
| 						this.chartData && | ||||
| 						this.chartData.length > 0 && | ||||
| 						this.chartData.map((item, index) => ({ | ||||
| 							name: item.name, | ||||
| 							itemStyle: { | ||||
| 							color: this.colors[index%4] | ||||
| 						} | ||||
| 					})) | ||||
| 								color: this.colors[index % 4], | ||||
| 							}, | ||||
| 				series:[{ | ||||
| 						})), | ||||
| 				}, | ||||
| 				series: [ | ||||
| 					{ | ||||
| 						name: 'ISRA缺陷检测', | ||||
| 						type: 'pie', | ||||
| 						center: ['50%', '40%'], | ||||
| 						radius: ['45%', '70%'], | ||||
| 						avoidLabelOverlap: true, | ||||
| 						// label: { | ||||
| 						// 	show: true, | ||||
| 						// }, | ||||
| 						// labelLine: { | ||||
| 						// 	show: true, | ||||
| 						// }, | ||||
| 						label: { | ||||
| 							show: false | ||||
| 							show: true, | ||||
| 							normal: { | ||||
| 								alignTo: 'labelLine', | ||||
| 								margin: 10, | ||||
| 								edgeDistance: 10, | ||||
| 								lineHeight: 16, | ||||
| 								formatter: (params) => { | ||||
| 									//调用自定义显示格式 | ||||
| 									return this.getEqualNewlineString( | ||||
| 										params.value + ' | ' + params.percent.toFixed(0) + '%' | ||||
| 									); | ||||
| 								}, | ||||
| 								textStyle: { | ||||
| 									// 提示文字的样式 | ||||
| 									// color: '#595959', | ||||
| 									fontSize: 16, | ||||
| 								}, | ||||
| 							}, | ||||
| 						}, | ||||
| 						labelLine: { | ||||
| 							show: true, | ||||
| 							length: 25, | ||||
| 							length2: 10, | ||||
| 						}, | ||||
| 						data: this.chartData && this.chartData.length > 0 && this.chartData.map((item, index) => ({ | ||||
| 						data: | ||||
| 							this.chartData && | ||||
| 							this.chartData.length > 0 && | ||||
| 							this.chartData.map((item, index) => ({ | ||||
| 								name: item.name, | ||||
| 								value: item.num, | ||||
| 								label: { | ||||
| 									color: this.colors[index % 4], | ||||
| 								}, | ||||
| 								itemStyle: { | ||||
| 									color: { | ||||
| 										type: 'linear', | ||||
| @@ -118,18 +174,20 @@ export default { | ||||
| 										global: false, | ||||
| 										colorStops: [ | ||||
| 											{ offset: 0, color: this.colors[index % 4] }, | ||||
| 									{offset: 1,color: this.colors[index%4]+'33'} | ||||
| 								] | ||||
| 							} | ||||
| 						} | ||||
| 					}))}], | ||||
| 											{ offset: 1, color: this.colors[index % 4] + '33' }, | ||||
| 										], | ||||
| 									}, | ||||
| 								}, | ||||
| 							})), | ||||
| 					}, | ||||
| 				], | ||||
| 				tooltip: { | ||||
| 					trigger: 'item', | ||||
| 						className: "isra-chart-tooltip" | ||||
| 					className: 'isra-chart-tooltip', | ||||
| 				}, | ||||
| 			} | ||||
| 			}; | ||||
| 			this.chart.setOption(option); | ||||
| 		} | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
|   | ||||
| @@ -1,13 +1,17 @@ | ||||
| <template> | ||||
|   <div style="height: 370px;"> | ||||
| 	<div style="height: 370px"> | ||||
| 		<NotMsg v-show="notMsg" /> | ||||
|     <div id="numRateChart" class="num-rate-chart" style="width:900px;height:420px;" v-show='!notMsg'></div> | ||||
| 		<div | ||||
| 			id="numRateChart" | ||||
| 			class="num-rate-chart" | ||||
| 			style="width: 900px; height: 420px" | ||||
| 			v-show="!notMsg"></div> | ||||
| 	</div> | ||||
| </template> | ||||
| <script> | ||||
| import * as echarts from 'echarts'; | ||||
| import resize from './../mixins/resize' | ||||
| import NotMsg from './../components/NotMsg' | ||||
| import resize from './../mixins/resize'; | ||||
| import NotMsg from './../components/NotMsg'; | ||||
| export default { | ||||
| 	name: 'NumRateChart', | ||||
| 	mixins: [resize], | ||||
| @@ -15,65 +19,88 @@ export default { | ||||
| 	data() { | ||||
| 		return { | ||||
| 			chart: null, | ||||
|       notMsg:true | ||||
|     } | ||||
| 			notMsg: true, | ||||
| 		}; | ||||
| 	}, | ||||
| 	computed: { | ||||
| 		productline() { | ||||
|       return this.$store.state.websocket.productline | ||||
|     } | ||||
| 			return this.$store.state.websocket.productline; | ||||
| 		}, | ||||
| 	}, | ||||
| 	watch: { | ||||
| 		productline: { | ||||
| 			handler(newVal, oldVal) { | ||||
| 				if (newVal === oldVal) { | ||||
|           return false | ||||
|         } | ||||
|         this.updateChart() | ||||
|         this.$emit('emitFun') | ||||
| 			} | ||||
| 					return false; | ||||
| 				} | ||||
| 				this.updateChart(); | ||||
| 				this.$emit('emitFun'); | ||||
| 			}, | ||||
| 		}, | ||||
| 	}, | ||||
| 	mounted() { | ||||
| 		this.$el.addEventListener('resize', () => { | ||||
| 			console.log('resziing.....'); | ||||
| 		}); | ||||
|     this.updateChart() | ||||
| 		this.updateChart(); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		updateChart() { | ||||
| 			if (this.productline && this.productline.length > 0) { | ||||
|         this.notMsg = false | ||||
| 				this.notMsg = false; | ||||
| 			} else { | ||||
|         this.notMsg = true | ||||
|         return | ||||
| 				this.notMsg = true; | ||||
| 				return; | ||||
| 			} | ||||
|       let xData = [] | ||||
|       let outputNum = [] | ||||
|       let passRate = [] | ||||
|       this.productline && this.productline.length > 0 && this.productline.map(item => { | ||||
|         if ((item.lineName).includes('D')) { | ||||
|           xData.push(item.lineName) | ||||
|           outputNum.push(item.outputNum) | ||||
|           passRate.push(item.passRate?item.passRate*100:null) | ||||
| 			let xData = []; | ||||
| 			let outputNum = []; | ||||
| 			let passRate = []; | ||||
| 			for (let i = 0; i < this.productline.length - 1; i++) { | ||||
| 				// 二次循环,注意:再减去外层的循环次数,向后依次两两相互比较转换; | ||||
| 				for (let j = 0; j < this.productline.length - i - 1; j++) { | ||||
| 					// 当前一个值大于后一个值 | ||||
| 					if ( | ||||
| 						this.productline[j].lineName.substr( | ||||
| 							this.productline[j].lineName.length - 1, | ||||
| 							1 | ||||
| 						) > | ||||
| 						this.productline[j + 1].lineName.substr( | ||||
| 							this.productline[j + 1].lineName.length - 1, | ||||
| 							1 | ||||
| 						) | ||||
| 					) { | ||||
| 						// 定义变量,以赋值的形式前后交换,直到换到最小的在前面,左右再无比较,则循环结束形成排序结果 | ||||
| 						let temp = this.productline[j]; | ||||
| 						this.productline[j] = this.productline[j + 1]; | ||||
| 						this.productline[j + 1] = temp; | ||||
| 					} | ||||
|       }) | ||||
| 				} | ||||
| 			} | ||||
| 			this.productline && | ||||
| 				this.productline.length > 0 && | ||||
| 				this.productline.map((item) => { | ||||
| 					if (item.lineName.includes('D')) { | ||||
| 						xData.push(item.lineName); | ||||
| 						outputNum.push(item.outputNum); | ||||
| 						passRate.push(item.passRate); | ||||
| 					} | ||||
| 				}); | ||||
| 			if ( | ||||
| 				this.chart !== null && | ||||
| 				this.chart !== '' && | ||||
| 				this.chart !== undefined | ||||
| 			) { | ||||
|         this.chart.dispose() | ||||
| 				this.chart.dispose(); | ||||
| 			} | ||||
| 			this.chart = echarts.init(document.getElementById('numRateChart')); | ||||
| 			var option = { | ||||
| 				grid: { top: 82, right: 60, bottom: 20, left: 90 }, | ||||
| 				tooltip: { | ||||
|           trigger: "axis", | ||||
| 					trigger: 'axis', | ||||
| 					axisPointer: { | ||||
|             type: "shadow", | ||||
| 						type: 'shadow', | ||||
| 					}, | ||||
|           className: "num-rate-chart-tooltip" | ||||
| 					className: 'num-rate-chart-tooltip', | ||||
| 				}, | ||||
| 				legend: { | ||||
| 					itemWidth: 10, | ||||
| @@ -83,32 +110,32 @@ export default { | ||||
| 					icon: 'rect', | ||||
| 					data: [ | ||||
| 						{ name: '产线产量', itemStyle: { color: '#364BFE' } }, | ||||
|             {name:'良品率',itemStyle:{color:'#FFCB59'}} | ||||
| 						{ name: '良品率', itemStyle: { color: '#FFCB59' } }, | ||||
| 					], | ||||
| 					textStyle: { | ||||
|             color: "#DFF1FE", | ||||
| 						color: '#DFF1FE', | ||||
| 						fontSize: 12, | ||||
|           } | ||||
| 					}, | ||||
| 				}, | ||||
| 				xAxis: [ | ||||
| 					{ | ||||
| 						type: 'category', | ||||
| 						data: xData, | ||||
| 						axisLabel: { | ||||
|               color: "#fff", | ||||
| 							color: '#fff', | ||||
| 							fontSize: 12, | ||||
| 						}, | ||||
| 						axisPointer: { | ||||
|               type: 'shadow' | ||||
| 							type: 'shadow', | ||||
| 						}, | ||||
| 						axisTick: { show: false }, | ||||
| 						axisLine: { | ||||
| 							lineStyle: { | ||||
| 								width: 1, | ||||
|                 color: "#213259", | ||||
| 								color: '#213259', | ||||
| 							}, | ||||
| 						}, | ||||
| 					}, | ||||
|           } | ||||
| 				], | ||||
| 				yAxis: [ | ||||
| 					{ | ||||
| @@ -120,21 +147,20 @@ export default { | ||||
| 							align: 'right', | ||||
| 						}, | ||||
| 						axisLabel: { | ||||
|               color: "#fff", | ||||
| 							color: '#fff', | ||||
| 							fontSize: 12, | ||||
|               formatter: '{value}' | ||||
| 						}, | ||||
| 						axisLine: { | ||||
| 							show: true, | ||||
| 							lineStyle: { | ||||
|                 color: "#213259", | ||||
| 								color: '#213259', | ||||
| 							}, | ||||
| 						}, | ||||
| 						splitLine: { | ||||
| 							lineStyle: { | ||||
|                 color: "#213259a0", | ||||
| 								color: '#213259a0', | ||||
| 							}, | ||||
| 						}, | ||||
|             } | ||||
| 					}, | ||||
| 					{ | ||||
| 						type: 'value', | ||||
| @@ -145,24 +171,22 @@ export default { | ||||
| 							align: 'LEFT', | ||||
| 						}, | ||||
| 						axisLabel: { | ||||
|               color: "#fff", | ||||
| 							color: '#fff', | ||||
| 							fontSize: 12, | ||||
|               formatter: () =>{ | ||||
|                 return value ? '{value} %': '-' | ||||
|               } | ||||
| 							formatter: '{value}%', | ||||
| 						}, | ||||
| 						axisLine: { | ||||
| 							show: true, | ||||
| 							lineStyle: { | ||||
|               color: "#213259", | ||||
| 								color: '#213259', | ||||
| 							}, | ||||
| 						}, | ||||
| 						splitLine: { | ||||
| 							lineStyle: { | ||||
|               color: "#213259a0", | ||||
| 								color: '#213259a0', | ||||
| 							}, | ||||
| 						}, | ||||
| 					}, | ||||
|           } | ||||
|           } | ||||
| 				], | ||||
| 				series: [ | ||||
| 					{ | ||||
| @@ -171,16 +195,16 @@ export default { | ||||
| 						tooltip: { | ||||
| 							valueFormatter: function (value) { | ||||
| 								return value; | ||||
|               } | ||||
| 							}, | ||||
| 						}, | ||||
| 						barWidth: 20, | ||||
| 						itemStyle: { | ||||
| 							color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ | ||||
| 								{ offset: 0, color: '#5CB7FF' }, | ||||
|                 { offset: 1, color: '#364BFE' } | ||||
|               ]) | ||||
| 								{ offset: 1, color: '#364BFE' }, | ||||
| 							]), | ||||
| 						}, | ||||
|             data: outputNum | ||||
| 						data: outputNum, | ||||
| 					}, | ||||
| 					{ | ||||
| 						name: '良品率', | ||||
| @@ -189,31 +213,31 @@ export default { | ||||
| 						tooltip: { | ||||
| 							valueFormatter: function (value) { | ||||
| 								return value ? value + '%' : '-'; | ||||
|               } | ||||
| 							}, | ||||
| 						}, | ||||
| 						itemStyle: { | ||||
|               color: '#FFD160' | ||||
| 							color: '#FFD160', | ||||
| 						}, | ||||
| 						areaStyle: { | ||||
| 							color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ | ||||
|                 { offset: 0, color: '#FFCB59' + "40" }, | ||||
|                 { offset: 0.5, color: '#FFCB59' + "20" }, | ||||
|                 { offset: 1, color: '#FFCB59' + "00" }, | ||||
| 								{ offset: 0, color: '#FFCB59' + '40' }, | ||||
| 								{ offset: 0.5, color: '#FFCB59' + '20' }, | ||||
| 								{ offset: 1, color: '#FFCB59' + '00' }, | ||||
| 							]), | ||||
| 						}, | ||||
| 						lineStyle: { | ||||
|                 width: 1 | ||||
| 							width: 1, | ||||
| 						}, | ||||
| 						symbol: 'circle', | ||||
| 						symbolSize: 5, | ||||
|             data: passRate | ||||
|           } | ||||
|         ] | ||||
| 						data: passRate, | ||||
| 					}, | ||||
| 				], | ||||
| 			}; | ||||
| 			option && this.chart.setOption(option); | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
|       option && this.chart.setOption(option) | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </script> | ||||
| <style scoped lang="scss"> | ||||
| .num-rate-chart { | ||||
|   | ||||
| @@ -1,9 +1,17 @@ | ||||
| <template> | ||||
|   <div style="flex: 1;"> | ||||
|     <Container name="各工序缺陷汇总" size="middle" style=""> | ||||
|       <TimePrompt class="timeShow" :timestr="timestr" /> | ||||
|       <div style="padding: 5px 10px;"> | ||||
|         <dv-scroll-board :config="config" style="width:575px;height:380px" ref='defectScrollBoard'/> | ||||
| 	<div style="flex: 1"> | ||||
| 		<Container | ||||
| 			name="各工序缺陷汇总" | ||||
| 			size="middle" | ||||
| 			style=""> | ||||
| 			<TimePrompt | ||||
| 				class="timeShow" | ||||
| 				:timestr="timestr" /> | ||||
| 			<div style="padding: 5px 10px"> | ||||
| 				<dv-scroll-board | ||||
| 					:config="config" | ||||
| 					style="width: 575px; height: 380px" | ||||
| 					ref="defectScrollBoard" /> | ||||
| 			</div> | ||||
| 		</Container> | ||||
| 	</div> | ||||
| @@ -11,14 +19,14 @@ | ||||
| <script> | ||||
| import Container from '../components/Container.vue'; | ||||
| import TimePrompt from '../components/TimePrompt'; | ||||
| import { switchShowTime } from '../utils' | ||||
| import { switchShowTime } from '../utils'; | ||||
| export default { | ||||
| 	name: 'DefectSum', | ||||
| 	components: { Container, TimePrompt }, | ||||
| 	computed: { | ||||
| 		defectSum() { | ||||
|       return this.$store.state.websocket.defectSum | ||||
|     } | ||||
| 			return this.$store.state.websocket.defectSum; | ||||
| 		}, | ||||
| 	}, | ||||
| 	data() { | ||||
| 		return { | ||||
| @@ -30,14 +38,23 @@ export default { | ||||
| 				evenRowBGC: 'rgba(14, 32, 62, 0.8)', | ||||
| 				columnWidth: [60], | ||||
| 				align: ['center'], | ||||
|         data: [], | ||||
|         // data: [[1, 'Y61', '破损','10','气泡']], | ||||
|         rowNum: 10 | ||||
|       } | ||||
|     } | ||||
| 				data: [ | ||||
| 					//假数据 | ||||
| 					[1, 'D61', '成型', '3片', '细长泡'], | ||||
| 					[2, 'D62', '组合落板', '4片', '细长泡'], | ||||
| 					[3, 'D61', '磨边', '6片', '开口泡'], | ||||
| 					[4, 'D63', '清洗', '5片', '结石'], | ||||
| 					[5, 'D64', '打孔', '2片', '结石'], | ||||
| 					[6, 'D63', '成型', '7片', '开口泡'], | ||||
| 					[7, 'D61', '上片', '8片', '结石'], | ||||
| 				], | ||||
| 				// data: [], | ||||
| 				rowNum: 10, | ||||
| 			}, | ||||
| 		}; | ||||
| 	}, | ||||
| 	mounted() { | ||||
|     this.timestr = switchShowTime('日') | ||||
| 		this.timestr = switchShowTime('日'); | ||||
| 	}, | ||||
| 	watch: { | ||||
| 		defectSum: { | ||||
| @@ -47,15 +64,15 @@ export default { | ||||
| 					item.productionLineName, | ||||
| 					item.sectionName, | ||||
| 					item.count, | ||||
|           item.inspectionTypeName | ||||
| 					item.inspectionTypeName, | ||||
| 				]); | ||||
|         this.config.data = outArr | ||||
|         this.$refs['defectScrollBoard'].updateRows(outArr) | ||||
|         this.timestr = switchShowTime('日') | ||||
| 			} | ||||
| 		} | ||||
|   } | ||||
| } | ||||
| 				this.config.data = outArr; | ||||
| 				this.$refs['defectScrollBoard'].updateRows(outArr); | ||||
| 				this.timestr = switchShowTime('日'); | ||||
| 			}, | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
| <style lang='scss' scoped> | ||||
| .timeShow { | ||||
|   | ||||
| @@ -1,9 +1,17 @@ | ||||
| <template> | ||||
|   <div style="flex: 1;"> | ||||
|     <Container name="设备报警" size="middle" style=""> | ||||
|       <TimePrompt class="timeShow" :timestr="timestr" /> | ||||
|       <div style="padding: 5px 10px;"> | ||||
|         <dv-scroll-board :config="config" style="width:575px;height:380px" ref='eqScrollBoard'/> | ||||
| 	<div style="flex: 1"> | ||||
| 		<Container | ||||
| 			name="设备报警" | ||||
| 			size="middle" | ||||
| 			style=""> | ||||
| 			<TimePrompt | ||||
| 				class="timeShow" | ||||
| 				:timestr="timestr" /> | ||||
| 			<div style="padding: 5px 10px"> | ||||
| 				<dv-scroll-board | ||||
| 					:config="config" | ||||
| 					style="width: 575px; height: 380px" | ||||
| 					ref="eqScrollBoard" /> | ||||
| 			</div> | ||||
| 		</Container> | ||||
| 	</div> | ||||
| @@ -11,24 +19,24 @@ | ||||
| <script> | ||||
| import Container from '../components/Container.vue'; | ||||
| import TimePrompt from '../components/TimePrompt'; | ||||
| import { switchShowTime } from '../utils' | ||||
| import { switchShowTime } from '../utils'; | ||||
| export default { | ||||
| 	name: 'EqAlarm', | ||||
| 	components: { Container, TimePrompt }, | ||||
| 	computed: { | ||||
| 		sjgEquipment() { | ||||
|       return this.$store.state.websocket.sjgEquipment | ||||
|     } | ||||
| 			return this.$store.state.websocket.sjgEquipment; | ||||
| 		}, | ||||
| 	}, | ||||
| 	data() { | ||||
| 		return { | ||||
| 			timestr: '', | ||||
| 			config: { | ||||
|         header: ['序号', '设备名称', '设备编码','设备状态','是否故障'], | ||||
| 				header: ['序号', '产线名', '设备名称', '设备状态'], | ||||
| 				headerBGC: 'rgba(32, 55, 96, 0.8)', | ||||
| 				oddRowBGC: 'rgba(32, 55, 96, 0.8)', | ||||
| 				evenRowBGC: 'rgba(14, 32, 62, 0.8)', | ||||
|         columnWidth: [60, 150, 190], | ||||
| 				columnWidth: [60, 120, 280], | ||||
| 				align: ['center'], | ||||
| 				data: [], | ||||
| 				// data: [ | ||||
| @@ -43,32 +51,42 @@ export default { | ||||
| 				//   [9, '四大线四区1小线清洗机', 'EQ20240110112700000247', '正常', '否'], | ||||
| 				//   [10, '4大线四区自动连线柜', 'EQ20240110112646000246', '正常', '否'] | ||||
| 				// ], | ||||
|         rowNum: 10 | ||||
|       } | ||||
|     } | ||||
| 				rowNum: 10, | ||||
| 			}, | ||||
| 		}; | ||||
| 	}, | ||||
| 	mounted() { | ||||
|     this.timestr = switchShowTime('日') | ||||
| 		this.timestr = switchShowTime('日'); | ||||
| 	}, | ||||
| 	watch: { | ||||
| 		sjgEquipment: { | ||||
| 			handler(newVal, oldVal) { | ||||
| 				let outArr = this.sjgEquipment.map((item, index) => [ | ||||
| 					index + 1, | ||||
| 					`<span title=${item.lineName || ''}>${item.lineName || ''}</span>`, | ||||
| 					`<span title=${item.name || ''}>${item.name || ''}</span>`, | ||||
|           `<span title=${item.code || ''}>${item.code || ''}</span>`, | ||||
|           item.status, | ||||
|           item.error? '是': '否' | ||||
| 					`<span><div style="${ | ||||
| 						item.status == '运行' | ||||
| 							? 'box-shadow: 0px 0px 2px 1px #2760FF;width:6px;height:6px;border-radius: 50%;background-color: #2760FF;float:left;margin:13px 10px 0 0 ' | ||||
| 							: item.status == '故障' | ||||
| 							? 'box-shadow: 0px 0px 2px 1px red;width:6px;height:6px;border-radius: 50%;  background-color: red;float:left;margin:13px 10px 0 0 ' | ||||
| 							: 'box-shadow: 0px 0px 2px 1px #FFBD02;width:6px;height:6px;border-radius: 50%;  background-color: #FFBD02;float:left;margin:13px 10px 0 0 ' | ||||
| 					}"></div>  ${item.status || ''}</span>`, | ||||
| 					// `<span"><div style="${ | ||||
| 					// 	item.error == false | ||||
| 					// 		? 'box-shadow: 0px 0px 2px 1px #2760FF;width:6px;height:6px;border-radius: 50%;background-color: #2760FF;float:left;margin:13px 10px 0 0 ' | ||||
| 					// 		: 'box-shadow: 0px 0px 2px 1px red;width:6px;height:6px;border-radius: 50%;  background-color: red;float:left;margin:13px 10px 0 0 ' | ||||
| 					// }"></div>  ${item.error == true ? '是' : '否' || ''}</span>`, | ||||
| 				]); | ||||
|         this.config.data = outArr | ||||
|         this.$refs['eqScrollBoard'].updateRows(outArr) | ||||
|         this.timestr = switchShowTime('日') | ||||
| 			} | ||||
| 		} | ||||
|   } | ||||
| } | ||||
| 				this.config.data = outArr; | ||||
| 				this.$refs['eqScrollBoard'].updateRows(outArr); | ||||
| 				this.timestr = switchShowTime('日'); | ||||
| 			}, | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
| <style lang='scss' scoped> | ||||
| <style lang="scss" scoped> | ||||
| .timeShow { | ||||
| 	position: absolute; | ||||
| 	top: 20px; | ||||
|   | ||||
| @@ -1,41 +1,61 @@ | ||||
| <template> | ||||
|   <Container name="工单监控" size="middle" style=""> | ||||
|     <TimePrompt class="timeShow" :timestr="timestr" /> | ||||
|     <div style="padding: 5px 10px;" class="WOMonitoring"> | ||||
|       <dv-scroll-board :config="config" style="width:900px;height:380px" ref='worderScrollBoard'/> | ||||
| 	<Container | ||||
| 		name="工单监控" | ||||
| 		size="middle" | ||||
| 		style=""> | ||||
| 		<TimePrompt | ||||
| 			class="timeShow" | ||||
| 			:timestr="timestr" /> | ||||
| 		<div | ||||
| 			style="padding: 5px 10px" | ||||
| 			class="WOMonitoring"> | ||||
| 			<dv-scroll-board | ||||
| 				:config="config" | ||||
| 				style="width: 900px; height: 380px" | ||||
| 				ref="worderScrollBoard" /> | ||||
| 		</div> | ||||
| 	</Container> | ||||
| </template> | ||||
| <script> | ||||
| import Container from '../components/Container.vue'; | ||||
| import TimePrompt from '../components/TimePrompt'; | ||||
| import { switchShowTime } from '../utils' | ||||
| import { formatDate } from '@/utils' | ||||
| import { switchShowTime } from '../utils'; | ||||
| import { formatDate } from '@/utils'; | ||||
| export default { | ||||
| 	name: 'WorkOrderMonitoring', | ||||
| 	components: { Container, TimePrompt }, | ||||
| 	computed: { | ||||
| 		order() { | ||||
|       return this.$store.state.websocket.workOrder | ||||
|     } | ||||
| 			return this.$store.state.websocket.workOrder; | ||||
| 		}, | ||||
| 	}, | ||||
| 	data() { | ||||
| 		return { | ||||
| 			timestr: '', | ||||
| 			config: { | ||||
|         header: ['序号', '工单名称', '规格','产线','工单状态', '计划完成时间','计划产量','实际产量'], | ||||
| 				header: [ | ||||
| 					'序号', | ||||
| 					'工单名称', | ||||
| 					'规格', | ||||
| 					'产线', | ||||
| 					'工单状态', | ||||
| 					'计划完成时间', | ||||
| 					'计划产量', | ||||
| 					'实际产量', | ||||
| 					'完成进度', | ||||
| 				], | ||||
| 				headerBGC: 'rgba(32, 55, 96, 0.8)', | ||||
| 				oddRowBGC: 'rgba(32, 55, 96, 0.8)', | ||||
| 				evenRowBGC: 'rgba(14, 32, 62, 0.8)', | ||||
| 				columnWidth: [60, 120, 120, 60, 100, 150], | ||||
| 				align: ['center'], | ||||
| 				data: [], | ||||
|         rowNum:10 | ||||
|       } | ||||
|     } | ||||
| 				rowNum: 10, | ||||
| 			}, | ||||
| 		}; | ||||
| 	}, | ||||
| 	mounted() { | ||||
|     this.timestr = switchShowTime('日') | ||||
| 		this.timestr = switchShowTime('日'); | ||||
| 	}, | ||||
| 	watch: { | ||||
| 		order: { | ||||
| @@ -48,17 +68,18 @@ export default { | ||||
| 					this.getDictDatas(this.DICT_TYPE.ORDER_STATUS)[item.status]?.label, | ||||
| 					formatDate(item.planFinishTime), | ||||
| 					item.planQuantity, | ||||
|           item.planAssignQuantity | ||||
| 					item.actualQuantity, | ||||
| 					(item.progressRate * 100).toFixed(0) + '%', | ||||
| 				]); | ||||
|         this.config.data = outArr | ||||
|         this.$refs['worderScrollBoard'].updateRows(outArr) | ||||
|         this.timestr = switchShowTime('日') | ||||
| 			} | ||||
| 		} | ||||
|   } | ||||
| } | ||||
| 				this.config.data = outArr; | ||||
| 				this.$refs['worderScrollBoard'].updateRows(outArr); | ||||
| 				this.timestr = switchShowTime('日'); | ||||
| 			}, | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
| <style lang='scss' scoped> | ||||
| <style lang="scss" scoped> | ||||
| .timeShow { | ||||
| 	position: absolute; | ||||
| 	top: 20px; | ||||
|   | ||||
| @@ -1,8 +1,11 @@ | ||||
| <template> | ||||
| 	<div id='deepProcessingContainerB' ref='deepProcessingContainerB' style="width: 100%;height: 100%;"> | ||||
| 	<div | ||||
| 			id='deepProcessingContainer' | ||||
| 			ref='deepProcessingContainer' | ||||
| 		id="deepProcessingContainerB" | ||||
| 		ref="deepProcessingContainerB" | ||||
| 		style="width: 100%; height: 100%"> | ||||
| 		<div | ||||
| 			id="deepProcessingContainer" | ||||
| 			ref="deepProcessingContainer" | ||||
| 			class="deepProcessingBoard" | ||||
| 			style=" | ||||
| 				position: absolute; | ||||
| @@ -17,14 +20,13 @@ | ||||
| 				gap: 24px; | ||||
| 			" | ||||
| 			:style="{ transform: 'scale(' + scaleNum + ')' }"> | ||||
| 			<KHeader :isFullScreen='isFullScreen' @screenfullChange='screenfullChange' topTitle='深加工生产运行驾驶舱'/> | ||||
| 			<KHeader | ||||
| 				:isFullScreen="isFullScreen" | ||||
| 				@screenfullChange="screenfullChange" | ||||
| 				topTitle="深加工生产运行驾驶舱" /> | ||||
| 			<div | ||||
| 				class="main-body" | ||||
| 				style=" | ||||
| 					display: grid; | ||||
| 					gap: 16px; | ||||
| 					grid-template-rows: 462px 462px; | ||||
| 				"> | ||||
| 				style="display: grid; gap: 16px; grid-template-rows: 462px 462px"> | ||||
| 				<TopThree /> | ||||
| 				<BottomTwo /> | ||||
| 			</div> | ||||
| @@ -47,16 +49,16 @@ | ||||
| import KHeader from '../components/Header'; | ||||
| import TopThree from './TopThree'; | ||||
| import BottomTwo from './BottomTwo'; | ||||
| import screenfull from 'screenfull' | ||||
| import { debounce } from '@/utils/debounce' | ||||
| import { getDcsMsg, getMesMsg } from './../utils/wsInterface' | ||||
| import screenfull from 'screenfull'; | ||||
| import { debounce } from '@/utils/debounce'; | ||||
| import { getDcsMsg, getMesMsg } from './../utils/wsInterface'; | ||||
|  | ||||
| export default { | ||||
| 	name: 'deepProcessingBoard', | ||||
| 	components: { | ||||
| 		KHeader, | ||||
| 		TopThree, | ||||
| 		BottomTwo | ||||
| 		BottomTwo, | ||||
| 	}, | ||||
| 	// provide() { | ||||
| 	// 	return { | ||||
| @@ -66,43 +68,52 @@ export default { | ||||
| 	data() { | ||||
| 		return { | ||||
| 			isFullScreen: false, | ||||
| 			scaleNum: 0.8 | ||||
| 			scaleNum: 0.8, | ||||
| 		}; | ||||
| 	}, | ||||
| 	created() { | ||||
| 		this.init() | ||||
| 		this.init(); | ||||
| 	}, | ||||
| 	destroy() { | ||||
| 		this.destroy() | ||||
| 		this.destroy(); | ||||
| 	}, | ||||
| 	mounted() { | ||||
| 		this.boxReset = debounce(() => { | ||||
|       this.resetSize() | ||||
|     }, 300) | ||||
|     this.boxReset() | ||||
| 			this.resetSize(); | ||||
| 		}, 300); | ||||
| 		this.boxReset(); | ||||
| 		window.addEventListener('resize', () => { | ||||
|       this.boxReset() | ||||
|     }) | ||||
| 			this.boxReset(); | ||||
| 		}); | ||||
| 		// closeWebsocket() | ||||
| 		// getDcsMsg() | ||||
| 		// getMesMsg() | ||||
| 		console.log('mounted...........') | ||||
| 	}, | ||||
| 	mounted() { | ||||
| 		this.boxReset(); | ||||
| 		window.addEventListener('resize', this.boxReset); | ||||
| 	}, | ||||
| 	destroyed() { | ||||
| 		console.log('destroyed...........') | ||||
| 		window.removeEventListener('resize', this.boxReset); | ||||
| 		this.destroy(); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		boxReset() { | ||||
| 			debounce(() => { | ||||
| 				this.resetSize(); | ||||
| 			}, 300)(); | ||||
| 		}, | ||||
| 		change() { | ||||
|       this.isFullScreen = screenfull.isFullscreen | ||||
| 			this.isFullScreen = screenfull.isFullscreen; | ||||
| 		}, | ||||
| 		init() { | ||||
| 			if (screenfull.isEnabled) { | ||||
|         screenfull.on('change', this.change) | ||||
| 				screenfull.on('change', this.change); | ||||
| 			} | ||||
| 		}, | ||||
| 		destroy() { | ||||
| 			if (screenfull.isEnabled) { | ||||
|         screenfull.off('change', this.change) | ||||
| 				screenfull.off('change', this.change); | ||||
| 			} | ||||
| 		}, | ||||
| 		// 全屏 | ||||
| @@ -110,39 +121,37 @@ export default { | ||||
| 			if (!screenfull.isEnabled) { | ||||
| 				this.$message({ | ||||
| 					message: 'you browser can not work', | ||||
|           type: 'warning' | ||||
|         }) | ||||
|         return false | ||||
| 					type: 'warning', | ||||
| 				}); | ||||
| 				return false; | ||||
| 			} | ||||
|       screenfull.toggle(this.$refs.deepProcessingContainerB) | ||||
| 			screenfull.toggle(this.$refs.deepProcessingContainerB); | ||||
| 		}, | ||||
| 		resetSize() { | ||||
|       let deepProcessingContainer = document.getElementById('deepProcessingContainer') | ||||
|       let rw = parseFloat(window.innerWidth) | ||||
|       let rh = parseFloat(window.innerHeight) | ||||
|       let bw = parseFloat(deepProcessingContainer.style.width) | ||||
|       let bh = parseFloat(deepProcessingContainer.style.height) | ||||
| 			let wx = 0 | ||||
| 			let hx = 0 | ||||
| 			let deepProcessingContainer = document.getElementById( | ||||
| 				'deepProcessingContainer' | ||||
| 			); | ||||
| 			let rw = parseFloat(window.innerWidth); | ||||
| 			let rh = parseFloat(window.innerHeight); | ||||
| 			let bw = parseFloat(deepProcessingContainer.style.width); | ||||
| 			let bh = parseFloat(deepProcessingContainer.style.height); | ||||
| 			let wx = 0; | ||||
| 			let hx = 0; | ||||
| 			if (screenfull.isFullscreen) { | ||||
| 				console.log('全屏') | ||||
| 				wx = rw / bw | ||||
| 				hx = rh / bh | ||||
| 				console.log(this.scaleNum) | ||||
| 				wx = rw / bw; | ||||
| 				hx = rh / bh; | ||||
| 			} else { | ||||
| 				console.log('非全屏') | ||||
| 				console.log(this.$store.state.app.sidebar.opened) | ||||
| 				if (this.$store.state.app.sidebar.opened) { | ||||
| 					wx = (rw-280) / bw | ||||
| 					hx = (rh-116) / bh | ||||
| 					wx = (rw - 280) / bw; | ||||
| 					hx = (rh - 116) / bh; | ||||
| 				} else { | ||||
| 					wx = (rw-85) / bw | ||||
| 					hx = (rh-116) / bh | ||||
| 				} | ||||
| 			} | ||||
| 			this.scaleNum = wx | ||||
| 					wx = (rw - 85) / bw; | ||||
| 					hx = (rh - 116) / bh; | ||||
| 				} | ||||
| 			} | ||||
| 			this.scaleNum = wx; | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
|  | ||||
|   | ||||
| @@ -1,22 +1,24 @@ | ||||
| <!--  | ||||
|     filename: MaterialCost.vue | ||||
|     author: liubin | ||||
|     date: 2023-12-06 09:09:27 | ||||
|     description:  | ||||
| --> | ||||
|  | ||||
| <template> | ||||
| 	<Container name="能耗" size="middle" style=""> | ||||
| 		<TimePrompt class="timeShow" :timestr="timestr" /> | ||||
| 	<Container | ||||
| 		name="能耗" | ||||
| 		size="middle" | ||||
| 		style=""> | ||||
| 		<EnergeTop /> | ||||
| 		<SplitLine :horizontal="true" /> | ||||
| 		<div class="" style="flex: 2; padding: 8px"> | ||||
| 		<div | ||||
| 			class="" | ||||
| 			style="flex: 2; padding: 8px"> | ||||
| 			<div | ||||
| 				class="header-line" | ||||
| 				style="margin: 8px 0 16px; display: flex; align-items: center"> | ||||
| 				<h2 class="" style="margin: 0; color: #0ee8fe; margin-right: 12px"> | ||||
| 				<h2 | ||||
| 					class="" | ||||
| 					style="margin: 0; color: #0ee8fe; margin-right: 12px"> | ||||
| 					能耗趋势图 | ||||
| 				</h2> | ||||
| 				<TimePrompt | ||||
| 					class="timeShow" | ||||
| 					:timestr="timestr" /> | ||||
| 				<!-- <Switcher /> --> | ||||
| 				<div> | ||||
| 					<!-- <span class="lgd lgd-total">总量</span> --> | ||||
| @@ -32,11 +34,21 @@ | ||||
| 					justify-content: space-between; | ||||
| 				"> | ||||
| 				<SelectorBtnGroup | ||||
| 					:options="['电耗能', '天然气I', '天然气II']" @emitFun='toggleType' :active='chartType'/> | ||||
| 				<SelectorBtnGroup :options="['周', '月', '年']" @emitFun='toggleDate' :active='chartTime'/> | ||||
| 					:options="['电耗能', '天然气I', '天然气II']" | ||||
| 					@emitFun="toggleType" | ||||
| 					:active="chartType" /> | ||||
| 				<SelectorBtnGroup | ||||
| 					:options="['周', '月', '年']" | ||||
| 					@emitFun="toggleDate" | ||||
| 					:active="chartTime" /> | ||||
| 			</div> | ||||
| 			<div class="chart" style="height: 200px; margin-top: 8px;"> | ||||
| 				<GasChart :chartType='chartType' :chartTime='chartTime' @emitFun='dateUpdate'/> | ||||
| 			<div | ||||
| 				class="chart" | ||||
| 				style="height: 200px; margin-top: 8px"> | ||||
| 				<GasChart | ||||
| 					:chartType="chartType" | ||||
| 					:chartTime="chartTime" | ||||
| 					@emitFun="dateUpdate" /> | ||||
| 			</div> | ||||
| 		</div> | ||||
| 	</Container> | ||||
| @@ -51,7 +63,7 @@ import EnergeTop from './EnergeTop'; | ||||
| import GasChart from '../components/GasChart.vue'; | ||||
| import SelectorBtnGroup from '../components/SelectorBtnGroup'; | ||||
| import TimePrompt from '../components/TimePrompt'; | ||||
| import { switchShowTime } from '../utils' | ||||
| import { switchShowTime } from '../utils'; | ||||
| export default { | ||||
| 	name: 'EnergeCost', | ||||
| 	components: { | ||||
| @@ -61,48 +73,43 @@ export default { | ||||
| 		EnergeTop, | ||||
| 		GasChart, | ||||
| 		SelectorBtnGroup, | ||||
| 		TimePrompt | ||||
| 		TimePrompt, | ||||
| 	}, | ||||
| 	props: {}, | ||||
| 	data() { | ||||
| 		return { | ||||
| 			chartType: '电耗能', | ||||
| 			chartTime: '周', | ||||
| 			timestr: '' | ||||
| 			timestr: '', | ||||
| 		}; | ||||
| 	}, | ||||
| 	mounted() { | ||||
|     this.timestr = switchShowTime(this.chartTime) | ||||
| 		this.timestr = switchShowTime(this.chartTime); | ||||
| 	}, | ||||
| 	computed: { | ||||
| 		gasInfoMsg() { | ||||
| 			return this.$store.state.websocket.gasInfo | ||||
| 			return this.$store.state.websocket.gasInfo; | ||||
| 		}, | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		// 切换能源 | ||||
| 		toggleType(val) { | ||||
| 			this.chartType = val | ||||
| 			this.chartType = val; | ||||
| 		}, | ||||
| 		// 切换时间 | ||||
| 		toggleDate(val) { | ||||
| 			this.chartTime = val | ||||
| 			this.timestr = switchShowTime(val) | ||||
| 			this.chartTime = val; | ||||
| 			this.timestr = switchShowTime(val); | ||||
| 		}, | ||||
| 		// 数据更新 | ||||
| 		dateUpdate() { | ||||
|       this.timestr = switchShowTime(this.chartTime) | ||||
|     } | ||||
| 			this.timestr = switchShowTime(this.chartTime); | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
|  | ||||
| <style scoped lang="scss"> | ||||
| .timeShow { | ||||
|   position: absolute; | ||||
|   top: 20px; | ||||
|   left: 120px; | ||||
| } | ||||
| .lgd { | ||||
| 	color: #fff; | ||||
|  | ||||
|   | ||||
| @@ -1,7 +1,11 @@ | ||||
| <template> | ||||
| 	<div class="gas-handle" style="flex: 2"> | ||||
| 		<Container name="烟气处理" size="large" style=""> | ||||
| 			<TimePrompt class="timeShow" :timestr="timestr" /> | ||||
| 	<div | ||||
| 		class="gas-handle" | ||||
| 		style="flex: 2"> | ||||
| 		<Container | ||||
| 			name="烟气处理" | ||||
| 			size="large" | ||||
| 			style=""> | ||||
| 			<div | ||||
| 				class="" | ||||
| 				style=" | ||||
| @@ -24,7 +28,13 @@ | ||||
| 						"> | ||||
| 						氧气含量 | ||||
| 					</span> | ||||
| 					<span style="font-size: 20px; line-height: 1.24; flex: 1">{{exhaustGasInfo?.O2_float ? (Number(exhaustGasInfo.O2_float)).toFixed(2) : ''}}%</span> | ||||
| 					<span style="font-size: 20px; line-height: 1.24; flex: 1"> | ||||
| 						{{ | ||||
| 							exhaustGasInfo?.O2_float | ||||
| 								? Number(exhaustGasInfo.O2_float).toFixed(2) | ||||
| 								: '' | ||||
| 						}}% | ||||
| 					</span> | ||||
| 				</ShadowRect> | ||||
| 				<ShadowRect> | ||||
| 					<div | ||||
| @@ -39,7 +49,13 @@ | ||||
| 						<p style="margin: 0; line-height: inherit">氮氧化物</p> | ||||
| 						<p style="margin: 0; line-height: inherit">排放浓度</p> | ||||
| 					</div> | ||||
| 					<span style="font-size: 20px; line-height: 1.24; flex: 1.2">{{exhaustGasInfo?.NOX_float ? (Number(exhaustGasInfo.NOX_float)).toFixed(2) : ''}}mg/m³</span> | ||||
| 					<span style="font-size: 20px; line-height: 1.24; flex: 1.2"> | ||||
| 						{{ | ||||
| 							exhaustGasInfo?.NOX_float | ||||
| 								? Number(exhaustGasInfo.NOX_float).toFixed(2) | ||||
| 								: '' | ||||
| 						}}mg/m³ | ||||
| 					</span> | ||||
| 				</ShadowRect> | ||||
|  | ||||
| 				<ShadowRect> | ||||
| @@ -55,10 +71,16 @@ | ||||
| 						<p style="margin: 0; line-height: inherit">二氧化硫</p> | ||||
| 						<p style="margin: 0; line-height: inherit">排放浓度</p> | ||||
| 					</div> | ||||
| 					<span style="font-size: 20px; line-height: 1.24; flex: 1">{{exhaustGasInfo?.SO2_float ? (Number(exhaustGasInfo.SO2_float)).toFixed(2) : ''}}mg/m³</span> | ||||
| 					<span style="font-size: 20px; line-height: 1.24; flex: 1"> | ||||
| 						{{ | ||||
| 							exhaustGasInfo?.SO2_float | ||||
| 								? Number(exhaustGasInfo.SO2_float).toFixed(2) | ||||
| 								: '' | ||||
| 						}}mg/m³ | ||||
| 					</span> | ||||
| 				</ShadowRect> | ||||
|  | ||||
| 				<ShadowRect> | ||||
| 				<!-- <ShadowRect> | ||||
| 					<span | ||||
| 						style=" | ||||
| 							font-size: 20px; | ||||
| @@ -70,17 +92,30 @@ | ||||
| 						"> | ||||
| 						颗粒物浓度 | ||||
| 					</span> | ||||
| 					<span style="font-size: 20px; line-height: 1.24; flex: 1.2">{{exhaustGasInfo?.dust_float ? (Number(exhaustGasInfo.dust_float)).toFixed(2) : ''}}mg/m³</span> | ||||
| 				</ShadowRect> | ||||
| 					<span style="font-size: 20px; line-height: 1.24; flex: 1.2"> | ||||
| 						{{ | ||||
| 							exhaustGasInfo?.dust_float | ||||
| 								? Number(exhaustGasInfo.dust_float).toFixed(2) | ||||
| 								: '' | ||||
| 						}}mg/m³ | ||||
| 					</span> | ||||
| 				</ShadowRect> --> | ||||
| 			</div> | ||||
| 			<KilnLine :horizontal="true" /> | ||||
| 			<div class="" style="flex: 2; padding: 8px"> | ||||
| 			<div | ||||
| 				class="" | ||||
| 				style="flex: 2; padding: 8px"> | ||||
| 				<div | ||||
| 					class="header-line" | ||||
| 					style="margin-bottom: 10px; display: flex; align-items: center"> | ||||
| 					<h2 class="" style="margin: 5px 0; color: #0ee8fe; margin-right: 12px"> | ||||
| 					<h2 | ||||
| 						class="" | ||||
| 						style="margin: 5px 0; color: #0ee8fe; margin-right: 12px"> | ||||
| 						烟气趋势图 | ||||
| 					</h2> | ||||
| 					<TimePrompt | ||||
| 						class="timeShow" | ||||
| 						:timestr="timestr" /> | ||||
| 					<!-- <Switcher /> --> | ||||
| 					<div> | ||||
| 						<!-- <span class="lgd lgd-total">总量</span> --> | ||||
| @@ -95,12 +130,23 @@ | ||||
| 						align-items: center; | ||||
| 						justify-content: space-between; | ||||
| 					"> | ||||
| 					<!-- :options="['氧气含量', '二氧化硫', '氮氧化物', '颗粒物']" --> | ||||
| 					<SelectorBtnGroup | ||||
| 						:options="['氧气含量', '二氧化硫', '氮氧化物', '颗粒物']" @emitFun='toggleType' :active='chartType'/> | ||||
| 					<SelectorBtnGroup :options="['日', '周', '月', '年']" @emitFun='toggleDate' :active='chartTime' /> | ||||
| 						:options="['氧气含量', '二氧化硫', '氮氧化物']" | ||||
| 						@emitFun="toggleType" | ||||
| 						:active="chartType" /> | ||||
| 					<SelectorBtnGroup | ||||
| 						:options="['日', '周', '月', '年']" | ||||
| 						@emitFun="toggleDate" | ||||
| 						:active="chartTime" /> | ||||
| 				</div> | ||||
| 				<div class="chart" style="height: 250px;margin-top: 10px;"> | ||||
| 					<FlueGasChart :chartType='chartType' :chartTime='chartTime' @emitFun='dateUpdate'/> | ||||
| 				<div | ||||
| 					class="chart" | ||||
| 					style="height: 250px; margin-top: 10px"> | ||||
| 					<FlueGasChart | ||||
| 						:chartType="chartType" | ||||
| 						:chartTime="chartTime" | ||||
| 						@emitFun="dateUpdate" /> | ||||
| 				</div> | ||||
| 			</div> | ||||
| 		</Container> | ||||
| @@ -115,7 +161,7 @@ import KilnLine from '../components/line'; | ||||
| import SelectorBtnGroup from '../components/SelectorBtnGroup'; | ||||
| import FlueGasChart from '../components/FlueGasChart'; | ||||
| import TimePrompt from '../components/TimePrompt'; | ||||
| import { switchShowTime } from '../utils' | ||||
| import { switchShowTime } from '../utils'; | ||||
|  | ||||
| export default { | ||||
| 	name: 'GasHandle', | ||||
| @@ -125,49 +171,44 @@ export default { | ||||
| 		KilnLine, | ||||
| 		SelectorBtnGroup, | ||||
| 		FlueGasChart, | ||||
| 		TimePrompt | ||||
| 		TimePrompt, | ||||
| 	}, | ||||
| 	props: {}, | ||||
| 	data() { | ||||
| 		return { | ||||
| 			chartType: '氧气含量', | ||||
| 			chartTime: '日', | ||||
| 			timestr: '' | ||||
| 			timestr: '', | ||||
| 		}; | ||||
| 	}, | ||||
| 	computed: { | ||||
| 		exhaustGasInfo() { | ||||
| 			return this.$store.state.websocket.exhaustGasInfo | ||||
| 		} | ||||
| 			return this.$store.state.websocket.exhaustGasInfo; | ||||
| 		}, | ||||
| 	}, | ||||
| 	mounted() { | ||||
|     this.timestr = switchShowTime(this.chartTime) | ||||
| 		this.timestr = switchShowTime(this.chartTime); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		// 烟气 | ||||
| 		toggleType(val) { | ||||
| 			console.log('烟气' + val) | ||||
| 			this.chartType = val | ||||
| 			console.log('烟气' + val); | ||||
| 			this.chartType = val; | ||||
| 		}, | ||||
| 		// 切换时间 | ||||
| 		toggleDate(val) { | ||||
| 			this.chartTime = val | ||||
| 			this.timestr = switchShowTime(val) | ||||
| 			this.chartTime = val; | ||||
| 			this.timestr = switchShowTime(val); | ||||
| 		}, | ||||
| 		// 数据更新 | ||||
| 		dateUpdate() { | ||||
|       this.timestr = switchShowTime(this.chartTime) | ||||
|     } | ||||
| 			this.timestr = switchShowTime(this.chartTime); | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
|  | ||||
| <style scoped lang="scss"> | ||||
| .timeShow { | ||||
|   position: absolute; | ||||
|   top: 20px; | ||||
|   left: 170px; | ||||
| } | ||||
| .gas-handle { | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1,62 +1,47 @@ | ||||
| <!--  | ||||
|     filename: MaterialCost.vue | ||||
|     author: liubin | ||||
|     date: 2023-12-06 09:09:27 | ||||
|     description:  | ||||
| --> | ||||
|  | ||||
| <template> | ||||
| 	<Container name="原料用量统计" size="middle" style=""> | ||||
| 		<div style="flex: 1; display: flex; gap: 8px;flex-direction: column;"> | ||||
| 	<Container | ||||
| 		name="原料用量统计" | ||||
| 		size="middle" | ||||
| 		style=""> | ||||
| 		<TimePrompt | ||||
| 			class="timeShow" | ||||
| 			:timestr="timestr" /> | ||||
| 		<div style="flex: 1; display: flex; gap: 8px; flex-direction: column"> | ||||
| 			<div | ||||
| 				class="absolute" | ||||
| 				style=" | ||||
| 					flex:3; | ||||
| 					flex: 2; | ||||
| 					padding: 12px 12px 0 12px; | ||||
| 					display: grid; | ||||
| 					grid-template-columns: repeat(3, 1fr); | ||||
| 					grid-auto-rows: repeat(4, 1fr); | ||||
| 					grid-auto-rows: repeat(3, 1fr); | ||||
| 					gap: 8px; | ||||
| 				"> | ||||
| 				<ShadowRect v-for="(item, index) in materialMsg1" :key="index" :rounded="false"> | ||||
| 				<ShadowRect | ||||
| 					v-for="(item, index) in materialMsg" | ||||
| 					:key="index" | ||||
| 					:rounded="false"> | ||||
| 					<div | ||||
| 						class="material" | ||||
| 						style=" | ||||
| 							flex: 1; | ||||
| 							padding-bottom: 3px; | ||||
| 							padding-bottom: 18px; | ||||
| 							padding-top: 18px; | ||||
| 							display: flex; | ||||
| 							flex-direction: column; | ||||
| 							gap: 4px; | ||||
| 							align-items: center; | ||||
| 							justify-content: center; | ||||
| 						"> | ||||
| 						<span style="color: #0ee8e4; font-weight: 500; font-size: 32px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;"> | ||||
| 							{{item.materialUsed}} | ||||
| 						</span> | ||||
| 						<span style="color: #fff; font-size: 16px; letter-spacing: 1px"> | ||||
| 							- {{item.materialName}}/kg- | ||||
| 						</span> | ||||
| 					</div> | ||||
| 				</ShadowRect> | ||||
| 			</div> | ||||
| 			<div style="flex:1; | ||||
| 					padding: 0 12px 12px 12px; | ||||
| 					display: grid; | ||||
| 					grid-template-columns: repeat(4, 1fr); | ||||
| 					gap: 8px;"> | ||||
| 				<ShadowRect v-for="(item, index) in materialMsg2" :key="index" :rounded="false"> | ||||
| 					<div | ||||
| 						class="material" | ||||
| 						<span | ||||
| 							style=" | ||||
| 							flex: 1; | ||||
| 							padding-bottom: 3px; | ||||
| 							display: flex; | ||||
| 							flex-direction: column; | ||||
| 							gap: 4px; | ||||
| 							align-items: center; | ||||
| 							justify-content: center; | ||||
| 								color: #0ee8e4; | ||||
| 								font-weight: 500; | ||||
| 								font-size: 32px; | ||||
| 								white-space: nowrap; | ||||
| 								overflow: hidden; | ||||
| 								text-overflow: ellipsis; | ||||
| 							"> | ||||
| 						<span style="color: #0ee8e4; font-weight: 500; font-size: 32px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;"> | ||||
| 							{{ item.materialUsed }} | ||||
| 						</span> | ||||
| 						<span style="color: #fff; font-size: 16px; letter-spacing: 1px"> | ||||
| @@ -66,30 +51,39 @@ | ||||
| 				</ShadowRect> | ||||
| 			</div> | ||||
| 		</div> | ||||
| 		 | ||||
| 	</Container> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import Container from '../components/Container'; | ||||
| import ShadowRect from '../components/ShadowRect.vue'; | ||||
| import TimePrompt from '../components/TimePrompt'; | ||||
| import { switchShowTime } from '../utils'; | ||||
| export default { | ||||
| 	name: 'MaterialCost', | ||||
| 	components: { Container, ShadowRect }, | ||||
| 	components: { Container, ShadowRect, TimePrompt }, | ||||
| 	props: {}, | ||||
| 	data() { | ||||
| 		return {}; | ||||
| 		return { | ||||
| 			timestr: '', | ||||
| 		}; | ||||
| 	}, | ||||
| 	computed: { | ||||
| 		materialMsg1() { | ||||
| 			return this.$store.state.websocket.material.slice(0,9) | ||||
| 		materialMsg() { | ||||
| 			return this.$store.state.websocket.material; | ||||
| 		}, | ||||
| 		materialMsg2() { | ||||
| 			return this.$store.state.websocket.material.slice(9) | ||||
| 		} | ||||
| 	}, | ||||
| 	mounted() { | ||||
| 		this.timestr = switchShowTime('日'); | ||||
| 	}, | ||||
| 	methods: {}, | ||||
| }; | ||||
| </script> | ||||
|  | ||||
| <style scoped lang="scss"></style> | ||||
| <style lang="scss" scoped> | ||||
| .timeShow { | ||||
| 	position: absolute; | ||||
| 	top: 20px; | ||||
| 	left: 210px; | ||||
| } | ||||
| </style> | ||||
|   | ||||
| @@ -1,8 +1,11 @@ | ||||
| <template> | ||||
| 	<div id='kilnContainerB' ref='kilnContainerB' style="width: 100%;height: 100%;"> | ||||
| 	<div | ||||
| 			id='kilnContainer' | ||||
| 			ref='kilnContainer' | ||||
| 		id="kilnContainerB" | ||||
| 		ref="kilnContainerB" | ||||
| 		style="width: 100%; height: 100%"> | ||||
| 		<div | ||||
| 			id="kilnContainer" | ||||
| 			ref="kilnContainer" | ||||
| 			class="KilnDataBoard" | ||||
| 			style=" | ||||
| 				position: absolute; | ||||
| @@ -17,14 +20,21 @@ | ||||
| 				gap: 24px; | ||||
| 			" | ||||
| 			:style="{ transform: 'scale(' + scaleNum + ')' }"> | ||||
| 			<KHeader :isFullScreen='isFullScreen' @screenfullChange='screenfullChange' topTitle='窑炉生产运行驾驶舱'/> | ||||
| 			<KHeader | ||||
| 				:isFullScreen="isFullScreen" | ||||
| 				@screenfullChange="screenfullChange" | ||||
| 				topTitle="窑炉生产运行驾驶舱" /> | ||||
| 			<div | ||||
| 				class="main-body" | ||||
| 				style="flex: 1; display: flex; gap: 20px; padding: 0px 16px"> | ||||
| 				<div class="left-side" style="flex: 2"> | ||||
| 				<div | ||||
| 					class="left-side" | ||||
| 					style="flex: 2"> | ||||
| 					<LeftFour /> | ||||
| 				</div> | ||||
| 				<div class="right-side" style="flex: 1"> | ||||
| 				<div | ||||
| 					class="right-side" | ||||
| 					style="flex: 1"> | ||||
| 					<RightTwo /> | ||||
| 				</div> | ||||
| 			</div> | ||||
| @@ -36,8 +46,8 @@ | ||||
| import KHeader from '../components/Header'; | ||||
| import LeftFour from './LeftFour'; | ||||
| import RightTwo from './RightTwo.vue'; | ||||
| import screenfull from 'screenfull' | ||||
| import { debounce } from '@/utils/debounce' | ||||
| import screenfull from 'screenfull'; | ||||
| import { debounce } from '@/utils/debounce'; | ||||
|  | ||||
| export default { | ||||
| 	name: 'Kiln', | ||||
| @@ -49,7 +59,7 @@ export default { | ||||
| 	computed: { | ||||
| 		sidebarStatus() { | ||||
| 			return this.$store.state.app.sidebar.opened; | ||||
| 		} | ||||
| 		}, | ||||
| 	}, | ||||
| 	// provide() { | ||||
| 	// 	return { | ||||
| @@ -59,43 +69,44 @@ export default { | ||||
| 	data() { | ||||
| 		return { | ||||
| 			isFullScreen: false, | ||||
| 			scaleNum: 0.8 | ||||
| 			scaleNum: 0.8, | ||||
| 		}; | ||||
| 	}, | ||||
| 	watch: { | ||||
| 		sidebarStatus() { | ||||
| 			this.boxReset() | ||||
| 			this.boxReset(); | ||||
| 		}, | ||||
| 	}, | ||||
| 	created() { | ||||
| 		this.init() | ||||
| 	}, | ||||
| 	destroy() { | ||||
| 		this.destroy() | ||||
| 		this.init(); | ||||
| 	}, | ||||
| 	mounted() { | ||||
| 		this.boxReset = debounce(() => { | ||||
|       this.resetSize() | ||||
|     }, 300) | ||||
|     this.boxReset() | ||||
|     window.addEventListener('resize', () => { | ||||
|       this.boxReset() | ||||
|     }) | ||||
| 		this.boxReset(); | ||||
| 		window.addEventListener('resize', this.boxReset); | ||||
| 	}, | ||||
| 	destroyed() { | ||||
| 		window.removeEventListener('resize', this.boxReset); | ||||
| 		this.destroy(); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		boxReset() { | ||||
| 			debounce(() => { | ||||
| 				this.resetSize(); | ||||
| 			}, 300)(); | ||||
| 		}, | ||||
| 		change() { | ||||
|       this.isFullScreen = screenfull.isFullscreen | ||||
| 			this.isFullScreen = screenfull.isFullscreen; | ||||
| 		}, | ||||
|  | ||||
| 		init() { | ||||
| 			if (screenfull.isEnabled) { | ||||
|         screenfull.on('change', this.change) | ||||
| 				screenfull.on('change', this.change); | ||||
| 			} | ||||
| 		}, | ||||
|  | ||||
| 		destroy() { | ||||
| 			if (screenfull.isEnabled) { | ||||
|         screenfull.off('change', this.change) | ||||
| 				screenfull.off('change', this.change); | ||||
| 			} | ||||
| 		}, | ||||
| 		// 全屏 | ||||
| @@ -103,40 +114,35 @@ export default { | ||||
| 			if (!screenfull.isEnabled) { | ||||
| 				this.$message({ | ||||
| 					message: 'you browser can not work', | ||||
|           type: 'warning' | ||||
|         }) | ||||
|         return false | ||||
| 					type: 'warning', | ||||
| 				}); | ||||
| 				return false; | ||||
| 			} | ||||
|       screenfull.toggle(this.$refs.kilnContainerB) | ||||
| 			screenfull.toggle(this.$refs.kilnContainerB); | ||||
| 		}, | ||||
| 		resetSize() { | ||||
|       let kilnContainerBox = document.getElementById('kilnContainer') | ||||
| 			console.log(kilnContainerBox) | ||||
|       let rw = parseFloat(window.innerWidth) | ||||
|       let rh = parseFloat(window.innerHeight) | ||||
|       let bw = parseFloat(kilnContainerBox.style.width) | ||||
|       let bh = parseFloat(kilnContainerBox.style.height) | ||||
| 			let wx = 0 | ||||
| 			let hx = 0 | ||||
| 			let kilnContainerBox = document.getElementById('kilnContainer'); | ||||
| 			let rw = parseFloat(window.innerWidth); | ||||
| 			let rh = parseFloat(window.innerHeight); | ||||
| 			let bw = parseFloat(kilnContainerBox.style.width); | ||||
| 			let bh = parseFloat(kilnContainerBox.style.height); | ||||
| 			let wx = 0; | ||||
| 			let hx = 0; | ||||
| 			if (screenfull.isFullscreen) { | ||||
| 				console.log('全屏') | ||||
| 				wx = rw / bw | ||||
| 				hx = rh / bh | ||||
| 				console.log(this.scaleNum) | ||||
| 				wx = rw / bw; | ||||
| 				hx = rh / bh; | ||||
| 			} else { | ||||
| 				console.log('非全屏') | ||||
| 				console.log(this.$store.state.app.sidebar.opened) | ||||
| 				if (this.$store.state.app.sidebar.opened) { | ||||
| 					wx = (rw-280) / bw | ||||
| 					hx = (rh-116) / bh | ||||
| 					wx = (rw - 280) / bw; | ||||
| 					hx = (rh - 116) / bh; | ||||
| 				} else { | ||||
| 					wx = (rw-85) / bw | ||||
| 					hx = (rh-116) / bh | ||||
| 				} | ||||
| 			} | ||||
| 			this.scaleNum = wx | ||||
| 					wx = (rw - 85) / bw; | ||||
| 					hx = (rh - 116) / bh; | ||||
| 				} | ||||
| 			} | ||||
| 			this.scaleNum = wx; | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
|  | ||||
|   | ||||
| @@ -29,6 +29,8 @@ export const switchShowTime = (type) => { | ||||
|       } | ||||
|       if (lastMonth === 12) { | ||||
|         startYear = currentYear - 1 | ||||
|       }else{ | ||||
|         startYear = currentYear | ||||
|       } | ||||
|       startTime = startYear+'.'+lastMonth+'.'+day | ||||
|       endTime = currentYear+'.'+(nowTime.getMonth()+1)+'.28' | ||||
|   | ||||
| @@ -1,25 +1,35 @@ | ||||
| <template> | ||||
|   <div style="flex: 1;" class="orderContainer"> | ||||
|     <Container name="订单完成情况" size="small" style=""> | ||||
|       <TimePrompt class="timeShow" :timestr="timestr" /> | ||||
|       <div style="padding: 5px 10px;"> | ||||
|         <dv-scroll-board :config="config" style="width:575px;height:230px" ref='orderScrollBoard'/> | ||||
| 	<div | ||||
| 		style="flex: 1" | ||||
| 		class="orderContainer"> | ||||
| 		<Container | ||||
| 			name="订单完成情况" | ||||
| 			size="small" | ||||
| 			style=""> | ||||
| 			<TimePrompt | ||||
| 				class="timeShow" | ||||
| 				:timestr="timestr" /> | ||||
| 			<div style="padding: 5px 10px"> | ||||
| 				<dv-scroll-board | ||||
| 					:config="config" | ||||
| 					style="width: 575px; height: 230px" | ||||
| 					ref="orderScrollBoard" /> | ||||
| 			</div> | ||||
| 		</Container> | ||||
| 	</div> | ||||
| </template> | ||||
| <script> | ||||
| import Container from '../components/Container' | ||||
| import Container from '../components/Container'; | ||||
| import TimePrompt from '../components/TimePrompt'; | ||||
| import { formatDate } from '@/utils' | ||||
| import { switchShowTime } from '../utils' | ||||
| import { formatDate } from '@/utils'; | ||||
| import { switchShowTime } from '../utils'; | ||||
| export default { | ||||
| 	name: 'OrderStatus', | ||||
| 	components: { Container, TimePrompt }, | ||||
| 	computed: { | ||||
| 		order() { | ||||
|       return this.$store.state.websocket.order | ||||
|     } | ||||
| 			return this.$store.state.websocket.order; | ||||
| 		}, | ||||
| 	}, | ||||
| 	data() { | ||||
| 		return { | ||||
| @@ -31,37 +41,51 @@ export default { | ||||
| 				evenRowBGC: 'rgba(14, 32, 62, 0.8)', | ||||
| 				columnWidth: [155, 160, 150], | ||||
| 				data: [], | ||||
|         rowNum: 6 | ||||
|       } | ||||
|     } | ||||
| 				rowNum: 6, | ||||
| 			}, | ||||
| 		}; | ||||
| 	}, | ||||
| 	mounted() { | ||||
|     this.timestr = switchShowTime('日') | ||||
| 		this.timestr = switchShowTime('日'); | ||||
| 	}, | ||||
| 	watch: { | ||||
| 		order: { | ||||
| 			handler() { | ||||
| 				let outArr = this.order.map((item) => [ | ||||
| 					formatDate(item.planStartTime) || '', | ||||
|           `<span title=${item.customerName || ''}>${item.customerName || ''}</span>`, | ||||
|           `<span title=${item.specifications || ''}>${item.specifications || ''}</span>`, | ||||
|           `<span style="display:inline-block;width:60px;">${item.completeRate?(item.completeRate*100).toFixed(2)+'%':'0%'}</span> | ||||
| 					`<span title=${item.customerName || ''}>${ | ||||
| 						item.customerName || '' | ||||
| 					}</span>`, | ||||
| 					`<span title=${item.specifications || ''}>${ | ||||
| 						item.specifications || '' | ||||
| 					}</span>`, | ||||
| 					`<span style="display:inline-block;width:60px;">${ | ||||
| 						item.completeRate | ||||
| 							? (item.completeRate * 100).toFixed(2) + '%' | ||||
| 							: '0%' | ||||
| 					}</span> | ||||
|           <div style="display:inline-block;height:20px;margin-top:-5px;vertical-align:middle;"> | ||||
|             <svg xmlns="http://www.w3.org/200/svg" height="20" width="20"> | ||||
|               <circle cx="10" cy="10" r="6" fill="none" stroke="#283851" stroke-width="4" stroke-linecap="round"/> | ||||
|               <circle style="transform-origin: center;transform: rotate(-90deg);" id="J_progress_bar" cx="10" cy="10" r="6" fill="none" stroke="#47FF27" stroke-width="4" stroke-dasharray="${item.completeRate?item.completeRate.toFixed(2)*37.68+','+((1-item.completeRate.toFixed(2))*37.68):(0+','+37.68)}"/> | ||||
|               <circle style="transform-origin: center;transform: rotate(-90deg);" id="J_progress_bar" cx="10" cy="10" r="6" fill="none" stroke="#47FF27" stroke-width="4" stroke-dasharray="${ | ||||
| 								item.completeRate | ||||
| 									? item.completeRate.toFixed(2) * 37.68 + | ||||
| 									  ',' + | ||||
| 									  (1 - item.completeRate.toFixed(2)) * 37.68 | ||||
| 									: 0 + ',' + 37.68 | ||||
| 							}"/> | ||||
|             </svg> | ||||
|           </div>` | ||||
|           </div>`, | ||||
| 				]); | ||||
|       this.config.data = outArr | ||||
|       this.$refs['orderScrollBoard'].updateRows(outArr) | ||||
|       this.timestr = switchShowTime('日') | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 				this.config.data = outArr; | ||||
| 				this.$refs['orderScrollBoard'].updateRows(outArr); | ||||
| 				this.timestr = switchShowTime('日'); | ||||
| 			}, | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
| <style lang='scss' scoped> | ||||
| <style lang="scss" scoped> | ||||
| .timeShow { | ||||
| 	position: absolute; | ||||
| 	top: 20px; | ||||
|   | ||||
| @@ -1,8 +1,11 @@ | ||||
| <template> | ||||
| 	<div id='wholePlantContainerB' ref='wholePlantContainerB' style="width: 100%;height: 100%;"> | ||||
| 	<div | ||||
| 			id='wholePlantContainer' | ||||
| 			ref='wholePlantContainer' | ||||
| 		id="wholePlantContainerB" | ||||
| 		ref="wholePlantContainerB" | ||||
| 		style="width: 100%; height: 100%"> | ||||
| 		<div | ||||
| 			id="wholePlantContainer" | ||||
| 			ref="wholePlantContainer" | ||||
| 			class="wholePlantBoard" | ||||
| 			style=" | ||||
| 				position: absolute; | ||||
| @@ -17,17 +20,26 @@ | ||||
| 				gap: 24px; | ||||
| 			" | ||||
| 			:style="{ transform: 'scale(' + scaleNum + ')' }"> | ||||
| 			<KHeader :isFullScreen='isFullScreen' @screenfullChange='screenfullChange' topTitle='全厂总览驾驶舱'/> | ||||
| 			<KHeader | ||||
| 				:isFullScreen="isFullScreen" | ||||
| 				@screenfullChange="screenfullChange" | ||||
| 				topTitle="全厂总览驾驶舱" /> | ||||
| 			<div | ||||
| 				class="main-body" | ||||
| 				style="flex: 1; display: flex; gap: 20px; padding: 0px 16px"> | ||||
| 				<div class="left-side" style="flex: 1"> | ||||
| 				<div | ||||
| 					class="left-side" | ||||
| 					style="flex: 1"> | ||||
| 					<LeftTwo /> | ||||
| 				</div> | ||||
| 				<div class="middle-side" style="flex: 1"> | ||||
| 				<div | ||||
| 					class="middle-side" | ||||
| 					style="flex: 1"> | ||||
| 					<MiddleTwo /> | ||||
| 				</div> | ||||
| 				<div class="right-side" style="flex: 1"> | ||||
| 				<div | ||||
| 					class="right-side" | ||||
| 					style="flex: 1"> | ||||
| 					<RightTwo /> | ||||
| 				</div> | ||||
| 			</div> | ||||
| @@ -40,8 +52,8 @@ import KHeader from '../components/Header'; | ||||
| import LeftTwo from './LeftTwo'; | ||||
| import MiddleTwo from './MiddleTwo'; | ||||
| import RightTwo from './RightTwo'; | ||||
| import screenfull from 'screenfull' | ||||
| import { debounce } from '@/utils/debounce' | ||||
| import screenfull from 'screenfull'; | ||||
| import { debounce } from '@/utils/debounce'; | ||||
|  | ||||
| export default { | ||||
| 	name: 'wholePlantBoard', | ||||
| @@ -49,7 +61,7 @@ export default { | ||||
| 		KHeader, | ||||
| 		LeftTwo, | ||||
| 		MiddleTwo, | ||||
| 		RightTwo | ||||
| 		RightTwo, | ||||
| 	}, | ||||
| 	// provide() { | ||||
| 	// 	return { | ||||
| @@ -59,40 +71,39 @@ export default { | ||||
| 	data() { | ||||
| 		return { | ||||
| 			isFullScreen: false, | ||||
| 			scaleNum: 0.8 | ||||
| 			scaleNum: 0.8, | ||||
| 		}; | ||||
| 	}, | ||||
| 	created() { | ||||
| 		this.init() | ||||
| 		this.init(); | ||||
| 	}, | ||||
| 	destroy() { | ||||
| 		this.destroy() | ||||
| 		this.destroy(); | ||||
| 	}, | ||||
| 	mounted() { | ||||
| 		this.boxReset = debounce(() => { | ||||
|       this.resetSize() | ||||
|     }, 300) | ||||
|     this.boxReset() | ||||
|     window.addEventListener('resize', () => { | ||||
|       this.boxReset() | ||||
|     }) | ||||
| 		console.log('mounted...........') | ||||
| 		this.boxReset(); | ||||
| 		window.addEventListener('resize', this.boxReset); | ||||
| 	}, | ||||
| 	destroyed() { | ||||
| 		console.log('destroyed...........') | ||||
| 		window.removeEventListener('resize', this.boxReset); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		boxReset() { | ||||
| 			debounce(() => { | ||||
| 				this.resetSize(); | ||||
| 			}, 300)(); | ||||
| 		}, | ||||
| 		change() { | ||||
|       this.isFullScreen = screenfull.isFullscreen | ||||
| 			this.isFullScreen = screenfull.isFullscreen; | ||||
| 		}, | ||||
| 		init() { | ||||
| 			if (screenfull.isEnabled) { | ||||
|         screenfull.on('change', this.change) | ||||
| 				screenfull.on('change', this.change); | ||||
| 			} | ||||
| 		}, | ||||
| 		destroy() { | ||||
| 			if (screenfull.isEnabled) { | ||||
|         screenfull.off('change', this.change) | ||||
| 				screenfull.off('change', this.change); | ||||
| 			} | ||||
| 		}, | ||||
| 		// 全屏 | ||||
| @@ -100,39 +111,37 @@ export default { | ||||
| 			if (!screenfull.isEnabled) { | ||||
| 				this.$message({ | ||||
| 					message: 'you browser can not work', | ||||
|           type: 'warning' | ||||
|         }) | ||||
|         return false | ||||
| 					type: 'warning', | ||||
| 				}); | ||||
| 				return false; | ||||
| 			} | ||||
|       screenfull.toggle(this.$refs.wholePlantContainerB) | ||||
| 			screenfull.toggle(this.$refs.wholePlantContainerB); | ||||
| 		}, | ||||
| 		resetSize() { | ||||
|       let wholePlantContainerBox = document.getElementById('wholePlantContainer') | ||||
|       let rw = parseFloat(window.innerWidth) | ||||
|       let rh = parseFloat(window.innerHeight) | ||||
|       let bw = parseFloat(wholePlantContainerBox.style.width) | ||||
|       let bh = parseFloat(wholePlantContainerBox.style.height) | ||||
| 			let wx = 0 | ||||
| 			let hx = 0 | ||||
| 			let wholePlantContainerBox = document.getElementById( | ||||
| 				'wholePlantContainer' | ||||
| 			); | ||||
| 			let rw = parseFloat(window.innerWidth); | ||||
| 			let rh = parseFloat(window.innerHeight); | ||||
| 			let bw = parseFloat(wholePlantContainerBox.style.width); | ||||
| 			let bh = parseFloat(wholePlantContainerBox.style.height); | ||||
| 			let wx = 0; | ||||
| 			let hx = 0; | ||||
| 			if (screenfull.isFullscreen) { | ||||
| 				console.log('全屏') | ||||
| 				wx = rw / bw | ||||
| 				hx = rh / bh | ||||
| 				console.log(this.scaleNum) | ||||
| 				wx = rw / bw; | ||||
| 				hx = rh / bh; | ||||
| 			} else { | ||||
| 				console.log('非全屏') | ||||
| 				console.log(this.$store.state.app.sidebar.opened) | ||||
| 				if (this.$store.state.app.sidebar.opened) { | ||||
| 					wx = (rw-280) / bw | ||||
| 					hx = (rh-116) / bh | ||||
| 					wx = (rw - 280) / bw; | ||||
| 					hx = (rh - 116) / bh; | ||||
| 				} else { | ||||
| 					wx = (rw-85) / bw | ||||
| 					hx = (rh-116) / bh | ||||
| 				} | ||||
| 			} | ||||
| 			this.scaleNum = wx | ||||
| 					wx = (rw - 85) / bw; | ||||
| 					hx = (rh - 116) / bh; | ||||
| 				} | ||||
| 			} | ||||
| 			this.scaleNum = wx; | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
|  | ||||
|   | ||||
| @@ -4,31 +4,27 @@ | ||||
| 		<search-bar | ||||
| 			:formConfigs="formConfig" | ||||
| 			ref="searchBarForm" | ||||
|       @headBtnClick="buttonClick" | ||||
|     /> | ||||
| 			@headBtnClick="buttonClick" /> | ||||
| 		<!-- 列表 --> | ||||
| 		<base-table | ||||
| 			:page="queryParams.pageNo" | ||||
| 			:limit="queryParams.pageSize" | ||||
| 			:table-props="tableProps" | ||||
| 			:table-data="list" | ||||
|       :max-height="tableH" | ||||
|     > | ||||
| 			:max-height="tableH"> | ||||
| 			<method-btn | ||||
| 				v-if="tableBtn.length" | ||||
| 				slot="handleBtn" | ||||
| 				:width="160" | ||||
| 				label="操作" | ||||
| 				:method-list="tableBtn" | ||||
|         @clickBtn="handleClick" | ||||
|       /> | ||||
| 				@clickBtn="handleClick" /> | ||||
| 		</base-table> | ||||
| 		<pagination | ||||
| 			:page.sync="queryParams.pageNo" | ||||
| 			:limit.sync="queryParams.pageSize" | ||||
| 			:total="total" | ||||
|       @pagination="getList" | ||||
|     /> | ||||
| 			@pagination="getList" /> | ||||
| 		<!-- 新增 --> | ||||
| 		<base-dialog | ||||
| 			:dialogTitle="addOrEditTitle" | ||||
| @@ -36,9 +32,10 @@ | ||||
| 			@cancel="handleCancel" | ||||
| 			@confirm="handleConfirm" | ||||
| 			:before-close="handleCancel" | ||||
| 			width="50%" | ||||
|     > | ||||
| 			<add-or-update ref="addOrUpdate" @successSubmit="successSubmit" /> | ||||
| 			width="50%"> | ||||
| 			<add-or-update | ||||
| 				ref="addOrUpdate" | ||||
| 				@successSubmit="successSubmit" /> | ||||
| 		</base-dialog> | ||||
| 		<!-- 装车 --> | ||||
| 		<base-dialog | ||||
| @@ -47,73 +44,78 @@ | ||||
| 			@cancel="handleCancel2" | ||||
| 			@confirm="handleConfirm2" | ||||
| 			:before-close="handleCancel2" | ||||
| 			width="50%" | ||||
|     > | ||||
| 			<loaded-page ref="loadedPage" @successSubmit="successSubmit2" /> | ||||
| 			width="50%"> | ||||
| 			<loaded-page | ||||
| 				ref="loadedPage" | ||||
| 				@successSubmit="successSubmit2" /> | ||||
| 		</base-dialog> | ||||
| 		<!-- 发货详情 --> | ||||
|     <delivery-log-detail ref='deliveryLogDetail' v-if='showDetail' /> | ||||
| 		<delivery-log-detail | ||||
| 			ref="deliveryLogDetail" | ||||
| 			v-if="showDetail" /> | ||||
| 	</div> | ||||
| </template> | ||||
| <script> | ||||
| import { parseTime } from '@/utils/ruoyi' | ||||
| import { deliveryLogPage, deliveryLogDelete } from '@/api/base/delivery' | ||||
| import AddOrUpdate from './components/addOrUpdate' | ||||
| import LoadedPage from './components/loadedPage' | ||||
| import DeliveryLogDetail from './components/deliveryLogDetail.vue' | ||||
| import { parseTime } from '@/utils/ruoyi'; | ||||
| import { deliveryLogPage, deliveryLogDelete } from '@/api/base/delivery'; | ||||
| import AddOrUpdate from './components/addOrUpdate'; | ||||
| import LoadedPage from './components/loadedPage'; | ||||
| import DeliveryLogDetail from './components/deliveryLogDetail.vue'; | ||||
| import tableHeightMixin from '@/mixins/lb/tableHeightMixin'; | ||||
| const tableProps = [ | ||||
| 	{ | ||||
| 		prop: 'orderName', | ||||
| 		label: '订单名', | ||||
| 		minWidth: 100, | ||||
|     showOverflowtooltip: true | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'name', | ||||
| 		label: '发货单名称', | ||||
| 		minWidth: 100, | ||||
|     showOverflowtooltip: true | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'deliveryTime', | ||||
| 		label: '发货时间', | ||||
| 		filter: parseTime, | ||||
|     minWidth: 160 | ||||
| 		minWidth: 160, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'code', | ||||
| 		label: '发货单号', | ||||
|     showOverflowtooltip: true | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'deliverPerName', | ||||
| 		label: '发货负责人', | ||||
|     minWidth: 100 | ||||
| 		minWidth: 100, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'principal', | ||||
| 		label: '运输负责人', | ||||
|     minWidth: 100 | ||||
| 		minWidth: 100, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'principalCall', | ||||
| 		label: '运输联系方式', | ||||
| 		minWidth: 110, | ||||
|     showOverflowtooltip: true | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'principalCost', | ||||
| 		label: '运输费用', | ||||
|     align: 'right' | ||||
| 		align: 'right', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'remark', | ||||
| 		label: '备注', | ||||
|     showOverflowtooltip: true | ||||
|   } | ||||
| ] | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| ]; | ||||
| export default { | ||||
|   name: "DeliveryLog", | ||||
| 	name: 'DeliveryLog', | ||||
| 	mixins: [tableHeightMixin], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			formConfig: [ | ||||
| @@ -121,34 +123,38 @@ export default { | ||||
| 					type: 'input', | ||||
| 					label: '订单名', | ||||
| 					param: 'orderName', | ||||
|           defaultSelect: '' | ||||
| 					defaultSelect: '', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'input', | ||||
| 					label: '发货单名称', | ||||
|           param: 'name' | ||||
| 					param: 'name', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'input', | ||||
| 					label: '发货单号', | ||||
|           param: 'code' | ||||
| 					param: 'code', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					btnName: '查询', | ||||
| 					name: 'search', | ||||
|           color: 'primary' | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
|           type: this.$auth.hasPermi('extend:delivery-log:create') ? 'separate' : '', | ||||
| 					type: this.$auth.hasPermi('extend:delivery-log:create') | ||||
| 						? 'separate' | ||||
| 						: '', | ||||
| 				}, | ||||
| 				{ | ||||
|           type: this.$auth.hasPermi('extend:delivery-log:create') ? 'button' : '', | ||||
| 					type: this.$auth.hasPermi('extend:delivery-log:create') | ||||
| 						? 'button' | ||||
| 						: '', | ||||
| 					btnName: '新增', | ||||
| 					name: 'add', | ||||
| 					color: 'success', | ||||
|           plain: true | ||||
|         } | ||||
| 					plain: true, | ||||
| 				}, | ||||
| 			], | ||||
| 			// 查询参数 | ||||
| 			queryParams: { | ||||
| @@ -156,158 +162,163 @@ export default { | ||||
| 				pageSize: 20, | ||||
| 				orderName: '', | ||||
| 				code: '', | ||||
|         name: '' | ||||
| 				name: '', | ||||
| 			}, | ||||
| 			tableProps, | ||||
| 			list: [], | ||||
|       tableH: this.tableHeight(260), | ||||
| 			total: 0, | ||||
| 			tableBtn: [ | ||||
| 				this.$auth.hasPermi('extend:delivery-log:loaded') | ||||
| 					? { | ||||
| 							type: 'loaded', | ||||
|               btnName: '装车' | ||||
| 							btnName: '装车', | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 				this.$auth.hasPermi('extend:delivery-log:detail') | ||||
| 					? { | ||||
| 							type: 'detail', | ||||
|               btnName: '详情' | ||||
| 							btnName: '详情', | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 				this.$auth.hasPermi('extend:delivery-log:update') | ||||
| 					? { | ||||
| 							type: 'edit', | ||||
|               btnName: '编辑' | ||||
| 							btnName: '编辑', | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 				this.$auth.hasPermi('extend:delivery-log:delete') | ||||
| 					? { | ||||
| 							type: 'delete', | ||||
|               btnName: '删除' | ||||
| 							btnName: '删除', | ||||
| 					  } | ||||
|           : undefined | ||||
| 					: undefined, | ||||
| 			].filter((v) => v), | ||||
| 			addOrEditTitle: '', | ||||
| 			centervisible: false, | ||||
| 			centervisible2: false, | ||||
|       showDetail: false | ||||
|     } | ||||
| 			showDetail: false, | ||||
| 		}; | ||||
| 	}, | ||||
| 	created() { | ||||
|     window.addEventListener('resize', () => { | ||||
|       this.tableH = this.tableHeight(260) | ||||
|     }) | ||||
| 		if (location.href.indexOf('?') > 0) { | ||||
|       let arr = location.href.split('?')[1] | ||||
|       this.formConfig[0].defaultSelect = decodeURI(arr.split('=')[1]) | ||||
| 			let arr = location.href.split('?')[1]; | ||||
| 			this.formConfig[0].defaultSelect = decodeURI(arr.split('=')[1]); | ||||
| 		} else { | ||||
|       this.formConfig[0].defaultSelect = '' | ||||
| 			this.formConfig[0].defaultSelect = ''; | ||||
| 		} | ||||
|     this.queryParams.orderName = this.formConfig[0].defaultSelect | ||||
| 		this.queryParams.orderName = this.formConfig[0].defaultSelect; | ||||
| 		this.getList(); | ||||
| 	}, | ||||
| 	components: { AddOrUpdate, LoadedPage, DeliveryLogDetail }, | ||||
| 	watch: { | ||||
|     $route: 'initData' | ||||
| 		$route: 'initData', | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		initData(to) { | ||||
| 			if (to.name === 'DeliveryLog') { | ||||
| 				if (location.href.indexOf('?') > 0) { | ||||
|           let arr = location.href.split('?')[1] | ||||
|           this.formConfig[0].defaultSelect = decodeURI(arr.split('=')[1]) | ||||
| 					let arr = location.href.split('?')[1]; | ||||
| 					this.formConfig[0].defaultSelect = decodeURI(arr.split('=')[1]); | ||||
| 				} else { | ||||
|           this.formConfig[0].defaultSelect = '' | ||||
| 					this.formConfig[0].defaultSelect = ''; | ||||
| 				} | ||||
|         this.queryParams.orderName = this.formConfig[0].defaultSelect | ||||
|         this.getList() | ||||
| 				this.queryParams.orderName = this.formConfig[0].defaultSelect; | ||||
| 				this.getList(); | ||||
| 			} | ||||
| 		}, | ||||
| 		getList() { | ||||
|       deliveryLogPage({...this.queryParams}).then(res => { | ||||
|         let arr = res.data.list || [] | ||||
|         arr && arr.map(item => { | ||||
|           item.principalCost = item.principalCost.toFixed(2) | ||||
|         }) | ||||
|         this.list = arr | ||||
|         this.total = res.data.total || 0 | ||||
|       }) | ||||
| 			deliveryLogPage({ ...this.queryParams }).then((res) => { | ||||
| 				let arr = res.data.list || []; | ||||
| 				arr && | ||||
| 					arr.map((item) => { | ||||
| 						item.principalCost = item.principalCost.toFixed(2); | ||||
| 					}); | ||||
| 				this.list = arr; | ||||
| 				this.total = res.data.total || 0; | ||||
| 			}); | ||||
| 		}, | ||||
| 		buttonClick(val) { | ||||
| 			if (val.btnName === 'search') { | ||||
|         this.queryParams.name = val.name | ||||
|         this.queryParams.orderName = val.orderName | ||||
|         this.queryParams.code = val.code | ||||
|         this.getList() | ||||
| 				this.queryParams.name = val.name; | ||||
| 				this.queryParams.orderName = val.orderName; | ||||
| 				this.queryParams.code = val.code; | ||||
| 				this.getList(); | ||||
| 			} else { | ||||
|         this.addOrEditTitle = '新增' | ||||
|         this.centervisible = true | ||||
| 				this.addOrEditTitle = '新增'; | ||||
| 				this.centervisible = true; | ||||
| 				this.$nextTick(() => { | ||||
|           this.$refs.addOrUpdate.init() | ||||
|         }) | ||||
| 					this.$refs.addOrUpdate.init(); | ||||
| 				}); | ||||
| 			} | ||||
| 		}, | ||||
| 		handleClick(val) { | ||||
|       console.log(val) | ||||
| 			console.log(val); | ||||
| 			switch (val.type) { | ||||
| 				case 'edit': | ||||
|           this.addOrEditTitle = '编辑' | ||||
|           this.centervisible = true | ||||
| 					this.addOrEditTitle = '编辑'; | ||||
| 					this.centervisible = true; | ||||
| 					this.$nextTick(() => { | ||||
|             this.$refs.addOrUpdate.init(val.data.id) | ||||
|           }) | ||||
|           break | ||||
| 						this.$refs.addOrUpdate.init(val.data.id); | ||||
| 					}); | ||||
| 					break; | ||||
| 				case 'delete': | ||||
|           this.handleDelete(val.data) | ||||
|           break | ||||
| 					this.handleDelete(val.data); | ||||
| 					break; | ||||
| 				case 'loaded': | ||||
|           this.centervisible2 = true | ||||
| 					this.centervisible2 = true; | ||||
| 					this.$nextTick(() => { | ||||
|             this.$refs.loadedPage.init(val.data.id, val.data.code, val.data.orderId) | ||||
|           }) | ||||
|           break | ||||
| 						this.$refs.loadedPage.init( | ||||
| 							val.data.id, | ||||
| 							val.data.code, | ||||
| 							val.data.orderId | ||||
| 						); | ||||
| 					}); | ||||
| 					break; | ||||
| 				default: | ||||
|           this.showDetail = true | ||||
| 					this.showDetail = true; | ||||
| 					this.$nextTick(() => { | ||||
|             this.$refs.deliveryLogDetail.init(val.data) | ||||
|           }) | ||||
| 						this.$refs.deliveryLogDetail.init(val.data); | ||||
| 					}); | ||||
| 			} | ||||
| 		}, | ||||
| 		// 新增 | ||||
| 		handleCancel() { | ||||
|       this.$refs.addOrUpdate.formClear() | ||||
|       this.centervisible = false | ||||
|       this.addOrEditTitle = '' | ||||
| 			this.$refs.addOrUpdate.formClear(); | ||||
| 			this.centervisible = false; | ||||
| 			this.addOrEditTitle = ''; | ||||
| 		}, | ||||
| 		handleConfirm() { | ||||
|       this.$refs.addOrUpdate.submitForm() | ||||
| 			this.$refs.addOrUpdate.submitForm(); | ||||
| 		}, | ||||
| 		successSubmit() { | ||||
|       this.handleCancel() | ||||
|       this.getList() | ||||
| 			this.handleCancel(); | ||||
| 			this.getList(); | ||||
| 		}, | ||||
| 		// 删除 | ||||
| 		handleDelete(val) { | ||||
|       this.$modal.confirm('是否确认删除发货单名为"' + val.name + '"的数据项?').then(function() { | ||||
|           return deliveryLogDelete({ id: val.id }) | ||||
|         }).then(() => { | ||||
| 			this.$modal | ||||
| 				.confirm('是否确认删除发货单名为"' + val.name + '"的数据项?') | ||||
| 				.then(function () { | ||||
| 					return deliveryLogDelete({ id: val.id }); | ||||
| 				}) | ||||
| 				.then(() => { | ||||
| 					this.getList(); | ||||
|           this.$modal.msgSuccess("操作成功"); | ||||
|         }).catch(() => {}); | ||||
| 					this.$modal.msgSuccess('操作成功'); | ||||
| 				}) | ||||
| 				.catch(() => {}); | ||||
| 		}, | ||||
| 		// 装车 | ||||
| 		handleCancel2() { | ||||
|       this.$refs.loadedPage.formClear() | ||||
|       this.centervisible2 = false | ||||
| 			this.$refs.loadedPage.formClear(); | ||||
| 			this.centervisible2 = false; | ||||
| 		}, | ||||
| 		handleConfirm2() { | ||||
|       this.$refs.loadedPage.submitForm() | ||||
| 			this.$refs.loadedPage.submitForm(); | ||||
| 		}, | ||||
| 		successSubmit2() { | ||||
|       this.handleCancel2() | ||||
|       this.getList() | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 			this.handleCancel2(); | ||||
| 			this.getList(); | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
| @@ -4,127 +4,121 @@ | ||||
| 		<search-bar | ||||
| 			:formConfigs="formConfig" | ||||
| 			ref="searchBarForm" | ||||
|       @headBtnClick="buttonClick" | ||||
|     /> | ||||
| 			@headBtnClick="buttonClick" /> | ||||
| 		<!-- 列表 --> | ||||
| 		<base-table | ||||
| 			:page="queryParams.pageNo" | ||||
| 			:limit="queryParams.pageSize" | ||||
| 			:table-props="tableProps" | ||||
| 			:table-data="list" | ||||
|       :max-height="tableH" | ||||
|     > | ||||
| 			:max-height="tableH"> | ||||
| 			<method-btn | ||||
| 				v-if="tableBtn.length" | ||||
| 				slot="handleBtn" | ||||
| 				:width="80" | ||||
| 				label="操作" | ||||
| 				:method-list="tableBtn" | ||||
|         @clickBtn="handleClick" | ||||
|       /> | ||||
| 				@clickBtn="handleClick" /> | ||||
| 		</base-table> | ||||
| 		<pagination | ||||
| 			:page.sync="queryParams.pageNo" | ||||
| 			:limit.sync="queryParams.pageSize" | ||||
| 			:total="total" | ||||
|       @pagination="getList" | ||||
|     /> | ||||
| 			@pagination="getList" /> | ||||
| 		<!-- 详情抽屉 --> | ||||
|     <delivery-log-det-detail ref='deliveryLogDetail'/> | ||||
| 		<delivery-log-det-detail ref="deliveryLogDetail" /> | ||||
| 	</div> | ||||
| </template> | ||||
| <script> | ||||
| import { deliveryProgressPage } from '@/api/base/delivery' | ||||
| import DeliveryLogDetDetail from './components/deliveryLogDetDetail.vue' | ||||
| import { deliveryProgressPage } from '@/api/base/delivery'; | ||||
| import DeliveryLogDetDetail from './components/deliveryLogDetDetail.vue'; | ||||
| import tableHeightMixin from '@/mixins/lb/tableHeightMixin'; | ||||
| const tableProps = [ | ||||
| 	{ | ||||
| 		prop: 'orderName', | ||||
| 		label: '订单名', | ||||
|     showOverflowtooltip: true | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'customerName', | ||||
| 		label: '客户名称', | ||||
|     showOverflowtooltip: true | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'unit', | ||||
|     label: '单位' | ||||
| 		label: '单位', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'orderNum', | ||||
|     label: '订单数量' | ||||
| 		label: '订单数量', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'num', | ||||
|     label: '发货数量' | ||||
| 		label: '发货数量', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'rate', | ||||
|     label: '累计发货比例(%)' | ||||
|   } | ||||
| ] | ||||
| 		label: '累计发货比例(%)', | ||||
| 	}, | ||||
| ]; | ||||
| export default { | ||||
|   name: "DeliveryLogDet", | ||||
| 	name: 'DeliveryLogDet', | ||||
| 	mixins: [tableHeightMixin], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			formConfig: [ | ||||
| 				{ | ||||
| 					type: 'input', | ||||
| 					label: '订单名', | ||||
|           param: 'orderName' | ||||
| 					param: 'orderName', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					btnName: '查询', | ||||
| 					name: 'search', | ||||
|           color: 'primary' | ||||
|         } | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 			], | ||||
| 			// 查询参数 | ||||
| 			queryParams: { | ||||
| 				pageNo: 1, | ||||
| 				pageSize: 20, | ||||
|         orderName: '' | ||||
| 				orderName: '', | ||||
| 			}, | ||||
| 			tableProps, | ||||
| 			list: [], | ||||
|       tableH: this.tableHeight(260), | ||||
| 			total: 0, | ||||
| 			tableBtn: [ | ||||
| 				this.$auth.hasPermi('extend:delivery-log-det:detail') | ||||
| 					? { | ||||
| 							type: 'detail', | ||||
|               btnName: '详情' | ||||
|             } | ||||
|           : undefined | ||||
|       ].filter((v) => v) | ||||
| 							btnName: '详情', | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 			].filter((v) => v), | ||||
| 		}; | ||||
| 	}, | ||||
| 	components: { DeliveryLogDetDetail }, | ||||
| 	created() { | ||||
|     window.addEventListener('resize', () => { | ||||
|       this.tableH = this.tableHeight(260) | ||||
|     }) | ||||
| 		this.getList(); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		getList() { | ||||
|       deliveryProgressPage({...this.queryParams}).then(res => { | ||||
|         this.list = res.data.list || [] | ||||
|         this.total = res.data.total || 0 | ||||
|       }) | ||||
| 			deliveryProgressPage({ ...this.queryParams }).then((res) => { | ||||
| 				this.list = res.data.list || []; | ||||
| 				this.total = res.data.total || 0; | ||||
| 			}); | ||||
| 		}, | ||||
| 		buttonClick(val) { | ||||
|       this.queryParams.orderName = val.orderName | ||||
|       this.getList() | ||||
| 			this.queryParams.orderName = val.orderName; | ||||
| 			this.getList(); | ||||
| 		}, | ||||
| 		handleClick(val) { | ||||
|       console.log(val) | ||||
| 			console.log(val); | ||||
| 			this.$nextTick(() => { | ||||
|         this.$refs.deliveryLogDetail.init(val.data) | ||||
|       }) | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 				this.$refs.deliveryLogDetail.init(val.data); | ||||
| 			}); | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
| @@ -76,10 +76,6 @@ export default { | ||||
| 					name: this.chartData[i].objName + this.chartData[i].objCode, | ||||
| 					type: 'bar', | ||||
| 					barMaxWidth: 20, | ||||
| 					label: { | ||||
| 						show: true, | ||||
| 						position: 'top', | ||||
| 					}, | ||||
| 					data: [], | ||||
| 				}; | ||||
| 				legendData.push(this.chartData[i].objName + this.chartData[i].objCode); | ||||
|   | ||||
| @@ -1,8 +1,7 @@ | ||||
| <template> | ||||
| 	<div | ||||
| 		class="searchBarBox divHeight" | ||||
| 		ref="searchBarRef" | ||||
| 		:style="{ paddingRight: isFold ? '55px' : '0px' }"> | ||||
| 		ref="searchBarRef"> | ||||
| 		<el-form | ||||
| 			:inline="true" | ||||
| 			class="demo-form-inline"> | ||||
| @@ -187,8 +186,11 @@ | ||||
| 					@click="resetBtn"> | ||||
| 					重置 | ||||
| 				</el-button> | ||||
| 				<span class="separateStyle"></span> | ||||
| 				<span | ||||
| 					class="separateStyle" | ||||
| 					v-hasPermi="['analysis:contrast-analysis:export']"></span> | ||||
| 				<el-button | ||||
| 					v-hasPermi="['analysis:contrast-analysis:export']" | ||||
| 					type="primary" | ||||
| 					size="small" | ||||
| 					plain | ||||
| @@ -197,13 +199,6 @@ | ||||
| 				</el-button> | ||||
| 			</el-form-item> | ||||
| 		</el-form> | ||||
| 		<span | ||||
| 			v-if="isFold" | ||||
| 			class="foldClass" | ||||
| 			@click="switchMode"> | ||||
| 			{{ isExpand ? '收起' : '展开' }} | ||||
| 			<svg-icon :icon-class="isExpand ? 'upward' : 'downward'" /> | ||||
| 		</span> | ||||
| 	</div> | ||||
| </template> | ||||
| <script> | ||||
| @@ -214,16 +209,8 @@ import { getFactoryList } from '@/api/core/base/factory'; | ||||
| import moment from 'moment'; | ||||
| export default { | ||||
| 	name: 'searchArea', | ||||
| 	props: { | ||||
| 		isFold: { | ||||
| 			// 多行模式(默认否) | ||||
| 			type: Boolean, | ||||
| 			default: false, | ||||
| 		}, | ||||
| 	}, | ||||
| 	data() { | ||||
| 		return { | ||||
| 			isExpand: false, // 展开收起 | ||||
| 			// 查询参数 | ||||
| 			queryParams: { | ||||
| 				energyTypeId: null, | ||||
| @@ -522,16 +509,6 @@ export default { | ||||
| 			let value = new Date(newData).getTime(); | ||||
| 			return value; | ||||
| 		}, | ||||
| 		switchMode() { | ||||
| 			// 展开和收起切换 | ||||
| 			this.isExpand = !this.isExpand; | ||||
| 			const element = this.$refs.searchBarRef; | ||||
| 			if (this.isExpand) { | ||||
| 				element.classList.remove('divHeight'); | ||||
| 			} else { | ||||
| 				element.classList.add('divHeight'); | ||||
| 			} | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
| @@ -570,21 +547,6 @@ export default { | ||||
| 		margin-bottom: 4px; | ||||
| 	} | ||||
| } | ||||
| .searchBarBox .foldClass { | ||||
| 	position: absolute; | ||||
| 	top: 14px; | ||||
| 	right: 0; | ||||
| 	cursor: pointer; | ||||
| 	font-size: 12px; | ||||
| 	color: #0b58ff; | ||||
| } | ||||
| .searchBarBox .foldClass .iconfont { | ||||
| 	font-size: 14px; | ||||
| } | ||||
| .divHeight { | ||||
| 	height: 45px; | ||||
| 	overflow: hidden; | ||||
| } | ||||
| .separateStyle { | ||||
| 	display: inline-block; | ||||
| 	width: 1px; | ||||
|   | ||||
| @@ -4,7 +4,6 @@ | ||||
| 		id="contrastAnalysisBox"> | ||||
| 		<!-- 搜索工作栏 --> | ||||
| 		<search-area | ||||
| 			:isFold="isFold" | ||||
| 			@submit="getList" | ||||
| 			@export="exportExl" /> | ||||
| 		<div v-show="chartData.length"> | ||||
| @@ -38,7 +37,6 @@ export default { | ||||
| 	mixins: [tableHeightMixin], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			isFold: false, | ||||
| 			chartData: [], | ||||
| 			timeDim: '', | ||||
| 			tableProps: [], | ||||
| @@ -46,13 +44,6 @@ export default { | ||||
| 			tableH: this.tableHeight(250) / 2, | ||||
| 		}; | ||||
| 	}, | ||||
| 	mounted() { | ||||
| 		window.addEventListener('resize', () => { | ||||
| 			this.isFold = this.searchBarWidth('contrastAnalysisBox', 1437); | ||||
| 			// console.log(document.getElementById("contrastAnalysisBox").offsetWidth) | ||||
| 		}); | ||||
| 		this.isFold = this.searchBarWidth('contrastAnalysisBox', 1437); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		_setTableHeight() { | ||||
| 			this.tableH = this.tableHeight(250) / 2; | ||||
|   | ||||
| @@ -2,40 +2,39 @@ | ||||
| 	<div | ||||
| 		id="analysischartLine" | ||||
| 		style="width: 100%" | ||||
|     :style="{ height: chartHeight + 'px' }" | ||||
|   ></div> | ||||
| 		:style="{ height: chartHeight + 'px' }"></div> | ||||
| </template> | ||||
| <script> | ||||
| import * as echarts from 'echarts' | ||||
| import resize from '@/utils/chartMixins/resize' | ||||
| import * as echarts from 'echarts'; | ||||
| import resize from '@/utils/chartMixins/resize'; | ||||
| export default { | ||||
|   name: "LineChart", | ||||
| 	name: 'LineChart', | ||||
| 	mixins: [resize], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			chartDom: '', | ||||
| 			chart: '', | ||||
|       chartHeight: this.tableHeight(370) | ||||
|     } | ||||
| 			chartHeight: this.tableHeight(370), | ||||
| 		}; | ||||
| 	}, | ||||
| 	props: { | ||||
| 		chartData: { | ||||
| 			type: Array, | ||||
| 			required: true, | ||||
| 			default: () => { | ||||
|         return [] | ||||
|       } | ||||
|     } | ||||
| 				return []; | ||||
| 			}, | ||||
| 		}, | ||||
| 	}, | ||||
| 	watch: { | ||||
| 		chartData: function () { | ||||
|       this.getChart() | ||||
|     } | ||||
| 			this.getChart(); | ||||
| 		}, | ||||
| 	}, | ||||
| 	mounted() { | ||||
| 		window.addEventListener('resize', () => { | ||||
|       this.chartHeight = this.tableHeight(370) | ||||
|     }) | ||||
| 			this.chartHeight = this.tableHeight(370); | ||||
| 		}); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		getChart() { | ||||
| @@ -44,44 +43,36 @@ export default { | ||||
| 				this.chart !== '' && | ||||
| 				this.chart !== undefined | ||||
| 			) { | ||||
|         this.chart.dispose() // 页面多次刷新会出现警告,Dom已经初始化了一个实例,这是销毁实例 | ||||
| 				this.chart.dispose(); // 页面多次刷新会出现警告,Dom已经初始化了一个实例,这是销毁实例 | ||||
| 			} | ||||
|       this.chartDom = document.getElementById('analysischartLine') | ||||
|       this.chart = echarts.init(this.chartDom) | ||||
| 			this.chartDom = document.getElementById('analysischartLine'); | ||||
| 			this.chart = echarts.init(this.chartDom); | ||||
| 			if (this.chartData.length === 0) { | ||||
|         return false | ||||
| 				return false; | ||||
| 			} | ||||
|       let arr = this.chartData[0].type // [水,电,煤] | ||||
|       let keys = Object.keys(this.chartData[0]) | ||||
| 			let arr = this.chartData[0].type; // [水,电,煤] | ||||
| 			let keys = Object.keys(this.chartData[0]); | ||||
| 			let yData = [ | ||||
| 				{ | ||||
| 					name: '本期', | ||||
| 					type: 'bar', | ||||
| 					data: [], | ||||
| 					barWidth: 20, | ||||
|           label: { | ||||
|             show: true, | ||||
|             position: 'top' | ||||
|           } | ||||
| 				}, | ||||
| 				{ | ||||
| 					name: '上期', | ||||
| 					type: 'bar', | ||||
| 					data: [], | ||||
| 					barWidth: 20, | ||||
|           label: { | ||||
|             show: true, | ||||
|             position: 'top' | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
| 				}, | ||||
| 			]; | ||||
| 			for (let j = 0; j < arr.length; j++) { | ||||
| 				for (let k = 0; k < keys.length; k++) { | ||||
| 					if (keys[k].indexOf(arr[j] + '_上期') > -1) { | ||||
|             yData[1].data.push(this.chartData[0][keys[k]]) | ||||
| 						yData[1].data.push(this.chartData[0][keys[k]]); | ||||
| 					} | ||||
| 					if (keys[k].indexOf(arr[j] + '_能源消耗') > -1) { | ||||
|             yData[0].data.push(this.chartData[0][keys[k]]) | ||||
| 						yData[0].data.push(this.chartData[0][keys[k]]); | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| @@ -90,49 +81,51 @@ export default { | ||||
| 				tooltip: { | ||||
| 					trigger: 'axis', | ||||
| 					axisPointer: { | ||||
|             type: 'shadow' | ||||
| 						type: 'shadow', | ||||
| 					}, | ||||
| 					formatter: function (params) { | ||||
| 						return ( | ||||
| 							params[0].axisValue + | ||||
| 							`<br>` + | ||||
|               params.map((item) => { | ||||
|                 let str = `<span style="display:inline-block;width:8px;height:8px;margin: 0 8px 0 -3px;border-radius:2px;background-color:${item.color};"></span>` | ||||
|                 let seriesNameStr = `<span style="display:inline-block;">${item.seriesName}</span>` | ||||
| 						let value = item.value ? item.value : '-' | ||||
| 						let valueStr = `<span style="display:inline-block;margin-left:10px;color:rgba(0,0,0,0.45);">${value}</span>` | ||||
| 							params | ||||
| 								.map((item) => { | ||||
| 									let str = `<span style="display:inline-block;width:8px;height:8px;margin: 0 8px 0 -3px;border-radius:2px;background-color:${item.color};"></span>`; | ||||
| 									let seriesNameStr = `<span style="display:inline-block;">${item.seriesName}</span>`; | ||||
| 									let value = item.value ? item.value : '-'; | ||||
| 									let valueStr = `<span style="display:inline-block;margin-left:10px;color:rgba(0,0,0,0.45);">${value}</span>`; | ||||
| 									return `<span style="display:flex; justify-content:space-between; margin-bottom: 2px"> | ||||
| 									<span>${str}${seriesNameStr}</span> | ||||
| 									<span>${valueStr}</span> | ||||
| 								</span>` | ||||
|               }).join(``) | ||||
|             ) | ||||
|           } | ||||
| 								</span>`; | ||||
| 								}) | ||||
| 								.join(``) | ||||
| 						); | ||||
| 					}, | ||||
| 				}, | ||||
| 				legend: { | ||||
| 					right: '1%', | ||||
| 					icon: 'rect', | ||||
| 					itemHeight: 8, | ||||
|           itemWidth: 8 | ||||
| 					itemWidth: 8, | ||||
| 				}, | ||||
| 				grid: { | ||||
| 					left: '1%', | ||||
| 					right: '1%', | ||||
| 					bottom: '3%', | ||||
|           containLabel: true | ||||
| 					containLabel: true, | ||||
| 				}, | ||||
| 				yAxis: { | ||||
| 					type: 'value', | ||||
|           boundaryGap: [0, 0.01] | ||||
| 					boundaryGap: [0, 0.01], | ||||
| 				}, | ||||
| 				xAxis: { | ||||
| 					type: 'category', | ||||
|           data: arr | ||||
| 					data: arr, | ||||
| 				}, | ||||
|         series: yData | ||||
|       } | ||||
| 				series: yData, | ||||
| 			}; | ||||
| 			option && this.chart.setOption(option); | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
| @@ -80,10 +80,13 @@ | ||||
| 			</el-button> | ||||
| 		</el-form-item> | ||||
| 		<el-form-item> | ||||
| 			<span class="separateStyle"></span> | ||||
| 			<span | ||||
| 				class="separateStyle" | ||||
| 				v-hasPermi="['analysis:qoq-analysis:export']"></span> | ||||
| 		</el-form-item> | ||||
| 		<el-form-item> | ||||
| 			<el-button | ||||
| 				v-hasPermi="['analysis:qoq-analysis:export']" | ||||
| 				type="primary" | ||||
| 				size="small" | ||||
| 				@click="exportData" | ||||
|   | ||||
| @@ -68,9 +68,9 @@ export default { | ||||
|  | ||||
| 			var option = { | ||||
| 				color: ['#288AFF'], | ||||
| 				// tooltip: { | ||||
| 				//   trigger: 'axis' | ||||
| 				// }, | ||||
| 				tooltip: { | ||||
| 					trigger: 'axis', | ||||
| 				}, | ||||
| 				grid: { | ||||
| 					left: '4%', | ||||
| 					right: '1%', | ||||
|   | ||||
| @@ -1,8 +1,7 @@ | ||||
| <template> | ||||
| 	<div | ||||
| 		class="searchBarBox divHeight" | ||||
| 		ref="searchBarRef" | ||||
| 		:style="{ paddingRight: isFold ? '55px' : '0px' }"> | ||||
| 		class="searchBarBox" | ||||
| 		ref="searchBarRef"> | ||||
| 		<el-form | ||||
| 			:inline="true" | ||||
| 			class="demo-form-inline"> | ||||
| @@ -170,8 +169,11 @@ | ||||
| 					@click="resetBtn"> | ||||
| 					重置 | ||||
| 				</el-button> | ||||
| 				<span class="separateStyle"></span> | ||||
| 				<span | ||||
| 					class="separateStyle" | ||||
| 					v-hasPermi="['analysis:energy-analysis:query']"></span> | ||||
| 				<el-button | ||||
| 					v-hasPermi="['analysis:energy-analysis:query']" | ||||
| 					type="primary" | ||||
| 					size="small" | ||||
| 					plain | ||||
| @@ -180,13 +182,6 @@ | ||||
| 				</el-button> | ||||
| 			</el-form-item> | ||||
| 		</el-form> | ||||
| 		<span | ||||
| 			v-if="isFold" | ||||
| 			class="foldClass" | ||||
| 			@click="switchMode"> | ||||
| 			{{ isExpand ? '收起' : '展开' }} | ||||
| 			<svg-icon :icon-class="isExpand ? 'upward' : 'downward'" /> | ||||
| 		</span> | ||||
| 	</div> | ||||
| </template> | ||||
| <script> | ||||
| @@ -195,16 +190,8 @@ import { getEnergyTypeListAll } from '@/api/base/energyType'; | ||||
| import moment from 'moment'; | ||||
| export default { | ||||
| 	name: 'searchArea', | ||||
| 	props: { | ||||
| 		isFold: { | ||||
| 			// 多行模式(默认否) | ||||
| 			type: Boolean, | ||||
| 			default: false, | ||||
| 		}, | ||||
| 	}, | ||||
| 	data() { | ||||
| 		return { | ||||
| 			isExpand: false, // 展开收起 | ||||
| 			// 查询参数 | ||||
| 			queryParams: { | ||||
| 				energyTypeId: null, | ||||
| @@ -506,16 +493,6 @@ export default { | ||||
| 			let value = new Date(newData).getTime(); | ||||
| 			return value; | ||||
| 		}, | ||||
| 		switchMode() { | ||||
| 			// 展开和收起切换 | ||||
| 			this.isExpand = !this.isExpand; | ||||
| 			const element = this.$refs.searchBarRef; | ||||
| 			if (this.isExpand) { | ||||
| 				element.classList.remove('divHeight'); | ||||
| 			} else { | ||||
| 				element.classList.add('divHeight'); | ||||
| 			} | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
| @@ -554,21 +531,6 @@ export default { | ||||
| 		margin-bottom: 4px; | ||||
| 	} | ||||
| } | ||||
| .searchBarBox .foldClass { | ||||
| 	position: absolute; | ||||
| 	top: 14px; | ||||
| 	right: 0; | ||||
| 	cursor: pointer; | ||||
| 	font-size: 12px; | ||||
| 	color: #0b58ff; | ||||
| } | ||||
| .searchBarBox .foldClass .iconfont { | ||||
| 	font-size: 14px; | ||||
| } | ||||
| .divHeight { | ||||
| 	height: 45px; | ||||
| 	overflow: hidden; | ||||
| } | ||||
| .separateStyle { | ||||
| 	display: inline-block; | ||||
| 	width: 1px; | ||||
|   | ||||
| @@ -4,7 +4,6 @@ | ||||
| 		id="trendAnalysisBox"> | ||||
| 		<!-- 搜索工作栏 --> | ||||
| 		<search-area | ||||
| 			:isFold="isFold" | ||||
| 			@submit="getList" | ||||
| 			@export="exportExl" /> | ||||
| 		<div v-show="chartData.length"> | ||||
| @@ -33,20 +32,12 @@ export default { | ||||
| 	components: { SearchArea, LineChart }, | ||||
| 	data() { | ||||
| 		return { | ||||
| 			isFold: false, | ||||
| 			chartData: [], | ||||
| 			timeDim: '', | ||||
| 			tableProps: [], | ||||
| 			list: [], | ||||
| 		}; | ||||
| 	}, | ||||
| 	mounted() { | ||||
| 		window.addEventListener('resize', () => { | ||||
| 			this.tableH = this.tableHeight(260); | ||||
| 			this.isFold = this.searchBarWidth('trendAnalysisBox', 1480); | ||||
| 		}); | ||||
| 		this.isFold = this.searchBarWidth('trendAnalysisBox', 1480); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		getList(params) { | ||||
| 			this.timeDim = params.timeDim; | ||||
| @@ -66,8 +57,14 @@ export default { | ||||
| 			let listObj = { useNum: '消耗量' }; // 数据 | ||||
| 			for (let i = 0; i < arr.length; i++) { | ||||
| 				let obj = {}; | ||||
| 				obj.prop = arr[i].time; | ||||
| 				if (this.timeDim === '3') { | ||||
| 					let fName = arr[i].time.slice(0, 4); | ||||
| 					let lName = arr[i].time.slice(4, 6); | ||||
| 					obj.label = fName + ' 第 ' + lName + ' 周'; | ||||
| 				} else { | ||||
| 					obj.label = arr[i].time; | ||||
| 				} | ||||
| 				obj.prop = arr[i].time; | ||||
| 				obj.minWidth = 100; | ||||
| 				tempX.push(obj); | ||||
| 				listObj[arr[i].time] = arr[i].useNum || null; | ||||
| @@ -77,34 +74,17 @@ export default { | ||||
| 		}, | ||||
| 		// 导出excel | ||||
| 		exportExl(params) { | ||||
| 			exportTrend({ ...params }).then((res) => { | ||||
| 				// let fileName = ''; | ||||
| 				// const contentDisposition = res.headers['content-disposition']; | ||||
| 				// if (contentDisposition) { | ||||
| 				// 	fileName = decodeURIComponent( | ||||
| 				// 		contentDisposition.slice( | ||||
| 				// 			contentDisposition.indexOf('filename=') + 9 | ||||
| 				// 		) | ||||
| 				// 	); | ||||
| 				// } | ||||
| 				const blob = new Blob([res.data]); | ||||
| 				const reader = new FileReader(); | ||||
| 				reader.readAsDataURL(blob); | ||||
| 				reader.onload = (e) => { | ||||
| 					const a = document.createElement('a'); | ||||
| 					a.download = '走势分析'; | ||||
| 					a.href = e.target.result; | ||||
| 					document.body.appendChild(a); | ||||
| 					a.click(); | ||||
| 					document.body.removeChild(a); | ||||
| 			exportTrend({ ...params }) | ||||
| 				.then((response) => { | ||||
| 					this.$download.excel(response, '走势分析.xls'); | ||||
| 					this.$message.success('导出成功'); | ||||
| 				}; | ||||
| 			}); | ||||
| 				}) | ||||
| 				.catch(() => {}); | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
| <style lang='scss'> | ||||
| <style lang="scss"> | ||||
| .trendAnalysisBox { | ||||
| 	.trend-out-table { | ||||
| 		margin-bottom: 15px; | ||||
|   | ||||
| @@ -69,10 +69,13 @@ | ||||
| 			</el-button> | ||||
| 		</el-form-item> | ||||
| 		<el-form-item> | ||||
| 			<span class="separateStyle"></span> | ||||
| 			<span | ||||
| 				class="separateStyle" | ||||
| 				v-hasPermi="['analysis:yoy-analysis:export']"></span> | ||||
| 		</el-form-item> | ||||
| 		<el-form-item> | ||||
| 			<el-button | ||||
| 				v-hasPermi="['analysis:yoy-analysis:export']" | ||||
| 				type="primary" | ||||
| 				size="small" | ||||
| 				@click="exportData" | ||||
|   | ||||
| @@ -1,63 +1,84 @@ | ||||
| <template> | ||||
| 	<div class="app-container"> | ||||
|  | ||||
| 		<!-- 搜索工作栏 --> | ||||
|     <search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" /> | ||||
| 		<search-bar | ||||
| 			:formConfigs="formConfig" | ||||
| 			ref="searchBarForm" | ||||
| 			@headBtnClick="buttonClick" /> | ||||
| 		<!-- 列表 --> | ||||
|     <base-table :page="queryParams.pageNo" :limit="queryParams.pageSize" :table-props="tableProps" :table-data="list" | ||||
| 		<base-table | ||||
| 			:page="queryParams.pageNo" | ||||
| 			:limit="queryParams.pageSize" | ||||
| 			:table-props="tableProps" | ||||
| 			:table-data="list" | ||||
| 			:max-height="tableH"> | ||||
|       <method-btn v-if="tableBtn.length" slot="handleBtn" :width="80" label="操作" :method-list="tableBtn" | ||||
| 			<method-btn | ||||
| 				v-if="tableBtn.length" | ||||
| 				slot="handleBtn" | ||||
| 				:width="80" | ||||
| 				label="操作" | ||||
| 				:method-list="tableBtn" | ||||
| 				@clickBtn="handleClick" /> | ||||
| 		</base-table> | ||||
|     <pagination :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" :total="total" | ||||
| 		<pagination | ||||
| 			:page.sync="queryParams.pageNo" | ||||
| 			:limit.sync="queryParams.pageSize" | ||||
| 			:total="total" | ||||
| 			@pagination="getList" /> | ||||
| 		<!-- 新增 --> | ||||
|     <base-dialog :dialogTitle="addOrEditTitle" :dialogVisible="centervisible" @cancel="handleCancel" | ||||
|       @confirm="handleConfirm" :before-close="handleCancel"> | ||||
|       <energy-plc-add ref="energyPlc" @successSubmit="successSubmit" /> | ||||
| 		<base-dialog | ||||
| 			:dialogTitle="addOrEditTitle" | ||||
| 			:dialogVisible="centervisible" | ||||
| 			@cancel="handleCancel" | ||||
| 			@confirm="handleConfirm" | ||||
| 			:before-close="handleCancel"> | ||||
| 			<energy-plc-add | ||||
| 				ref="energyPlc" | ||||
| 				@successSubmit="successSubmit" /> | ||||
| 		</base-dialog> | ||||
| 	</div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import { getEnergyPlcPage, deleteEnergyPlc } from "@/api/base/energyPlc"; | ||||
| // import { publicFormatter } from '@/utils/dict' | ||||
| import EnergyPlcAdd from './components/energyPlcAdd.vue' | ||||
| import { getEnergyPlcPage, deleteEnergyPlc } from '@/api/base/energyPlc'; | ||||
| import EnergyPlcAdd from './components/energyPlcAdd.vue'; | ||||
| import tableHeightMixin from '@/mixins/lb/tableHeightMixin'; | ||||
| const tableProps = [ | ||||
| 	{ | ||||
| 		prop: 'plcTableName', | ||||
| 		label: '关联表名', | ||||
|     showOverflowtooltip: true | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'code', | ||||
| 		label: '关联表编码', | ||||
| 		minWidth: 150, | ||||
|     showOverflowtooltip: true | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'name', | ||||
| 		label: '标识名', | ||||
| 		minWidth: 150, | ||||
|     showOverflowtooltip: true | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'enName', | ||||
|     label: '英文标识名' | ||||
| 		label: '英文标识名', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'collection', | ||||
|     label: '是否采集' | ||||
| 		label: '是否采集', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'description', | ||||
| 		label: '描述', | ||||
|     showOverflowtooltip: true | ||||
|   } | ||||
| ] | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| ]; | ||||
| export default { | ||||
|   name: "EnergyPlc", | ||||
| 	name: 'EnergyPlc', | ||||
| 	components: { EnergyPlcAdd }, | ||||
| 	mixins: [tableHeightMixin], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			formConfig: [ | ||||
| @@ -65,65 +86,61 @@ export default { | ||||
| 					type: 'input', | ||||
| 					label: '标识名', | ||||
| 					placeholder: '标识名', | ||||
|           param: 'name' | ||||
| 					param: 'name', | ||||
| 				}, | ||||
| 				{ | ||||
|           type: 'button', | ||||
| 					type: this.$auth.hasPermi('base:energy-plc:query') ? 'button' : '', | ||||
| 					btnName: '查询', | ||||
| 					name: 'search', | ||||
|           color: 'primary' | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
|           type: 'separate' | ||||
| 					type: this.$auth.hasPermi('base:energy-plc:create') ? 'separate' : '', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('base:energy-plc:create') ? 'button' : '', | ||||
| 					btnName: '新增', | ||||
| 					name: 'add', | ||||
| 					color: 'success', | ||||
|           plain: true | ||||
|         } | ||||
| 					plain: true, | ||||
| 				}, | ||||
| 			], | ||||
| 			tableProps, | ||||
| 			tableBtn: [ | ||||
| 				this.$auth.hasPermi('base:energy-plc:update') | ||||
| 					? { | ||||
| 							type: 'edit', | ||||
|             btnName: '编辑' | ||||
| 							btnName: '编辑', | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 				this.$auth.hasPermi('base:energy-plc:delete') | ||||
| 					? { | ||||
| 							type: 'delete', | ||||
|             btnName: '删除' | ||||
| 							btnName: '删除', | ||||
| 					  } | ||||
|           : undefined | ||||
| 					: undefined, | ||||
| 			].filter((v) => v), | ||||
|       tableH: this.tableHeight(260), | ||||
| 			collectionList: [ | ||||
| 				{ value: 0, label: '否' }, | ||||
|         { value: 1, label: '是' } | ||||
| 				{ value: 1, label: '是' }, | ||||
| 			], | ||||
| 			// 总条数 | ||||
| 			total: 0, | ||||
| 			// 班次基础信息列表 | ||||
| 			list: [], | ||||
| 			// 弹出层标题 | ||||
|       addOrEditTitle: "", | ||||
| 			addOrEditTitle: '', | ||||
| 			// 是否显示弹出层 | ||||
| 			centervisible: false, | ||||
| 			// 查询参数 | ||||
| 			queryParams: { | ||||
| 				pageNo: 1, | ||||
| 				pageSize: 20, | ||||
|         name: null | ||||
|       } | ||||
| 				name: null, | ||||
| 			}, | ||||
| 		}; | ||||
| 	}, | ||||
| 	created() { | ||||
|     window.addEventListener('resize', () => { | ||||
|       this.tableH = this.tableHeight(260) | ||||
|     }) | ||||
| 		this.getList(); | ||||
| 	}, | ||||
| 	methods: { | ||||
| @@ -131,67 +148,72 @@ export default { | ||||
| 			switch (val.btnName) { | ||||
| 				case 'search': | ||||
| 					this.queryParams.pageNo = 1; | ||||
|           this.queryParams.name = val.name | ||||
|           this.getList() | ||||
|           break | ||||
| 					this.queryParams.name = val.name; | ||||
| 					this.getList(); | ||||
| 					break; | ||||
| 				default: | ||||
|           this.addOrEditTitle = '新增' | ||||
|           this.centervisible = true | ||||
| 					this.addOrEditTitle = '新增'; | ||||
| 					this.centervisible = true; | ||||
| 					this.$nextTick(() => { | ||||
|             this.$refs.energyPlc.init() | ||||
|           }) | ||||
| 						this.$refs.energyPlc.init(); | ||||
| 					}); | ||||
| 			} | ||||
| 		}, | ||||
| 		/** 查询列表 */ | ||||
| 		getList() { | ||||
|       getEnergyPlcPage(this.queryParams).then(response => { | ||||
| 			getEnergyPlcPage(this.queryParams).then((response) => { | ||||
| 				let arr = response.data.list || []; | ||||
|         arr && arr.map(item => { | ||||
|           this.collectionList.map(i => { | ||||
| 				arr && | ||||
| 					arr.map((item) => { | ||||
| 						this.collectionList.map((i) => { | ||||
| 							if (item.collection === i.value) { | ||||
|               item.collection = i.label | ||||
| 								item.collection = i.label; | ||||
| 							} | ||||
|           }) | ||||
|         }) | ||||
|         this.list = arr | ||||
| 						}); | ||||
| 					}); | ||||
| 				this.list = arr; | ||||
| 				this.total = response.data.total; | ||||
| 			}); | ||||
| 		}, | ||||
| 		handleClick(val) { | ||||
| 			switch (val.type) { | ||||
| 				case 'edit': | ||||
|           this.addOrEditTitle = '编辑' | ||||
| 					this.addOrEditTitle = '编辑'; | ||||
| 					this.$nextTick(() => { | ||||
|             this.$refs.energyPlc.init(val.data.id) | ||||
|           }) | ||||
|           this.centervisible = true | ||||
|           break | ||||
| 						this.$refs.energyPlc.init(val.data.id); | ||||
| 					}); | ||||
| 					this.centervisible = true; | ||||
| 					break; | ||||
| 				default: | ||||
|           this.handleDelete(val.data) | ||||
| 					this.handleDelete(val.data); | ||||
| 			} | ||||
| 		}, | ||||
| 		handleCancel() { | ||||
|       this.$refs.energyPlc.formClear() | ||||
|       this.centervisible = false | ||||
|       this.addOrEditTitle = '' | ||||
| 			this.$refs.energyPlc.formClear(); | ||||
| 			this.centervisible = false; | ||||
| 			this.addOrEditTitle = ''; | ||||
| 		}, | ||||
| 		handleConfirm() { | ||||
|       this.$refs.energyPlc.submitForm() | ||||
| 			this.$refs.energyPlc.submitForm(); | ||||
| 		}, | ||||
| 		successSubmit() { | ||||
|       this.handleCancel() | ||||
|       this.getList() | ||||
| 			this.handleCancel(); | ||||
| 			this.getList(); | ||||
| 		}, | ||||
| 		/** 删除按钮操作 */ | ||||
| 		handleDelete(row) { | ||||
|       this.$modal.confirm('是否确认删除关联表名为"' + row.name + '"的数据项?').then(function () { | ||||
| 			this.$modal | ||||
| 				.confirm('是否确认删除关联表名为"' + row.name + '"的数据项?') | ||||
| 				.then(function () { | ||||
| 					return deleteEnergyPlc(row.id); | ||||
|       }).then(() => { | ||||
| 				}) | ||||
| 				.then(() => { | ||||
| 					this.queryParams.pageNo = 1; | ||||
| 					this.getList(); | ||||
|         this.$modal.msgSuccess("删除成功"); | ||||
|       }).catch(() => { }); | ||||
|     } | ||||
|   } | ||||
| 					this.$modal.msgSuccess('删除成功'); | ||||
| 				}) | ||||
| 				.catch(() => {}); | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
|   | ||||
| @@ -116,7 +116,7 @@ export default { | ||||
| 		}, | ||||
| 		selectObj(val) { | ||||
| 			this.form.bindObjectId = val[val.length - 1]; | ||||
| 			this.form.bindObjectType = val.length - 1; | ||||
| 			this.form.bindObjectType = val.length; | ||||
| 		}, | ||||
| 		submitForm() { | ||||
| 			this.$refs['form'].validate((valid) => { | ||||
|   | ||||
| @@ -1,16 +1,37 @@ | ||||
| <template> | ||||
| 	<div> | ||||
|     <el-drawer :title="drawerTitle" :visible.sync="visible" size="70%" @close='closeD' :show-close='false'> | ||||
| 		<el-drawer | ||||
| 			:title="drawerTitle" | ||||
| 			:visible.sync="visible" | ||||
| 			size="70%" | ||||
| 			@close="closeD" | ||||
| 			:show-close="false"> | ||||
| 			<div class="box"> | ||||
| 				<el-form :inline="true"> | ||||
| 					<el-form-item label="关联表名"> | ||||
|             <el-input v-model="plcTableName" size='small' readonly></el-input> | ||||
| 						<el-input | ||||
| 							v-model="plcTableName" | ||||
| 							size="small" | ||||
| 							readonly | ||||
| 							style="width: 250px"></el-input> | ||||
| 					</el-form-item> | ||||
| 					<el-form-item label="对象"> | ||||
|             <el-input v-model="objName" size='small' readonly></el-input> | ||||
| 						<el-input | ||||
| 							v-model="objName" | ||||
| 							size="small" | ||||
| 							readonly | ||||
| 							style="width: 250px"></el-input> | ||||
| 					</el-form-item> | ||||
|           <el-form-item v-if="showBtn"> | ||||
|             <el-button type="success" size='small' plain @click="addNew">新增</el-button> | ||||
| 					<el-form-item | ||||
| 						v-if="showBtn" | ||||
| 						v-hasPermi="['base:energy-plc-param:create']"> | ||||
| 						<el-button | ||||
| 							type="success" | ||||
| 							size="small" | ||||
| 							plain | ||||
| 							@click="addNew"> | ||||
| 							新增 | ||||
| 						</el-button> | ||||
| 					</el-form-item> | ||||
| 				</el-form> | ||||
| 				<base-table | ||||
| @@ -18,23 +39,20 @@ | ||||
| 					:limit="queryParams.pageSize" | ||||
| 					:table-props="tableProps" | ||||
| 					:table-data="tableData" | ||||
|           :max-height="tableH" | ||||
|         > | ||||
| 					:max-height="tableH"> | ||||
| 					<method-btn | ||||
| 						v-if="tableBtn.length" | ||||
| 						slot="handleBtn" | ||||
| 						:width="100" | ||||
| 						label="操作" | ||||
| 						:method-list="tableBtn" | ||||
|             @clickBtn="handleClick" | ||||
|           /> | ||||
| 						@clickBtn="handleClick" /> | ||||
| 				</base-table> | ||||
| 				<pagination | ||||
| 					:page.sync="queryParams.pageNo" | ||||
| 					:limit.sync="queryParams.pageSize" | ||||
| 					:total="total" | ||||
|           @pagination="getList" | ||||
|         /> | ||||
| 					@pagination="getList" /> | ||||
| 			</div> | ||||
| 		</el-drawer> | ||||
| 		<!-- 新增 --> | ||||
| @@ -43,43 +61,48 @@ | ||||
| 			:dialogVisible="centervisible" | ||||
| 			@cancel="handleCancel" | ||||
| 			@confirm="handleConfirm" | ||||
|       :before-close="handleCancel" | ||||
|     > | ||||
|       <energy-plc-param-add ref="energyPlcParam" @successSubmit="successSubmit" /> | ||||
| 			:before-close="handleCancel"> | ||||
| 			<energy-plc-param-add | ||||
| 				ref="energyPlcParam" | ||||
| 				@successSubmit="successSubmit" /> | ||||
| 		</base-dialog> | ||||
| 	</div> | ||||
| </template> | ||||
| <script> | ||||
| import { getEnergyPlcParamPage, deleteEnergyPlcParam } from '@/api/base/energyPlcParam' | ||||
| import EnergyPlcParamAdd from './energyPlcParamAdd' | ||||
| import { publicFormatter } from '@/utils/dict' | ||||
| import { | ||||
| 	getEnergyPlcParamPage, | ||||
| 	deleteEnergyPlcParam, | ||||
| } from '@/api/base/energyPlcParam'; | ||||
| import EnergyPlcParamAdd from './energyPlcParamAdd'; | ||||
| import { publicFormatter } from '@/utils/dict'; | ||||
| const tableProps = [ | ||||
| 	{ | ||||
| 		prop: 'typeId', | ||||
|     label: '能源类型' | ||||
| 		label: '能源类型', | ||||
| 		filter: publicFormatter('energy_type'), | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'plcParamName', | ||||
|     label: '参数列名' | ||||
| 		label: '参数列名', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'name', | ||||
|     label: '参数名称' | ||||
| 		label: '参数名称', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'unit', | ||||
| 		label: '单位', | ||||
|     filter: publicFormatter('energy_unit') | ||||
| 		filter: publicFormatter('unit_dict'), | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'collection', | ||||
|     label: '是否采集' | ||||
| 		label: '是否采集', | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'description', | ||||
|     label: '描述' | ||||
|   } | ||||
| ] | ||||
| 		label: '描述', | ||||
| 	}, | ||||
| ]; | ||||
| export default { | ||||
| 	name: 'EnergyPlcParam', | ||||
| 	props: { | ||||
| @@ -87,9 +110,9 @@ export default { | ||||
| 			type: Array, | ||||
| 			required: true, | ||||
| 			default: () => { | ||||
|         return [] | ||||
|       } | ||||
|     } | ||||
| 				return []; | ||||
| 			}, | ||||
| 		}, | ||||
| 	}, | ||||
| 	data() { | ||||
| 		return { | ||||
| @@ -103,121 +126,136 @@ export default { | ||||
| 			queryParams: { | ||||
| 				pageNo: 1, | ||||
| 				pageSize: 30, | ||||
|         connectId: null | ||||
| 				connectId: null, | ||||
| 			}, | ||||
| 			plcTableName: '', | ||||
| 			objName: '', | ||||
| 			// 弹出层标题 | ||||
|       addOrEditTitle: "", | ||||
| 			addOrEditTitle: '', | ||||
| 			// 是否显示弹出层 | ||||
| 			centervisible: false, | ||||
| 			collectionList: [ | ||||
| 				{ value: 0, label: '否' }, | ||||
|         {value: 1,label: '是'} | ||||
| 				{ value: 1, label: '是' }, | ||||
| 			], | ||||
|       showBtn: true | ||||
|     } | ||||
| 			showBtn: true, | ||||
| 		}; | ||||
| 	}, | ||||
| 	components: { EnergyPlcParamAdd }, | ||||
| 	created() { | ||||
| 		window.addEventListener('resize', () => { | ||||
|       this.tableH = this.tableHeight(115) | ||||
|     }) | ||||
| 			this.tableH = this.tableHeight(115); | ||||
| 		}); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		init(data, title) { | ||||
|       this.visible = true | ||||
|       this.queryParams.connectId = data.id | ||||
|       this.plcTableName = data.plcTableName | ||||
|       this.objName = data.objName | ||||
|       this.getList() | ||||
| 			this.visible = true; | ||||
| 			this.queryParams.connectId = data.id; | ||||
| 			this.plcTableName = data.plcTableName; | ||||
| 			this.objName = data.objName; | ||||
| 			this.getList(); | ||||
| 			if (title === 'detail') { | ||||
|         this.drawerTitle = '查看参数' | ||||
|         this.showBtn = false | ||||
|         this.tableBtn = [] | ||||
| 				this.drawerTitle = '查看参数'; | ||||
| 				this.showBtn = false; | ||||
| 				this.tableBtn = []; | ||||
| 			} else { | ||||
|         this.drawerTitle = '参数绑定' | ||||
|         this.showBtn = true | ||||
| 				this.drawerTitle = '参数绑定'; | ||||
| 				this.showBtn = true; | ||||
| 				this.tableBtn = [ | ||||
|           { | ||||
| 					this.$auth.hasPermi('base:energy-plc-param:update') | ||||
| 						? { | ||||
| 								type: 'edit', | ||||
|             btnName: '编辑' | ||||
|           }, | ||||
|           { | ||||
|             type: 'delete', | ||||
|             btnName: '删除' | ||||
| 								btnName: '编辑', | ||||
| 						  } | ||||
|         ] | ||||
| 						: undefined, | ||||
| 					this.$auth.hasPermi('base:energy-plc-param:delete') | ||||
| 						? { | ||||
| 								type: 'delete', | ||||
| 								btnName: '删除', | ||||
| 						  } | ||||
| 						: undefined, | ||||
| 				].filter((v) => v); | ||||
| 			} | ||||
| 		}, | ||||
| 		getList() { | ||||
| 			getEnergyPlcParamPage({ ...this.queryParams }).then((res) => { | ||||
|         let arr = res.data.list || [] | ||||
|         arr&&arr.map(item => { | ||||
|           this.collectionList.map(i => { | ||||
| 				let arr = res.data.list || []; | ||||
| 				arr && | ||||
| 					arr.map((item) => { | ||||
| 						this.collectionList.map((i) => { | ||||
| 							if (item.collection === i.value) { | ||||
|               item.collection = i.label | ||||
| 								item.collection = i.label; | ||||
| 							} | ||||
|           }) | ||||
|           this.energyTypeList.map(j => { | ||||
| 						}); | ||||
| 						this.energyTypeList.map((j) => { | ||||
| 							if (item.typeId === j.id) { | ||||
|               item.typeId = j.name | ||||
| 								item.typeId = j.name; | ||||
| 							} | ||||
|           }) | ||||
|         }) | ||||
|         this.tableData = arr | ||||
| 						}); | ||||
| 					}); | ||||
| 				this.tableData = arr; | ||||
| 				this.total = res.data.total; | ||||
|       }) | ||||
| 			}); | ||||
| 		}, | ||||
| 		// 新增 | ||||
| 		addNew() { | ||||
|       this.addOrEditTitle = '新增' | ||||
|       this.centervisible = true | ||||
| 			this.addOrEditTitle = '新增'; | ||||
| 			this.centervisible = true; | ||||
| 			this.$nextTick(() => { | ||||
|         this.$refs.energyPlcParam.init({'connectId': this.queryParams.connectId, id: ''}) | ||||
|       }) | ||||
| 				this.$refs.energyPlcParam.init({ | ||||
| 					connectId: this.queryParams.connectId, | ||||
| 					id: '', | ||||
| 				}); | ||||
| 			}); | ||||
| 		}, | ||||
| 		handleCancel() { | ||||
|       this.$refs.energyPlcParam.formClear() | ||||
|       this.centervisible = false | ||||
|       this.addOrEditTitle = '' | ||||
| 			this.$refs.energyPlcParam.formClear(); | ||||
| 			this.centervisible = false; | ||||
| 			this.addOrEditTitle = ''; | ||||
| 		}, | ||||
| 		handleConfirm() { | ||||
|       this.$refs.energyPlcParam.submitForm() | ||||
| 			this.$refs.energyPlcParam.submitForm(); | ||||
| 		}, | ||||
| 		successSubmit() { | ||||
|       this.handleCancel() | ||||
|       this.getList() | ||||
| 			this.handleCancel(); | ||||
| 			this.getList(); | ||||
| 		}, | ||||
| 		handleClick(val) { | ||||
|       console.log(val) | ||||
| 			console.log(val); | ||||
| 			switch (val.type) { | ||||
| 				case 'edit': | ||||
|           this.addOrEditTitle = '编辑' | ||||
|           this.centervisible = true | ||||
| 					this.addOrEditTitle = '编辑'; | ||||
| 					this.centervisible = true; | ||||
| 					this.$nextTick(() => { | ||||
|             this.$refs.energyPlcParam.init({'connectId': this.queryParams.connectId, id: val.data.id}) | ||||
|           }) | ||||
|           break | ||||
| 						this.$refs.energyPlcParam.init({ | ||||
| 							connectId: this.queryParams.connectId, | ||||
| 							id: val.data.id, | ||||
| 						}); | ||||
| 					}); | ||||
| 					break; | ||||
| 				default: | ||||
|           this.handleDelete(val.data) | ||||
| 					this.handleDelete(val.data); | ||||
| 			} | ||||
| 		}, | ||||
| 		/** 删除按钮操作 */ | ||||
| 		handleDelete(row) { | ||||
|       this.$modal.confirm('是否确认删除参数列名为"' + row.plcParamName + '"的数据项?').then(function() { | ||||
| 			this.$modal | ||||
| 				.confirm('是否确认删除参数列名为"' + row.plcParamName + '"的数据项?') | ||||
| 				.then(function () { | ||||
| 					return deleteEnergyPlcParam(row.id); | ||||
|         }).then(() => { | ||||
| 				}) | ||||
| 				.then(() => { | ||||
| 					this.queryParams.pageNo = 1; | ||||
| 					this.getList(); | ||||
|           this.$modal.msgSuccess("删除成功"); | ||||
|         }).catch(() => {}); | ||||
| 					this.$modal.msgSuccess('删除成功'); | ||||
| 				}) | ||||
| 				.catch(() => {}); | ||||
| 		}, | ||||
| 		closeD() { | ||||
|       this.$emit('closeDrawer') | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 			this.$emit('closeDrawer'); | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
| <style lang="scss" scoped> | ||||
| .box { | ||||
|   | ||||
| @@ -57,14 +57,18 @@ import { getTree } from '@/api/analysis/energyAnalysis'; | ||||
| import { getEnergyTypeListAll } from '@/api/base/energyType'; | ||||
| import EnergyPlcConnectAdd from './components/energyPlcConnectAdd'; | ||||
| import EnergyPlcParam from './components/energyPlcParam'; | ||||
| import tableHeightMixin from '@/mixins/lb/tableHeightMixin'; | ||||
| const tableProps = [ | ||||
| 	{ | ||||
| 		prop: 'objName', | ||||
| 		label: '对象', | ||||
| 		minWidth: 130, | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'objCode', | ||||
| 		label: '对象编码', | ||||
| 		minWidth: 150, | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| 	{ | ||||
| @@ -86,11 +90,13 @@ const tableProps = [ | ||||
| 	{ | ||||
| 		prop: 'varNum', | ||||
| 		label: '绑定参数数量', | ||||
| 		width: 110, | ||||
| 	}, | ||||
| ]; | ||||
| export default { | ||||
| 	name: 'EnergyPlcConnect', | ||||
| 	components: { EnergyPlcConnectAdd, EnergyPlcParam }, | ||||
| 	mixins: [tableHeightMixin], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			formConfig: [ | ||||
| @@ -101,13 +107,17 @@ export default { | ||||
| 					param: 'cnName', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					type: this.$auth.hasPermi('base:energy-plc-connect:query') | ||||
| 						? 'button' | ||||
| 						: '', | ||||
| 					btnName: '查询', | ||||
| 					name: 'search', | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'separate', | ||||
| 					type: this.$auth.hasPermi('base:energy-plc-connect:create') | ||||
| 						? 'separate' | ||||
| 						: '', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('base:energy-plc-connect:create') | ||||
| @@ -121,17 +131,25 @@ export default { | ||||
| 			], | ||||
| 			tableProps, | ||||
| 			tableBtn: [ | ||||
| 				this.$auth.hasPermi('base:energy-plc-connect:bind') | ||||
| 				this.$auth.hasPermiAnd([ | ||||
| 					'base:energy-plc-param:query', | ||||
| 					'base:energy-type:query', | ||||
| 				]) | ||||
| 					? { | ||||
| 							type: 'connect', | ||||
| 							btnName: '绑定', | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 				{ | ||||
| 				this.$auth.hasPermi('base:energy-plc-param:query') | ||||
| 					? { | ||||
| 							type: 'detail', | ||||
| 							btnName: '详情', | ||||
| 				}, | ||||
| 				this.$auth.hasPermi('base:energy-plc-connect:update') | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 				this.$auth.hasPermiAnd([ | ||||
| 					'base:energy-plc-connect:update', | ||||
| 					'base:energy-plc-connect:query', | ||||
| 				]) | ||||
| 					? { | ||||
| 							type: 'edit', | ||||
| 							btnName: '编辑', | ||||
| @@ -144,7 +162,6 @@ export default { | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 			].filter((v) => v), | ||||
| 			tableH: this.tableHeight(260), | ||||
| 			// 总条数 | ||||
| 			total: 0, | ||||
| 			// 班次基础信息列表 | ||||
| @@ -165,9 +182,6 @@ export default { | ||||
| 		}; | ||||
| 	}, | ||||
| 	created() { | ||||
| 		window.addEventListener('resize', () => { | ||||
| 			this.tableH = this.tableHeight(260); | ||||
| 		}); | ||||
| 		this.getList(); | ||||
| 	}, | ||||
| 	mounted() { | ||||
|   | ||||
| @@ -45,6 +45,7 @@ | ||||
| 			</el-table-column> | ||||
| 		</el-table> | ||||
| 		<el-button | ||||
| 			v-show="!isEdit" | ||||
| 			class="addButton" | ||||
| 			icon="el-icon-plus" | ||||
| 			@click="emitButtonClick"> | ||||
| @@ -70,6 +71,13 @@ export default { | ||||
| 				return []; | ||||
| 			}, | ||||
| 		}, | ||||
| 		isEdit: { | ||||
| 			type: Boolean, | ||||
| 			required: true, | ||||
| 			default: () => { | ||||
| 				return false; | ||||
| 			}, | ||||
| 		}, | ||||
| 	}, | ||||
| 	data() { | ||||
| 		return {}; | ||||
|   | ||||
| @@ -1,38 +0,0 @@ | ||||
| <template> | ||||
|   <div class="tableInner"> | ||||
|     <!-- <el-input v-model="list[itemProp]" @blur="changeInput" /> --> | ||||
|     <el-input-number v-model="list[itemProp]" @change="changeInput" :min="0" :max="999999999" style='width: 100%;' :controls='false' :precision='2'></el-input-number> | ||||
|   </div> | ||||
| </template> | ||||
| <script> | ||||
| export default { | ||||
|   name: 'InputArea', | ||||
|   props: { | ||||
|     injectData: { | ||||
|       type: Object, | ||||
|       default: () => ({}) | ||||
|     }, | ||||
|     itemProp: { | ||||
|       type: String | ||||
|     } | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       list: this.injectData | ||||
|     } | ||||
|   }, | ||||
|   methods: { | ||||
|     changeInput() { | ||||
|       console.log(this.list) | ||||
|       this.$emit('emitData', this.list) | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </script> | ||||
| <style scoped> | ||||
| .tableInner .el-input__inner { | ||||
|   border: none; | ||||
|   padding: 0; | ||||
|   height: 33px; | ||||
| } | ||||
| </style> | ||||
| @@ -1,44 +0,0 @@ | ||||
| <template> | ||||
|   <div class="tableInner"> | ||||
|     <el-select v-model="list[itemProp]" placeholder="请选择" style="width: 100%;" @change="changeSelect"> | ||||
|       <el-option | ||||
|         v-for="item in getDictDatas(DICT_TYPE.TABLE_NAME)" | ||||
|         :key="item.value" | ||||
|         :label="item.label" | ||||
|         :value="item.value"> | ||||
|       </el-option> | ||||
|     </el-select> | ||||
|   </div> | ||||
| </template> | ||||
| <script> | ||||
| export default { | ||||
|   name: 'SelectArea', | ||||
|   props: { | ||||
|     injectData: { | ||||
|       type: Object, | ||||
|       default: () => ({}) | ||||
|     }, | ||||
|     itemProp: { | ||||
|       type: String | ||||
|     } | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       list: this.injectData | ||||
|     } | ||||
|   }, | ||||
|   methods: { | ||||
|     changeSelect() { | ||||
|       console.log(this.list) | ||||
|       this.$emit('emitData', this.list) | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </script> | ||||
| <style scoped> | ||||
| .tableInner .el-input__inner { | ||||
|   border: none; | ||||
|   padding: 0; | ||||
|   height: 33px; | ||||
| } | ||||
| </style> | ||||
| @@ -40,18 +40,11 @@ | ||||
| 		<el-row :gutter="20"> | ||||
| 			<el-col :span="24"> | ||||
| 				<add-table | ||||
| 					:table-props="tableProps" | ||||
| 					:table-data="tableData" | ||||
| 					:table-name-list="tableNameList" | ||||
| 					:isEdit="isEdit" | ||||
| 					@emitFun="inputChange" | ||||
| 					@emitButtonClick="emitButtonClick" /> | ||||
| 				<!-- <base-table | ||||
| 					border | ||||
| 					:table-props="tableProps" | ||||
| 					:table-data="tableData" | ||||
| 					:add-button-show="addButtonShow" | ||||
| 					@emitFun="inputChange" | ||||
| 					@emitButtonClick="emitButtonClick" /> --> | ||||
| 			</el-col> | ||||
| 		</el-row> | ||||
| 	</el-form> | ||||
| @@ -64,21 +57,7 @@ import { | ||||
| } from '@/api/base/energyQuantityManual'; | ||||
| import moment from 'moment'; | ||||
| import AddTable from './AddTable'; | ||||
| import InputArea from './InputArea'; | ||||
| import SelectArea from './SelectArea'; | ||||
| import { energyTableGet } from '@/api/base/energyQuantityManual'; | ||||
| const tableProps = [ | ||||
| 	{ | ||||
| 		prop: 'tableName', | ||||
| 		label: '表名*', | ||||
| 		subcomponent: SelectArea, | ||||
| 	}, | ||||
| 	{ | ||||
| 		prop: 'readingQuantity', | ||||
| 		label: '抄表数*', | ||||
| 		subcomponent: InputArea, | ||||
| 	}, | ||||
| ]; | ||||
| export default { | ||||
| 	name: 'EnergyQuantityManualAdd', | ||||
| 	props: { | ||||
| @@ -92,7 +71,6 @@ export default { | ||||
| 	}, | ||||
| 	data() { | ||||
| 		return { | ||||
| 			tableProps, | ||||
| 			tableData: [], | ||||
| 			tableNameList: [], //表名list | ||||
| 			addButtonShow: '新增', | ||||
| @@ -122,6 +100,7 @@ export default { | ||||
| 			} else if (params.type === 'meterReading') { | ||||
| 				this.isEdit = false; | ||||
| 				this.form.energyTypeId = params.energyTypeId; | ||||
| 				this.selEnergyType(this.form.energyTypeId); | ||||
| 				let obj = {}; | ||||
| 				obj.tableName = params.tableName + ''; | ||||
| 				obj.readingQuantity = 0; | ||||
| @@ -133,6 +112,7 @@ export default { | ||||
| 				energyQuantityManualGet({ id: this.form.id }).then((res) => { | ||||
| 					if (res.code === 0) { | ||||
| 						this.form.energyTypeId = res.data.energyTypeId; | ||||
| 						this.selEnergyType(this.form.energyTypeId); | ||||
| 						this.form.recordTime = res.data.recordTime | ||||
| 							? res.data.recordTime | ||||
| 							: null; | ||||
| @@ -164,6 +144,11 @@ export default { | ||||
| 			this.tableNameList = []; | ||||
| 			energyTableGet({ energyTypeId: id }).then((res) => { | ||||
| 				this.tableNameList = res.data.tableObjs || []; | ||||
| 				if (this.tableNameList.length === 0) { | ||||
| 					this.$modal.msgWarning( | ||||
| 						'当前能源类型暂无配置表名,请先到《表名配置》页面配置' | ||||
| 					); | ||||
| 				} | ||||
| 			}); | ||||
| 		}, | ||||
| 		submitForm() { | ||||
|   | ||||
| @@ -52,12 +52,12 @@ import { publicFormatter } from '@/utils/dict'; | ||||
| import { parseTimeTable } from '@/utils/ruoyi'; | ||||
| import EnergyQuantityManualAdd from './components/energyQuantityManualAdd'; | ||||
| import moment from 'moment'; | ||||
| import tableHeightMixin from '@/mixins/lb/tableHeightMixin'; | ||||
| const tableProps = [ | ||||
| 	{ | ||||
| 		prop: 'energyType', | ||||
| 		prop: 'energyTypeLabel', | ||||
| 		label: '能源类型', | ||||
| 		minWidth: 110, | ||||
| 		filter: publicFormatter('energy_type'), | ||||
| 		showOverflowtooltip: true, | ||||
| 	}, | ||||
| 	{ | ||||
| @@ -114,13 +114,20 @@ export default { | ||||
| 					defaultSelect: [], | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'button', | ||||
| 					type: this.$auth.hasPermi('base:energy-quantity-manual:query') | ||||
| 						? 'button' | ||||
| 						: '', | ||||
| 					btnName: '查询', | ||||
| 					name: 'search', | ||||
| 					color: 'primary', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: 'separate', | ||||
| 					type: this.$auth.hasPermiOr([ | ||||
| 						'base:energy-quantity-manual:export', | ||||
| 						'base:energy-quantity-manual:create', | ||||
| 					]) | ||||
| 						? 'separate' | ||||
| 						: '', | ||||
| 				}, | ||||
| 				{ | ||||
| 					type: this.$auth.hasPermi('base:energy-quantity-manual:export') | ||||
| @@ -142,19 +149,24 @@ export default { | ||||
| 				}, | ||||
| 			], | ||||
| 			tableProps, | ||||
| 			tableH: this.tableHeight(260), | ||||
| 			// 总条数 | ||||
| 			total: 0, | ||||
| 			// 班次基础信息列表 | ||||
| 			list: [], | ||||
| 			tableBtn: [ | ||||
| 				this.$auth.hasPermi('base:energy-quantity-manual:create') | ||||
| 				this.$auth.hasPermiAnd([ | ||||
| 					'base:energy-quantity-manual:query', | ||||
| 					'base:energy-quantity-manual:create', | ||||
| 				]) | ||||
| 					? { | ||||
| 							type: 'meterReading', | ||||
| 							btnName: '抄表', | ||||
| 					  } | ||||
| 					: undefined, | ||||
| 				this.$auth.hasPermi('base:energy-quantity-manual:update') | ||||
| 				this.$auth.hasPermiAnd([ | ||||
| 					'base:energy-quantity-manual:update', | ||||
| 					'base:energy-quantity-manual:query', | ||||
| 				]) | ||||
| 					? { | ||||
| 							type: 'edit', | ||||
| 							btnName: '编辑', | ||||
| @@ -181,10 +193,8 @@ export default { | ||||
| 		}; | ||||
| 	}, | ||||
| 	components: { EnergyQuantityManualAdd }, | ||||
| 	mixins: [tableHeightMixin], | ||||
| 	created() { | ||||
| 		window.addEventListener('resize', () => { | ||||
| 			this.tableH = this.tableHeight(260); | ||||
| 		}); | ||||
| 		let end = moment(moment().format('YYYY-MM-DD 23:59:59')).valueOf(); | ||||
| 		let start = moment( | ||||
| 			moment().subtract(7, 'days').format('YYYY-MM-DD 00:00:00') | ||||
| @@ -244,6 +254,11 @@ export default { | ||||
| 								? item.amount.toFixed(2) | ||||
| 								: '' | ||||
| 							: ''; | ||||
| 						this.getDictDatas('energy_type').map((subItem) => { | ||||
| 							if (item.energyType === subItem.value) { | ||||
| 								item.energyTypeLabel = subItem.label; | ||||
| 							} | ||||
| 						}); | ||||
| 					}); | ||||
| 				this.list = arr; | ||||
| 				this.total = response.data.total; | ||||
| @@ -305,7 +320,7 @@ export default { | ||||
| 		handleDelete(row) { | ||||
| 			console.log(row.id); | ||||
| 			this.$modal | ||||
| 				.confirm('是否确认删除能源类型为"' + row.energyType + '"的数据项?') | ||||
| 				.confirm('是否确认删除能源类型为"' + row.energyTypeLabel + '"的数据项?') | ||||
| 				.then(function () { | ||||
| 					return energyQuantityManualDelete({ id: row.id }); | ||||
| 				}) | ||||
|   | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user