Merge branch 'master' of http://10.153.19.25:10105/r/ERP_override
# Conflicts:
# north-glass-erp/northglass-erp/config.js
12个文件已添加
3 文件已重命名
134个文件已修改
| | |
| | | export default { |
| | | //serverUrl:"localhost:8086" |
| | | //æ°çæå¡å¨ |
| | | //serverUrl:"192.168.2.144:8086" |
| | | //叏巿å¡å¨ |
| | | serverUrl:"localhost:8086", |
| | | serverUrlTemp:"10.153.19.150:8079", |
| | | //serverUrl:"192.168.1.199:8086" |
| | | //䏿µ·æå¡å¨ |
| | | //serverUrl:"10.153.19.150:8086" |
| | | //天津çäº§é¨ |
| | | //serverUrl:"192.168.150.41:8086" |
| | | //天津æå¡å¨ |
| | | //serverUrl:"192.168.150.39:8086" |
| | | //天津æµè¯ç«¯ |
| | | //serverUrl:"192.168.150.39:8087" |
| | | //ä¹ä¹æå¡å¨ |
| | | serverUrl:"192.168.0.39:8086" |
| | | |
| | | } |
| | |
| | | "@vue-macros/reactivity-transform": "^0.3.23", |
| | | "axios": "^1.5.1", |
| | | "decimal.js": "^10.4.3", |
| | | "dxf-parser": "^1.1.2", |
| | | "dxf-writer": "^1.18.4", |
| | | "element-plus": "^2.9.3", |
| | | "file-saver": "^2.0.5", |
| | | "leafer-ui": "^1.8.0", |
| | | "leaflet": "^1.9.4", |
| | | "moment": "^2.30.1", |
| | | "northglass-erp": "file:", |
| | | "pinia": "^2.1.6", |
| | |
| | | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", |
| | | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" |
| | | }, |
| | | "node_modules/@leafer-in/interface": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-in/interface/-/interface-1.8.0.tgz", |
| | | "integrity": "sha512-j4ucPjPX8/TBIID1RPHv6CA1KtiIh56igvrHBYHd44NS1tzKWhsswKUVRrzK0nqeSh1VL4SzGZgiQNwZq56R4A==", |
| | | "peerDependencies": { |
| | | "@leafer-ui/interface": "^1.8.0", |
| | | "@leafer/interface": "^1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer-ui/app": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/app/-/app-1.8.0.tgz", |
| | | "integrity": "sha512-IapfZlekYrm32h2KfILlbdzcD7n4ncrzXLeM0h0XBK+4rRCqLrPNScPbzKtNhaMhFvq2NjLdfWVqmy63jXfj2g==", |
| | | "dependencies": { |
| | | "@leafer-ui/data": "1.8.0", |
| | | "@leafer-ui/display": "1.8.0", |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer-ui/bounds": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/bounds/-/bounds-1.8.0.tgz", |
| | | "integrity": "sha512-k72/biSCoUKNM7Gtk25R1AuBwdebT9b2XVveAqbaAq0CV6Wk0tUbjAnzyarSyzYn4BgrjPCTGl/lYtiPuIAiRQ==", |
| | | "dependencies": { |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer-ui/color": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/color/-/color-1.8.0.tgz", |
| | | "integrity": "sha512-WLw7rgA7zgVp8dp1hahWM8v8lo6HClUmpbWrsPTTlA7QXAiNpayfh8bV8NOhhwhQhCtxOEtC6UGKsBcTorwqMQ==", |
| | | "dependencies": { |
| | | "@leafer-ui/draw": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer-ui/core": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/core/-/core-1.8.0.tgz", |
| | | "integrity": "sha512-GkFRaNoArkFEEctzP5rKxOzFOnNzTLa9hLbvPQM/CFCBSSDdkx+BsnKBPkwHqvcRvGQLPZ3fhpoatxMoQncPug==", |
| | | "dependencies": { |
| | | "@leafer-ui/app": "1.8.0", |
| | | "@leafer-ui/draw": "1.8.0", |
| | | "@leafer-ui/event": "1.8.0", |
| | | "@leafer-ui/hit": "1.8.0", |
| | | "@leafer-ui/interaction": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer-ui/data": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/data/-/data-1.8.0.tgz", |
| | | "integrity": "sha512-J386mOuGuVbpCU9fYdNg2IAluufYhjP4latizX8YdPEAnS2qGgbz5OahLwyCtBLYH50mT6gMyL/HSFXY4Idj5g==", |
| | | "dependencies": { |
| | | "@leafer-ui/external": "1.8.0", |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer-ui/decorator": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/decorator/-/decorator-1.8.0.tgz", |
| | | "integrity": "sha512-LGY8yqk+7TFhC0VgSV0jz1mHEY/6pLSmX5BNxuyomOBLzKbmW+EaWKl1JtuIBjg5ENXL5ZhVWfDZIs38fxM5Zw==", |
| | | "dependencies": { |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer-ui/display": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/display/-/display-1.8.0.tgz", |
| | | "integrity": "sha512-VrDOH5UTrYqAjLb2GIrVpTO33lHznxLDzP0IBqPduTGSe43BPMz7iNqUHwzgZDsV/qBKasLUtbrWcuk7SAp1fA==", |
| | | "dependencies": { |
| | | "@leafer-ui/data": "1.8.0", |
| | | "@leafer-ui/decorator": "1.8.0", |
| | | "@leafer-ui/display-module": "1.8.0", |
| | | "@leafer-ui/external": "1.8.0", |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer-ui/display-module": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/display-module/-/display-module-1.8.0.tgz", |
| | | "integrity": "sha512-69ZsFg+pUGskFa8kfO1OnmAz6q4q0/RNlmqbPE8B2D35J6JVJeITK1PBxGOGB/hKhDdoGUDpkb/MuKeIiIhNoA==", |
| | | "dependencies": { |
| | | "@leafer-ui/bounds": "1.8.0", |
| | | "@leafer-ui/data": "1.8.0", |
| | | "@leafer-ui/render": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer-ui/draw": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/draw/-/draw-1.8.0.tgz", |
| | | "integrity": "sha512-utYzJ4IIP2GaKWTVaO19gnlrz0HMXmzgvkcsovW5JoOQIi7XpB3yFXf7tUTUb9HdcVMAK7jssz4T0E4EiMaWvQ==", |
| | | "dependencies": { |
| | | "@leafer-ui/decorator": "1.8.0", |
| | | "@leafer-ui/display": "1.8.0", |
| | | "@leafer-ui/display-module": "1.8.0", |
| | | "@leafer-ui/external": "1.8.0", |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer-ui/effect": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/effect/-/effect-1.8.0.tgz", |
| | | "integrity": "sha512-on6jWBrGizw4pV1ZAtauwkA2e/jzf/aULfDrjVwwD5IrzLepcNoCJjE+ZQyabLU2KnRKKmjsvaGfMyYbpnjHfA==", |
| | | "dependencies": { |
| | | "@leafer-ui/draw": "1.8.0", |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer-ui/event": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/event/-/event-1.8.0.tgz", |
| | | "integrity": "sha512-jwaUKogwmq5wjhjiV01DCGxRcEY1MgszrQ5KokpLPnHCVPnxjBzrnJ808OAkXxwtrsNeFSpBDNOCbRvY4A0+qQ==", |
| | | "dependencies": { |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer-ui/external": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/external/-/external-1.8.0.tgz", |
| | | "integrity": "sha512-nyyVTkM8X3KPJou7cX3+npc4C9a5YSAUviu95auSEFWlF/OBzdUQ2wwG6JKvN+BZzNOTgWgqByyRNbChI90xXw==", |
| | | "dependencies": { |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer-ui/hit": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/hit/-/hit-1.8.0.tgz", |
| | | "integrity": "sha512-LpCoPlELmUOcERtibj0IZpSokhWOJksWJrxxdHWLgS0nDqfuu1OYkLNl3OWsYiejSPyDdODD6R7bLfWSOSjz8Q==", |
| | | "dependencies": { |
| | | "@leafer-ui/draw": "1.8.0", |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer-ui/interaction": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/interaction/-/interaction-1.8.0.tgz", |
| | | "integrity": "sha512-SCIP5nvGNb5z9i1HcCFXiHNk1gNvmIdoH+PcZFwoN35bYAlkIeRx9pDTSxrLBoVpJq4FXxt2qQrR9+IwZuJ3/A==", |
| | | "dependencies": { |
| | | "@leafer-ui/draw": "1.8.0", |
| | | "@leafer-ui/event": "1.8.0", |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer-ui/interaction-web": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/interaction-web/-/interaction-web-1.8.0.tgz", |
| | | "integrity": "sha512-HhySVSnjHm4BGEyw8mqoNyyzf2fmzV1V/yHw5i5UOrbJol58f12xGY8J6zoMLKrcXh4VfZQ+uaqjOWiYjOiLGw==", |
| | | "dependencies": { |
| | | "@leafer-ui/core": "1.8.0", |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer-ui/interface": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/interface/-/interface-1.8.0.tgz", |
| | | "integrity": "sha512-cwZutgshMWVg22xzJ9+34Ye/HX0W6LxMyQwoPtDlMUMQKvBW5EHRfQ5dv4d16X9PFxA0N7Djm0u7/TIpjrCh0g==", |
| | | "dependencies": { |
| | | "@leafer/interface": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer-ui/paint": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/paint/-/paint-1.8.0.tgz", |
| | | "integrity": "sha512-8F5XgJS0lflpA2W6GxJVQw8bjv9H5dCc0JdjHbQEcaKMFk0vQzjm6d61HbjWXEW61jHXZC+rXtDOi3T1MrQVVg==", |
| | | "dependencies": { |
| | | "@leafer-ui/draw": "1.8.0", |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer-ui/partner": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/partner/-/partner-1.8.0.tgz", |
| | | "integrity": "sha512-3VBx61FoR8/zSXslmWstg/u7qulzBvi3e+iMl+fW0ruWeNx95VdM4W3LG3am9RQ92fqnKdF1ebgpoKZcIm5ajQ==", |
| | | "dependencies": { |
| | | "@leafer-ui/color": "1.8.0", |
| | | "@leafer-ui/draw": "1.8.0", |
| | | "@leafer-ui/effect": "1.8.0", |
| | | "@leafer-ui/paint": "1.8.0", |
| | | "@leafer-ui/text": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer-ui/render": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/render/-/render-1.8.0.tgz", |
| | | "integrity": "sha512-1gEx9FmlvyhYMqGrh4ogTv3MuJnti4pIBqPtrI+8grPQ1cpjwS36ghV+7LNhb6y+oPOwqw/22+KIG35ObxVLEA==", |
| | | "dependencies": { |
| | | "@leafer-ui/external": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer-ui/text": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/text/-/text-1.8.0.tgz", |
| | | "integrity": "sha512-7IXXDjP8DkzIniOI1ow/6rMlYknBCRltGo7lyFy2besI32mS1yIobXlO60/uTCtfAJVPL5Wtr8ZACm0sf5UrUA==", |
| | | "dependencies": { |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer-ui/web": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/web/-/web-1.8.0.tgz", |
| | | "integrity": "sha512-tG0OQl+U2+6dNXmWzQzczReAH63H7eJPNkCwRxSMopipvVLR0ix3YgpHFrCBzd05yH2x1S5xJ9aUJin+bgAUfA==", |
| | | "dependencies": { |
| | | "@leafer-in/interface": "1.8.0", |
| | | "@leafer-ui/core": "1.8.0", |
| | | "@leafer-ui/draw": "1.8.0", |
| | | "@leafer-ui/interaction-web": "1.8.0", |
| | | "@leafer-ui/interface": "1.8.0", |
| | | "@leafer-ui/partner": "1.8.0", |
| | | "@leafer/canvas-web": "1.8.0", |
| | | "@leafer/core": "1.8.0", |
| | | "@leafer/image-web": "1.8.0", |
| | | "@leafer/interface": "1.8.0", |
| | | "@leafer/partner": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer/canvas": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/canvas/-/canvas-1.8.0.tgz", |
| | | "integrity": "sha512-8s02D1lR4cFbNZV63WbjONgr54FuffQS9YRGml2FuRhGwgTHF6UGMQ5u7CWx9YLGgCcW4DdBqS8v1KX1MVJzOA==", |
| | | "dependencies": { |
| | | "@leafer/data": "1.8.0", |
| | | "@leafer/debug": "1.8.0", |
| | | "@leafer/file": "1.8.0", |
| | | "@leafer/list": "1.8.0", |
| | | "@leafer/math": "1.8.0", |
| | | "@leafer/path": "1.8.0", |
| | | "@leafer/platform": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer/canvas-web": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/canvas-web/-/canvas-web-1.8.0.tgz", |
| | | "integrity": "sha512-gYRmiK0WATOY1caiUTnHB0xfqvuI2oi9SW1fykIdLI/cVQfANtaOaL8mOajiwQIZv64yK630UEQIFobHkUEA5A==", |
| | | "dependencies": { |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer/core": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/core/-/core-1.8.0.tgz", |
| | | "integrity": "sha512-BOvWte6IEv5Tyrf0rx6lplwtfd7It4DtGU9js//rCZwfaocRlJCLTgcGEXk97DkdUiDeJ8gxaJiMp9CTq4CjAA==", |
| | | "dependencies": { |
| | | "@leafer/canvas": "1.8.0", |
| | | "@leafer/data": "1.8.0", |
| | | "@leafer/debug": "1.8.0", |
| | | "@leafer/decorator": "1.8.0", |
| | | "@leafer/display": "1.8.0", |
| | | "@leafer/display-module": "1.8.0", |
| | | "@leafer/event": "1.8.0", |
| | | "@leafer/file": "1.8.0", |
| | | "@leafer/helper": "1.8.0", |
| | | "@leafer/image": "1.8.0", |
| | | "@leafer/layout": "1.8.0", |
| | | "@leafer/list": "1.8.0", |
| | | "@leafer/math": "1.8.0", |
| | | "@leafer/path": "1.8.0", |
| | | "@leafer/platform": "1.8.0", |
| | | "@leafer/task": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer/data": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/data/-/data-1.8.0.tgz", |
| | | "integrity": "sha512-qzVFYNlHBJzhF23duqIxWrKwJ+kfidU0h1QiH+zbVwEdIaDGT7obiXZEzwR+kjLPftVb8gyZrZoyHgvWu43ErA==" |
| | | }, |
| | | "node_modules/@leafer/debug": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/debug/-/debug-1.8.0.tgz", |
| | | "integrity": "sha512-zqM7091uVP1OCiumJle6/t9Imc7GiM6AlX2FkvMi65YO9Ob9wmzE8X2lzA2/yggiCtbGdLRbC53Ghm1x3PrI3A==", |
| | | "dependencies": { |
| | | "@leafer/math": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer/decorator": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/decorator/-/decorator-1.8.0.tgz", |
| | | "integrity": "sha512-kdnN3JydJmBvyGK9dBZRA7mv3bawU3l3mNOclR/OWzH2uESo7tbOsDqqRdKjcKG85reMlsdKPt06Nd3FhrlmTQ==", |
| | | "dependencies": { |
| | | "@leafer/data": "1.8.0", |
| | | "@leafer/debug": "1.8.0", |
| | | "@leafer/platform": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer/display": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/display/-/display-1.8.0.tgz", |
| | | "integrity": "sha512-rIUOrG8nJhFmK61ulo846zpvgH6ogI9ojZ9RMMBfvVL2N81CYF7/u+7QcgCKJB0GdLlCaDgmyXuCAozuAik7Gg==", |
| | | "dependencies": { |
| | | "@leafer/data": "1.8.0", |
| | | "@leafer/debug": "1.8.0", |
| | | "@leafer/decorator": "1.8.0", |
| | | "@leafer/display-module": "1.8.0", |
| | | "@leafer/event": "1.8.0", |
| | | "@leafer/helper": "1.8.0", |
| | | "@leafer/image": "1.8.0", |
| | | "@leafer/layout": "1.8.0", |
| | | "@leafer/math": "1.8.0", |
| | | "@leafer/platform": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer/display-module": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/display-module/-/display-module-1.8.0.tgz", |
| | | "integrity": "sha512-ZdXKjfcYCDHzUSx6GsGJh3SQLyQZFZ3TcRpseF/IAmQpmLwujKvAdltLlN30eNEsil6qqEOORuNqQHGyd6YFQA==", |
| | | "dependencies": { |
| | | "@leafer/debug": "1.8.0", |
| | | "@leafer/event": "1.8.0", |
| | | "@leafer/helper": "1.8.0", |
| | | "@leafer/math": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer/event": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/event/-/event-1.8.0.tgz", |
| | | "integrity": "sha512-PHBvoZ2LLnI5HY3L5SyKHvIUoyMFitNj7Nn2fqF6yUHp9BQzhKV2gLuyn7RjhpnPta4Xo88ruLADFO0yWlG5gA==", |
| | | "dependencies": { |
| | | "@leafer/decorator": "1.8.0", |
| | | "@leafer/math": "1.8.0", |
| | | "@leafer/platform": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer/file": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/file/-/file-1.8.0.tgz", |
| | | "integrity": "sha512-JwYTv1p/cIhAQv5iXT86gRInwHQz/kLKaQAREi7oA9bacyBQ+2cE4r695I7Nok7JyqTFEe5DtK3g2sm3Ueqfgg==", |
| | | "dependencies": { |
| | | "@leafer/debug": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer/helper": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/helper/-/helper-1.8.0.tgz", |
| | | "integrity": "sha512-cTai2P/Fy0Rxr+Lno111pseNJF5xU0ctowTV4lFW+6cOnaGpqeJoTGFkO9MeSOFeSRBjxe7ecfsNoGGzm3THoA==", |
| | | "dependencies": { |
| | | "@leafer/math": "1.8.0", |
| | | "@leafer/platform": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer/image": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/image/-/image-1.8.0.tgz", |
| | | "integrity": "sha512-XElWxR5RZeiTKF+ntdTf5d3wxt2xj7BLh3N3q1Z5Y9ymf73P+efcWV/CaNPRpP8M6uXomQLwYE8KbRa79y5ZVw==", |
| | | "dependencies": { |
| | | "@leafer/data": "1.8.0", |
| | | "@leafer/file": "1.8.0", |
| | | "@leafer/math": "1.8.0", |
| | | "@leafer/platform": "1.8.0", |
| | | "@leafer/task": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer/image-web": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/image-web/-/image-web-1.8.0.tgz", |
| | | "integrity": "sha512-OGcBG1ALIeF2pjMoSwJlrfEL1KQbu1TfJDYMqLGydM1Ygt5w/FHJrsqtd/zBJlmjxZSVCmA5C8DDlbFkKpqJOw==", |
| | | "dependencies": { |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer/interface": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/interface/-/interface-1.8.0.tgz", |
| | | "integrity": "sha512-76jOG0AabfIw8WMI8nulb1FKylBcVnpucuiTjml5df6P991wcH8xsDSQtRCaOKrsl0C2DbW62BVwst1NHHHalQ==" |
| | | }, |
| | | "node_modules/@leafer/layout": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/layout/-/layout-1.8.0.tgz", |
| | | "integrity": "sha512-t6tisD+dcKSwyAaKV/EIPRrrx/HCQn9vGrZxTVSs/sXGdM7Sfhv2Kp9/QJm7lEceVbVmAWWQX/3QMWs1bj8xKA==", |
| | | "dependencies": { |
| | | "@leafer/helper": "1.8.0", |
| | | "@leafer/math": "1.8.0", |
| | | "@leafer/platform": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer/layouter": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/layouter/-/layouter-1.8.0.tgz", |
| | | "integrity": "sha512-prrsYdlHsUjYSLBuotmmbWYNhML5EkLqD6NPPbl43eBd0nGVZJZMTmgVZNcjn/Ms2MGf15IeVIg1VhAuFlp2fg==", |
| | | "dependencies": { |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer/list": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/list/-/list-1.8.0.tgz", |
| | | "integrity": "sha512-eySBH8eRcoW4P9N5Doj6xgFwQ5AqgzG+jR9jhd1VDaV4mVjK+PnBxLWLkg/ZNZgYX38HEtQZ02qMiDFOHmBA6g==" |
| | | }, |
| | | "node_modules/@leafer/math": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/math/-/math-1.8.0.tgz", |
| | | "integrity": "sha512-X0VaEqgCOAHZUsiiYWqoENvE5lHrglfuKaX3fkers31UgjPN0wmTSbk+N4kXR9ssq6wq3KzJIRdPyPLVTMoo5A==" |
| | | }, |
| | | "node_modules/@leafer/partner": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/partner/-/partner-1.8.0.tgz", |
| | | "integrity": "sha512-qILWj6XIj3wpCgZPs/hh/Z7BgI6/fYcjC/aJRETz87X9anL5GtlrVP7FDvb2O5uD8fiSRkqoeMWhUmVCnIclZg==", |
| | | "dependencies": { |
| | | "@leafer/core": "1.8.0", |
| | | "@leafer/layouter": "1.8.0", |
| | | "@leafer/renderer": "1.8.0", |
| | | "@leafer/selector": "1.8.0", |
| | | "@leafer/watcher": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer/path": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/path/-/path-1.8.0.tgz", |
| | | "integrity": "sha512-FXxkxc4Yckr+zBO+Ejz4aKtIC0mV3Jmx/0Vl8uOVT5GOzpbJvGdZYM4a5jRMddUJn5I/C0F1QWjXTGqHX/6fSA==", |
| | | "dependencies": { |
| | | "@leafer/debug": "1.8.0", |
| | | "@leafer/math": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer/platform": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/platform/-/platform-1.8.0.tgz", |
| | | "integrity": "sha512-EuwwMKowbQ3tcPffa3hFDkAm+odvJmH0f+b8QzSBlS9SXO2H6FMcizxMqrnSt7CmBEQY7PZEazXGxYMaptUflA==", |
| | | "dependencies": { |
| | | "@leafer/debug": "1.8.0", |
| | | "@leafer/layouter": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer/renderer": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/renderer/-/renderer-1.8.0.tgz", |
| | | "integrity": "sha512-rXmSRJW2lDlDJFeJwJEwd7gxU8IPtW7ysJ9xHoj+vqeeIFn8xxBZiYjE4/Y+CNCR4eebOC2qseLYzTV99+QIhA==", |
| | | "dependencies": { |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer/selector": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/selector/-/selector-1.8.0.tgz", |
| | | "integrity": "sha512-uljegY6ia0UodTnd8G0wYXo1KbT31+PXgNvnSdrV5Jd+n8snjUoAKA6wkfbTIAZoLFbIEoge5alJ2WMvyF+4QQ==", |
| | | "dependencies": { |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer/task": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/task/-/task-1.8.0.tgz", |
| | | "integrity": "sha512-i+oFTC9jX0k4MKek4zhuezkNwH5n1m/TZ2eCy+uw6Hwt8i4LCX2tY/mNcFJGtNztBBHxbT3pe/oCM8Pi2nuYag==", |
| | | "dependencies": { |
| | | "@leafer/debug": "1.8.0", |
| | | "@leafer/math": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@leafer/watcher": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/watcher/-/watcher-1.8.0.tgz", |
| | | "integrity": "sha512-Co37fD2k6sr7ZrKpM1NghpX0iVMvA51NKSPk3MxDbLUyzBRCmbhyLlvT68CW09L1Vb+9WOvuQA3kdQ4QUrOTew==", |
| | | "dependencies": { |
| | | "@leafer/data": "1.8.0", |
| | | "@leafer/event": "1.8.0", |
| | | "@leafer/list": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/@popperjs/core": { |
| | | "name": "@sxzz/popperjs-es", |
| | | "version": "2.11.7", |
| | |
| | | } |
| | | }, |
| | | "node_modules/acorn": { |
| | | "version": "8.10.0", |
| | | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", |
| | | "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", |
| | | "version": "8.15.0", |
| | | "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.15.0.tgz", |
| | | "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", |
| | | "bin": { |
| | | "acorn": "bin/acorn" |
| | | }, |
| | |
| | | "integrity": "sha512-FKWIhiU96bi3xpP9ewRMgANsoVmMUBnMnmpCT6dPMZOunVYJQmJhSRruoI0XSPoHeIif3kyEuiHbFrOJwEJaEA==", |
| | | "license": "MIT" |
| | | }, |
| | | "node_modules/dxf-parser": { |
| | | "version": "1.1.2", |
| | | "resolved": "https://registry.npmmirror.com/dxf-parser/-/dxf-parser-1.1.2.tgz", |
| | | "integrity": "sha512-GPTumUvRkounlIazLIyJMmTWt+nlg+ksS0Hdm8jWvejmZKBTz6gvHTam76wRm4PQMma5sgKLThblQyeIJcH79Q==", |
| | | "dependencies": { |
| | | "loglevel": "^1.7.1" |
| | | } |
| | | }, |
| | | "node_modules/dxf-writer": { |
| | | "version": "1.18.4", |
| | | "resolved": "https://registry.npmmirror.com/dxf-writer/-/dxf-writer-1.18.4.tgz", |
| | | "integrity": "sha512-JdLOyP+1UyeB30yPowJLJKK0bPROq/dX+QTWcLSplQoepcyo/YMlU0Z27T7mIPxgwiPb+CQWwUIlbcRRfns+ng==" |
| | | }, |
| | | "node_modules/element-plus": { |
| | | "version": "2.9.3", |
| | | "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.9.3.tgz", |
| | |
| | | "resolved": "https://registry.npmmirror.com/jsbarcode/-/jsbarcode-3.11.6.tgz", |
| | | "integrity": "sha512-G5TKGyKY1zJo0ZQKFM1IIMfy0nF2rs92BLlCz+cU4/TazIc4ZH+X1GYeDRt7TKjrYqmPfTjwTBkU/QnQlsYiuA==" |
| | | }, |
| | | "node_modules/leafer-ui": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/leafer-ui/-/leafer-ui-1.8.0.tgz", |
| | | "integrity": "sha512-Y/jXyC3ZJ8DCkifUfIgSqt38fwdf1UJ8//IKWntvCXVlEx9R50vx33rxf1VVHQq0NWcfH6U64k+VzDLSXq/rFA==", |
| | | "dependencies": { |
| | | "@leafer-in/interface": "1.8.0", |
| | | "@leafer-ui/core": "1.8.0", |
| | | "@leafer-ui/draw": "1.8.0", |
| | | "@leafer-ui/interaction-web": "1.8.0", |
| | | "@leafer-ui/interface": "1.8.0", |
| | | "@leafer-ui/partner": "1.8.0", |
| | | "@leafer-ui/web": "1.8.0", |
| | | "@leafer/core": "1.8.0", |
| | | "@leafer/interface": "1.8.0", |
| | | "@leafer/partner": "1.8.0" |
| | | } |
| | | }, |
| | | "node_modules/leaflet": { |
| | | "version": "1.9.4", |
| | | "resolved": "https://registry.npmmirror.com/leaflet/-/leaflet-1.9.4.tgz", |
| | | "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==" |
| | | }, |
| | | "node_modules/local-pkg": { |
| | | "version": "0.4.3", |
| | | "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", |
| | |
| | | "@types/lodash-es": "*", |
| | | "lodash": "*", |
| | | "lodash-es": "*" |
| | | } |
| | | }, |
| | | "node_modules/loglevel": { |
| | | "version": "1.9.2", |
| | | "resolved": "https://registry.npmmirror.com/loglevel/-/loglevel-1.9.2.tgz", |
| | | "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==", |
| | | "engines": { |
| | | "node": ">= 0.6.0" |
| | | }, |
| | | "funding": { |
| | | "type": "tidelift", |
| | | "url": "https://tidelift.com/funding/github/npm/loglevel" |
| | | } |
| | | }, |
| | | "node_modules/magic-string": { |
| | |
| | | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", |
| | | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" |
| | | }, |
| | | "@leafer-in/interface": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-in/interface/-/interface-1.8.0.tgz", |
| | | "integrity": "sha512-j4ucPjPX8/TBIID1RPHv6CA1KtiIh56igvrHBYHd44NS1tzKWhsswKUVRrzK0nqeSh1VL4SzGZgiQNwZq56R4A==", |
| | | "requires": {} |
| | | }, |
| | | "@leafer-ui/app": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/app/-/app-1.8.0.tgz", |
| | | "integrity": "sha512-IapfZlekYrm32h2KfILlbdzcD7n4ncrzXLeM0h0XBK+4rRCqLrPNScPbzKtNhaMhFvq2NjLdfWVqmy63jXfj2g==", |
| | | "requires": { |
| | | "@leafer-ui/data": "1.8.0", |
| | | "@leafer-ui/display": "1.8.0", |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/bounds": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/bounds/-/bounds-1.8.0.tgz", |
| | | "integrity": "sha512-k72/biSCoUKNM7Gtk25R1AuBwdebT9b2XVveAqbaAq0CV6Wk0tUbjAnzyarSyzYn4BgrjPCTGl/lYtiPuIAiRQ==", |
| | | "requires": { |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/color": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/color/-/color-1.8.0.tgz", |
| | | "integrity": "sha512-WLw7rgA7zgVp8dp1hahWM8v8lo6HClUmpbWrsPTTlA7QXAiNpayfh8bV8NOhhwhQhCtxOEtC6UGKsBcTorwqMQ==", |
| | | "requires": { |
| | | "@leafer-ui/draw": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/core": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/core/-/core-1.8.0.tgz", |
| | | "integrity": "sha512-GkFRaNoArkFEEctzP5rKxOzFOnNzTLa9hLbvPQM/CFCBSSDdkx+BsnKBPkwHqvcRvGQLPZ3fhpoatxMoQncPug==", |
| | | "requires": { |
| | | "@leafer-ui/app": "1.8.0", |
| | | "@leafer-ui/draw": "1.8.0", |
| | | "@leafer-ui/event": "1.8.0", |
| | | "@leafer-ui/hit": "1.8.0", |
| | | "@leafer-ui/interaction": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/data": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/data/-/data-1.8.0.tgz", |
| | | "integrity": "sha512-J386mOuGuVbpCU9fYdNg2IAluufYhjP4latizX8YdPEAnS2qGgbz5OahLwyCtBLYH50mT6gMyL/HSFXY4Idj5g==", |
| | | "requires": { |
| | | "@leafer-ui/external": "1.8.0", |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/decorator": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/decorator/-/decorator-1.8.0.tgz", |
| | | "integrity": "sha512-LGY8yqk+7TFhC0VgSV0jz1mHEY/6pLSmX5BNxuyomOBLzKbmW+EaWKl1JtuIBjg5ENXL5ZhVWfDZIs38fxM5Zw==", |
| | | "requires": { |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/display": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/display/-/display-1.8.0.tgz", |
| | | "integrity": "sha512-VrDOH5UTrYqAjLb2GIrVpTO33lHznxLDzP0IBqPduTGSe43BPMz7iNqUHwzgZDsV/qBKasLUtbrWcuk7SAp1fA==", |
| | | "requires": { |
| | | "@leafer-ui/data": "1.8.0", |
| | | "@leafer-ui/decorator": "1.8.0", |
| | | "@leafer-ui/display-module": "1.8.0", |
| | | "@leafer-ui/external": "1.8.0", |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/display-module": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/display-module/-/display-module-1.8.0.tgz", |
| | | "integrity": "sha512-69ZsFg+pUGskFa8kfO1OnmAz6q4q0/RNlmqbPE8B2D35J6JVJeITK1PBxGOGB/hKhDdoGUDpkb/MuKeIiIhNoA==", |
| | | "requires": { |
| | | "@leafer-ui/bounds": "1.8.0", |
| | | "@leafer-ui/data": "1.8.0", |
| | | "@leafer-ui/render": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/draw": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/draw/-/draw-1.8.0.tgz", |
| | | "integrity": "sha512-utYzJ4IIP2GaKWTVaO19gnlrz0HMXmzgvkcsovW5JoOQIi7XpB3yFXf7tUTUb9HdcVMAK7jssz4T0E4EiMaWvQ==", |
| | | "requires": { |
| | | "@leafer-ui/decorator": "1.8.0", |
| | | "@leafer-ui/display": "1.8.0", |
| | | "@leafer-ui/display-module": "1.8.0", |
| | | "@leafer-ui/external": "1.8.0", |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/effect": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/effect/-/effect-1.8.0.tgz", |
| | | "integrity": "sha512-on6jWBrGizw4pV1ZAtauwkA2e/jzf/aULfDrjVwwD5IrzLepcNoCJjE+ZQyabLU2KnRKKmjsvaGfMyYbpnjHfA==", |
| | | "requires": { |
| | | "@leafer-ui/draw": "1.8.0", |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/event": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/event/-/event-1.8.0.tgz", |
| | | "integrity": "sha512-jwaUKogwmq5wjhjiV01DCGxRcEY1MgszrQ5KokpLPnHCVPnxjBzrnJ808OAkXxwtrsNeFSpBDNOCbRvY4A0+qQ==", |
| | | "requires": { |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/external": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/external/-/external-1.8.0.tgz", |
| | | "integrity": "sha512-nyyVTkM8X3KPJou7cX3+npc4C9a5YSAUviu95auSEFWlF/OBzdUQ2wwG6JKvN+BZzNOTgWgqByyRNbChI90xXw==", |
| | | "requires": { |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/hit": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/hit/-/hit-1.8.0.tgz", |
| | | "integrity": "sha512-LpCoPlELmUOcERtibj0IZpSokhWOJksWJrxxdHWLgS0nDqfuu1OYkLNl3OWsYiejSPyDdODD6R7bLfWSOSjz8Q==", |
| | | "requires": { |
| | | "@leafer-ui/draw": "1.8.0", |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/interaction": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/interaction/-/interaction-1.8.0.tgz", |
| | | "integrity": "sha512-SCIP5nvGNb5z9i1HcCFXiHNk1gNvmIdoH+PcZFwoN35bYAlkIeRx9pDTSxrLBoVpJq4FXxt2qQrR9+IwZuJ3/A==", |
| | | "requires": { |
| | | "@leafer-ui/draw": "1.8.0", |
| | | "@leafer-ui/event": "1.8.0", |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/interaction-web": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/interaction-web/-/interaction-web-1.8.0.tgz", |
| | | "integrity": "sha512-HhySVSnjHm4BGEyw8mqoNyyzf2fmzV1V/yHw5i5UOrbJol58f12xGY8J6zoMLKrcXh4VfZQ+uaqjOWiYjOiLGw==", |
| | | "requires": { |
| | | "@leafer-ui/core": "1.8.0", |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/interface": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/interface/-/interface-1.8.0.tgz", |
| | | "integrity": "sha512-cwZutgshMWVg22xzJ9+34Ye/HX0W6LxMyQwoPtDlMUMQKvBW5EHRfQ5dv4d16X9PFxA0N7Djm0u7/TIpjrCh0g==", |
| | | "requires": { |
| | | "@leafer/interface": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/paint": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/paint/-/paint-1.8.0.tgz", |
| | | "integrity": "sha512-8F5XgJS0lflpA2W6GxJVQw8bjv9H5dCc0JdjHbQEcaKMFk0vQzjm6d61HbjWXEW61jHXZC+rXtDOi3T1MrQVVg==", |
| | | "requires": { |
| | | "@leafer-ui/draw": "1.8.0", |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/partner": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/partner/-/partner-1.8.0.tgz", |
| | | "integrity": "sha512-3VBx61FoR8/zSXslmWstg/u7qulzBvi3e+iMl+fW0ruWeNx95VdM4W3LG3am9RQ92fqnKdF1ebgpoKZcIm5ajQ==", |
| | | "requires": { |
| | | "@leafer-ui/color": "1.8.0", |
| | | "@leafer-ui/draw": "1.8.0", |
| | | "@leafer-ui/effect": "1.8.0", |
| | | "@leafer-ui/paint": "1.8.0", |
| | | "@leafer-ui/text": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/render": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/render/-/render-1.8.0.tgz", |
| | | "integrity": "sha512-1gEx9FmlvyhYMqGrh4ogTv3MuJnti4pIBqPtrI+8grPQ1cpjwS36ghV+7LNhb6y+oPOwqw/22+KIG35ObxVLEA==", |
| | | "requires": { |
| | | "@leafer-ui/external": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/text": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/text/-/text-1.8.0.tgz", |
| | | "integrity": "sha512-7IXXDjP8DkzIniOI1ow/6rMlYknBCRltGo7lyFy2besI32mS1yIobXlO60/uTCtfAJVPL5Wtr8ZACm0sf5UrUA==", |
| | | "requires": { |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/web": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/web/-/web-1.8.0.tgz", |
| | | "integrity": "sha512-tG0OQl+U2+6dNXmWzQzczReAH63H7eJPNkCwRxSMopipvVLR0ix3YgpHFrCBzd05yH2x1S5xJ9aUJin+bgAUfA==", |
| | | "requires": { |
| | | "@leafer-in/interface": "1.8.0", |
| | | "@leafer-ui/core": "1.8.0", |
| | | "@leafer-ui/draw": "1.8.0", |
| | | "@leafer-ui/interaction-web": "1.8.0", |
| | | "@leafer-ui/interface": "1.8.0", |
| | | "@leafer-ui/partner": "1.8.0", |
| | | "@leafer/canvas-web": "1.8.0", |
| | | "@leafer/core": "1.8.0", |
| | | "@leafer/image-web": "1.8.0", |
| | | "@leafer/interface": "1.8.0", |
| | | "@leafer/partner": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/canvas": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/canvas/-/canvas-1.8.0.tgz", |
| | | "integrity": "sha512-8s02D1lR4cFbNZV63WbjONgr54FuffQS9YRGml2FuRhGwgTHF6UGMQ5u7CWx9YLGgCcW4DdBqS8v1KX1MVJzOA==", |
| | | "requires": { |
| | | "@leafer/data": "1.8.0", |
| | | "@leafer/debug": "1.8.0", |
| | | "@leafer/file": "1.8.0", |
| | | "@leafer/list": "1.8.0", |
| | | "@leafer/math": "1.8.0", |
| | | "@leafer/path": "1.8.0", |
| | | "@leafer/platform": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/canvas-web": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/canvas-web/-/canvas-web-1.8.0.tgz", |
| | | "integrity": "sha512-gYRmiK0WATOY1caiUTnHB0xfqvuI2oi9SW1fykIdLI/cVQfANtaOaL8mOajiwQIZv64yK630UEQIFobHkUEA5A==", |
| | | "requires": { |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/core": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/core/-/core-1.8.0.tgz", |
| | | "integrity": "sha512-BOvWte6IEv5Tyrf0rx6lplwtfd7It4DtGU9js//rCZwfaocRlJCLTgcGEXk97DkdUiDeJ8gxaJiMp9CTq4CjAA==", |
| | | "requires": { |
| | | "@leafer/canvas": "1.8.0", |
| | | "@leafer/data": "1.8.0", |
| | | "@leafer/debug": "1.8.0", |
| | | "@leafer/decorator": "1.8.0", |
| | | "@leafer/display": "1.8.0", |
| | | "@leafer/display-module": "1.8.0", |
| | | "@leafer/event": "1.8.0", |
| | | "@leafer/file": "1.8.0", |
| | | "@leafer/helper": "1.8.0", |
| | | "@leafer/image": "1.8.0", |
| | | "@leafer/layout": "1.8.0", |
| | | "@leafer/list": "1.8.0", |
| | | "@leafer/math": "1.8.0", |
| | | "@leafer/path": "1.8.0", |
| | | "@leafer/platform": "1.8.0", |
| | | "@leafer/task": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/data": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/data/-/data-1.8.0.tgz", |
| | | "integrity": "sha512-qzVFYNlHBJzhF23duqIxWrKwJ+kfidU0h1QiH+zbVwEdIaDGT7obiXZEzwR+kjLPftVb8gyZrZoyHgvWu43ErA==" |
| | | }, |
| | | "@leafer/debug": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/debug/-/debug-1.8.0.tgz", |
| | | "integrity": "sha512-zqM7091uVP1OCiumJle6/t9Imc7GiM6AlX2FkvMi65YO9Ob9wmzE8X2lzA2/yggiCtbGdLRbC53Ghm1x3PrI3A==", |
| | | "requires": { |
| | | "@leafer/math": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/decorator": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/decorator/-/decorator-1.8.0.tgz", |
| | | "integrity": "sha512-kdnN3JydJmBvyGK9dBZRA7mv3bawU3l3mNOclR/OWzH2uESo7tbOsDqqRdKjcKG85reMlsdKPt06Nd3FhrlmTQ==", |
| | | "requires": { |
| | | "@leafer/data": "1.8.0", |
| | | "@leafer/debug": "1.8.0", |
| | | "@leafer/platform": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/display": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/display/-/display-1.8.0.tgz", |
| | | "integrity": "sha512-rIUOrG8nJhFmK61ulo846zpvgH6ogI9ojZ9RMMBfvVL2N81CYF7/u+7QcgCKJB0GdLlCaDgmyXuCAozuAik7Gg==", |
| | | "requires": { |
| | | "@leafer/data": "1.8.0", |
| | | "@leafer/debug": "1.8.0", |
| | | "@leafer/decorator": "1.8.0", |
| | | "@leafer/display-module": "1.8.0", |
| | | "@leafer/event": "1.8.0", |
| | | "@leafer/helper": "1.8.0", |
| | | "@leafer/image": "1.8.0", |
| | | "@leafer/layout": "1.8.0", |
| | | "@leafer/math": "1.8.0", |
| | | "@leafer/platform": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/display-module": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/display-module/-/display-module-1.8.0.tgz", |
| | | "integrity": "sha512-ZdXKjfcYCDHzUSx6GsGJh3SQLyQZFZ3TcRpseF/IAmQpmLwujKvAdltLlN30eNEsil6qqEOORuNqQHGyd6YFQA==", |
| | | "requires": { |
| | | "@leafer/debug": "1.8.0", |
| | | "@leafer/event": "1.8.0", |
| | | "@leafer/helper": "1.8.0", |
| | | "@leafer/math": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/event": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/event/-/event-1.8.0.tgz", |
| | | "integrity": "sha512-PHBvoZ2LLnI5HY3L5SyKHvIUoyMFitNj7Nn2fqF6yUHp9BQzhKV2gLuyn7RjhpnPta4Xo88ruLADFO0yWlG5gA==", |
| | | "requires": { |
| | | "@leafer/decorator": "1.8.0", |
| | | "@leafer/math": "1.8.0", |
| | | "@leafer/platform": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/file": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/file/-/file-1.8.0.tgz", |
| | | "integrity": "sha512-JwYTv1p/cIhAQv5iXT86gRInwHQz/kLKaQAREi7oA9bacyBQ+2cE4r695I7Nok7JyqTFEe5DtK3g2sm3Ueqfgg==", |
| | | "requires": { |
| | | "@leafer/debug": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/helper": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/helper/-/helper-1.8.0.tgz", |
| | | "integrity": "sha512-cTai2P/Fy0Rxr+Lno111pseNJF5xU0ctowTV4lFW+6cOnaGpqeJoTGFkO9MeSOFeSRBjxe7ecfsNoGGzm3THoA==", |
| | | "requires": { |
| | | "@leafer/math": "1.8.0", |
| | | "@leafer/platform": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/image": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/image/-/image-1.8.0.tgz", |
| | | "integrity": "sha512-XElWxR5RZeiTKF+ntdTf5d3wxt2xj7BLh3N3q1Z5Y9ymf73P+efcWV/CaNPRpP8M6uXomQLwYE8KbRa79y5ZVw==", |
| | | "requires": { |
| | | "@leafer/data": "1.8.0", |
| | | "@leafer/file": "1.8.0", |
| | | "@leafer/math": "1.8.0", |
| | | "@leafer/platform": "1.8.0", |
| | | "@leafer/task": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/image-web": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/image-web/-/image-web-1.8.0.tgz", |
| | | "integrity": "sha512-OGcBG1ALIeF2pjMoSwJlrfEL1KQbu1TfJDYMqLGydM1Ygt5w/FHJrsqtd/zBJlmjxZSVCmA5C8DDlbFkKpqJOw==", |
| | | "requires": { |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/interface": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/interface/-/interface-1.8.0.tgz", |
| | | "integrity": "sha512-76jOG0AabfIw8WMI8nulb1FKylBcVnpucuiTjml5df6P991wcH8xsDSQtRCaOKrsl0C2DbW62BVwst1NHHHalQ==" |
| | | }, |
| | | "@leafer/layout": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/layout/-/layout-1.8.0.tgz", |
| | | "integrity": "sha512-t6tisD+dcKSwyAaKV/EIPRrrx/HCQn9vGrZxTVSs/sXGdM7Sfhv2Kp9/QJm7lEceVbVmAWWQX/3QMWs1bj8xKA==", |
| | | "requires": { |
| | | "@leafer/helper": "1.8.0", |
| | | "@leafer/math": "1.8.0", |
| | | "@leafer/platform": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/layouter": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/layouter/-/layouter-1.8.0.tgz", |
| | | "integrity": "sha512-prrsYdlHsUjYSLBuotmmbWYNhML5EkLqD6NPPbl43eBd0nGVZJZMTmgVZNcjn/Ms2MGf15IeVIg1VhAuFlp2fg==", |
| | | "requires": { |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/list": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/list/-/list-1.8.0.tgz", |
| | | "integrity": "sha512-eySBH8eRcoW4P9N5Doj6xgFwQ5AqgzG+jR9jhd1VDaV4mVjK+PnBxLWLkg/ZNZgYX38HEtQZ02qMiDFOHmBA6g==" |
| | | }, |
| | | "@leafer/math": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/math/-/math-1.8.0.tgz", |
| | | "integrity": "sha512-X0VaEqgCOAHZUsiiYWqoENvE5lHrglfuKaX3fkers31UgjPN0wmTSbk+N4kXR9ssq6wq3KzJIRdPyPLVTMoo5A==" |
| | | }, |
| | | "@leafer/partner": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/partner/-/partner-1.8.0.tgz", |
| | | "integrity": "sha512-qILWj6XIj3wpCgZPs/hh/Z7BgI6/fYcjC/aJRETz87X9anL5GtlrVP7FDvb2O5uD8fiSRkqoeMWhUmVCnIclZg==", |
| | | "requires": { |
| | | "@leafer/core": "1.8.0", |
| | | "@leafer/layouter": "1.8.0", |
| | | "@leafer/renderer": "1.8.0", |
| | | "@leafer/selector": "1.8.0", |
| | | "@leafer/watcher": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/path": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/path/-/path-1.8.0.tgz", |
| | | "integrity": "sha512-FXxkxc4Yckr+zBO+Ejz4aKtIC0mV3Jmx/0Vl8uOVT5GOzpbJvGdZYM4a5jRMddUJn5I/C0F1QWjXTGqHX/6fSA==", |
| | | "requires": { |
| | | "@leafer/debug": "1.8.0", |
| | | "@leafer/math": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/platform": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/platform/-/platform-1.8.0.tgz", |
| | | "integrity": "sha512-EuwwMKowbQ3tcPffa3hFDkAm+odvJmH0f+b8QzSBlS9SXO2H6FMcizxMqrnSt7CmBEQY7PZEazXGxYMaptUflA==", |
| | | "requires": { |
| | | "@leafer/debug": "1.8.0", |
| | | "@leafer/layouter": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/renderer": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/renderer/-/renderer-1.8.0.tgz", |
| | | "integrity": "sha512-rXmSRJW2lDlDJFeJwJEwd7gxU8IPtW7ysJ9xHoj+vqeeIFn8xxBZiYjE4/Y+CNCR4eebOC2qseLYzTV99+QIhA==", |
| | | "requires": { |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/selector": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/selector/-/selector-1.8.0.tgz", |
| | | "integrity": "sha512-uljegY6ia0UodTnd8G0wYXo1KbT31+PXgNvnSdrV5Jd+n8snjUoAKA6wkfbTIAZoLFbIEoge5alJ2WMvyF+4QQ==", |
| | | "requires": { |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/task": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/task/-/task-1.8.0.tgz", |
| | | "integrity": "sha512-i+oFTC9jX0k4MKek4zhuezkNwH5n1m/TZ2eCy+uw6Hwt8i4LCX2tY/mNcFJGtNztBBHxbT3pe/oCM8Pi2nuYag==", |
| | | "requires": { |
| | | "@leafer/debug": "1.8.0", |
| | | "@leafer/math": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/watcher": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/watcher/-/watcher-1.8.0.tgz", |
| | | "integrity": "sha512-Co37fD2k6sr7ZrKpM1NghpX0iVMvA51NKSPk3MxDbLUyzBRCmbhyLlvT68CW09L1Vb+9WOvuQA3kdQ4QUrOTew==", |
| | | "requires": { |
| | | "@leafer/data": "1.8.0", |
| | | "@leafer/event": "1.8.0", |
| | | "@leafer/list": "1.8.0" |
| | | } |
| | | }, |
| | | "@popperjs/core": { |
| | | "version": "npm:@sxzz/popperjs-es@2.11.7", |
| | | "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", |
| | |
| | | } |
| | | }, |
| | | "acorn": { |
| | | "version": "8.10.0", |
| | | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", |
| | | "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" |
| | | "version": "8.15.0", |
| | | "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.15.0.tgz", |
| | | "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==" |
| | | }, |
| | | "adler-32": { |
| | | "version": "1.3.1", |
| | |
| | | "resolved": "https://registry.npmmirror.com/dom-zindex/-/dom-zindex-1.0.6.tgz", |
| | | "integrity": "sha512-FKWIhiU96bi3xpP9ewRMgANsoVmMUBnMnmpCT6dPMZOunVYJQmJhSRruoI0XSPoHeIif3kyEuiHbFrOJwEJaEA==" |
| | | }, |
| | | "dxf-parser": { |
| | | "version": "1.1.2", |
| | | "resolved": "https://registry.npmmirror.com/dxf-parser/-/dxf-parser-1.1.2.tgz", |
| | | "integrity": "sha512-GPTumUvRkounlIazLIyJMmTWt+nlg+ksS0Hdm8jWvejmZKBTz6gvHTam76wRm4PQMma5sgKLThblQyeIJcH79Q==", |
| | | "requires": { |
| | | "loglevel": "^1.7.1" |
| | | } |
| | | }, |
| | | "dxf-writer": { |
| | | "version": "1.18.4", |
| | | "resolved": "https://registry.npmmirror.com/dxf-writer/-/dxf-writer-1.18.4.tgz", |
| | | "integrity": "sha512-JdLOyP+1UyeB30yPowJLJKK0bPROq/dX+QTWcLSplQoepcyo/YMlU0Z27T7mIPxgwiPb+CQWwUIlbcRRfns+ng==" |
| | | }, |
| | | "element-plus": { |
| | | "version": "2.9.3", |
| | | "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.9.3.tgz", |
| | |
| | | "resolved": "https://registry.npmmirror.com/jsbarcode/-/jsbarcode-3.11.6.tgz", |
| | | "integrity": "sha512-G5TKGyKY1zJo0ZQKFM1IIMfy0nF2rs92BLlCz+cU4/TazIc4ZH+X1GYeDRt7TKjrYqmPfTjwTBkU/QnQlsYiuA==" |
| | | }, |
| | | "leafer-ui": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/leafer-ui/-/leafer-ui-1.8.0.tgz", |
| | | "integrity": "sha512-Y/jXyC3ZJ8DCkifUfIgSqt38fwdf1UJ8//IKWntvCXVlEx9R50vx33rxf1VVHQq0NWcfH6U64k+VzDLSXq/rFA==", |
| | | "requires": { |
| | | "@leafer-in/interface": "1.8.0", |
| | | "@leafer-ui/core": "1.8.0", |
| | | "@leafer-ui/draw": "1.8.0", |
| | | "@leafer-ui/interaction-web": "1.8.0", |
| | | "@leafer-ui/interface": "1.8.0", |
| | | "@leafer-ui/partner": "1.8.0", |
| | | "@leafer-ui/web": "1.8.0", |
| | | "@leafer/core": "1.8.0", |
| | | "@leafer/interface": "1.8.0", |
| | | "@leafer/partner": "1.8.0" |
| | | } |
| | | }, |
| | | "leaflet": { |
| | | "version": "1.9.4", |
| | | "resolved": "https://registry.npmmirror.com/leaflet/-/leaflet-1.9.4.tgz", |
| | | "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==" |
| | | }, |
| | | "local-pkg": { |
| | | "version": "0.4.3", |
| | | "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", |
| | |
| | | "resolved": "https://registry.npmjs.org/lodash-unified/-/lodash-unified-1.0.3.tgz", |
| | | "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==", |
| | | "requires": {} |
| | | }, |
| | | "loglevel": { |
| | | "version": "1.9.2", |
| | | "resolved": "https://registry.npmmirror.com/loglevel/-/loglevel-1.9.2.tgz", |
| | | "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==" |
| | | }, |
| | | "magic-string": { |
| | | "version": "0.30.5", |
| | |
| | | "axios": "^1.5.1", |
| | | "decimal.js": "^10.4.3", |
| | | "dom-zindex": "^1.0.4", |
| | | "dxf-parser": "^1.1.2", |
| | | "dxf-writer": "^1.18.4", |
| | | "element-plus": "^2.9.3", |
| | | "file-saver": "^2.0.5", |
| | | "leafer-ui": "^1.8.0", |
| | | "leaflet": "^1.9.4", |
| | | "moment": "^2.30.1", |
| | | "northglass-erp": "file:", |
| | | "pinia": "^2.1.6", |
| | |
| | | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", |
| | | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" |
| | | }, |
| | | "@leafer-in/interface": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-in/interface/-/interface-1.8.0.tgz", |
| | | "integrity": "sha512-j4ucPjPX8/TBIID1RPHv6CA1KtiIh56igvrHBYHd44NS1tzKWhsswKUVRrzK0nqeSh1VL4SzGZgiQNwZq56R4A==", |
| | | "requires": {} |
| | | }, |
| | | "@leafer-ui/app": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/app/-/app-1.8.0.tgz", |
| | | "integrity": "sha512-IapfZlekYrm32h2KfILlbdzcD7n4ncrzXLeM0h0XBK+4rRCqLrPNScPbzKtNhaMhFvq2NjLdfWVqmy63jXfj2g==", |
| | | "requires": { |
| | | "@leafer-ui/data": "1.8.0", |
| | | "@leafer-ui/display": "1.8.0", |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/bounds": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/bounds/-/bounds-1.8.0.tgz", |
| | | "integrity": "sha512-k72/biSCoUKNM7Gtk25R1AuBwdebT9b2XVveAqbaAq0CV6Wk0tUbjAnzyarSyzYn4BgrjPCTGl/lYtiPuIAiRQ==", |
| | | "requires": { |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/color": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/color/-/color-1.8.0.tgz", |
| | | "integrity": "sha512-WLw7rgA7zgVp8dp1hahWM8v8lo6HClUmpbWrsPTTlA7QXAiNpayfh8bV8NOhhwhQhCtxOEtC6UGKsBcTorwqMQ==", |
| | | "requires": { |
| | | "@leafer-ui/draw": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/core": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/core/-/core-1.8.0.tgz", |
| | | "integrity": "sha512-GkFRaNoArkFEEctzP5rKxOzFOnNzTLa9hLbvPQM/CFCBSSDdkx+BsnKBPkwHqvcRvGQLPZ3fhpoatxMoQncPug==", |
| | | "requires": { |
| | | "@leafer-ui/app": "1.8.0", |
| | | "@leafer-ui/draw": "1.8.0", |
| | | "@leafer-ui/event": "1.8.0", |
| | | "@leafer-ui/hit": "1.8.0", |
| | | "@leafer-ui/interaction": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/data": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/data/-/data-1.8.0.tgz", |
| | | "integrity": "sha512-J386mOuGuVbpCU9fYdNg2IAluufYhjP4latizX8YdPEAnS2qGgbz5OahLwyCtBLYH50mT6gMyL/HSFXY4Idj5g==", |
| | | "requires": { |
| | | "@leafer-ui/external": "1.8.0", |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/decorator": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/decorator/-/decorator-1.8.0.tgz", |
| | | "integrity": "sha512-LGY8yqk+7TFhC0VgSV0jz1mHEY/6pLSmX5BNxuyomOBLzKbmW+EaWKl1JtuIBjg5ENXL5ZhVWfDZIs38fxM5Zw==", |
| | | "requires": { |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/display": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/display/-/display-1.8.0.tgz", |
| | | "integrity": "sha512-VrDOH5UTrYqAjLb2GIrVpTO33lHznxLDzP0IBqPduTGSe43BPMz7iNqUHwzgZDsV/qBKasLUtbrWcuk7SAp1fA==", |
| | | "requires": { |
| | | "@leafer-ui/data": "1.8.0", |
| | | "@leafer-ui/decorator": "1.8.0", |
| | | "@leafer-ui/display-module": "1.8.0", |
| | | "@leafer-ui/external": "1.8.0", |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/display-module": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/display-module/-/display-module-1.8.0.tgz", |
| | | "integrity": "sha512-69ZsFg+pUGskFa8kfO1OnmAz6q4q0/RNlmqbPE8B2D35J6JVJeITK1PBxGOGB/hKhDdoGUDpkb/MuKeIiIhNoA==", |
| | | "requires": { |
| | | "@leafer-ui/bounds": "1.8.0", |
| | | "@leafer-ui/data": "1.8.0", |
| | | "@leafer-ui/render": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/draw": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/draw/-/draw-1.8.0.tgz", |
| | | "integrity": "sha512-utYzJ4IIP2GaKWTVaO19gnlrz0HMXmzgvkcsovW5JoOQIi7XpB3yFXf7tUTUb9HdcVMAK7jssz4T0E4EiMaWvQ==", |
| | | "requires": { |
| | | "@leafer-ui/decorator": "1.8.0", |
| | | "@leafer-ui/display": "1.8.0", |
| | | "@leafer-ui/display-module": "1.8.0", |
| | | "@leafer-ui/external": "1.8.0", |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/effect": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/effect/-/effect-1.8.0.tgz", |
| | | "integrity": "sha512-on6jWBrGizw4pV1ZAtauwkA2e/jzf/aULfDrjVwwD5IrzLepcNoCJjE+ZQyabLU2KnRKKmjsvaGfMyYbpnjHfA==", |
| | | "requires": { |
| | | "@leafer-ui/draw": "1.8.0", |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/event": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/event/-/event-1.8.0.tgz", |
| | | "integrity": "sha512-jwaUKogwmq5wjhjiV01DCGxRcEY1MgszrQ5KokpLPnHCVPnxjBzrnJ808OAkXxwtrsNeFSpBDNOCbRvY4A0+qQ==", |
| | | "requires": { |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/external": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/external/-/external-1.8.0.tgz", |
| | | "integrity": "sha512-nyyVTkM8X3KPJou7cX3+npc4C9a5YSAUviu95auSEFWlF/OBzdUQ2wwG6JKvN+BZzNOTgWgqByyRNbChI90xXw==", |
| | | "requires": { |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/hit": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/hit/-/hit-1.8.0.tgz", |
| | | "integrity": "sha512-LpCoPlELmUOcERtibj0IZpSokhWOJksWJrxxdHWLgS0nDqfuu1OYkLNl3OWsYiejSPyDdODD6R7bLfWSOSjz8Q==", |
| | | "requires": { |
| | | "@leafer-ui/draw": "1.8.0", |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/interaction": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/interaction/-/interaction-1.8.0.tgz", |
| | | "integrity": "sha512-SCIP5nvGNb5z9i1HcCFXiHNk1gNvmIdoH+PcZFwoN35bYAlkIeRx9pDTSxrLBoVpJq4FXxt2qQrR9+IwZuJ3/A==", |
| | | "requires": { |
| | | "@leafer-ui/draw": "1.8.0", |
| | | "@leafer-ui/event": "1.8.0", |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/interaction-web": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/interaction-web/-/interaction-web-1.8.0.tgz", |
| | | "integrity": "sha512-HhySVSnjHm4BGEyw8mqoNyyzf2fmzV1V/yHw5i5UOrbJol58f12xGY8J6zoMLKrcXh4VfZQ+uaqjOWiYjOiLGw==", |
| | | "requires": { |
| | | "@leafer-ui/core": "1.8.0", |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/interface": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/interface/-/interface-1.8.0.tgz", |
| | | "integrity": "sha512-cwZutgshMWVg22xzJ9+34Ye/HX0W6LxMyQwoPtDlMUMQKvBW5EHRfQ5dv4d16X9PFxA0N7Djm0u7/TIpjrCh0g==", |
| | | "requires": { |
| | | "@leafer/interface": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/paint": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/paint/-/paint-1.8.0.tgz", |
| | | "integrity": "sha512-8F5XgJS0lflpA2W6GxJVQw8bjv9H5dCc0JdjHbQEcaKMFk0vQzjm6d61HbjWXEW61jHXZC+rXtDOi3T1MrQVVg==", |
| | | "requires": { |
| | | "@leafer-ui/draw": "1.8.0", |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/partner": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/partner/-/partner-1.8.0.tgz", |
| | | "integrity": "sha512-3VBx61FoR8/zSXslmWstg/u7qulzBvi3e+iMl+fW0ruWeNx95VdM4W3LG3am9RQ92fqnKdF1ebgpoKZcIm5ajQ==", |
| | | "requires": { |
| | | "@leafer-ui/color": "1.8.0", |
| | | "@leafer-ui/draw": "1.8.0", |
| | | "@leafer-ui/effect": "1.8.0", |
| | | "@leafer-ui/paint": "1.8.0", |
| | | "@leafer-ui/text": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/render": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/render/-/render-1.8.0.tgz", |
| | | "integrity": "sha512-1gEx9FmlvyhYMqGrh4ogTv3MuJnti4pIBqPtrI+8grPQ1cpjwS36ghV+7LNhb6y+oPOwqw/22+KIG35ObxVLEA==", |
| | | "requires": { |
| | | "@leafer-ui/external": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/text": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/text/-/text-1.8.0.tgz", |
| | | "integrity": "sha512-7IXXDjP8DkzIniOI1ow/6rMlYknBCRltGo7lyFy2besI32mS1yIobXlO60/uTCtfAJVPL5Wtr8ZACm0sf5UrUA==", |
| | | "requires": { |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer-ui/web": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer-ui/web/-/web-1.8.0.tgz", |
| | | "integrity": "sha512-tG0OQl+U2+6dNXmWzQzczReAH63H7eJPNkCwRxSMopipvVLR0ix3YgpHFrCBzd05yH2x1S5xJ9aUJin+bgAUfA==", |
| | | "requires": { |
| | | "@leafer-in/interface": "1.8.0", |
| | | "@leafer-ui/core": "1.8.0", |
| | | "@leafer-ui/draw": "1.8.0", |
| | | "@leafer-ui/interaction-web": "1.8.0", |
| | | "@leafer-ui/interface": "1.8.0", |
| | | "@leafer-ui/partner": "1.8.0", |
| | | "@leafer/canvas-web": "1.8.0", |
| | | "@leafer/core": "1.8.0", |
| | | "@leafer/image-web": "1.8.0", |
| | | "@leafer/interface": "1.8.0", |
| | | "@leafer/partner": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/canvas": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/canvas/-/canvas-1.8.0.tgz", |
| | | "integrity": "sha512-8s02D1lR4cFbNZV63WbjONgr54FuffQS9YRGml2FuRhGwgTHF6UGMQ5u7CWx9YLGgCcW4DdBqS8v1KX1MVJzOA==", |
| | | "requires": { |
| | | "@leafer/data": "1.8.0", |
| | | "@leafer/debug": "1.8.0", |
| | | "@leafer/file": "1.8.0", |
| | | "@leafer/list": "1.8.0", |
| | | "@leafer/math": "1.8.0", |
| | | "@leafer/path": "1.8.0", |
| | | "@leafer/platform": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/canvas-web": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/canvas-web/-/canvas-web-1.8.0.tgz", |
| | | "integrity": "sha512-gYRmiK0WATOY1caiUTnHB0xfqvuI2oi9SW1fykIdLI/cVQfANtaOaL8mOajiwQIZv64yK630UEQIFobHkUEA5A==", |
| | | "requires": { |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/core": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/core/-/core-1.8.0.tgz", |
| | | "integrity": "sha512-BOvWte6IEv5Tyrf0rx6lplwtfd7It4DtGU9js//rCZwfaocRlJCLTgcGEXk97DkdUiDeJ8gxaJiMp9CTq4CjAA==", |
| | | "requires": { |
| | | "@leafer/canvas": "1.8.0", |
| | | "@leafer/data": "1.8.0", |
| | | "@leafer/debug": "1.8.0", |
| | | "@leafer/decorator": "1.8.0", |
| | | "@leafer/display": "1.8.0", |
| | | "@leafer/display-module": "1.8.0", |
| | | "@leafer/event": "1.8.0", |
| | | "@leafer/file": "1.8.0", |
| | | "@leafer/helper": "1.8.0", |
| | | "@leafer/image": "1.8.0", |
| | | "@leafer/layout": "1.8.0", |
| | | "@leafer/list": "1.8.0", |
| | | "@leafer/math": "1.8.0", |
| | | "@leafer/path": "1.8.0", |
| | | "@leafer/platform": "1.8.0", |
| | | "@leafer/task": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/data": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/data/-/data-1.8.0.tgz", |
| | | "integrity": "sha512-qzVFYNlHBJzhF23duqIxWrKwJ+kfidU0h1QiH+zbVwEdIaDGT7obiXZEzwR+kjLPftVb8gyZrZoyHgvWu43ErA==" |
| | | }, |
| | | "@leafer/debug": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/debug/-/debug-1.8.0.tgz", |
| | | "integrity": "sha512-zqM7091uVP1OCiumJle6/t9Imc7GiM6AlX2FkvMi65YO9Ob9wmzE8X2lzA2/yggiCtbGdLRbC53Ghm1x3PrI3A==", |
| | | "requires": { |
| | | "@leafer/math": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/decorator": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/decorator/-/decorator-1.8.0.tgz", |
| | | "integrity": "sha512-kdnN3JydJmBvyGK9dBZRA7mv3bawU3l3mNOclR/OWzH2uESo7tbOsDqqRdKjcKG85reMlsdKPt06Nd3FhrlmTQ==", |
| | | "requires": { |
| | | "@leafer/data": "1.8.0", |
| | | "@leafer/debug": "1.8.0", |
| | | "@leafer/platform": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/display": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/display/-/display-1.8.0.tgz", |
| | | "integrity": "sha512-rIUOrG8nJhFmK61ulo846zpvgH6ogI9ojZ9RMMBfvVL2N81CYF7/u+7QcgCKJB0GdLlCaDgmyXuCAozuAik7Gg==", |
| | | "requires": { |
| | | "@leafer/data": "1.8.0", |
| | | "@leafer/debug": "1.8.0", |
| | | "@leafer/decorator": "1.8.0", |
| | | "@leafer/display-module": "1.8.0", |
| | | "@leafer/event": "1.8.0", |
| | | "@leafer/helper": "1.8.0", |
| | | "@leafer/image": "1.8.0", |
| | | "@leafer/layout": "1.8.0", |
| | | "@leafer/math": "1.8.0", |
| | | "@leafer/platform": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/display-module": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/display-module/-/display-module-1.8.0.tgz", |
| | | "integrity": "sha512-ZdXKjfcYCDHzUSx6GsGJh3SQLyQZFZ3TcRpseF/IAmQpmLwujKvAdltLlN30eNEsil6qqEOORuNqQHGyd6YFQA==", |
| | | "requires": { |
| | | "@leafer/debug": "1.8.0", |
| | | "@leafer/event": "1.8.0", |
| | | "@leafer/helper": "1.8.0", |
| | | "@leafer/math": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/event": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/event/-/event-1.8.0.tgz", |
| | | "integrity": "sha512-PHBvoZ2LLnI5HY3L5SyKHvIUoyMFitNj7Nn2fqF6yUHp9BQzhKV2gLuyn7RjhpnPta4Xo88ruLADFO0yWlG5gA==", |
| | | "requires": { |
| | | "@leafer/decorator": "1.8.0", |
| | | "@leafer/math": "1.8.0", |
| | | "@leafer/platform": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/file": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/file/-/file-1.8.0.tgz", |
| | | "integrity": "sha512-JwYTv1p/cIhAQv5iXT86gRInwHQz/kLKaQAREi7oA9bacyBQ+2cE4r695I7Nok7JyqTFEe5DtK3g2sm3Ueqfgg==", |
| | | "requires": { |
| | | "@leafer/debug": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/helper": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/helper/-/helper-1.8.0.tgz", |
| | | "integrity": "sha512-cTai2P/Fy0Rxr+Lno111pseNJF5xU0ctowTV4lFW+6cOnaGpqeJoTGFkO9MeSOFeSRBjxe7ecfsNoGGzm3THoA==", |
| | | "requires": { |
| | | "@leafer/math": "1.8.0", |
| | | "@leafer/platform": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/image": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/image/-/image-1.8.0.tgz", |
| | | "integrity": "sha512-XElWxR5RZeiTKF+ntdTf5d3wxt2xj7BLh3N3q1Z5Y9ymf73P+efcWV/CaNPRpP8M6uXomQLwYE8KbRa79y5ZVw==", |
| | | "requires": { |
| | | "@leafer/data": "1.8.0", |
| | | "@leafer/file": "1.8.0", |
| | | "@leafer/math": "1.8.0", |
| | | "@leafer/platform": "1.8.0", |
| | | "@leafer/task": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/image-web": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/image-web/-/image-web-1.8.0.tgz", |
| | | "integrity": "sha512-OGcBG1ALIeF2pjMoSwJlrfEL1KQbu1TfJDYMqLGydM1Ygt5w/FHJrsqtd/zBJlmjxZSVCmA5C8DDlbFkKpqJOw==", |
| | | "requires": { |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/interface": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/interface/-/interface-1.8.0.tgz", |
| | | "integrity": "sha512-76jOG0AabfIw8WMI8nulb1FKylBcVnpucuiTjml5df6P991wcH8xsDSQtRCaOKrsl0C2DbW62BVwst1NHHHalQ==" |
| | | }, |
| | | "@leafer/layout": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/layout/-/layout-1.8.0.tgz", |
| | | "integrity": "sha512-t6tisD+dcKSwyAaKV/EIPRrrx/HCQn9vGrZxTVSs/sXGdM7Sfhv2Kp9/QJm7lEceVbVmAWWQX/3QMWs1bj8xKA==", |
| | | "requires": { |
| | | "@leafer/helper": "1.8.0", |
| | | "@leafer/math": "1.8.0", |
| | | "@leafer/platform": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/layouter": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/layouter/-/layouter-1.8.0.tgz", |
| | | "integrity": "sha512-prrsYdlHsUjYSLBuotmmbWYNhML5EkLqD6NPPbl43eBd0nGVZJZMTmgVZNcjn/Ms2MGf15IeVIg1VhAuFlp2fg==", |
| | | "requires": { |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/list": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/list/-/list-1.8.0.tgz", |
| | | "integrity": "sha512-eySBH8eRcoW4P9N5Doj6xgFwQ5AqgzG+jR9jhd1VDaV4mVjK+PnBxLWLkg/ZNZgYX38HEtQZ02qMiDFOHmBA6g==" |
| | | }, |
| | | "@leafer/math": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/math/-/math-1.8.0.tgz", |
| | | "integrity": "sha512-X0VaEqgCOAHZUsiiYWqoENvE5lHrglfuKaX3fkers31UgjPN0wmTSbk+N4kXR9ssq6wq3KzJIRdPyPLVTMoo5A==" |
| | | }, |
| | | "@leafer/partner": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/partner/-/partner-1.8.0.tgz", |
| | | "integrity": "sha512-qILWj6XIj3wpCgZPs/hh/Z7BgI6/fYcjC/aJRETz87X9anL5GtlrVP7FDvb2O5uD8fiSRkqoeMWhUmVCnIclZg==", |
| | | "requires": { |
| | | "@leafer/core": "1.8.0", |
| | | "@leafer/layouter": "1.8.0", |
| | | "@leafer/renderer": "1.8.0", |
| | | "@leafer/selector": "1.8.0", |
| | | "@leafer/watcher": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/path": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/path/-/path-1.8.0.tgz", |
| | | "integrity": "sha512-FXxkxc4Yckr+zBO+Ejz4aKtIC0mV3Jmx/0Vl8uOVT5GOzpbJvGdZYM4a5jRMddUJn5I/C0F1QWjXTGqHX/6fSA==", |
| | | "requires": { |
| | | "@leafer/debug": "1.8.0", |
| | | "@leafer/math": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/platform": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/platform/-/platform-1.8.0.tgz", |
| | | "integrity": "sha512-EuwwMKowbQ3tcPffa3hFDkAm+odvJmH0f+b8QzSBlS9SXO2H6FMcizxMqrnSt7CmBEQY7PZEazXGxYMaptUflA==", |
| | | "requires": { |
| | | "@leafer/debug": "1.8.0", |
| | | "@leafer/layouter": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/renderer": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/renderer/-/renderer-1.8.0.tgz", |
| | | "integrity": "sha512-rXmSRJW2lDlDJFeJwJEwd7gxU8IPtW7ysJ9xHoj+vqeeIFn8xxBZiYjE4/Y+CNCR4eebOC2qseLYzTV99+QIhA==", |
| | | "requires": { |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/selector": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/selector/-/selector-1.8.0.tgz", |
| | | "integrity": "sha512-uljegY6ia0UodTnd8G0wYXo1KbT31+PXgNvnSdrV5Jd+n8snjUoAKA6wkfbTIAZoLFbIEoge5alJ2WMvyF+4QQ==", |
| | | "requires": { |
| | | "@leafer/core": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/task": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/task/-/task-1.8.0.tgz", |
| | | "integrity": "sha512-i+oFTC9jX0k4MKek4zhuezkNwH5n1m/TZ2eCy+uw6Hwt8i4LCX2tY/mNcFJGtNztBBHxbT3pe/oCM8Pi2nuYag==", |
| | | "requires": { |
| | | "@leafer/debug": "1.8.0", |
| | | "@leafer/math": "1.8.0" |
| | | } |
| | | }, |
| | | "@leafer/watcher": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/@leafer/watcher/-/watcher-1.8.0.tgz", |
| | | "integrity": "sha512-Co37fD2k6sr7ZrKpM1NghpX0iVMvA51NKSPk3MxDbLUyzBRCmbhyLlvT68CW09L1Vb+9WOvuQA3kdQ4QUrOTew==", |
| | | "requires": { |
| | | "@leafer/data": "1.8.0", |
| | | "@leafer/event": "1.8.0", |
| | | "@leafer/list": "1.8.0" |
| | | } |
| | | }, |
| | | "@popperjs/core": { |
| | | "version": "npm:@sxzz/popperjs-es@2.11.7", |
| | | "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", |
| | |
| | | } |
| | | }, |
| | | "acorn": { |
| | | "version": "8.10.0", |
| | | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", |
| | | "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" |
| | | "version": "8.15.0", |
| | | "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.15.0.tgz", |
| | | "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==" |
| | | }, |
| | | "adler-32": { |
| | | "version": "1.3.1", |
| | |
| | | "resolved": "https://registry.npmmirror.com/dom-zindex/-/dom-zindex-1.0.6.tgz", |
| | | "integrity": "sha512-FKWIhiU96bi3xpP9ewRMgANsoVmMUBnMnmpCT6dPMZOunVYJQmJhSRruoI0XSPoHeIif3kyEuiHbFrOJwEJaEA==" |
| | | }, |
| | | "dxf-parser": { |
| | | "version": "1.1.2", |
| | | "resolved": "https://registry.npmmirror.com/dxf-parser/-/dxf-parser-1.1.2.tgz", |
| | | "integrity": "sha512-GPTumUvRkounlIazLIyJMmTWt+nlg+ksS0Hdm8jWvejmZKBTz6gvHTam76wRm4PQMma5sgKLThblQyeIJcH79Q==", |
| | | "requires": { |
| | | "loglevel": "^1.7.1" |
| | | } |
| | | }, |
| | | "dxf-writer": { |
| | | "version": "1.18.4", |
| | | "resolved": "https://registry.npmmirror.com/dxf-writer/-/dxf-writer-1.18.4.tgz", |
| | | "integrity": "sha512-JdLOyP+1UyeB30yPowJLJKK0bPROq/dX+QTWcLSplQoepcyo/YMlU0Z27T7mIPxgwiPb+CQWwUIlbcRRfns+ng==" |
| | | }, |
| | | "element-plus": { |
| | | "version": "2.9.3", |
| | | "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.9.3.tgz", |
| | |
| | | "resolved": "https://registry.npmmirror.com/jsbarcode/-/jsbarcode-3.11.6.tgz", |
| | | "integrity": "sha512-G5TKGyKY1zJo0ZQKFM1IIMfy0nF2rs92BLlCz+cU4/TazIc4ZH+X1GYeDRt7TKjrYqmPfTjwTBkU/QnQlsYiuA==" |
| | | }, |
| | | "leafer-ui": { |
| | | "version": "1.8.0", |
| | | "resolved": "https://registry.npmmirror.com/leafer-ui/-/leafer-ui-1.8.0.tgz", |
| | | "integrity": "sha512-Y/jXyC3ZJ8DCkifUfIgSqt38fwdf1UJ8//IKWntvCXVlEx9R50vx33rxf1VVHQq0NWcfH6U64k+VzDLSXq/rFA==", |
| | | "requires": { |
| | | "@leafer-in/interface": "1.8.0", |
| | | "@leafer-ui/core": "1.8.0", |
| | | "@leafer-ui/draw": "1.8.0", |
| | | "@leafer-ui/interaction-web": "1.8.0", |
| | | "@leafer-ui/interface": "1.8.0", |
| | | "@leafer-ui/partner": "1.8.0", |
| | | "@leafer-ui/web": "1.8.0", |
| | | "@leafer/core": "1.8.0", |
| | | "@leafer/interface": "1.8.0", |
| | | "@leafer/partner": "1.8.0" |
| | | } |
| | | }, |
| | | "leaflet": { |
| | | "version": "1.9.4", |
| | | "resolved": "https://registry.npmmirror.com/leaflet/-/leaflet-1.9.4.tgz", |
| | | "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==" |
| | | }, |
| | | "local-pkg": { |
| | | "version": "0.4.3", |
| | | "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", |
| | |
| | | "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==", |
| | | "requires": {} |
| | | }, |
| | | "loglevel": { |
| | | "version": "1.9.2", |
| | | "resolved": "https://registry.npmmirror.com/loglevel/-/loglevel-1.9.2.tgz", |
| | | "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==" |
| | | }, |
| | | "magic-string": { |
| | | "version": "0.30.5", |
| | | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", |
| | |
| | | "@vue-macros/reactivity-transform": "^0.3.23", |
| | | "axios": "^1.5.1", |
| | | "decimal.js": "^10.4.3", |
| | | "dxf-parser": "^1.1.2", |
| | | "dxf-writer": "^1.18.4", |
| | | "element-plus": "^2.9.3", |
| | | "file-saver": "^2.0.5", |
| | | "leafer-ui": "^1.8.0", |
| | | "leaflet": "^1.9.4", |
| | | "moment": "^2.30.1", |
| | | "northglass-erp": "file:", |
| | | "pinia": "^2.1.6", |
| | |
| | | } |
| | | |
| | | table{ |
| | | border-collapse: collapse; |
| | | width: 100%; |
| | | } |
| | | tr,td,th{ |
| | | border: 1px solid black; |
| | | } |
| | | |
| | | th,.no-change-row { |
| | | white-space: nowrap; |
| | | } |
| | | |
| | | @media print { |
| | | @page { |
| New file |
| | |
| | | <script setup> |
| | | import request from "@/utils/request" |
| | | import {ElDatePicker, ElMessage} from "element-plus" |
| | | import {nextTick, onMounted, onUnmounted, onUpdated, reactive, ref, watch} from "vue" |
| | | import {Search} from "@element-plus/icons-vue" |
| | | import {useRouter} from 'vue-router' |
| | | import {changeFilterEvent, filterChanged} from "@/hook" |
| | | import {useI18n} from 'vue-i18n' |
| | | import deepClone from "@/utils/deepClone"; |
| | | import QRCode from "qrcode"; |
| | | import companyInfo from "@/stores/sd/companyInfo"; |
| | | import userInfo from "@/stores/userInfo" |
| | | import {add,addAuto} from '@/utils/decimal'; |
| | | //è¯è¨è·å |
| | | const company = companyInfo() |
| | | const {t} = useI18n() |
| | | let router = useRouter() |
| | | let produceList = ref([]) |
| | | let count = ref([{id:1},{id:2}]) |
| | | let list = ref() |
| | | const details = ref([]) |
| | | const user=userInfo() |
| | | const name1=ref("admin") |
| | | const name2=ref("admin") |
| | | |
| | | |
| | | |
| | | const data = ref({ |
| | | printList: [] |
| | | }) |
| | | |
| | | let props = defineProps({ |
| | | printList: null, |
| | | companyVal: null |
| | | }) |
| | | |
| | | const {currentRoute} = useRouter() |
| | | const route = currentRoute.value |
| | | |
| | | |
| | | data.value.printList = JSON.parse(props.printList) |
| | | |
| | | onMounted(() => { |
| | | selectPrint() |
| | | }) |
| | | |
| | | const companyList = ref([{ |
| | | company:'æ´é³åæ¹ç»çææ¯è¡ä»½æéå
¬å¸', |
| | | companyInfo:"LUOYANGNORTHGLASSTECHNOLOGYCO.,LTD.", |
| | | address:'æ´é³å½å®¶é«æ°ææ¯å¼ååºå¼ åº', |
| | | phone:'0379-64312861.64331830', |
| | | url:'http://www.northglass.com', |
| | | fax:'0379-64332066', |
| | | email:"luoyang@northglass.com", |
| | | postcode:'471003' |
| | | |
| | | }, |
| | | { |
| | | company:'䏿µ·åç»ç»çææ¯å·¥ä¸æéå
¬å¸', |
| | | companyInfo:"SHANGHAI NORTH GLASS TECHNOLOGY&INDUSTRY CO.,LTD.", |
| | | address:'䏿µ·å¸æ¾æ±åºå°æå±±éå
åè·¯328å·', |
| | | phone:'(021)57858640', |
| | | url:'http://www.northglass.com', |
| | | fax:'(021)57858600', |
| | | email:"sngpzb@163.com", |
| | | postcode:'201614' |
| | | |
| | | } |
| | | ]) |
| | | let companyAddress = ref(companyList.value[0]) |
| | | watch(props, (newVal, oldVal) => { |
| | | companyAddress.value = companyList.value[props.companyVal-1] |
| | | }) |
| | | |
| | | |
| | | onUpdated(() => { |
| | | const element = document.getElementById('my-paragraph'); |
| | | if (element) { |
| | | //console.log(element.style.height) |
| | | } |
| | | }); |
| | | const orderDetailList = ref([]) |
| | | const customer = ref({}) |
| | | const selectPrint =async () => { |
| | | request.post(`/finishedGoodsInventory/getSelectPrints`, data.value).then((res) => { |
| | | if (res.code == 200) { |
| | | produceList.value = deepClone(res.data.data) |
| | | customer.value = produceList.value[0].detail[0] |
| | | let height = 0 |
| | | let index = 0 |
| | | for(let i=0;i<produceList.value.length;i++){ |
| | | //æ¢äº§åå°±æ¢é¡µ |
| | | if(i>0){ |
| | | index+=1 |
| | | } |
| | | orderDetailList.value[index]=[] |
| | | orderDetailList.value[index].push({ |
| | | type:'customer', |
| | | customer:produceList.value[i].detail[0] |
| | | }) |
| | | produceList.value[i].detailList.forEach(order => { |
| | | height+=50 |
| | | //夿é«åº¦æ¯å¦è¶
è¿350ï¼åæ¢é¡µ |
| | | if(height>=500){ |
| | | height=0 |
| | | index+=1 |
| | | orderDetailList.value[index]=[] |
| | | |
| | | orderDetailList.value[index].push({ |
| | | type:'customer', |
| | | customer:produceList.value[i].detail[0] |
| | | }) |
| | | } |
| | | orderDetailList.value[index].push({ |
| | | type:'product', |
| | | productName:order.product_name |
| | | }) |
| | | |
| | | |
| | | order.detailList.forEach(item => { |
| | | height+=30 |
| | | if(height>=500){ |
| | | height=0 |
| | | index+=1 |
| | | orderDetailList.value[index]=[] |
| | | orderDetailList.value[index].push({ |
| | | type:'customer', |
| | | customer:produceList.value[i].detail[0] |
| | | }) |
| | | } |
| | | orderDetailList.value[index].push({ |
| | | type:'size', |
| | | size:item |
| | | }) |
| | | }) |
| | | }) |
| | | } |
| | | orderDetailList.value.forEach((page,index)=>{ |
| | | let sum = { |
| | | quantity:0, |
| | | area:0, |
| | | weight:0 |
| | | } |
| | | page.forEach((row)=>{ |
| | | if(row.type==='size'){ |
| | | sum.quantity +=row.size.quantity |
| | | sum.area =addAuto(row.size.area,sum.area,2) |
| | | sum.weight =addAuto(row.size.weight,sum.weight,2) |
| | | } |
| | | }) |
| | | page.push({ |
| | | type:'sum', |
| | | sum:sum |
| | | }) |
| | | }) |
| | | |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | router.push("/login") |
| | | } |
| | | }) |
| | | } |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div > |
| | | <div :class="'div_'+n " style="width: 46%;position: relative;margin-top: 20px" v-for="n in 2" > |
| | | <table v-for="page in orderDetailList" :key="page" style="width: 100%"> |
| | | <thead> |
| | | <tr> |
| | | <td colspan="1" style="text-align: center;font-weight: bolder;"> |
| | | <div style="width: 35px;height: 35px"> |
| | | <img id="img-pic" style="width:100%;height: 100%" src="@/assets/northGlass.ico" alt=""> |
| | | </div> |
| | | </td> |
| | | <td colspan="4" style="font-weight: bolder"> |
| | | <div style="font-size: 15px;font-weight: bold;line-height: 15px;"> |
| | | <p |
| | | style="font-size: 15px; |
| | | font-weight: bold; |
| | | line-height: 15px;" |
| | | >{{companyAddress.company}}</p> |
| | | <span style="font-size: 8px;"> {{companyAddress.companyInfo}}</span> |
| | | </div> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="5" style="text-align: center;font-size: 12px"> |
| | | <div>(è£
ç®±å)</div> |
| | | </td> |
| | | </tr> |
| | | <tr style="width: 100%;font-size: 9px" > |
| | | <td colspan="5"> |
| | | <div style="display:flex;"> |
| | | <div style="width: 100%"><span style="font-weight: bold;">客æ·åç§°</span>ï¼ |
| | | <input class="contactNumber" style="width: 80%;font-size: 9px" type="text" |
| | | v-model="page[0].customer.customer_name" /> |
| | | </div> |
| | | </div> |
| | | <div style="display:flex;"> |
| | | <div style="width: 100%"><span style="font-weight: bold">å·¥ç¨åç§°</span>ï¼{{page[0].customer.project}}</div> |
| | | </div> |
| | | <div style="display:flex;"> |
| | | <div style="width: 50%"><span style="font-weight: bold">订åå·</span>ï¼{{page[0].customer.order_id}}</div> |
| | | <div style="width: 50%"><span style="font-weight: bold">è£
ç®±åå·</span>ï¼{{page[0].customer.remarks}}</div> |
| | | </div> |
| | | <div style="display:flex;"> |
| | | <div style="width: 50%"><span style="font-weight: bold">å
è£
æ¥æ</span>ï¼{{page[0].customer.reporting_work_time}}</div> |
| | | <div style="width: 50%"><span style="font-weight: bold">æ¬æ¶æ°é</span>ï¼{{page[0].customer.quantity}}</div> |
| | | </div> |
| | | <div style="display:flex;"> |
| | | <div style="width: 50%;font-size: 9px"><span style="font-weight: bold">å å·¥çç»</span>ï¼{{page[0].customer.teams_groups_name2}}</div> |
| | | <div style="width: 50%;font-size: 9px"><span style="font-weight: bold">å
è£
çç»</span>ï¼{{page[0].customer.teams_groups_name}}</div> |
| | | </div> |
| | | <div style="display:flex;"> |
| | | <div style="width: 50%"><span style="font-weight: bold">è´¨éæ£éª</span>ï¼ååè</div> |
| | | <div style="width: 50%"><span style="font-weight: bold">æååè´§</span>ï¼éçç</div> |
| | | </div> |
| | | |
| | | |
| | | </td> |
| | | </tr> |
| | | <tr style="width: 100%;font-size: 12px"> |
| | | <td style="width: 20%;">ç¼å·</td> |
| | | <td style="width: 20%;">宽度</td> |
| | | <td style="width: 20%;">é«åº¦</td> |
| | | <td style="width: 20%;">çæ°</td> |
| | | <td style="width: 20%;">é¢ç§¯(m²)</td> |
| | | </tr> |
| | | <tr style="width: 100%;"> |
| | | <td colspan="5" ><hr></td> |
| | | </tr> |
| | | </thead> |
| | | <tbody> |
| | | <template v-for="(row,index) in page" :key="row"> |
| | | <tr v-if="row.type==='product'" style="width: 100%;height: 100px" > |
| | | <td colspan="1" style="font-weight: bold;font-size: 11px">å å·¥åç§:</td> |
| | | <td colspan="4"> |
| | | <textarea style="resize: none;width: 100%;height: 100px;border: 0" class="textarea" type="textarea" v-model="row.productName" /></td> |
| | | </tr> |
| | | <tr v-else-if="row.type==='size'" style="width: 100%;height: 30px"> |
| | | <td style="font-size: 10px">{{ row.size.building_number }}</td> |
| | | <td style="font-weight: bold">{{ row.size.width }}</td> |
| | | <td style="font-weight: bold">{{ row.size.height }}</td> |
| | | <td style="font-weight: bold">{{ row.size.quantity }}</td> |
| | | <td>{{ row.size.area }}</td> |
| | | </tr> |
| | | |
| | | <tr id="footsum" v-else-if="row.type==='sum'" style="border: 0;font-size: 10px"> |
| | | <td colspan="5" style="border: 0;"> |
| | | <div style="display:flex;"> |
| | | <div>æ¬é¡µæ°é</div> |
| | | <div>{{row.sum.quantity}}</div> |
| | | <div>é¢ç§¯</div> |
| | | <div>{{row.sum.area}}(m²)</div> |
| | | <div>éé</div> |
| | | <div>{{row.sum.weight}}(kg)</div> |
| | | </div> |
| | | </td> |
| | | </tr> |
| | | |
| | | </template> |
| | | </tbody> |
| | | <tfoot id="sticky-footer"> |
| | | <tr style="border: 0;font-size: 8px"> |
| | | <td colspan="5" style="border: 0;"> |
| | | <div style="display:flex;"> |
| | | <div>å°å:{{companyAddress.address}}</div> |
| | | <div>çµè¯:{{companyAddress.phone}}</div> |
| | | </div> |
| | | <div style="display:flex;"> |
| | | <div>{{companyAddress.url}}</div> |
| | | <div>ä¼ ç:{{companyAddress.fax}}</div> |
| | | </div> |
| | | <div style="display:flex;"> |
| | | <div>E-mail:{{companyAddress.email}}</div> |
| | | <div>é®ç¼ï¼{{companyAddress.postcode}}</div> |
| | | </div> |
| | | |
| | | </td> |
| | | </tr> |
| | | </tfoot> |
| | | </table> |
| | | </div> |
| | | </div> |
| | | |
| | | </template> |
| | | |
| | | <style scoped> |
| | | * { |
| | | margin: 0; |
| | | padding: 0; |
| | | } |
| | | .contactNumber{ |
| | | width: 40%; |
| | | height:20px; |
| | | border: none; |
| | | box-shadow: none; |
| | | font-size: 15px; |
| | | } |
| | | .div_2{ |
| | | margin-left: 6%; |
| | | } |
| | | .element-to-break-after { |
| | | width: 8%; |
| | | } |
| | | .element-to-breakr{ |
| | | page-break-after: always; |
| | | } |
| | | #contentTable{ |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | #record{ |
| | | font-size: 15px; |
| | | text-align: left; |
| | | display: flex; |
| | | flex-wrap: wrap |
| | | } |
| | | |
| | | table{ |
| | | width: 100%; |
| | | page-break-after: always; |
| | | } |
| | | |
| | | @media print { |
| | | @page { |
| | | size: auto; /* auto is the initial value */ |
| | | margin: 4mm 5mm 0mm 5mm /* this affects the margin in the printer settings */ |
| | | |
| | | } |
| | | #footsum{ |
| | | position: fixed; |
| | | bottom: 1.5cm; |
| | | width: 100%; /* æè
设置æå
·ä½ç宽度 */ |
| | | } |
| | | #sticky-footer { |
| | | position: fixed; |
| | | bottom: 0.5cm; |
| | | width: 100%; /* æè
设置æå
·ä½ç宽度 */ |
| | | } |
| | | /* thead{ |
| | | display: table-header-group; |
| | | page-break-inside: avoid; |
| | | } |
| | | table { |
| | | page-break-inside: auto; |
| | | } |
| | | tr { |
| | | page-break-inside: avoid; |
| | | } |
| | | |
| | | |
| | | tfoot { |
| | | display: table-footer-group; |
| | | page-break-inside: avoid; |
| | | }*/ |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | .textarea{ |
| | | --el-border-color: rgba(255,255,255,0.0); |
| | | --el-input-focus-border-color: rgba(255,255,255,0.0); |
| | | --el-input-focus-border-width: 0px; |
| | | --el-input-hover-border-color: rgba(255,255,255,0.0); |
| | | --el-input-hover-border-width: 0px; |
| | | } |
| | | |
| | | </style> |
| | |
| | | let materialStore= ref([]) |
| | | const getData = () => { |
| | | console.log(props.materialOutboundId) |
| | | request.get(`/MaterialInventory/printCreateOutbound/${props.materialOutboundId}`).then(res => { |
| | | request.get(`/materialInventory/printCreateOutbound/${props.materialOutboundId}`).then(res => { |
| | | createOutbound.value=res.data.createOutbound |
| | | createOutboundDetail.value=res.data.createOutboundDetail |
| | | console.log(createOutbound.value) |
| | |
| | | let filterData = ref({}) |
| | | |
| | | const data = ref({ |
| | | printList: [] |
| | | printList: [], |
| | | landingSequence:null |
| | | }) |
| | | |
| | | let props = defineProps({ |
| | |
| | | lableType:null,//æ ç¾ç±»å |
| | | titleList:null,//æ é¢ |
| | | switch:null,//夿æ¯å¦ä¸ºæ°æå°, |
| | | lastList:[] |
| | | lastList:[], |
| | | landingSequence:null |
| | | }) |
| | | |
| | | const {currentRoute} = useRouter() |
| | |
| | | } |
| | | let lableType = props.lableType |
| | | let switchType = props.switch |
| | | let landingSequence = props.landingSequence |
| | | data.value.printList = JSON.parse(props.list) |
| | | data.value.landingSequence = props.landingSequence |
| | | onMounted(() => { |
| | | request.post(`/processCard/getSelectPrintCustomLabelDetails/${type}/${lableType}`, data.value).then((res) => { |
| | | if (res.code == 200) { |
| | |
| | | // è·åæ å°ä¸ææçé® |
| | | const keys = Object.keys(propertyMapping); |
| | | // æ ¹æ® index è·å对åºç屿§å |
| | | |
| | | const propertyName = keys[index]; |
| | | // 妿æ å°ä¸æ²¡æè¯¥ indexï¼ç´æ¥è¿å |
| | | if (!propertyName) { |
| | |
| | | let filterData = ref({}) |
| | | |
| | | const data = ref({ |
| | | printList: [] |
| | | printList: [], |
| | | isRepeat:false |
| | | }) |
| | | |
| | | let props = defineProps({ |
| | |
| | | printMerge: null, |
| | | printLike: null, |
| | | printProject:null, |
| | | merges:null |
| | | merges:null, |
| | | printFc:null, |
| | | flashback:null, |
| | | landingSequence:null, |
| | | compound:null |
| | | }) |
| | | |
| | | const {currentRoute} = useRouter() |
| | |
| | | if (merges == '') { |
| | | merges = null |
| | | } |
| | | |
| | | //æå®å±åæ¶ |
| | | let compound = props.compound |
| | | if (compound == '') { |
| | | compound = null |
| | | } |
| | | let name=company.companyName |
| | | |
| | | let printNumberFc = props.printFc |
| | | data.value.printList = JSON.parse(props.printList) |
| | | let flowCardCount = '' |
| | | onMounted(() => { |
| | | if(props.printProject!=null){ |
| | | request.post(`/processCard/getSelectPrintProject/${printProject}/${merges}`).then((res) => { |
| | | request.post(`/processCard/getSelectPrintProject/${printProject}/${merges}/${props.flashback}/${props.landingSequence}`).then((res) => { |
| | | if (res.code == 200) { |
| | | load(res.data.data) |
| | | } else { |
| | |
| | | } |
| | | }) |
| | | }else{ |
| | | request.post(`/processCard/getSelectPrinting/${merge}/${like}/${merges}`, data.value).then((res) => { |
| | | request.post(`/processCard/getSelectPrinting/${merge}/${like}/${merges}/${props.flashback}/${compound}/${props.landingSequence}`, data.value).then((res) => { |
| | | if (res.code == 200) { |
| | | load(res.data.data) |
| | | } else { |
| | |
| | | const handleGetQRCode = async () => { |
| | | let technologyNumber='' |
| | | for (let i = 0; i < produceList.value.length; i++) { |
| | | if (produceList.value[i].detail[0].qrcode!="" && produceList.value[i].detail[0].qrcode!=null){ |
| | | technologyNumber = produceList.value[i].detail[0].qrcode.toString(); // 转æ¢ä¸ºå符串以便å¤çæ¯ä¸ªå符,åå¹¶æ ç¾ |
| | | }else { |
| | | console.log(produceList.value[i].detail[0]) |
| | | // if (produceList.value[i].detail[0].qrcode!="" && produceList.value[i].detail[0].qrcode!=null){ |
| | | // technologyNumber = produceList.value[i].detail[0].qrcode.toString(); // 转æ¢ä¸ºå符串以便å¤çæ¯ä¸ªå符,åå¹¶æ ç¾ |
| | | // }else { |
| | | technologyNumber = produceList.value[i].detail[0].technologyNumber.toString(); // 转æ¢ä¸ºå符串以便å¤çæ¯ä¸ªå符 |
| | | } |
| | | // } |
| | | produceList.value[i].detail[0]["qrcodeList"] = []; // åå§åä¸ä¸ªç©ºæ°ç»ç¨æ¥åå¨ QR Code |
| | | |
| | | if (compound == null ){ |
| | | const processId = produceList.value[i].detail[0].process_id; |
| | | const url = `${processId}/${technologyNumber}` |
| | | // çæ QR Code å¹¶åå¨å°æ°ç»ä¸ |
| | |
| | | qrcode: qrcodeData, |
| | | technologyNumber: technologyNumber |
| | | }); |
| | | } |
| | | else { |
| | | technologyNumber = compound |
| | | for (let j = 0; j < technologyNumber.length; j++) { |
| | | const processId = produceList.value[i].detail[0].process_id; |
| | | const url = `${processId}/${technologyNumber[j]}`; |
| | | // çæ QR Code å¹¶åå¨å°æ°ç»ä¸ |
| | | const qrcodeData = await QRCode.toDataURL(url); |
| | | produceList.value[i].detail[0]["qrcodeList"].push({ |
| | | qrcode: qrcodeData, |
| | | technologyNumber: technologyNumber[j] |
| | | }); |
| | | } |
| | | } |
| | | |
| | | // for (let j = 0; j < technologyNumber.length; j++) { |
| | | // const processId = produceList.value[i].detail[0].process_id; |
| | | // const url = `${processId}/${technologyNumber[j]}`; |
| | | // // çæ QR Code å¹¶åå¨å°æ°ç»ä¸ |
| | | // const qrcodeData = await QRCode.toDataURL(url); |
| | | // produceList.value[i].detail[0]["qrcodeList"].push({ |
| | | // qrcode: qrcodeData, |
| | | // technologyNumber: technologyNumber[j] |
| | | // }); |
| | | // |
| | | // } |
| | | |
| | | |
| | | |
| | | } |
| | | }; |
| | | |
| | |
| | | <tr v-for="(itemFlow,index) in item.detail" :key="index"> |
| | | <td colspan="31"> |
| | | <div style="float: left;"><input style="border: none;font-size: 28px;width: 70px;margin: 5px "/></div> |
| | | <div id="bj" style="float: right;font-size: 28px">{{ id + 1 }}</div> |
| | | <div id="bj" v-if="printFc=='true'" style="float: right;font-size: 28px">{{ id + 1 }}</div> |
| | | <div id="bj" v-else style="float: right;font-size: 28px"></div> |
| | | <div>{{ company.companyName }}</div> |
| | | <div>ç产æµç¨å¡<span style="font-weight: bold" v-if="printProject!=null">({{ printProject }})</span></div> |
| | | <div> |
| | | ç产æµç¨å¡<span style="font-weight: bold" v-if="printProject!=null">({{ printProject }})</span> |
| | | <span style="font-weight: bold" v-if="props.compound!=null">({{ props.compound }}å±åæ¶)</span> |
| | | </div> |
| | | <div style="font-weight: bolder;display: flex;justify-content:space-between"> |
| | | <div> |
| | | æå°äººï¼{{user.user.userName}} |
| | |
| | | <td class="tdNowrap">客æ·åç§°ï¼</td> |
| | | <td colspan="2">{{ items.customer_name }}</td> |
| | | <td class="tdNowrap">项ç®åç§°ï¼</td> |
| | | <td colspan="4" style="min-width: 250px;">{{ items.project }}</td> |
| | | <td v-if="name=='æ´é³åæ¹ç»çææ¯è¡ä»½æéå
¬å¸'" colspan="4" style="min-width: 250px;">{{ items.projectBatch }}</td> |
| | | <td v-else colspan="4" style="min-width: 250px;">{{ items.project }}</td> |
| | | <td class="tdNowrap">å·¥èºæµç¨ï¼</td> |
| | | <td :colspan="2+item.processList.length*2" style="width: 500px">{{ items.process }}</td> |
| | | </tr> |
| | |
| | | <tr v-for="(qrCodeItem,index) in item.detail" :key="index"> |
| | | <td colspan="31"> |
| | | <span style="display: flex;"> |
| | | <span v-for="(qrCodeItems,index) in qrCodeItem.qrcodeList" :key="index" style="display: flex;width: 35%"> |
| | | <span v-for="(qrCodeItems,index) in qrCodeItem.qrcodeList" :key="index" style="display: flex;width: 250px"> |
| | | <div class='qrCode' style="width: 80px;height: 80px;"> |
| | | <img :src=qrCodeItems.qrcode> |
| | | </div> |
| | |
| | | |
| | | flowCardCount=produceList.value.length |
| | | |
| | | |
| | | handleSummary() |
| | | handleGetQRCode() |
| | | } else { |
| | |
| | | |
| | | } |
| | | ) |
| | | |
| | | |
| | | const handleGetQRCode = async () => { |
| | | let technologyNumber='' |
| | | for (let i = 0; i < produceList.value.length; i++) { |
| | | const technologyNumber = produceList.value[i].detail[0].mergeTechnologyNumber.toString(); // 转æ¢ä¸ºå符串以便å¤çæ¯ä¸ªå符 |
| | | produceList.value[i].detail[0]["qrcodeList"] = []; // åå§åä¸ä¸ªç©ºæ°ç»ç¨æ¥åå¨ QR Code |
| | | const detail = produceList.value[i].detail[0]; |
| | | const processId = detail.process_id; |
| | | const mergeStr = detail.mergeTechnologyNumber?.toString() || ''; |
| | | |
| | | const processId = produceList.value[i].detail[0].process_id; |
| | | const url = `${processId}/${technologyNumber}`; |
| | | // çæ QR Code å¹¶åå¨å°æ°ç»ä¸ |
| | | detail.qrcodeList = []; // åå§å |
| | | |
| | | for (let j = 0; j < mergeStr.length; j++) { |
| | | const singleTech = mergeStr[j]; // ååºæ¯ä¸ä½å符 |
| | | const url = `${processId}/${singleTech}`; |
| | | const qrcodeData = await QRCode.toDataURL(url); |
| | | produceList.value[i].detail[0]["qrcodeList"].push({ |
| | | detail.qrcodeList.push({ |
| | | qrcode: qrcodeData, |
| | | technologyNumber: technologyNumber |
| | | technologyNumber: singleTech |
| | | }); |
| | | } |
| | | } |
| | | }; |
| | | |
| | | |
| | | // const handleGetQRCode = async () => { |
| | | // let technologyNumber='' |
| | | // for (let i = 0; i < produceList.value.length; i++) { |
| | | // |
| | | // const technologyNumber = produceList.value[i].detail[0].technologyNumber.toString(); // 转æ¢ä¸ºå符串以便å¤çæ¯ä¸ªå符 |
| | | // produceList.value[i].detail[0]["qrcodeList"] = []; // åå§åä¸ä¸ªç©ºæ°ç»ç¨æ¥åå¨ QR Code |
| | | // const merge = produceList.value[i].detail[0].mergeTechnologyNumber.toString(); |
| | | // const processId = produceList.value[i].detail[0].process_id; |
| | | // const url = `${processId}/${technologyNumber}`; |
| | | // // çæ QR Code å¹¶åå¨å°æ°ç»ä¸ |
| | | // const qrcodeData = await QRCode.toDataURL(url); |
| | | // produceList.value[i].detail[0]["qrcodeList"].push({ |
| | | // qrcode: qrcodeData, |
| | | // technologyNumber: technologyNumber |
| | | // }); |
| | | // } |
| | | // }; |
| | | |
| | | |
| | | //æ ¹æ®è¾å
¥çæ°ééæ°æ±æ» |
| | |
| | | <td class="tdNowrap">客æ·åç§°ï¼</td> |
| | | <td colspan="2">{{ items.customer_name }}</td> |
| | | <td class="tdNowrap">项ç®åç§°ï¼</td> |
| | | <td colspan="8" style="min-width: 300px;">{{ items.project }}</td> |
| | | <td v-if="name=='æ´é³åæ¹ç»çææ¯è¡ä»½æéå
¬å¸'" colspan="4" style="min-width: 250px;">{{ items.projectBatch }}</td> |
| | | <td v-else colspan="4" style="min-width: 250px;">{{ items.project }}</td> |
| | | <td class="tdNowrap">å·¥èºæµç¨ï¼</td> |
| | | <td :colspan="2+item.processList.length*2" style="width: 500px">{{ items.process }}</td> |
| | | </tr> |
| | |
| | | type: null,//æ ç¾æ¨¡æ¿ |
| | | lableType: null,//æ ç¾ç±»å |
| | | titleList:null,//æ é¢å表 |
| | | switch:null//夿æ¯å¦ä¸ºæ°æå° |
| | | switch:null,//夿æ¯å¦ä¸ºæ°æå° |
| | | landingSequence:null//æ ç¾è½æ¶é¡ºåºæå° |
| | | }) |
| | | |
| | | //室å
室å¤é¢ |
| | |
| | | list:null,//å¾éçæ°æ® |
| | | faceOrientation:null,//å
å¤é¢ |
| | | type:null,//æ ç¾æ¨¡æ¿ |
| | | lableType:null//æ ç¾ç±»å |
| | | lableType:null,//æ ç¾ç±»å |
| | | landingSequence:null |
| | | }) |
| | | |
| | | const printContentLabel = ref({ |
| | |
| | | let type = props.type |
| | | let lableTypes = props.lableType |
| | | data.value.printList = JSON.parse(props.list) |
| | | |
| | | let landingSequence = props.landingSequence |
| | | |
| | | const TgaStyleSet = ref([ |
| | | { |
| | |
| | | tid: 'project', title: '项ç®åç§°', data: '', type: 'text', |
| | | options: { |
| | | field: 'project', |
| | | testData: '', |
| | | width:270, |
| | | height: 16, |
| | | fontSize: 11.25, |
| | | textAlign: "left", |
| | | textContentVerticalAlign: "middle" |
| | | } |
| | | }, |
| | | { |
| | | tid: 'batch', title: 'æ¹æ¬¡', data: '', type: 'text', |
| | | options: { |
| | | field: 'batch', |
| | | testData: '', |
| | | width:270, |
| | | height: 16, |
| | |
| | | } |
| | | }, |
| | | { |
| | | tid: 'processIdAD', title: 'ç®ææµç¨å¡', data: '', type: 'text', |
| | | options: { |
| | | field: 'processIdAD', |
| | | testData: '', |
| | | width:270, |
| | | height: 16, |
| | | fontSize: 11.25, |
| | | textAlign: "left", |
| | | textContentVerticalAlign: "middle" |
| | | } |
| | | }, |
| | | { |
| | | tid: 'quantity', title: 'è®¢åæ°é', data: '', type: 'text', |
| | | options: { |
| | | field: 'quantity', |
| | |
| | | } |
| | | }, |
| | | { |
| | | tid: 'numberSize', title: 'åºå·å°ºå¯¸', data: '', type: 'text', |
| | | tid: 'numberSize', title: 'åºå°ºæ°', data: '', type: 'text', |
| | | options: { |
| | | field: 'numberSize', |
| | | testData: '', |
| | | width:270, |
| | | height: 16, |
| | | fontSize: 11.25, |
| | | textAlign: "left", |
| | | textContentVerticalAlign: "middle" |
| | | } |
| | | }, |
| | | { |
| | | tid: 'numberSizeQuantity', title: 'åºå·å°ºå¯¸', data: '', type: 'text', |
| | | options: { |
| | | field: 'numberSizeQuantity', |
| | | testData: '', |
| | | width:270, |
| | | height: 16, |
| | |
| | | } |
| | | }, |
| | | { |
| | | tid: 'sumQuantity', title: 'è®¢åæ»æ°', data: '', type: 'text', |
| | | options: { |
| | | field: 'sumQuantity', |
| | | testData: '', |
| | | width:100, |
| | | height: 16, |
| | | fontSize: 11.25, |
| | | textAlign: "left", |
| | | textContentVerticalAlign: "middle" |
| | | } |
| | | }, |
| | | { |
| | | tid: 'custom1', title: 'èªå®ä¹1', data: '', type: 'text', |
| | | options: { |
| | | title: 'èªå®ä¹1', |
| | | field: 'custom1', |
| | | testData: '', |
| | | width:270, |
| | | height: 16, |
| | |
| | | tid: 'custom2', title: 'èªå®ä¹2', data: '', type: 'text', |
| | | options: { |
| | | title: 'èªå®ä¹2', |
| | | field: 'custom2', |
| | | testData: '', |
| | | width:270, |
| | | height: 16, |
| | |
| | | const result = Object.fromEntries( |
| | | fields.map(item => [item.field, true]) // è½¬æ¢æ [key, value] æ°ç» |
| | | ) |
| | | let funct = "function(value,row,index,options){return `" |
| | | //<div style='width: 6.5cm;height:4.95cm;background-color: #5cadfe'> |
| | | let funct = "function(value,row,index,options){return ` <br>" |
| | | json.panels[0].printElements[index].options.columns[0].forEach(item => { |
| | | if(item.field && !result[item.field ]){ |
| | | if (company.printShowTitle){ |
| | |
| | | funct += item.title+'<br>' |
| | | } |
| | | }) |
| | | funct+='`}' |
| | | funct+='<br>`}' |
| | | //</div> |
| | | json.panels[0].printElements[index].options.columns[0][0].renderFormatter = funct |
| | | } |
| | | }) |
| | |
| | | labelRow.value.type = type |
| | | labelRow.value.lableType = lableType.value |
| | | labelRow.value.switch=true |
| | | labelRow.value.landingSequence = landingSequence |
| | | |
| | | lastList.value = [] |
| | | if (lableTypes == 1) { |
| | | |
| | |
| | | :type="labelRow.type" |
| | | :titleList="labelRow.titleList" |
| | | :switch="labelRow.switch" |
| | | :landingSequence = "labelRow.landingSequence" |
| | | style="width: 100%;height: 100%"/> |
| | | </el-dialog> |
| | | |
| | |
| | | |
| | | request.post(`/delivery/getSelectDeliveryPrinting`,form.value).then((res) => { |
| | | if(res.code==200){ |
| | | console.log(res.data) |
| | | produceList.value = deepClone(res.data) |
| | | for(let i=0;i<produceList.value.length;i++){ |
| | | let produceList1= ({ |
| | |
| | | <thead> |
| | | <tr v-if="index===0"> |
| | | <th style="width: 6%;">åºå·</th> |
| | | <th style="width: 15%;">楼å±ç¼å·</th> |
| | | <th style="width: 15%;">楼å±ç¼å·(ç®±å·)</th> |
| | | <th style="width: 17%;" colspan="1">宽Xé«</th> |
| | | <th style="width: 10%;">æ°é</th> |
| | | <th style="width: 10%;">é¢ç§¯</th> |
| | |
| | | |
| | | <tr class="day-in" v-for="(items, index1) in item.DeliveryDetailList" :key="index1"> |
| | | <td>{{items.order_number}}</td> |
| | | <td>{{items.buildingNumber}}</td> |
| | | <td v-if="items.box_no!=null&&items.box_no!=''">{{items.buildingNumber}}({{items.box_no}})</td> |
| | | <td v-else>{{items.buildingNumber}}</td> |
| | | <td colspan="1" style="font-size: 15px;font-weight: bold;" v-if="items.other_columns!=null&&(JSON.parse(items.other_columns).S02!=null)">{{JSON.parse(items.other_columns).S02}}</td> |
| | | <td colspan="1" style="font-size: 15px;font-weight: bold;" v-else>{{items.width}}x{{items.height}}</td> |
| | | <td>{{items.quantity}}</td> |
| | |
| | | <thead> |
| | | <tr v-if="index===0"> |
| | | <th style="width: 6%;">åºå·</th> |
| | | <th style="width: 20%;">楼å±ç¼å·</th> |
| | | <th style="width: 20%;">楼å±ç¼å·(ç®±å·)</th> |
| | | <th style="width: 20%;" colspan="2">宽Xé«</th> |
| | | <th style="width: 10%;">æ°é</th> |
| | | <th style="width: 10%;">é¢ç§¯</th> |
| | |
| | | |
| | | <tr class="day-in" v-for="(items, index1) in item.DeliveryDetailList" :key="index1"> |
| | | <td>{{items.order_number}}</td> |
| | | <td>{{items.buildingNumber}}</td> |
| | | <td v-if="items.box_no!=null&&items.box_no!=''">{{items.buildingNumber}}({{items.box_no}})</td> |
| | | <td v-else>{{items.buildingNumber}}</td> |
| | | <td colspan="2" style="font-size: 15px;font-weight: bold;" v-if="items.other_columns!=null&&(JSON.parse(items.other_columns).S02!=null)">{{JSON.parse(items.other_columns).S02}}</td> |
| | | <td colspan="2" style="font-size: 15px;font-weight: bold;" v-else>{{items.width}}x{{items.height}}</td> |
| | | <td>{{items.quantity}}</td> |
| New file |
| | |
| | | <script setup> |
| | | import request from "@/utils/request" |
| | | import {computed, onMounted, ref} from "vue" |
| | | import PrintFoot from "@/components/sd/order/PrintFoot.vue" |
| | | import companyInfo from "@/stores/sd/companyInfo" |
| | | import deepClone from "@/utils/deepClone"; |
| | | import {ElMessage} from "element-plus"; |
| | | import {add,addAuto} from '@/utils/decimal'; |
| | | |
| | | const company = companyInfo() |
| | | let produceList = ref([]) |
| | | let otherMoney = [] |
| | | let otherMoney1 = [] |
| | | let delivery = ref([]) |
| | | let money = ref("") |
| | | let otherMoneys = 0 |
| | | let sumMoney = 0 |
| | | let takeCare =ref("å
·ä½è§æ ¼è¯¦è§æ¸
å") |
| | | let remark =ref(company.deliveryRemark) |
| | | |
| | | |
| | | |
| | | let props = defineProps({ |
| | | deliveryId:null, |
| | | type:null |
| | | }) |
| | | const form = ref({ |
| | | }) |
| | | let produceList2 = ref([]) |
| | | |
| | | |
| | | const deliveryId = ref() |
| | | |
| | | const pageData = ref() |
| | | const getData = () => { |
| | | if(props.deliveryId===null || props.deliveryId===undefined || props.deliveryId===''){ |
| | | return |
| | | } |
| | | deliveryId.value = props.deliveryId[0].deliveryId |
| | | form.value.deliveryId=props.deliveryId |
| | | form.value.type=company.productName |
| | | form.value.state=props.type |
| | | |
| | | |
| | | request.post(`/delivery/getSelectDeliveryPrinting`,form.value).then((res) => { |
| | | if(res.code==200){ |
| | | produceList.value = deepClone(res.data) |
| | | for(let i=0;i<produceList.value.length;i++){ |
| | | produceList.value[i].data.forEach(item =>{ |
| | | let para = |
| | | item.DeliveryDetail.orderId= |
| | | `${takeCare.value}\n${item.DeliveryDetail.orderDetail.edgingType || item.DeliveryDetail.orderDetail.shape}` |
| | | |
| | | }) |
| | | let produceList1= ({ |
| | | data:null, |
| | | otherMoney:null, |
| | | otherMoney1:null, |
| | | delivery:null, |
| | | money:null, |
| | | otherMoneys:0, |
| | | sumMoney:0 |
| | | }) |
| | | produceList1.data=produceList.value[i].data |
| | | produceList1.delivery=produceList.value[i].delivery |
| | | produceList1.money=produceList.value[i].money |
| | | produceList1.otherMoney=produceList.value[i].otherMoney |
| | | for(let j=0;j<produceList1.data.length;j++){ |
| | | produceList1.sumMoney+=produceList1.data[j].DeliveryDetail.money |
| | | } |
| | | otherMoney1=[] |
| | | for(let i=0;i<produceList1.otherMoney.length;i++){ |
| | | if(produceList1.otherMoney[i].DeliveryDetailOtherMoney.monery!=null){ |
| | | produceList1.otherMoneys+=produceList1.otherMoney[i].DeliveryDetailOtherMoney.monery |
| | | if(otherMoney1.length===0){ |
| | | otherMoney1.push(produceList1.otherMoney[i]) |
| | | } |
| | | else{ |
| | | for(let s=0;s<otherMoney1.length;s++){ |
| | | if(produceList1.otherMoney[i].DeliveryDetailOtherMoney.alias===otherMoney1[s].DeliveryDetailOtherMoney.alias){ |
| | | |
| | | otherMoney1[s].DeliveryDetailOtherMoney.count=add(produceList1.otherMoney[i].DeliveryDetailOtherMoney.count,otherMoney1[s].DeliveryDetailOtherMoney.count) |
| | | otherMoney1[s].DeliveryDetailOtherMoney.monery =add(produceList1.otherMoney[i].DeliveryDetailOtherMoney.monery,otherMoney1[s].DeliveryDetailOtherMoney.monery) |
| | | break |
| | | } |
| | | if(s+1===otherMoney1.length){ |
| | | otherMoney1.push(produceList1.otherMoney[i]) |
| | | break |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | produceList1.otherMoney1=otherMoney1 |
| | | produceList2.value.push(produceList1) |
| | | } |
| | | for(let j=0;j<produceList2.value.length;j++){ |
| | | |
| | | if(produceList2.value[j].delivery.money.toFixed(0)!==(produceList2.value[j].otherMoneys |
| | | +produceList2.value[j].sumMoney+produceList2.value[j].delivery.freight).toFixed(0)){ |
| | | console.log(produceList2.value[j]) |
| | | console.log(produceList2.value[j].delivery.money) |
| | | console.log((produceList2.value[j].otherMoneys |
| | | +produceList2.value[j].sumMoney).toFixed(0)) |
| | | console.log(produceList2.value[j].delivery.deliveryId) |
| | | } |
| | | |
| | | } |
| | | //ç»æ°æ®è¿è¡å页 |
| | | pageData.value = groupArrayByFive(produceList2.value[0].data) |
| | | console.log(pageData.value) |
| | | delivery.value = produceList2.value[0].delivery |
| | | console.log(delivery.value) |
| | | |
| | | |
| | | |
| | | }else{ |
| | | ElMessage.warning(res.msg) |
| | | router.push("/login") |
| | | } |
| | | }) |
| | | } |
| | | |
| | | function groupArrayByFive(arr) { |
| | | let result = []; |
| | | for (let i = 0; i < arr.length; i += 4) { |
| | | result.push(arr.slice(i, i + 4)); |
| | | } |
| | | return result; |
| | | } |
| | | let deliveryDate = ref() |
| | | onMounted(() => { |
| | | const today = new Date |
| | | today.setTime(today.getTime()) |
| | | deliveryDate.value = today.getFullYear() + |
| | | '-' + ("0" + (today.getMonth() + 1)).slice(-2) |
| | | + '-' + ("0" + today.getDate()).slice(-2) |
| | | getData() |
| | | }) |
| | | |
| | | const stringToJson = (productList) => { |
| | | productList.forEach(item => { |
| | | item.otherColumns = JSON.parse(item.otherColumns) |
| | | }) |
| | | } |
| | | |
| | | const getQuantity = (productList) => { |
| | | let quantity = 0 |
| | | productList.forEach(item => { |
| | | quantity += item.quantity |
| | | }) |
| | | return parseFloat(quantity.toFixed(3)) |
| | | |
| | | } |
| | | |
| | | const getArea = (productList) => { |
| | | let area = 0 |
| | | productList.forEach(item => { |
| | | area += item.grossArea |
| | | }) |
| | | return parseFloat(area.toFixed(3)) |
| | | |
| | | } |
| | | |
| | | const getPerimeter = (productList) => { |
| | | let perimeter = 0 |
| | | productList.forEach(item => { |
| | | perimeter += item.perimeter |
| | | }) |
| | | return parseFloat(perimeter.toFixed(3)) |
| | | } |
| | | |
| | | const printSheet = () => { |
| | | } |
| | | let companyName = ref('æ´é³ç»çå
¬å¸') |
| | | |
| | | const getQuantitySum = (page)=>{ |
| | | console.log(page) |
| | | if(pageData.value[page] === undefined){ |
| | | return 0 |
| | | } |
| | | return pageData.value[page].reduce((accumulator, currentValue) => { |
| | | return add(accumulator,currentValue.DeliveryDetail.quantity) |
| | | }, 0) |
| | | } |
| | | const getAreaSum = (page)=>{ |
| | | if(pageData.value[page] === undefined){ |
| | | return 0 |
| | | } |
| | | return pageData.value[page].reduce((accumulator, currentValue) => { |
| | | return addAuto(accumulator,currentValue.DeliveryDetail.area,2) |
| | | }, 0) |
| | | } |
| | | const getMoneySum = (page)=>{ |
| | | if(pageData.value[page] === undefined){ |
| | | return 0 |
| | | } |
| | | const val = pageData.value[page].reduce((accumulator, currentValue) => { |
| | | return addAuto(accumulator,currentValue.DeliveryDetail.money,2) |
| | | }, 0) |
| | | |
| | | return val===0?'':val |
| | | } |
| | | |
| | | |
| | | defineExpose({ |
| | | printSheet |
| | | }); |
| | | </script> |
| | | |
| | | <template> |
| | | <div > |
| | | <el-row id="footsum" :gutter="20" > |
| | | <el-col :span="19"></el-col> |
| | | <el-col :span="5" style="font-size: 17px" >{{delivery.creator}}</el-col> |
| | | </el-row> |
| | | <el-row id="footsum1" :gutter="20" > |
| | | <el-col :span="2" ></el-col> |
| | | <el-col :span="3" style="font-size: 17px">{{ delivery.contacts }}</el-col> |
| | | <el-col :span="7" style="font-size: 17px">{{ delivery.contactNumber }}</el-col> |
| | | <el-col :span="1" ></el-col> |
| | | <el-col :span="11" style="font-size: 17px">{{ delivery.deliveryAddress }}</el-col> |
| | | </el-row> |
| | | |
| | | <table class="content1" v-for="(page,pageIndex) in pageData" > |
| | | <thead> |
| | | <tr style="height: 3.6cm"><td></td></tr> |
| | | |
| | | <tr> |
| | | <td colspan="6" > |
| | | <el-row :gutter="20"> |
| | | <el-col :span="2"></el-col> |
| | | <el-col :span="8"> |
| | | <input v-model="companyName" |
| | | style="border: 0;width: 100%; |
| | | height: 100%;font-size:19px;font-weight: bold "/> |
| | | </el-col> |
| | | <el-col :span="6" style="font-size:19px;font-weight: bold"> {{deliveryId}} </el-col> |
| | | <el-col :span="3"></el-col> |
| | | <el-col :span="5" style="white-space: nowrap;font-size:19px;font-weight: bold">{{deliveryDate}}</el-col> |
| | | </el-row> |
| | | </td> |
| | | </tr> |
| | | <tr style="height: 0.1cm"><td></td></tr> |
| | | |
| | | <tr style="margin-top: 20px"> |
| | | <td colspan="6"> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="2"></el-col> |
| | | <el-col :span="12" style="font-size: 16px;">{{delivery.customerName }}</el-col> |
| | | |
| | | <el-col :span="10" style="font-size: 16px;white-space: nowrap;"> {{delivery.project }}</el-col> |
| | | </el-row> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="6"> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="2"></el-col> |
| | | <el-col :span="12" style="font-size: 16px"> {{delivery.orderId }}</el-col> |
| | | </el-row> |
| | | </td> |
| | | </tr> |
| | | |
| | | <tr style="height: 1cm"><td></td></tr> |
| | | |
| | | |
| | | |
| | | </thead> |
| | | <tbody > |
| | | <tr v-for="(item,index) in page"> |
| | | <td style="width: 5cm"> |
| | | <el-input class="textarea bbb" type="textarea" |
| | | :autosize="{ minRows: 1, maxRows: 20 }" |
| | | v-model="item.DeliveryDetail.orderDetail.productName" /> |
| | | </td> |
| | | |
| | | <td style="width: 150px" > |
| | | <el-input class="textarea aaa" type="textarea" |
| | | :autosize="{ minRows: 1, maxRows: 20 }" |
| | | v-model="item.DeliveryDetail.orderId" /> |
| | | |
| | | </td> |
| | | <td style="width: 65px"> |
| | | {{item.DeliveryDetail.quantity}} |
| | | </td> |
| | | <td style="width: 100px" > |
| | | <input style="border: 0;width: 100px" v-model="item.DeliveryDetail.area"> |
| | | </td> |
| | | |
| | | <td |
| | | style="width: 80px" |
| | | v-if="props.type===1" |
| | | > |
| | | {{item.DeliveryDetail.price == '0' ? '' : item.DeliveryDetail.price}} |
| | | </td> |
| | | <td |
| | | v-if="props.type===1" |
| | | > |
| | | {{item.DeliveryDetail.money == '0' ? '' : item.DeliveryDetail.money}} |
| | | </td> |
| | | </tr> |
| | | |
| | | <tr id="table-sum"> |
| | | <td id="sum_td"></td> |
| | | <td ></td> |
| | | <td style="width: 65px" > |
| | | {{getQuantitySum(pageIndex)}} |
| | | </td> |
| | | <td style="width: 100px"> |
| | | <input style="border: 0;width: 100px;font-size: 17px" :value="getAreaSum(pageIndex)"> |
| | | </td> |
| | | <td style="width: 80px"></td> |
| | | <td v-if="props.type===1"> |
| | | {{getMoneySum(pageIndex)}} |
| | | </td> |
| | | </tr> |
| | | </tbody> |
| | | </table> |
| | | |
| | | |
| | | </div> |
| | | |
| | | |
| | | </template> |
| | | |
| | | |
| | | |
| | | |
| | | <style scoped> |
| | | *{ |
| | | color: rgba(0, 0, 0, 0.8); /* æ´æ·±çé»è² */ |
| | | font-family: 'Microsoft YaHei', '微软é
é»', sans-serif; |
| | | outline: none; |
| | | } |
| | | #sheet{ |
| | | width: 21cm; |
| | | } |
| | | table{ |
| | | width: 18.3cm |
| | | |
| | | } |
| | | .content1{ |
| | | page-break-after: always; |
| | | |
| | | } |
| | | span{ |
| | | width: 7cm; |
| | | text-align: center; |
| | | } |
| | | tbody *{ |
| | | font-size: 14px; |
| | | } |
| | | #footsum1,#footsum{ |
| | | font-weight: bold;font-size: 17px; |
| | | } |
| | | |
| | | @media print { |
| | | #footsum{ |
| | | position: fixed; |
| | | bottom: 3.4cm; |
| | | width: 100%; /* æè
设置æå
·ä½ç宽度 */ |
| | | font-size: 17px; |
| | | } |
| | | #footsum1{ |
| | | position: fixed; |
| | | bottom: 1cm; |
| | | width: 100%; /* æè
设置æå
·ä½ç宽度 */ |
| | | } |
| | | #table-sum { |
| | | position: absolute; /* æè
ä½¿ç¨ relativeï¼æ ¹æ®å
·ä½éæ± */ |
| | | bottom: 5cm; |
| | | } |
| | | #sum_td{ |
| | | width: 9cm; |
| | | } |
| | | |
| | | } |
| | | |
| | | .textarea{ |
| | | --el-border-color: rgba(255,255,255,0.0); |
| | | --el-input-focus-border-color: rgba(255,255,255,0.0); |
| | | --el-input-focus-border-width: 0px; |
| | | --el-input-hover-border-color: rgba(255,255,255,0.0); |
| | | --el-input-hover-border-width: 0px; |
| | | width: 100%; |
| | | } |
| | | :deep(.el-textarea__inner){ |
| | | color: #333333; |
| | | font-family: 'Microsoft YaHei', '微软é
é»', sans-serif; |
| | | font-size: 14px; |
| | | } |
| | | :deep(.aaa){ |
| | | width: 150px; |
| | | } |
| | | :deep(.bbb){ |
| | | width: 5cm; |
| | | } |
| | | :deep(#table-sum td){ |
| | | font-size: 17px; |
| | | } |
| | | </style> |
| New file |
| | |
| | | <script setup> |
| | | import request from "@/utils/request" |
| | | import {computed, onMounted, ref} from "vue" |
| | | import PrintFoot from "@/components/sd/order/PrintFoot.vue" |
| | | import companyInfo from "@/stores/sd/companyInfo" |
| | | import deepClone from "@/utils/deepClone"; |
| | | import {ElMessage} from "element-plus"; |
| | | import {add, addAuto} from '@/utils/decimal'; |
| | | |
| | | const company = companyInfo() |
| | | let produceList = ref([]) |
| | | let otherMoney = [] |
| | | let otherMoney1 = [] |
| | | let delivery = ref([]) |
| | | let money = ref("") |
| | | let otherMoneys = 0 |
| | | let sumMoney = 0 |
| | | let takeCare = ref("å
·ä½è§æ ¼è¯¦è§æ¸
å") |
| | | let remark = ref(company.deliveryRemark) |
| | | |
| | | |
| | | let props = defineProps({ |
| | | deliveryId: null, |
| | | type: null |
| | | }) |
| | | const form = ref({}) |
| | | let produceList2 = ref([]) |
| | | |
| | | |
| | | const deliveryId = ref() |
| | | |
| | | const pageData = ref() |
| | | const getData = () => { |
| | | if (props.deliveryId === null || props.deliveryId === undefined || props.deliveryId === '') { |
| | | return |
| | | } |
| | | deliveryId.value = props.deliveryId[0].deliveryId |
| | | form.value.deliveryId = props.deliveryId |
| | | form.value.type = company.productName |
| | | form.value.state = props.type |
| | | |
| | | |
| | | request.post(`/delivery/getSelectDeliveryPrinting`, form.value).then((res) => { |
| | | if (res.code == 200) { |
| | | //console.log(res.data) |
| | | produceList.value = deepClone(res.data) |
| | | for (let i = 0; i < produceList.value.length; i++) { |
| | | produceList.value[i].data.forEach(item => { |
| | | |
| | | |
| | | }) |
| | | let produceList1 = ({ |
| | | data: null, |
| | | otherMoney: null, |
| | | otherMoney1: null, |
| | | delivery: null, |
| | | money: null, |
| | | otherMoneys: 0, |
| | | sumMoney: 0 |
| | | }) |
| | | produceList1.data = produceList.value[i].data |
| | | produceList1.delivery = produceList.value[i].delivery |
| | | produceList1.money = produceList.value[i].money |
| | | produceList1.otherMoney = produceList.value[i].otherMoney |
| | | for (let j = 0; j < produceList1.data.length; j++) { |
| | | produceList1.sumMoney += produceList1.data[j].DeliveryDetail.money |
| | | } |
| | | otherMoney1 = [] |
| | | for (let i = 0; i < produceList1.otherMoney.length; i++) { |
| | | if (produceList1.otherMoney[i].DeliveryDetailOtherMoney.monery != null) { |
| | | produceList1.otherMoneys += produceList1.otherMoney[i].DeliveryDetailOtherMoney.monery |
| | | if (otherMoney1.length === 0) { |
| | | otherMoney1.push(produceList1.otherMoney[i]) |
| | | } else { |
| | | for (let s = 0; s < otherMoney1.length; s++) { |
| | | if (produceList1.otherMoney[i].DeliveryDetailOtherMoney.alias === otherMoney1[s].DeliveryDetailOtherMoney.alias) { |
| | | |
| | | otherMoney1[s].DeliveryDetailOtherMoney.count = add(produceList1.otherMoney[i].DeliveryDetailOtherMoney.count, otherMoney1[s].DeliveryDetailOtherMoney.count) |
| | | otherMoney1[s].DeliveryDetailOtherMoney.monery = add(produceList1.otherMoney[i].DeliveryDetailOtherMoney.monery, otherMoney1[s].DeliveryDetailOtherMoney.monery) |
| | | break |
| | | } |
| | | if (s + 1 === otherMoney1.length) { |
| | | otherMoney1.push(produceList1.otherMoney[i]) |
| | | break |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | produceList1.otherMoney1 = otherMoney1 |
| | | produceList2.value.push(produceList1) |
| | | } |
| | | for (let j = 0; j < produceList2.value.length; j++) { |
| | | |
| | | if (produceList2.value[j].delivery.money.toFixed(0) !== (produceList2.value[j].otherMoneys |
| | | + produceList2.value[j].sumMoney + produceList2.value[j].delivery.freight).toFixed(0)) { |
| | | console.log(produceList2.value[j]) |
| | | console.log(produceList2.value[j].delivery.money) |
| | | console.log((produceList2.value[j].otherMoneys |
| | | + produceList2.value[j].sumMoney).toFixed(0)) |
| | | console.log(produceList2.value[j].delivery.deliveryId) |
| | | } |
| | | |
| | | } |
| | | //ç»æ°æ®è¿è¡å页 |
| | | pageData.value = groupArrayByFive(produceList2.value[0].data) |
| | | //console.log(pageData.value) |
| | | delivery.value = produceList2.value[0].delivery |
| | | //console.log(delivery.value) |
| | | |
| | | |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | router.push("/login") |
| | | } |
| | | }) |
| | | } |
| | | |
| | | function groupArrayByFive(arr) { |
| | | |
| | | /*let result = []; |
| | | let productName=ref() |
| | | arr.forEach(item=>{ |
| | | for (let i = 0; i < item.DeliveryDetailList.length; i += 8) { |
| | | let resultMap = { |
| | | id:null, |
| | | DeliveryDetail:null, |
| | | DeliveryDetailList:[] |
| | | }; |
| | | resultMap.DeliveryDetail=item.DeliveryDetail |
| | | resultMap.id=item.DeliveryDetailList.slice(i, i + 8).length |
| | | resultMap.DeliveryDetailList.push(item.DeliveryDetailList.slice(i, i + 8)) |
| | | result.push(resultMap) |
| | | } |
| | | |
| | | })*/ |
| | | let result = []; |
| | | arr.forEach(item => { |
| | | item.DeliveryDetailList.forEach(items => { |
| | | result.push(items) |
| | | }) |
| | | }) |
| | | console.log(result) |
| | | let index=0 |
| | | let number=0 |
| | | let numberResult = []; |
| | | let results = []; |
| | | let productName=result[0]['product_name'] |
| | | for (let i = 0; i < result.length; i ++) { |
| | | if(productName!=result[i]['product_name']){ |
| | | productName=result[i]['product_name'] |
| | | index++ |
| | | } |
| | | number++ |
| | | numberResult.push(result[i]) |
| | | |
| | | |
| | | let next=false |
| | | if (i + 1 != result.length) { |
| | | if(result[i+1]['product_name']!=productName){ |
| | | next=true |
| | | } |
| | | }else{ |
| | | next=true |
| | | } |
| | | |
| | | if((index==3 && next) ||number==8){ |
| | | results.push(numberResult); |
| | | index=0 |
| | | number=0 |
| | | numberResult=[] |
| | | }else{ |
| | | if (i + 1 == result.length) { |
| | | results.push(numberResult); |
| | | index=0 |
| | | number=0 |
| | | numberResult=[] |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | console.log(results) |
| | | |
| | | /*for (let i = 0; i < result.length; i += 8) { |
| | | results.push(result.slice(i, i + 8)); |
| | | }*/ |
| | | |
| | | for (let i = 0; i < results.length; i++) { |
| | | let name = results[i][0]['product_name'] //ä¸ä¸æ¬¡åç§° |
| | | let key = 0; //ç¸åæ° |
| | | for (let j = 0; j < results[i].length; j++) { |
| | | let thisName = results[i][j]['product_name']; |
| | | if (thisName != name) { |
| | | results[i][key].rowspan = j - key; |
| | | name=results[i][j]['product_name'] |
| | | key = j; |
| | | } |
| | | if (j + 1 == results[i].length) { |
| | | results[i][key].rowspan = j - key+1; |
| | | name=results[i][j]['product_name'] |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | return results; |
| | | } |
| | | |
| | | let deliveryDate = ref() |
| | | onMounted(() => { |
| | | const today = new Date |
| | | today.setTime(today.getTime()) |
| | | deliveryDate.value = today.getFullYear() + |
| | | '-' + ("0" + (today.getMonth() + 1)).slice(-2) |
| | | + '-' + ("0" + today.getDate()).slice(-2) |
| | | getData() |
| | | }) |
| | | |
| | | |
| | | const printSheet = () => { |
| | | } |
| | | let companyName = ref('æ´é³ç»çå
¬å¸') |
| | | |
| | | const getQuantitySum = (page) => { |
| | | if (pageData.value[page] === undefined) { |
| | | return 0 |
| | | } |
| | | return pageData.value[page].reduce((accumulator, currentValue) => { |
| | | return add(accumulator, currentValue.quantity) |
| | | }, 0) |
| | | |
| | | |
| | | } |
| | | const getAreaSum = (page) => { |
| | | if (pageData.value[page] === undefined) { |
| | | return 0 |
| | | } |
| | | return pageData.value[page].reduce((accumulator, currentValue) => { |
| | | return addAuto(accumulator, currentValue.area, 2) |
| | | }, 0) |
| | | } |
| | | const getMoneySum = (page) => { |
| | | if (pageData.value[page] === undefined) { |
| | | return 0 |
| | | } |
| | | return pageData.value[page].reduce((accumulator, currentValue) => { |
| | | return addAuto(accumulator, currentValue.money, 2) |
| | | }, 0) |
| | | } |
| | | |
| | | |
| | | defineExpose({ |
| | | printSheet |
| | | }); |
| | | </script> |
| | | |
| | | <template> |
| | | <div> |
| | | <el-row id="footsum" :gutter="20"> |
| | | <el-col :span="20"></el-col> |
| | | <el-col :span="4" style="font-size: 17px">{{ delivery.creator }}</el-col> |
| | | </el-row> |
| | | <el-row id="footsum1" :gutter="20"> |
| | | <el-col :span="2"></el-col> |
| | | <el-col :span="3" style="font-size: 17px">{{ delivery.contacts }}</el-col> |
| | | <el-col :span="7" style="font-size: 17px">{{ delivery.contactNumber }}</el-col> |
| | | <el-col :span="1"></el-col> |
| | | <el-col :span="11" style="font-size: 17px">{{ delivery.deliveryAddress }}</el-col> |
| | | </el-row> |
| | | |
| | | <table class="content1" v-for="(page,pageIndex) in pageData"> |
| | | <thead> |
| | | <tr style="height: 3.6cm"> |
| | | <td></td> |
| | | </tr> |
| | | |
| | | <tr> |
| | | <td colspan="6"> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="2"></el-col> |
| | | <el-col :span="9"> |
| | | <input v-model="companyName" |
| | | style="border: 0;width: 100%; |
| | | height: 100%;font-size:19px;font-weight: bold "/> |
| | | </el-col> |
| | | <el-col :span="5" style="font-size:19px;font-weight: bold"> {{ deliveryId }}</el-col> |
| | | <el-col :span="6"></el-col> |
| | | <el-col :span="2" style="white-space: nowrap;font-size:19px;font-weight: bold">{{ deliveryDate }}</el-col> |
| | | </el-row> |
| | | </td> |
| | | </tr> |
| | | <tr style="height: 0.1cm"> |
| | | <td></td> |
| | | </tr> |
| | | |
| | | <tr style="margin-top: 20px"> |
| | | <td colspan="6"> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="2"></el-col> |
| | | <el-col :span="17" style="font-size: 16px;">{{ delivery.customerName }}</el-col> |
| | | |
| | | <el-col :span="5" style="font-size: 16px;white-space: nowrap;"> {{ delivery.project }}</el-col> |
| | | </el-row> |
| | | </td> |
| | | </tr> |
| | | <tr style="height: 0.1cm"> |
| | | <td></td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="6"> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="2"></el-col> |
| | | <el-col :span="12" style="font-size: 16px;"> {{ delivery.orderId }}</el-col> |
| | | </el-row> |
| | | </td> |
| | | </tr> |
| | | |
| | | <tr style="height: 1cm"> |
| | | <td></td> |
| | | </tr> |
| | | |
| | | |
| | | </thead> |
| | | <tbody> |
| | | <template v-for="(items,index1) in page"> |
| | | <tr> |
| | | |
| | | <td style="width: 4cm" :rowspan="items.rowspan" v-if="items.rowspan!==undefined"> |
| | | <el-input class="textarea" type="textarea" |
| | | :autosize="{ minRows: 1, maxRows: 20 }" |
| | | v-model="items.product_name"/> |
| | | </td> |
| | | <td style="width: 0.8cm"></td> |
| | | |
| | | <td style="width: 2cm"> |
| | | <el-input class="textarea" type="textarea" |
| | | :autosize="{ minRows: 1, maxRows: 20 }" |
| | | v-model="items.width"/> |
| | | |
| | | </td> |
| | | <td style="width: 2cm"> |
| | | <el-input class="textarea" type="textarea" |
| | | :autosize="{ minRows: 1, maxRows: 20 }" |
| | | v-model="items.height"/> |
| | | |
| | | </td> |
| | | <td style="width: 60px"> |
| | | {{ items.quantity }} |
| | | </td> |
| | | <td style="width: 100px"> |
| | | <input style="border: 0;width: 100px" v-model="items.area"> |
| | | </td> |
| | | |
| | | <td |
| | | v-if="props.type===1||props.type===3" |
| | | style="width: 80px" |
| | | > |
| | | {{ items.price == '0' ? '' : items.price }} |
| | | </td> |
| | | <td |
| | | v-if="props.type===1||props.type===3" |
| | | > |
| | | {{ items.money == '0' ? '' : items.money }} |
| | | </td> |
| | | |
| | | </tr> |
| | | </template> |
| | | <tr id="table-sum"> |
| | | <td id="sum_td"></td> |
| | | <td></td> |
| | | <td></td> |
| | | <td></td> |
| | | <td style="width: 60px"> |
| | | {{ getQuantitySum(pageIndex) }} |
| | | </td> |
| | | <td style="width: 100px"> |
| | | <input style="border: 0;width: 100px" :value="getAreaSum(pageIndex)"> |
| | | </td> |
| | | <td style="width: 80px"></td> |
| | | <td v-if="props.type===1||props.type===3"> |
| | | {{ getMoneySum(pageIndex) == '0.00' ? '' : getMoneySum(pageIndex) }} |
| | | </td> |
| | | |
| | | </tr> |
| | | |
| | | </tbody> |
| | | </table> |
| | | |
| | | |
| | | </div> |
| | | |
| | | |
| | | </template> |
| | | |
| | | |
| | | <style scoped> |
| | | * { |
| | | color: rgba(0, 0, 0, 0.8); /* æ´æ·±çé»è² */ |
| | | font-family: 'Microsoft YaHei', '微软é
é»', sans-serif; |
| | | outline: none; |
| | | } |
| | | |
| | | #sheet { |
| | | width: 21cm; |
| | | } |
| | | |
| | | table { |
| | | width: 18.3cm |
| | | |
| | | } |
| | | |
| | | .content1 { |
| | | page-break-after: always; |
| | | |
| | | } |
| | | |
| | | span { |
| | | width: 7cm; |
| | | text-align: center; |
| | | } |
| | | |
| | | tbody * { |
| | | font-size: 14px; |
| | | } |
| | | |
| | | #footsum1, #footsum { |
| | | font-size: 17px; |
| | | } |
| | | |
| | | @media print { |
| | | #footsum { |
| | | position: fixed; |
| | | bottom: 3.5cm; |
| | | width: 100%; /* æè
设置æå
·ä½ç宽度 */ |
| | | font-size: 17px; |
| | | } |
| | | |
| | | #footsum1 { |
| | | position: fixed; |
| | | bottom: 1cm; |
| | | width: 100%; /* æè
设置æå
·ä½ç宽度 */ |
| | | } |
| | | #table-sum { |
| | | position: absolute; /* æè
ä½¿ç¨ relativeï¼æ ¹æ®å
·ä½éæ± */ |
| | | bottom: 5cm; |
| | | } |
| | | #sum_td{ |
| | | width: 9cm; |
| | | } |
| | | } |
| | | |
| | | .textarea { |
| | | --el-border-color: rgba(255, 255, 255, 0.0); |
| | | --el-input-focus-border-color: rgba(255, 255, 255, 0.0); |
| | | --el-input-focus-border-width: 0px; |
| | | --el-input-hover-border-color: rgba(255, 255, 255, 0.0); |
| | | --el-input-hover-border-width: 0px; |
| | | } |
| | | |
| | | /*textarea { |
| | | |
| | | font-size: 16px; |
| | | border:none; |
| | | text-align: right; |
| | | font-weight: bold; |
| | | width: 100%; |
| | | height: 100%; |
| | | }*/ |
| | | :deep(.el-textarea__inner) { |
| | | color: #333333; |
| | | font-family: 'Microsoft YaHei', '微软é
é»', sans-serif; |
| | | font-size: 14px; |
| | | } |
| | | :deep(#table-sum td){ |
| | | font-size: 17px; |
| | | } |
| | | |
| | | </style> |
| | |
| | | <script setup> |
| | | import {computed, onMounted, reactive, ref, watch} from "vue"; |
| | | import {changeFilterEvent, filterChanged} from "@/hook" |
| | | import footSum from "@/hook/footSum" |
| | | import {useI18n} from "vue-i18n" |
| | | import request from "@/utils/request" |
| | | import {ElMessage} from "element-plus" |
| | |
| | | mergeCells:[], |
| | | toolbarConfig: { |
| | | zoom: true, |
| | | custom: true |
| | | /*custom: true*/ |
| | | }, |
| | | cellClassName ({ row, column,columnIndex}) { |
| | | if (columnIndex>10 && row.quantity*1 === row.reportWorkQuantity[column.title]*1){ |
| | | if (columnIndex>10 && row.thisQuantity*1 === row.reportWorkQuantity[column.title]*1){ |
| | | return 'row-green' |
| | | } |
| | | return null |
| | |
| | | {field: 'order_type', width: 120,title: t('order.orderType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'process_id',width: 110, title: t('processCard.processId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'technology_number', width: 90,title: t('processCard.technologyNumber'),showOverflow:"ellipsis"}, |
| | | {field: 'child_width', width: 90,title: t('order.width'),showOverflow:"ellipsis"}, |
| | | {field: 'child_height', width: 90,title: t('order.height'),showOverflow:"ellipsis"}, |
| | | {field: 'quantity', width: 90,title: t('order.quantity')}, |
| | | {field: 'glassQuantity', width: 90,title: t('order.glassQuantity')}, |
| | | {field: 'gross_area', width: 90,title: t('order.area')}, |
| | | {field: 'shippedQuantity',width: 120, title: t('delivery.deliveryQuantity')}, |
| | | {field: 'inventory',width: 120, title: t('productStock.inventoryQuantity')}, |
| | | {field: 'inventoryArea',width: 120, title: t('report.inventoryArea')}, |
| | | {field: 'broken_num',width: 90, title: t('reportingWorks.quantityBroken')}, |
| | | ] |
| | | let column = [0,1,3,6,7,8,9] |
| | | let column = [0,1,3,6,7,8,10,11,12,13] |
| | | |
| | | |
| | | onMounted(()=>{ |
| | |
| | | }) |
| | | |
| | | |
| | | |
| | | let mergeCells = ref() |
| | | const getWorkOrder = () => { |
| | | gridOptions.loading = true |
| | | request.post(`/report/processCardProgress/${props.orderId}`,column).then(async (res) => { |
| | | if (res.code == 200) { |
| | | |
| | | gridOptions.columns = JSON.parse(JSON.stringify(columns)) |
| | | gridOptions.columns.forEach(item =>{ |
| | | item.filterMethod = filterChanged |
| | | }) |
| | | list.value = ['quantity'] |
| | | list.value = ['quantity','inventory','inventoryArea','gross_area','shippedQuantity','glassQuantity'] |
| | | res.data.title.forEach((item,index) =>{ |
| | | list.value.push('reportWorkQuantity.'+item.process) |
| | | let column = {slots: { default: 'quantitySum'}, |
| | |
| | | res.data.data.forEach(item => { |
| | | item.reportWorkQuantity=JSON.parse(item.reportWorkQuantity) |
| | | item.reportWorkQuantityCount=JSON.parse(item.reportWorkQuantityCount) |
| | | item.reportWorkQuantityShow=JSON.parse(item.reportWorkQuantityShow) |
| | | }) |
| | | //gridOptions.mergeCells= res.data.mergeCells |
| | | |
| | | await xGrid.value.loadData(res.data.data) |
| | | await xGrid.value.setMergeCells(res.data.mergeCells) |
| | | mergeCells.value = res.data.mergeCells |
| | | gridOptions.loading = false |
| | | |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | const quantitySum = ( row,column )=>{ |
| | | const reportWorkQuantity = row.reportWorkQuantity[column.title] || 0 |
| | | const reportWorkQuantityCount = row.reportWorkQuantityCount[column.title] || 0 |
| | | if(reportWorkQuantity===reportWorkQuantityCount){ |
| | | return reportWorkQuantity |
| | | const filterChange = () =>{ |
| | | if(xGrid.value.isFilter()){ |
| | | xGrid.value.clearMergeCells() |
| | | xGrid.value.clearMergeFooterItems() |
| | | }else{ |
| | | xGrid.value.setMergeCells(mergeCells.value) |
| | | xGrid.value.updateFooter() |
| | | } |
| | | |
| | | return (reportWorkQuantity |
| | | |
| | | } |
| | | const footSum =(list, field) => { |
| | | if(xGrid.value.isFilter()){ |
| | | return |
| | | } |
| | | let count = 0 |
| | | list.forEach(item => { |
| | | if(field.indexOf('.')>-1){ |
| | | let array = field.split('.') |
| | | count += Number(item[array[0]][array[1]]) || 0 |
| | | }else { |
| | | count += Number(item[field]) || 0 |
| | | } |
| | | }) |
| | | return count.toFixed(2) |
| | | } |
| | | |
| | | const quantitySum = ( row,column )=>{ |
| | | const reportWorkQuantityCount = row.reportWorkQuantityCount[column.title] || '' |
| | | const reportWorkQuantityShow = row.reportWorkQuantityShow[column.title] || '' |
| | | if(reportWorkQuantityShow===reportWorkQuantityCount){ |
| | | return reportWorkQuantityShow |
| | | } |
| | | |
| | | return (reportWorkQuantityShow |
| | | +'(' |
| | | +reportWorkQuantityCount |
| | | +')' ) |
| | |
| | | <template> |
| | | <div style="width: 100%;height: 100%"> |
| | | <vxe-grid |
| | | @filter-change ='filterChange' |
| | | height="100%" |
| | | size="mini" |
| | | class="mytable-scrollbar" |
| | |
| | | <tr v-if="item1.differentSize || item1.bendRadius" v-for="(item2,index2) in item1.orderGlassDetails" :key="index2" > |
| | | |
| | | <td style="border: 0"></td> |
| | | <td>{{ item2.technologyNumber }}</td> |
| | | <td>#{{ item2.technologyNumber }}</td> |
| | | <td colspan="4"> {{item2.glassChild}}</td> |
| | | <td>{{item2.childWidth}}</td> |
| | | <td>{{item2.arc}}</td> |
| | | <td>{{item2.childHeight}}</td> |
| | | <td>{{item1.archRise}}</td> |
| | | <td>{{item2.archRise?item2.archRise:item1.archRise}}</td> |
| | | <td colspan="7"></td> |
| | | |
| | | </tr> |
| | |
| | | <th style="text-align: left;border:none;font-weight: bold;" colspan="2">è系人ï¼<span>{{delivery.contacts}}</span></th> |
| | | </tr> |
| | | <tr> |
| | | <th style="text-align: left;border:none;font-weight: bold;" colspan="7">éè´§å°åï¼<span>{{delivery.deliveryAddress}}</span></th> |
| | | <th style="text-align: left;border:none;font-weight: bold;" colspan="4">éè´§å°åï¼<span>{{delivery.deliveryAddress}}</span></th> |
| | | <th style="text-align: left;border:none;font-weight: bold;" colspan="3">éè´§æ¶é´ï¼<span>{{delivery.deliveryDate}}</span></th> |
| | | <th style="text-align: left;border:none;font-weight: bold;" colspan="2">èç³»çµè¯ï¼<span>{{delivery.contactNumber}}</span></th> |
| | | </tr> |
| | | <tr> |
| New file |
| | |
| | | <script setup> |
| | | import {computed, onMounted, onUpdated, reactive, ref, watch} from "vue" |
| | | import {filterChanged} from "@/hook" |
| | | import {useI18n} from "vue-i18n" |
| | | import {ElMessage, ElMessageBox,} from "element-plus" |
| | | import request from "@/utils/request" |
| | | import {useRouter,useRoute} from "vue-router" |
| | | import {Ellipse, Leafer, Line, Path, Polygon} from "leafer-ui"; |
| | | import {round} from "xe-utils"; |
| | | import DxfParser from "dxf-parser"; |
| | | import { saveAs } from 'file-saver'; |
| | | import DXFWriter from 'dxf-writer'; |
| | | |
| | | |
| | | const { t } = useI18n() |
| | | const router = useRouter() |
| | | const route = useRoute() |
| | | let width = ref("") |
| | | let height = ref("null") |
| | | let rowIndex = ref(null) |
| | | const xGrid = ref() |
| | | |
| | | //ç¨äºæ¥æ¶ç¶ç»ä»¶åæ° |
| | | let prop = defineProps({ |
| | | rowIndex:{} |
| | | }) |
| | | onMounted(()=>{ |
| | | if(Object.keys(prop.rowIndex).length === 0){ |
| | | return |
| | | } |
| | | rowIndex.value=prop.rowIndex |
| | | width.value=prop.rowIndex.width |
| | | height.value=prop.rowIndex.height |
| | | ongetproject(rowIndex.value) |
| | | }) |
| | | |
| | | const emits = defineEmits(['getUploadPicture']) |
| | | |
| | | let fileName=ref(null) |
| | | let fileDate=ref(null) |
| | | let dxfData=ref(null) |
| | | let state=ref(false) |
| | | let points=ref([]) |
| | | let data1=ref(0);let data2=ref(0);let data3=ref(0);let data4=ref(0) |
| | | let data5=ref(0);let data6=ref(0);let data7=ref(0);let data8=ref(0) |
| | | |
| | | let datas1=ref(0);let datas2=ref(0);let datas3=ref(0);let datas4=ref(0) |
| | | let datas5=ref(0);let datas6=ref(0);let datas7=ref(0);let datas8=ref(0) |
| | | let big=0 |
| | | let leafer; |
| | | let parsedDXFData = ref([]); |
| | | let orderDetailWidth=ref(0) |
| | | let orderDetailHeight=ref(0) |
| | | let widthAgv=ref(0) |
| | | let heightAgv=ref(0) |
| | | |
| | | const ongetproject = (row) => { |
| | | |
| | | if(row.fileName==null||row.fileName==""){ |
| | | orderDetailWidth.value=row.width |
| | | orderDetailHeight.value=row.height |
| | | const main =document.getElementById('mains') |
| | | const width =document.getElementById('width') |
| | | const height =document.getElementById('height') |
| | | if(orderDetailWidth.value/400>orderDetailHeight.value/250){ |
| | | big=orderDetailWidth.value/400 |
| | | }else{ |
| | | big=orderDetailHeight.value/250 |
| | | } |
| | | let widthAgv=orderDetailWidth.value/big |
| | | let heightAgv=orderDetailHeight.value/big |
| | | main.style.width=widthAgv+"px" |
| | | main.style.height=heightAgv+"px" |
| | | main.style.backgroundColor = "#8d9095" |
| | | datas2.value=heightAgv |
| | | datas8.value=heightAgv |
| | | datas5.value=widthAgv |
| | | datas7.value=widthAgv |
| | | if(leafer!==undefined){ |
| | | leafer.clear() |
| | | } |
| | | leafer=new Leafer({ view: 'canvas' }) |
| | | points.value=[0, heightAgv, 0, 0, widthAgv, 0, widthAgv,heightAgv] |
| | | const polygon = new Polygon({ |
| | | points: points.value, |
| | | fill: '#32cd79', |
| | | origin: [0, 0] |
| | | }) |
| | | setTimeout(() => { |
| | | leafer.add(polygon); |
| | | }, 30) |
| | | state.value=true |
| | | }else{ |
| | | const b64Data = row.fileData; |
| | | const byteCharacters = atob(b64Data); |
| | | const parser = new DxfParser(); |
| | | dxfData.value = parser.parseSync(byteCharacters) |
| | | state.value=false |
| | | handleFileUpload() |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | const getproject = () => { |
| | | if (state.value){ |
| | | leafer = new Leafer({view: 'canvas'}) |
| | | points.value = [datas1.value + (parseInt(data5.value) / big), datas2.value - (parseInt(data6.value) / big), datas3.value + (parseInt(data1.value) / big), datas4.value + (parseInt(data2.value) / big), |
| | | datas5.value - (parseInt(data3.value) / big), datas6.value + (parseInt(data4.value) / big), datas7.value - (parseInt(data7.value) / big), datas8.value - (parseInt(data8.value) / big)] |
| | | const polygon = new Polygon({ |
| | | points: points.value, |
| | | fill: '#32cd79', |
| | | origin: [0, 0] |
| | | }) |
| | | leafer.add(polygon) |
| | | exportToDXF(1) |
| | | } |
| | | } |
| | | |
| | | const exportToDXF = async (value) => { |
| | | const dxf = new DXFWriter(); |
| | | const polygonPoints = points.value.map((coord, index) => ({ |
| | | x: index % 2 === 0 ? coord : undefined, |
| | | y: index % 2 !== 0 ? -coord : undefined |
| | | })).filter(point => point.x !== undefined && point.y !== undefined); |
| | | |
| | | let arr=[] |
| | | for (let i=0;i<points.value.length;i++){ |
| | | let a=[] |
| | | if(i % 2 === 0){ |
| | | a.push(points.value[i]*big) |
| | | a.push((points.value[i+1]*big)) |
| | | a.push(0) |
| | | arr.push(a) |
| | | } |
| | | |
| | | } |
| | | let minX = Infinity, minY = Infinity; |
| | | let maxX = -Infinity, maxY = -Infinity; |
| | | arr.forEach(p => { |
| | | minX = Math.min(Math.abs(p[0]),minX ); |
| | | minY = Math.min(Math.abs(p[1]),minY); |
| | | maxX = Math.max(Math.abs(p[0]),maxX ); |
| | | maxY = Math.max(Math.abs(p[1]),maxY); |
| | | }); |
| | | |
| | | arr.forEach(p => { |
| | | p[1]=maxY-minY-p[1] |
| | | }); |
| | | |
| | | |
| | | dxf.drawPolyline(arr,{ closed: true, layer: '0' }) |
| | | |
| | | const blob = new Blob([dxf.toDxfString()], {type: 'text/plain;charset=utf-8'}); |
| | | const base64 = await fileToBase64(blob); |
| | | if(value===1){ |
| | | fileName.value="map.dxf" |
| | | fileDate.value=base64.replace(/^data:.+;base64,/, "") |
| | | } |
| | | else if(value===2&&state.value){ |
| | | saveAs(blob, 'map.dxf'); |
| | | }else{ |
| | | ElMessage.warning("è¯¥æ ¼å¼ä¸æ¯æå¯¼åº") |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | const fileToBase64 = (file) => { |
| | | return new Promise((resolve, reject) => { |
| | | const reader = new FileReader(); |
| | | reader.onload = () => resolve(reader.result); |
| | | reader.onerror = reject; |
| | | reader.readAsDataURL(file); |
| | | }); |
| | | }; |
| | | |
| | | function toBottomOrigin(y, canvasHeight) { |
| | | return canvasHeight - y; // å°å·¦ä¸è§Yåæ è½¬æ¢ä¸ºå·¦ä¸è§åæ ç³» |
| | | } |
| | | |
| | | const handleFile = async (event) => { |
| | | state.value=false |
| | | const main = document.getElementById('mains') |
| | | const width = document.getElementById('width') |
| | | const height = document.getElementById('height') |
| | | validate() |
| | | if(leafer!==undefined){ |
| | | leafer.clear() |
| | | } |
| | | leafer = new Leafer({view: 'canvas'}); |
| | | const file = event.target.files[0]; |
| | | if (file) { |
| | | const reader = new FileReader(); |
| | | reader.onload = async (e) => { |
| | | const text = e.target.result; |
| | | try { |
| | | const base64 = await fileToBase64(file); |
| | | const parser = new DxfParser(); |
| | | dxfData.value = parser.parseSync(text); |
| | | handleFileUpload() |
| | | |
| | | fileName.value=file.name |
| | | fileDate.value=base64.replace(/^data:.+;base64,/, "") |
| | | } catch (error) { |
| | | console.error('è§£æDXFæä»¶æ¶åºé:', error); |
| | | } |
| | | }; |
| | | reader.readAsText(file); |
| | | } |
| | | } |
| | | |
| | | const handleFileUpload = () => { |
| | | const main =document.getElementById('mains') |
| | | const width =document.getElementById('width') |
| | | const height =document.getElementById('height') |
| | | if(leafer!==undefined){ |
| | | leafer.clear() |
| | | } |
| | | leafer = new Leafer({ view: 'canvas' }); |
| | | try { |
| | | let minX = Infinity, minY = Infinity; |
| | | let maxX = -Infinity, maxY = -Infinity; |
| | | dxfData.value.entities.forEach(entity => { |
| | | if (entity.type === 'LINE' || entity.type === 'LWPOLYLINE') { |
| | | entity.vertices.forEach(vertices => { |
| | | minX = Math.min(vertices.x, minX); |
| | | minY = Math.min(vertices.y, minY); |
| | | maxX = Math.max(vertices.x, maxX); |
| | | maxY = Math.max(vertices.y, maxY); |
| | | }) |
| | | } |
| | | if (entity.type === 'ARC') { |
| | | const center = {x: entity.center.x, y: entity.center.y}; |
| | | const radius = entity.radius; |
| | | const startAngle = entity.startAngle * (180 / Math.PI); |
| | | const endAngle = entity.endAngle * (180 / Math.PI); |
| | | |
| | | const points = []; |
| | | const steps = 32; |
| | | for (let i = 0; i <= steps; i++) { |
| | | const angle = startAngle + (endAngle - startAngle) * (i / steps); |
| | | const x = center.x + radius * Math.cos(angle * Math.PI / 180); |
| | | const y = center.y + radius * Math.sin(angle * Math.PI / 180); |
| | | points.push({x, y}); |
| | | } |
| | | |
| | | |
| | | points.forEach(p => { |
| | | minX = Math.min(minX, p.x); |
| | | minY = Math.min(minY, p.y); |
| | | maxX = Math.max(maxX, p.x); |
| | | maxY = Math.max(maxY, p.y); |
| | | }); |
| | | } |
| | | }); |
| | | if ((maxX - minX) / 400 > (maxY - minY) / 250) { |
| | | big = (maxX - minX) / 400 |
| | | } else { |
| | | big = (maxY - minY) / 250 |
| | | } |
| | | |
| | | Object.values(dxfData.value.entities).forEach(entity => { |
| | | switch (entity.type) { |
| | | case 'LINE': |
| | | main.style.width = (maxX - minX) / big + "px" |
| | | main.style.height = (maxY - minY) / big + "px" |
| | | main.style.backgroundColor = "#8d9095" |
| | | width.innerHTML = round(maxX - minX, 2) |
| | | height.innerHTML = round(maxY - minY, 2) |
| | | const line = new Line({ |
| | | points: [(entity.vertices[0].x - minX) / big, ((maxY - minY) - (entity.vertices[0].y- minY)) / big, |
| | | (entity.vertices[1].x - minX) / big, ((maxY - minY) - (entity.vertices[1].y - minY)) / big], |
| | | stroke: '#f00', |
| | | strokeWidth: 1 |
| | | }) |
| | | setTimeout(() => { |
| | | leafer.add(line); |
| | | }, 30); |
| | | break; |
| | | case 'LWPOLYLINE': |
| | | |
| | | main.style.width = (maxX - minX) / big + "px" |
| | | main.style.height = (maxY - minY) / big + "px" |
| | | main.style.backgroundColor = "#8d9095" |
| | | width.innerHTML = round(maxX - minX, 2) |
| | | height.innerHTML = round(maxY - minY, 2) |
| | | |
| | | let point = entity.vertices.map(v => [ |
| | | (v.x - minX) / big, |
| | | toBottomOrigin((v.y - minY) / big, (maxY - minY) / big), |
| | | ]).flat() |
| | | |
| | | |
| | | if(entity.vertices.length==4){ |
| | | isQuadrilateral(maxY,minY,maxX,minX,point) |
| | | } |
| | | |
| | | const polygon = new Polygon({ |
| | | points: point, |
| | | fill: '#32cd79', |
| | | }) |
| | | setTimeout(() => { |
| | | leafer.add(polygon); |
| | | }, 30); |
| | | |
| | | break; |
| | | case 'CIRCLE': |
| | | big = (entity.radius * 2) / 400 |
| | | main.style.width = entity.radius * 2 / big + "px" |
| | | main.style.height = entity.radius * 2 / big + "px" |
| | | width.innerHTML = round(entity.radius * 2, 2) |
| | | height.innerHTML = round(entity.radius * 2, 2) |
| | | const ellipse = new Ellipse({ |
| | | width: entity.radius * 2 / big, |
| | | height: entity.radius * 2 / big, |
| | | fill: "#32cd79" |
| | | }) |
| | | setTimeout(() => { |
| | | leafer.add(ellipse); |
| | | }, 30); |
| | | |
| | | break; |
| | | case 'ELLIPSE': |
| | | console.log(entity) |
| | | |
| | | const {majorAxisEndPoint, axisRatio} = entity; |
| | | |
| | | const dx = majorAxisEndPoint.x; |
| | | const dy = majorAxisEndPoint.y; |
| | | const a = Math.sqrt(dx ** 2 + dy ** 2); |
| | | const c = a * axisRatio; |
| | | const θ = Math.atan2(dy, dx); |
| | | const l = axisRatio * (180 / Math.PI); |
| | | |
| | | if ((a * 2) / 400 > (c * 2) / 250) { |
| | | big = (a * 2) / 400 |
| | | } else { |
| | | big = (c * 2) / 250 |
| | | } |
| | | |
| | | main.style.width = a * 2 / big + "px" |
| | | main.style.height = c * 2 / big + "px" |
| | | width.innerHTML = round(a * 2, 2) |
| | | height.innerHTML = round(c * 2, 2) |
| | | const ellipse2 = new Ellipse({ |
| | | width: a * 2 / big, |
| | | height: c * 2 / big, |
| | | fill: "#32cd79", |
| | | }) |
| | | |
| | | setTimeout(() => { |
| | | leafer.add(ellipse2); |
| | | }, 30); |
| | | |
| | | break; |
| | | case 'ARC': |
| | | const center = {x: entity.center.x, y: entity.center.y}; |
| | | const radius = entity.radius; |
| | | const startAngle = entity.startAngle * (180 / Math.PI); |
| | | const endAngle = entity.endAngle * (180 / Math.PI); |
| | | |
| | | if ((maxX - minX) / 400 > (maxY - minY) / 250) { |
| | | big = (maxX - minX) / 400 |
| | | } else { |
| | | big = (maxY - minY) / 250 |
| | | } |
| | | |
| | | |
| | | // 计ç®åå¼§çèµ·ç¹åç»ç¹ |
| | | const startX = (center.x + radius * Math.cos(entity.startAngle) - minX); |
| | | const startY = (maxY - minY) - ((center.y + radius * Math.sin(entity.startAngle)) - minY); |
| | | const endX = (center.x + radius * Math.cos(entity.endAngle) - minX); |
| | | const endY = (maxY - minY) - ((center.y + radius * Math.sin(entity.endAngle)) - minY); |
| | | |
| | | // å建åå¼§è·¯å¾ |
| | | const path = new Path({ |
| | | path: `M ${startX / big} ${startY / big} A ${radius / big} ${radius / big} 0 ${endAngle - startAngle > 180 ? 1 : 0} 0 ${endX / big} ${endY / big}`, |
| | | stroke: '#f00', |
| | | strokeWidth: 1, |
| | | }); |
| | | |
| | | |
| | | setTimeout(() => { |
| | | leafer.add(path); |
| | | }, 30); |
| | | |
| | | |
| | | break; |
| | | |
| | | } |
| | | }) |
| | | } catch (error) { |
| | | console.error('è§£æDXFæä»¶æ¶åºé:', error); |
| | | } |
| | | |
| | | }; |
| | | |
| | | const validate = async () => { |
| | | data1.value=0 |
| | | data2.value=0 |
| | | data3.value=0 |
| | | data4.value=0 |
| | | data5.value=0 |
| | | data6.value=0 |
| | | data7.value=0 |
| | | data8.value=0 |
| | | big=0 |
| | | return true |
| | | } |
| | | defineExpose({ |
| | | validate |
| | | }) |
| | | |
| | | const save = () => { |
| | | emits('getUploadPicture', fileName.value,fileDate.value) |
| | | } |
| | | |
| | | |
| | | const isQuadrilateral = (maxY,minY,maxX,minX,point) => { |
| | | state.value=true |
| | | datas1.value=0 |
| | | datas2.value=(maxY - minY) / big |
| | | datas3.value=0 |
| | | datas4.value=0 |
| | | datas5.value=(maxX - minX) / big |
| | | datas6.value=0 |
| | | datas7.value=(maxX - minX) / big |
| | | datas8.value=(maxY - minY) / big |
| | | //points.value=[0, heightAgv, 0, 0, widthAgv, 0, widthAgv,heightAgv] |
| | | |
| | | let numbers = [point[0], point[2], point[4], point[6]]; // ç¤ºä¾æ°ç» |
| | | let maxX1 = Math.max(...numbers); // æ¾å°æå¤§å¼ |
| | | let maxIndex = numbers.findIndex(num => num === maxX1); // å®ä½ç¬¬ä¸ä¸ªå¹é
ç´¢å¼ |
| | | let remaining = [...numbers]; // å¤å¶åæ°ç»é¿å
çªå |
| | | remaining.splice(maxIndex, 1); // ä»
ç§»é¤ç¬¬ä¸ä¸ªæå¤§å¼å®ä¾ |
| | | let maxX2 = Math.max(...remaining); // å¨å©ä½æ°ç»ä¸æ¾ç¬¬äºå¤§å¼ |
| | | |
| | | let arr=[] |
| | | for (let i=0;i<point.length;i++){ |
| | | let a=[] |
| | | if(i % 2 === 0){ |
| | | a.push(point[i]) |
| | | a.push((point[i+1])) |
| | | arr.push(a) |
| | | } |
| | | |
| | | } |
| | | let x=[] |
| | | let y=[] |
| | | |
| | | let upperRight=null //å³ä¸ |
| | | let lowerRight=null //å³ä¸ |
| | | let topLeft=null //å·¦ä¸ |
| | | let lowerLeft=null //å·¦ä¸ |
| | | |
| | | arr.forEach(item=>{ |
| | | if(item[0]==maxX1||item[0]==maxX2){ |
| | | x.push(item) |
| | | }else{ |
| | | y.push(item) |
| | | } |
| | | }) |
| | | |
| | | if(x[0][1]>x[1][1]){ |
| | | lowerRight=x[0] |
| | | upperRight=x[1] |
| | | }else{ |
| | | upperRight=x[0] |
| | | lowerRight=x[1] |
| | | } |
| | | |
| | | if(y[0][1]>y[1][1]){ |
| | | lowerLeft=y[0] |
| | | topLeft=y[1] |
| | | }else { |
| | | topLeft=y[0] |
| | | lowerLeft=y[1] |
| | | } |
| | | |
| | | |
| | | if(lowerLeft[0]*big===0){ |
| | | data5.value=0 |
| | | }else{ |
| | | data5.value=round(lowerLeft[0]*big,0) |
| | | } |
| | | if(lowerLeft[1]*big===0){ |
| | | data6.value=0 |
| | | }else{ |
| | | data6.value=round(maxY-minY-lowerLeft[1]*big,0) |
| | | } |
| | | if(topLeft[0]*big===0){ |
| | | data1.value=0 |
| | | }else{ |
| | | data1.value=round(topLeft[0]*big,0) |
| | | } |
| | | if(topLeft[1]*big===0){ |
| | | data2.value=0 |
| | | }else{ |
| | | data2.value=round(topLeft[1]*big,0) |
| | | } |
| | | if(upperRight[0]*big===0){ |
| | | data3.value=0 |
| | | }else{ |
| | | data3.value=round(maxX-minX-upperRight[0]*big,0) |
| | | } |
| | | if(upperRight[1]*big===0){ |
| | | data4.value=0 |
| | | }else{ |
| | | data4.value=round(upperRight[1]*big,0) |
| | | } |
| | | if(lowerRight[0]*big===0){ |
| | | data7.value=0 |
| | | }else{ |
| | | data7.value=round(maxX-minX-lowerRight[0]*big,0) |
| | | } |
| | | if(lowerRight[1]*big===0){ |
| | | data8.value=0 |
| | | }else{ |
| | | data8.value=round(maxY-minY-lowerRight[1]*big,0) |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div style="width: 404px;height: 254px;border: 2px solid #000;float: left; |
| | | position: relative;display: flex;justify-content: center;align-content: center;margin-left: 100px;margin-top: 25px;"> |
| | | <div id="mains" ref="parent" > |
| | | <canvas id="canvas" ></canvas> |
| | | </div> |
| | | </div> |
| | | <div id="width" style="height: 20px;position: absolute;top: 37px;left: 300px;">{{orderDetailWidth}}</div> |
| | | <div id="height" style="width: 60px;position: absolute;top: 178px;left: 60px;">{{orderDetailHeight}}</div> |
| | | <div style="float: left;margin-top: 30px;margin-left: 150px"> |
| | | <el-input class="contactNumber" @blur="getproject" type="text" v-model="data1" /> |
| | | <el-input class="contactNumber" @blur="getproject" type="text" v-model="data2" /> |
| | | <el-input class="contactNumber" @blur="getproject" type="text" v-model="data3" /> |
| | | <el-input class="contactNumber" @blur="getproject" type="text" v-model="data4" /><br> |
| | | <el-input class="contactNumber" @blur="getproject" type="text" v-model="data5" /> |
| | | <el-input class="contactNumber" @blur="getproject" type="text" v-model="data6" /> |
| | | <el-input class="contactNumber" @blur="getproject" type="text" v-model="data7" /> |
| | | <el-input class="contactNumber" @blur="getproject" type="text" v-model="data8" /><br> |
| | | </div> |
| | | <div id="width" style="height: 20px;position: absolute;top: 342px;left: 145px;">ä¸</div> |
| | | <div id="width" style="height: 20px;position: absolute;top: 364px;left: 145px;">ä¸</div> |
| | | <div id="width" style="height: 20px;position: absolute;top: 322px;left: 185px;">横</div> |
| | | <div id="width" style="height: 20px;position: absolute;top: 322px;left: 255px;">ç«</div> |
| | | <div id="width" style="height: 20px;position: absolute;top: 322px;left: 320px;">横</div> |
| | | <div id="width" style="height: 20px;position: absolute;top: 322px;left: 385px;">ç«</div> |
| | | <div style="float: left;margin-top: 20px;margin-left: 80px;"> |
| | | <input style="width: 180px;" type="file" @change="handleFile" accept=".dxf" /> |
| | | <el-button type="primary" @click="exportToDXF(2)">导åºDXF</el-button> |
| | | </div> |
| | | <div style="float: left;margin-top: 20px;margin-left: 80px;"> |
| | | <el-button type="primary" @click="save()">ä¿å</el-button> |
| | | </div> |
| | | |
| | | |
| | | |
| | | </template> |
| | | |
| | | <style scoped> |
| | | .contactNumber{ |
| | | width: 60px; |
| | | height:20px; |
| | | border: none; |
| | | box-shadow: none; |
| | | font-size: 15px; |
| | | } |
| | | |
| | | #mains { |
| | | position: relative; |
| | | } |
| | | </style> |
| | |
| | | console.log(file) |
| | | } |
| | | const handleChange = (uploadFile, uploadFiles) => { |
| | | emits('getUploadPicture', uploadFile.name) |
| | | emits('getUploadPicture', uploadFile.name,uploadFile) |
| | | upload.value.clearFiles() |
| | | } |
| | | |
| | |
| | | hollowUpdate:'تعدÙÙ ÙØ§ØµÙ Ù
ØªÙØ³Ø·', |
| | | interlayerThickness:'*سÙÙ
Ù Ø§ÙØªØµÙÙØ', |
| | | interlayerType:'* اÙÙÙØ¹', |
| | | interlayerColor:'* اÙÙÙÙ', |
| | | interlayerColor:' اÙÙÙÙ', |
| | | interlayer:'ÙØ§ØµÙ Ø§ÙØªØµÙÙØ', |
| | | interlayerUpdate:'تعدÙÙ ÙØ§ØµÙ Ø§ÙØªØµÙÙØ ', |
| | | glassAttribute:'خصائص Ø§ÙØ²Ø¬Ø§Ø¬ Ù
ØªØ¬Ø§ÙØ³Ø©', |
| | |
| | | allAmount:'é¢ç§¯éé¢ï¼æ»éé¢ï¼', |
| | | orderTransfer:'è®¢åæ¥å·¥è½¬ç§»', |
| | | |
| | | graphic:'å¾å½¢', |
| | | drawingNo:'å¾å·', |
| | | msg:{ |
| | | productCheck:'Ø§ÙØ±Ø¬Ø§Ø¡ Ø§Ø®ØªÙØ§Ø± Ù
ÙØªØ¬', |
| | | tableLengthNot:'ÙØ§ ØªÙØ¬Ø¯ Ø¨ÙØ§Ùات ÙÙØ¬Ø¯ÙÙ', |
| | |
| | | }, |
| | | preciseMode:'精确模å¼', |
| | | ambiguityModels:'æ¨¡ç³æ¨¡å¼', |
| | | glassSizeRange:'ç»ç尺寸èå´' |
| | | glassSizeRange:'ç»ç尺寸èå´', |
| | | glassQuantity:'å°çæ°é' |
| | | |
| | | }, |
| | | searchOrder:{ |
| | |
| | | xMargin:'ÙØ§Ù
Ø´ اÙÙ
ØÙر X', |
| | | yMargin:'ÙØ§Ù
Ø´ اÙÙ
ØÙر Y', |
| | | location:'Ù
ÙÙØ¹ Ø§ÙØ¹ÙاÙ
Ø© Ø§ÙØªØ¬Ø§Ø±ÙØ©', |
| | | sort:'ç»çå弯' |
| | | sort:'ç»çå弯', |
| | | archRise:'æ±é«' |
| | | |
| | | }, |
| | | |
| | |
| | | selectDetailProcessCard:"æµç¨å¡æç»æ¥è¯¢" |
| | | |
| | | }, |
| | | printCompound:'éè¦åæ¶çå±', |
| | | flashback:'ååº', |
| | | processId:'رÙÙ
Ø¨Ø·Ø§ÙØ© Ø§ÙØ¹Ù
ÙÙØ©', |
| | | founder:'Ù
ÙØ²Ø¹ Ø§ÙØ±ÙÙÙ', |
| | | layoutStatus:'Ø§ÙØØ§ÙØ©', |
| | |
| | | finishedProductReport :'ØªÙØ±Ùر اÙÙ
ÙØªØ¬Ø§Øª اÙÙÙØ§Ø¦ÙØ©', |
| | | orderWorkReportForm :'è®¢åæ¥å·¥æ¥è¡¨', |
| | | }, |
| | | teamsGroupsName:'ä¸å·¥åºæ¥å·¥', |
| | | productionReport:'ØªÙØ±Ùر Ø§ÙØ¥Ùتاج', |
| | | workInProgressReport:'ØªÙØ±Ùر Ø³ÙØ± Ø§ÙØ¹Ù
Ù', |
| | | processToBeCompleted:'ØªÙØ±Ùر Ø§ÙØ¹Ù
ÙÙØ© اÙÙ
عÙÙØ©', |
| | |
| | | hollowUpdate:'Hollow spacers modified', |
| | | interlayerThickness:'*Lamination thickness', |
| | | interlayerType:'* Type', |
| | | interlayerColor:'* Color', |
| | | interlayerColor:'Color', |
| | | interlayer:'Lamination spacer', |
| | | interlayerUpdate:'Lamination spacer modified', |
| | | glassAttribute:'Monolithic glass properties', |
| | |
| | | allAmount:'é¢ç§¯éé¢ï¼æ»éé¢ï¼', |
| | | orderTransfer:'è®¢åæ¥å·¥è½¬ç§»', |
| | | |
| | | graphic:'graphic', |
| | | drawingNo:'drawingNo', |
| | | msg:{ |
| | | productCheck:'Please select a product', |
| | | tableLengthNot:'No table data', |
| | |
| | | }, |
| | | preciseMode:'精确模å¼', |
| | | ambiguityModels:'æ¨¡ç³æ¨¡å¼', |
| | | glassSizeRange:'ç»ç尺寸èå´' |
| | | glassSizeRange:'ç»ç尺寸èå´', |
| | | glassQuantity:'å°çæ°é' |
| | | |
| | | }, |
| | | searchOrder:{ |
| | |
| | | xMargin:'X axis margin', |
| | | yMargin:'Y-axis margin', |
| | | location:'Trademark position', |
| | | sort:'ç»çå弯' |
| | | sort:'ç»çå弯', |
| | | archRise:'æ±é«' |
| | | |
| | | }, |
| | | |
| | |
| | | printFlowCard:"Process card printing", |
| | | selectDetailProcessCard:"Process card details query" |
| | | }, |
| | | printCompound:'éè¦åæ¶çå±', |
| | | flashback:'ååº', |
| | | processId:'Process Card Number', |
| | | founder:'Divider', |
| | | layoutStatus:'Type Setting', |
| | |
| | | finishedProductReport :'Finished product report', |
| | | orderWorkReportForm :'è®¢åæ¥å·¥æ¥è¡¨', |
| | | }, |
| | | teamsGroupsName:'ä¸å·¥åºæ¥å·¥', |
| | | productionReport:'Production report', |
| | | workInProgressReport:'Product in process report', |
| | | processToBeCompleted:'Process to be completed report', |
| | |
| | | hollowUpdate:'ì¤ê³µ ê°ê²©ì¬ ìì ', |
| | | interlayerThickness:'ì 층 ëê»', |
| | | interlayerType:'*ì í', |
| | | interlayerColor:'*ìì', |
| | | interlayerColor:'ìì', |
| | | interlayer:'ì 층 ê°ê²©ì¬', |
| | | interlayerUpdate:'ì 층 ê°ê²©ì¬ ìì ', |
| | | glassAttribute:'ë¨ì¼ ì 리 í¹ì±', |
| | |
| | | quantityMount:'ìë ê¸°ì¤ ê¸ì¡', |
| | | allAmount:'ì´ ë©´ì ê¸ì¡', |
| | | orderTransfer:'주문 ì´ê´', |
| | | |
| | | graphic:'graphic', |
| | | drawingNo:'drawingNo', |
| | | transferPage:{ |
| | | oldOrderId:'기존 주문 ë²í¸', |
| | | newOrderId:'ì ê· ì£¼ë¬¸ ë²í¸', |
| | |
| | | }, |
| | | preciseMode:'精确模å¼', |
| | | ambiguityModels:'æ¨¡ç³æ¨¡å¼', |
| | | glassSizeRange:'ç»ç尺寸èå´' |
| | | glassSizeRange:'ç»ç尺寸èå´', |
| | | glassQuantity:'å°çæ°é' |
| | | |
| | | }, |
| | | searchOrder:{ |
| | |
| | | selectDetailProcessCard:'íë¡ì¸ì¤ ì¹´ë ìì¸ ì¡°í' |
| | | |
| | | }, |
| | | printCompound:'éè¦åæ¶çå±', |
| | | flashback:'ååº', |
| | | processId:'íë¡ì¸ì¤ ì¹´ë ë²í¸', |
| | | founder:'ë¶ë°° ìì
ì', |
| | | layoutStatus:'ê°ê³µ ë°°ì¹ ìí', |
| | |
| | | finishedProductReport :'ìì í ë³´ê³ ì', |
| | | orderWorkReportForm :'è®¢åæ¥å·¥æ¥è¡¨', |
| | | }, |
| | | teamsGroupsName:'ä¸å·¥åºæ¥å·¥', |
| | | productionReport:'ìì° ë³´ê³ ì', |
| | | workInProgressReport:'ì§í ì¤ì¸ ì í ë³´ê³ ì', |
| | | processToBeCompleted:'ìë£í´ì¼ í íë¡ì¸ì¤ ë³´ê³ ì', |
| | |
| | | hollowUpdate:'ÐÑÑÑое обновление', |
| | | interlayerThickness:'* ТолÑина ÑлоÑ', |
| | | interlayerType:'* Тип', |
| | | interlayerColor:'* ЦвеÑ', |
| | | interlayerColor:' ЦвеÑ', |
| | | interlayer:'ТÑиплекÑ', |
| | | interlayerUpdate:'ТÑÐ¸Ð¿Ð»ÐµÐºÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ðµ', |
| | | glassAttribute:'СвойÑÑва монолиÑного ÑÑекла', |
| | |
| | | allAmount:'é¢ç§¯éé¢ï¼æ»éé¢ï¼', |
| | | orderTransfer:'è®¢åæ¥å·¥è½¬ç§»', |
| | | |
| | | graphic:'å¾å½¢', |
| | | drawingNo:'å¾å·', |
| | | msg:{ |
| | | productCheck:'ÐожалÑйÑÑа, вÑбеÑиÑе пÑодÑкÑ', |
| | | tableLengthNot:'ÐÐµÑ Ð´Ð°Ð½Ð½ÑÑ
ÑаблиÑÑ', |
| | |
| | | }, |
| | | preciseMode:'精确模å¼', |
| | | ambiguityModels:'æ¨¡ç³æ¨¡å¼', |
| | | glassSizeRange:'ç»ç尺寸èå´' |
| | | glassSizeRange:'ç»ç尺寸èå´', |
| | | glassQuantity:'å°çæ°é' |
| | | |
| | | }, |
| | | searchOrder:{ |
| | |
| | | xMargin:'ÐÑаниÑÑ Ð¾Ñи X', |
| | | yMargin:'ÐнÑеÑвал оÑи Y', |
| | | location:'РаÑположение ÑоваÑного знака', |
| | | sort:'ç»çå弯' |
| | | sort:'ç»çå弯', |
| | | archRise:'æ±é«' |
| | | }, |
| | | |
| | | workOrder:{ |
| | |
| | | printFlowCard:"æµç¨å¡æå°", |
| | | selectDetailProcessCard:"æµç¨å¡æç»æ¥è¯¢" |
| | | }, |
| | | |
| | | printCompound:'éè¦åæ¶çå±', |
| | | flashback:'ååº', |
| | | processId:'ÐÐ¾Ð¼ÐµÑ Ð¿ÑоÑеÑÑа', |
| | | founder:'ÐиÑпеÑÑеÑ', |
| | | layoutStatus:'ФоÑмаÑ', |
| | |
| | | finishedProductReport :'ÐÑÑÐµÑ Ð¾ гоÑовой пÑодÑкÑии', |
| | | orderWorkReportForm :'è®¢åæ¥å·¥æ¥è¡¨', |
| | | }, |
| | | teamsGroupsName:'ä¸å·¥åºæ¥å·¥', |
| | | productionReport:'ÐÑÑÐµÑ Ð¾ пÑоизводÑÑве', |
| | | workInProgressReport:'ÐÑÑÐµÑ Ð¾ незавеÑÑенной пÑодÑкÑии', |
| | | processToBeCompleted:'ÐÑÑÐµÑ Ð¾ незавеÑÑенной опеÑаÑии', |
| | |
| | | glassRepeat:'请å
éæ©é´éç©', |
| | | HollowReview:'è¯·éæ©å
¨é¨ä¸ç©ºé´éç©ä¸ææ¡', |
| | | firstGlass:"请å
éæ©äº§å", |
| | | InterlayerReview:'è¯·éæ©å
¨é¨ä¸ç©ºé´éç©ä¸ææ¡', |
| | | InterlayerReview:'è¯·éæ©å
¨é¨é´éç©å¸¦æå·ä¸ææ¡', |
| | | glassTypeTitle:'ææå±æ§', |
| | | thickness:'*å度', |
| | | color:'*é¢è²', |
| | |
| | | hollowUpdate:'ä¸ç©ºé´éç©ä¿®æ¹', |
| | | interlayerThickness:'*夹å±å度', |
| | | interlayerType:'*ç±»å', |
| | | interlayerColor:'*é¢è²', |
| | | interlayerColor:'é¢è²', |
| | | interlayer:'夹å±é´éç©', |
| | | interlayerUpdate:'夹å±é´éç©ä¿®æ¹', |
| | | glassAttribute:'åçç»ç屿§:', |
| | |
| | | quantityMount:'æ°ééé¢', |
| | | allAmount:'é¢ç§¯éé¢ï¼æ»éé¢ï¼', |
| | | orderTransfer:'è®¢åæ¥å·¥è½¬ç§»', |
| | | |
| | | graphic:'å¾å½¢', |
| | | drawingNo:'å¾å·', |
| | | transferPage:{ |
| | | oldOrderId:'å订åå·', |
| | | newOrderId:'æ°è®¢åå·', |
| | |
| | | }, |
| | | preciseMode:'精确模å¼', |
| | | ambiguityModels:'æ¨¡ç³æ¨¡å¼', |
| | | glassSizeRange:'ç»ç尺寸èå´' |
| | | glassSizeRange:'ç»ç尺寸èå´', |
| | | glassQuantity:'å°çæ°é' |
| | | |
| | | }, |
| | | searchOrder:{ |
| | |
| | | xMargin:'宽æ¹ååæ ', |
| | | yMargin:'髿¹ååæ ', |
| | | location:'åæ ä½ç½®', |
| | | sort:'ç»çå弯' |
| | | sort:'ç»çå弯', |
| | | archRise:'æ±é«' |
| | | |
| | | }, |
| | | |
| | |
| | | selectDetailProcessCard:"æµç¨å¡æç»æ¥è¯¢" |
| | | |
| | | }, |
| | | printCompound:'éè¦åæ¶çå±', |
| | | flashback:'ååº', |
| | | processId:'æµç¨å¡å·', |
| | | founder:'åæ¶å', |
| | | layoutStatus:'æçç¶æ', |
| | |
| | | printStatus:'æå°æ¬¡æ°', |
| | | labelPrinting2:'æ ç¾æå°2', |
| | | finishedProductPrinting2:'æåæå°2', |
| | | editablePrinting:'å¯ç¼è¾æå°', |
| | | editablePrinting:'æ ç¾èªå®ä¹æå°', |
| | | invertSelection:'åé', |
| | | sortSummary:'æåºæ±æ»', |
| | | addAutomatically:'èªå¨å¡«å
', |
| | |
| | | addFlowCardMsg2:'è¯·éæ©æªåæ¶è®¢åæå°', |
| | | okFlowCard:'已忶', |
| | | noFlowCard:'æªåæ¶', |
| | | |
| | | mainWidth:'宽é«', |
| | | mainHeight:'é«å®½', |
| | | |
| | | }, |
| | | reportingWorks:{ |
| | |
| | | addReportingWork:"æ¥å·¥æ°å¢", |
| | | qualityInspectionReview:"è´¨æ£å®¡æ ¸", |
| | | }, |
| | | msgMannerPacking:'è¯·éæ©å
è£
æ¹å¼', |
| | | saveWorkStorage:'æ¥å·¥å
¥åº', |
| | | mannerPacking:'å
è£
æ¹å¼', |
| | | glassNumber:'ç¼å·', |
| | | glassAddress:'çæ è®°', |
| | | WorkReportingManagement:'æ¥å·¥ç®¡ç', |
| | |
| | | finishedProductReport :'æåæ¥è¡¨', |
| | | orderWorkReportForm :'è®¢åæ¥å·¥æ¥è¡¨', |
| | | }, |
| | | teamsGroupsName:'ä¸å·¥åºæ¥å·¥', |
| | | productionReport:'ç产æ¥è¡¨', |
| | | workInProgressReport:'å¨å¶åæ¥è¡¨', |
| | | workInProgressReport:'å¨å¶åæç»æ¥è¡¨', |
| | | WorkInProgressCombination:'å¨å¶åæ±æ»æ¥è¡¨', |
| | | processToBeCompleted:'å·¥åºå¾
宿æ¥è¡¨', |
| | | productionAndShippingProgress:'ç产åè´§è¿åº¦æ¥è¡¨', |
| | | processCardProgress:'æµç¨å¡è¿åº¦æ¥è¡¨', |
| | |
| | | component: () => import('../views/pp/processCard/PrintProjectDetails.vue'), |
| | | }, |
| | | { |
| | | path: 'TagStyleDesigner', |
| | | name: 'TagStyleDesigner', |
| | | component: () => import('../components/pp/TagStyleDesigner.vue'), |
| | | }, |
| | | { |
| | | path: '', |
| | | redirect:'/main/processCard/selectProcessCard' |
| | | } |
| | |
| | | path: 'workInProgress', |
| | | name: 'workInProgress', |
| | | component: () => import('../views/pp/report/WorkInProgress.vue'), |
| | | }, |
| | | { |
| | | //å¨å¶åæ±æ»æ¥è¡¨ |
| | | path: 'workInProgressCombination', |
| | | name: 'workInProgressCombination', |
| | | component: () => import('../views/pp/report/WorkInProgressCombination.vue'), |
| | | }, |
| | | { |
| | | //æåçæ¥è¡¨ |
| | |
| | | component: () => import('../views/mm/basicData/WarehouseCreateBasicData.vue'), |
| | | }, |
| | | { |
| | | path: 'canvas', |
| | | name: 'canvas', |
| | | component: () => import('../views/mm/basicData/canvas.vue'), |
| | | }, |
| | | { |
| | | path: '', |
| | | redirect: '/main/warehouseBasicData/warehouseSearchBasicData' |
| | | } |
| | |
| | | path: '/app', |
| | | name: 'app', |
| | | component: () => import('../views/system/app/appDownload.vue') |
| | | }, |
| | | { |
| | | path: '/productionScheduleCollect', |
| | | name: 'productionScheduleCollect', |
| | | component: () => import('../views/pp/report/WorkInProgressCombination.vue'), |
| | | } |
| | | |
| | | ] |
| | |
| | | export default defineStore('companyInfo', { |
| | | |
| | | state: () => ({ |
| | | hollow:'*', |
| | | notChangeProduct:true,//天津trueï¼å
¶ä»falseï¼æ¯å¦å¼å¯éæ¬äººå建ç产åä¸è½ä¿®æ¹ |
| | | timeOut:false,//éåtrueï¼å
¶ä»falseï¼æ¯å¦å¼å¯è¶
æ¶æ¹åå¤éæ¡ç¶æ |
| | | connectMes:false,//常å·,ä¹ä¹trueï¼å
¶ä»falseï¼æ¾ç¤ºè®¢åæ¥å·¥è½¬ç§»æ¯å¦å¯ç¨ |
| | |
| | | address:'天津å®å»åºèè½ç¯ä¿å·¥ä¸åºå¤©å
´è·¯è¥¿ä¾§å®ä¸éåä¾§', |
| | | telephone:'022-59280088', |
| | | fax:'022-59280066', |
| | | errorArea:0.4, |
| | | errorArea:0.4,//ç»ç®é¢ç§¯è¯¯å·® |
| | | widHeiLength:{//订å宽é«é¿åº¦ |
| | | regexp:/^(0|[1-9][0-9]{0,4}([.][0-9]{1,2})?)$/,//æ£å0.00-99999.99 |
| | | //regexp:/^(0|[1-9][0-9]{0,3}([.][0-9]{1,2})?)$/,//æ£å0.00-9999.99 |
| | | msg:'basicData.msg.range99999Dec2' |
| | | }, |
| | | orderIdType:'year',//å端çæè®¢åå·ç±»åï¼day:æ¯å¤©çæï¼month:æ¯æçæ,year:æ¯å¹´çæ |
| | | deliveryIdType:'day', |
| | | deliveryIdType:'day',//å端çæåè´§åå·ç±»åï¼day:æ¯å¤©çæï¼month:æ¯æçæ |
| | | deliveryDate:7,//订åå建éè´§æ¥æ 天津7天ï¼å¸¸å·7天ï¼ä¹ä¹15å¤©ï¼æ°ç15天 |
| | | columnName:'å¾å·', |
| | | columnName:'å¾å·',//æå°çäº§åæ¶éè¦æ¾ç¤ºçååï¼æ²¡æä¸ºç©º |
| | | selectOrderReviewShow:true, //订åé¦é¡µå å·¥åå®¡æ ¸æé®æ¯å¦æ¾ç¤º |
| | | productName:"product_name",//产åå建æ¥éåæ®µ |
| | | decValue:3,//订åä¿ç使°ï¼å¤©æ´¥3ä½,常å·2ä½ |
| | | label:1,//æ ç¾ç±»å |
| | | label:1,//æ ç¾ç±»å,常å·ä¸º2ï¼å
¶ä»ä¸º1 |
| | | calculateType:1,//订åè®¡ç®æ¹å¼ |
| | | reportType:1,//æ¥å·¥æ¯å¦æ¥è¯¢æ ·å订å2æ¥è¯¢ï¼1䏿¥è¯¢ |
| | | qualityInsStatus:1,//跨工åºè´¨æ£å®¡æ ¸ï¼1ä¸éè¦ï¼2éè¦ |
| | | remarkSwitch:1,//æµç¨å¡ä¸æ¯å¦æ¾ç¤ºå
¶å®å¤æ³¨ï¼1æ¾ç¤ºï¼2䏿¾ç¤º |
| | | icon:"",//åæ åæ° |
| | | icon:"",//åæ åæ°ï¼æ²¡æä¸ºç©º |
| | | printShowTitle:true,//æµç¨å¡èªå®ä¹æå°æ¯å¦æ¾ç¤ºæ ç¾ |
| | | longSide:null,//订åå建æé¿è¾¹æç¤ºé¢è² nullä¸æç¤ºé¢è² |
| | | showDeliveryCreator:true,//åè´§åå建人å
æ¾ç¤ºæè
åæ¾ç¤º falseåæ¾ç¤º |
| | | deliveryRemark: ['夿³¨:æ¬æ¹ç»ç为ä¼çåæ ¼åï¼è¯·å¨å¸è´§æ¶,å½é¢æ¶ç¹éªæ¶ãå¦æè´¨éé®é¢å¨ä¸å¨å
䏿¬å
¬å¸èç³»,å¦åæ¦ä¸è´è´£ï¼'], |
| | | deliveryOutbound: false,//åè´§é»è®¤åºåº |
| | | flowCardMerge: 0,//æµç¨å¡åçæå° |
| | | printBtn:1,//æå°çé¢ä¸ä¸ªæé®ä¸æ¯å¦æ¾ç¤ºæ ç¾æå°ç¸å
³æé®ï¼0æ¾ç¤ºå¸¸å·ï¼1å
¶å®ä¸æ¾ç¤º |
| | | deliveryRemark: ['夿³¨:æ¬æ¹ç»ç为ä¼çåæ ¼åï¼è¯·å¨å¸è´§æ¶,å½é¢æ¶ç¹éªæ¶ãå¦æè´¨éé®é¢å¨ä¸å¨å
䏿¬å
¬å¸èç³»,å¦åæ¦ä¸è´è´£ï¼'],//æå°åè´§åç夿³¨ |
| | | deliveryOutbound: false,//åè´§é»è®¤åºåº,é»è®¤åºåºä¸ºtrue |
| | | flowCardMerge: 0,//æµç¨å¡åçæå°ï¼1åå¹¶ï¼å
¶ä»ä¸åå¹¶ |
| | | printBtn:0,//æå°çé¢ä¸ä¸ªæé®ä¸æ¯å¦æ¾ç¤ºæ ç¾æå°ç¸å
³æé®ï¼0æ¾ç¤ºï¼1å
¶å®ä¸æ¾ç¤º |
| | | printNumber:true,//å¤é订åæå°æµç¨å¡æ¯å¦æ¾ç¤ºå³ä¸è§åºå·ä¹ä¹false,å
¶å®true |
| | | materialOutboundColor:false,//åºåæ¥è¯¢å
¥åºè¶
è¿ä¸å®æ¶é´æ¹åé¢è²ï¼æ´é³trueï¼å
¶ä»false |
| | | storageBtn:false,//æ¯å¦æ¾ç¤ºæ¥å·¥å
¥åºç¸å
³å
å®¹ï¼æ´é³trueï¼å
¶ä»false |
| | | teamsType:false,//æ¯å¦å¼å¯çç»ä¸ææ¡ï¼æ´é³trueï¼å
¶ä»false |
| | | alienFunction:false,//æ¯å¦å¼å¯å¼å½¢åè½ï¼ææ¶é½æ¯false |
| | | //天津 |
| | | printLabel: { |
| | | custom: (item1) => { |
| | |
| | | export default defineStore('companyInfo', { |
| | | |
| | | state: () => ({ |
| | | hollow:'*', |
| | | notChangeProduct:false,//天津trueï¼å
¶ä»falseï¼æ¯å¦å¼å¯éæ¬äººå建ç产åä¸è½ä¿®æ¹ |
| | | timeOut:false,//éåtrueï¼å
¶ä»falseï¼æ¯å¦å¼å¯è¶
æ¶æ¹åå¤éæ¡ç¶æ |
| | | connectMes:true,//常å·,ä¹ä¹trueï¼å
¶ä»falseï¼æ¾ç¤ºè®¢åæ¥å·¥è½¬ç§»æ¯å¦å¯ç¨ |
| | |
| | | address:'常å·å¸å¤©å®åºééé大æåè·¯8å·', |
| | | telephone:'022-59280088', |
| | | fax:'022-59280066', |
| | | errorArea:0.4, |
| | | errorArea:0.4,//ç»ç®é¢ç§¯è¯¯å·® |
| | | widHeiLength:{//订å宽é«é¿åº¦ |
| | | regexp:/^(\d{1,4})$/,//æ£åå使´æ° |
| | | //regexp:/^(0|[1-9][0-9]{0,3}([.][0-9]{1,2})?)$/,//æ£å0.00-9999.99 |
| | |
| | | orderIdType:'month',//å端çæè®¢åå·ç±»åï¼day:æ¯å¤©çæï¼month:æ¯æçæ |
| | | deliveryIdType:'month',//å端çæåè´§åå·ç±»åï¼day:æ¯å¤©çæï¼month:æ¯æçæ |
| | | deliveryDate:7,//订åå建éè´§æ¥æ 天津7天ï¼å¸¸å·7天ï¼ä¹ä¹15å¤©ï¼æ°ç15天 |
| | | columnName:'å¼å½¢åæ°', |
| | | columnName:'å¼å½¢åæ°',//æå°çäº§åæ¶éè¦æ¾ç¤ºçååï¼æ²¡æä¸ºç©º |
| | | selectOrderReviewShow:false, //订åé¦é¡µå å·¥åå®¡æ ¸æé®æ¯å¦æ¾ç¤º |
| | | productName:"product_abbreviation", //产åå建æ¥éåæ®µ |
| | | decValue:2,//订åä¿åé¢ç§¯ä½æ° |
| | | label:2,//æ ç¾ç±»å |
| | | label:2,//æ ç¾ç±»å,常å·ä¸º2ï¼å
¶ä»ä¸º1 |
| | | calculateType:2,//订åè®¡ç®æ¹å¼ |
| | | reportType:2,//æ¥å·¥æ¯å¦æ¥è¯¢æ ·å订å2æ¥è¯¢ï¼1䏿¥è¯¢ |
| | | qualityInsStatus:2,//跨工åºè´¨æ£å®¡æ ¸ï¼1ä¸éè¦ï¼2éè¦ |
| | | remarkSwitch:2,//æµç¨å¡ä¸æ¯å¦æ¾ç¤ºå
¶å®å¤æ³¨ï¼1æ¾ç¤ºï¼2䏿¾ç¤º |
| | | icon:"奥é£ä¹
é",//åæ åæ° |
| | | icon:"奥é£ä¹
é",//åæ åæ°ï¼æ²¡æä¸ºç©º |
| | | printShowTitle:true,//æµç¨å¡èªå®ä¹æå°æ¯å¦æ¾ç¤ºæ ç¾ |
| | | longSide:6500,//订åå建æé¿è¾¹æç¤ºé¢è² |
| | | showDeliveryCreator:true,//åè´§åå建人å
æ¾ç¤ºæè
åæ¾ç¤º falseåæ¾ç¤º |
| | | deliveryRemark: ['夿³¨:æ¬æ¹ç»ç为ä¼çåæ ¼åï¼è¯·å¨å¸è´§æ¶,å½é¢æ¶ç¹éªæ¶ãå¦æè´¨éé®é¢å¨ä¸å¨å
䏿¬å
¬å¸èç³»,å¦åæ¦ä¸è´è´£ï¼'], |
| | | deliveryOutbound: true,//åè´§é»è®¤åºåº |
| | | flowCardMerge: 1,//æµç¨å¡åçæå° |
| | | deliveryRemark: ['夿³¨:æ¬æ¹ç»ç为ä¼çåæ ¼åï¼è¯·å¨å¸è´§æ¶,å½é¢æ¶ç¹éªæ¶ãå¦æè´¨éé®é¢å¨ä¸å¨å
䏿¬å
¬å¸èç³»,å¦åæ¦ä¸è´è´£ï¼'],//æå°åè´§åç夿³¨ |
| | | deliveryOutbound: true,//åè´§é»è®¤åºåº,é»è®¤åºåºä¸ºtrue |
| | | flowCardMerge: 1,//æµç¨å¡åçæå°ï¼1åå¹¶ï¼å
¶ä»ä¸åå¹¶ |
| | | printBtn:0,//æå°çé¢ä¸ä¸ªæé®ä¸æ¯å¦æ¾ç¤ºæ ç¾æå°ç¸å
³æé®ï¼0æ¾ç¤ºå¸¸å·ï¼1天津å
¶å®ä¸æ¾ç¤º |
| | | printNumber:true,//å¤é订åæå°æµç¨å¡æ¯å¦æ¾ç¤ºå³ä¸è§åºå·ä¹ä¹false,å
¶å®true |
| | | materialOutboundColor:false,//åºåæ¥è¯¢å
¥åºè¶
è¿ä¸å®æ¶é´æ¹åé¢è²ï¼æ´é³trueï¼å
¶ä»false |
| | | storageBtn:false,//æ¯å¦æ¾ç¤ºæ¥å·¥å
¥åºç¸å
³å
å®¹ï¼æ´é³trueï¼å
¶ä»false |
| | | teamsType:false,//æ¯å¦å¼å¯çç»ä¸ææ¡ï¼æ´é³trueï¼å
¶ä»false |
| | | alienFunction:false,//æ¯å¦å¼å¯å¼å½¢åè½ï¼ææ¶é½æ¯false |
| | | //天津 |
| | | printLabel: { |
| | | custom: (item1) => { |
| | |
| | | export default defineStore('companyInfo', { |
| | | |
| | | state: () => ({ |
| | | hollow:'*', |
| | | notChangeProduct:false,//天津trueï¼å
¶ä»falseï¼æ¯å¦å¼å¯éæ¬äººå建ç产åä¸è½ä¿®æ¹ |
| | | timeOut:false,//éåtrueï¼å
¶ä»falseï¼æ¯å¦å¼å¯è¶
æ¶æ¹åå¤éæ¡ç¶æ |
| | | connectMes:false,//常å·,ä¹ä¹trueï¼å
¶ä»falseï¼æ¾ç¤ºè®¢åæ¥å·¥è½¬ç§»æ¯å¦å¯ç¨ |
| | |
| | | address:'æ°çäºå®¶æ¸ å·¥ä¸åå
µå¢æ°å建æå·¥ä¸ååºå·¥ä¸è·¯11å·é1å·', |
| | | telephone:'13419168999', |
| | | fax:'', |
| | | errorArea:0.4, |
| | | errorArea:0.4,//ç»ç®é¢ç§¯è¯¯å·® |
| | | widHeiLength:{//订å宽é«é¿åº¦ |
| | | regexp:/^(0|[1-9][0-9]{0,4}([.][0-9]{1,2})?)$/,//æ£å0.00-99999.99 |
| | | //regexp:/^(0|[1-9][0-9]{0,3}([.][0-9]{1,2})?)$/,//æ£å0.00-9999.99 |
| | |
| | | orderIdType:'year',//å端çæè®¢åå·ç±»åï¼day:æ¯å¤©çæï¼month:æ¯æçæ,year:æå¹´çæ |
| | | deliveryIdType:'day',//å端çæåè´§åå·ç±»åï¼day:æ¯å¤©çæï¼month:æ¯æçæ |
| | | deliveryDate:15,//订åå建éè´§æ¥æ 天津7天ï¼å¸¸å·7天ï¼ä¹ä¹15å¤©ï¼æ°ç15天 |
| | | columnName:'å¾å·', |
| | | columnName:'å¾å·',//æå°çäº§åæ¶éè¦æ¾ç¤ºçååï¼æ²¡æä¸ºç©º |
| | | selectOrderReviewShow:true, //订åé¦é¡µå å·¥åå®¡æ ¸æé®æ¯å¦æ¾ç¤º |
| | | productName:"product_name",//产åå建æ¶éå¤éªè¯ï¼âproduct_abbreviationâ |
| | | decValue:2,//订åä¿ç使°ï¼å¤©æ´¥3ä½,常å·2ä½ |
| | | label:1,//æ ç¾ç±»å 1æ¯å¤©æ´¥ 2æ¯å¸¸å· |
| | | label:1,//æ ç¾ç±»å,常å·ä¸º2ï¼å
¶ä»ä¸º1 |
| | | calculateType:2,//订åè®¡ç®æ¹å¼ |
| | | reportType:1,//æ¥å·¥æ¯å¦æ¥è¯¢æ ·å订å2æ¥è¯¢ï¼1䏿¥è¯¢ |
| | | qualityInsStatus:1,//跨工åºè´¨æ£å®¡æ ¸ï¼1.ä¸éè¦ï¼2.éè¦ |
| | | remarkSwitch:2,//æµç¨å¡ä¸æ¯å¦æ¾ç¤ºå
¶å®å¤æ³¨ï¼1æ¾ç¤ºï¼2䏿¾ç¤º |
| | | icon:"奥é£ä¹
é",//åæ åæ° |
| | | icon:"奥é£ä¹
é",//åæ åæ°ï¼æ²¡æä¸ºç©º |
| | | printShowTitle:true,//æµç¨å¡èªå®ä¹æå°æ¯å¦æ¾ç¤ºæ ç¾ |
| | | longSide:null,//订åå建æé¿è¾¹æç¤ºé¢è² |
| | | showDeliveryCreator:true,//åè´§åå建人å
æ¾ç¤ºæè
åæ¾ç¤º falseåæ¾ç¤º |
| | | deliveryRemark: ['夿³¨:æ¬æ¹ç»ç为ä¼çåæ ¼åï¼è¯·å¨å¸è´§æ¶,å½é¢æ¶ç¹éªæ¶ãå¦æè´¨éé®é¢å¨ä¸å¨å
䏿¬å
¬å¸èç³»,å¦åæ¦ä¸è´è´£ï¼'], |
| | | deliveryOutbound: false,//åè´§é»è®¤åºåº |
| | | flowCardMerge: 0,//æµç¨å¡åçæå° |
| | | deliveryRemark: ['夿³¨:æ¬æ¹ç»ç为ä¼çåæ ¼åï¼è¯·å¨å¸è´§æ¶,å½é¢æ¶ç¹éªæ¶ãå¦æè´¨éé®é¢å¨ä¸å¨å
䏿¬å
¬å¸èç³»,å¦åæ¦ä¸è´è´£ï¼'],//æå°åè´§åç夿³¨ |
| | | deliveryOutbound: false,//åè´§é»è®¤åºåº,é»è®¤åºåºä¸ºtrue |
| | | flowCardMerge: 0,//æµç¨å¡åçæå°ï¼1åå¹¶ï¼å
¶ä»ä¸åå¹¶ |
| | | printBtn:1,//æå°çé¢ä¸ä¸ªæé®ä¸æ¯å¦æ¾ç¤ºæ ç¾æå°ç¸å
³æé®ï¼0æ¾ç¤ºå¸¸å·ï¼1天津å
¶å®ä¸æ¾ç¤º |
| | | |
| | | printNumber:true,//å¤é订åæå°æµç¨å¡æ¯å¦æ¾ç¤ºå³ä¸è§åºå·ä¹ä¹false,å
¶å®true |
| | | materialOutboundColor:false,//åºåæ¥è¯¢å
¥åºè¶
è¿ä¸å®æ¶é´æ¹åé¢è²ï¼æ´é³trueï¼å
¶ä»false |
| | | storageBtn:false,//æ¯å¦æ¾ç¤ºæ¥å·¥å
¥åºç¸å
³å
å®¹ï¼æ´é³trueï¼å
¶ä»false |
| | | teamsType:false,//æ¯å¦å¼å¯çç»ä¸ææ¡ï¼æ´é³trueï¼å
¶ä»false |
| | | alienFunction:false,//æ¯å¦å¼å¯å¼å½¢åè½ï¼ææ¶é½æ¯false |
| | | //天津 |
| | | printLabel: { |
| | | custom: (item1) => { |
| New file |
| | |
| | | import {defineStore} from "pinia"; |
| | | |
| | | export default defineStore('companyInfo', { |
| | | |
| | | state: () => ({ |
| | | hollow:'+', |
| | | notChangeProduct:false,//天津trueï¼å
¶ä»falseï¼æ¯å¦å¼å¯éæ¬äººå建ç产åä¸è½ä¿®æ¹ |
| | | timeOut:false,//éåtrueï¼å
¶ä»falseï¼æ¯å¦å¼å¯åè´§è¶
æ¶æ¹åå¤éæ¡ç¶æé¢è² |
| | | connectMes:false,//常å·,ä¹ä¹trueï¼å
¶ä»falseï¼æ¾ç¤ºè®¢åæ¥å·¥è½¬ç§»æ¯å¦å¯ç¨ |
| | | companyName: 'æ´é³åæ¹ç»çææ¯è¡ä»½æéå
¬å¸', |
| | | address:'æ´é³å½å®¶é«æ°ææ¯å¼ååº', |
| | | telephone:'0379-64312861', |
| | | fax:'0379-64332066', |
| | | errorArea:0.5, |
| | | widHeiLength:{//订å宽é«é¿åº¦ |
| | | regexp:/^(0|[1-9][0-9]{0,4}([.][0-9]{1,2})?)$/,//æ£å0.00-99999.99 |
| | | //regexp:/^(0|[1-9][0-9]{0,3}([.][0-9]{1,2})?)$/,//æ£å0.00-9999.99 |
| | | msg:'basicData.msg.range99999Dec2' |
| | | }, |
| | | orderIdType:'day',//å端çæè®¢åå·ç±»åï¼day:æ¯å¤©çæï¼month:æ¯æçæ,year:æ¯å¹´çæ |
| | | deliveryIdType:'day', |
| | | deliveryDate:15,//订åå建éè´§æ¥æ 天津7天ï¼å¸¸å·7天ï¼ä¹ä¹15å¤©ï¼æ°ç15天 |
| | | columnName:'å¾å·', |
| | | selectOrderReviewShow:true, //订åé¦é¡µå å·¥åå®¡æ ¸æé®æ¯å¦æ¾ç¤º |
| | | productName:"product_name", |
| | | decValue:3,//订åä¿ç使°ï¼å¤©æ´¥3ä½,常å·2ä½ |
| | | label:1,//æ ç¾ç±»åï¼èªå®ä¹æå°æ ç¾å¸¸å·2ï¼å
¶ä»1ï¼ |
| | | calculateType:1,//订åè®¡ç®æ¹å¼ |
| | | reportType:2,//æ¥å·¥æ¯å¦æ¥è¯¢æ ·å订å2æ¥è¯¢ï¼1䏿¥è¯¢ |
| | | qualityInsStatus:2,//跨工åºè´¨æ£å®¡æ ¸ï¼1ä¸éè¦ï¼2éè¦ |
| | | remarkSwitch:2,//æµç¨å¡ä¸æ¯å¦æ¾ç¤ºå
¶å®å¤æ³¨ï¼1æ¾ç¤ºï¼2䏿¾ç¤º |
| | | icon:"",//åæ åæ° |
| | | printShowTitle:false,//æµç¨å¡èªå®ä¹æå°æ¯å¦æ¾ç¤ºæ ç¾ |
| | | longSide:null,//订åå建æé¿è¾¹æç¤ºé¢è² nullä¸æç¤ºé¢è² |
| | | showDeliveryCreator:true,//åè´§åå建人å
æ¾ç¤ºæè
åæ¾ç¤º falseåæ¾ç¤º |
| | | deliveryRemark: ['温馨æç¤ºï¼æå¸è´è´£åªéä¸å¸ãè´§å°å·¥å°æå·¥ååï¼è¯·äºäºå¤©å
å®è£
宿¯ï¼å¦æªè½åæ¶å®è£
宿¯ï¼è¯·æ¾ç½®äºé´åå¹²ç¥å¤ï¼å¹¶å好鲿鲿·çæªæ½ï¼é²æ¢ç»çåéï¼ææåçéèç»ç请å¿ç¨å¸¦é
¸æ§æç¢±æ§çæ¶²ä½æ¸
æ´èé¢ã', |
| | | '声æï¼è´§å°å·¥å°æå·¥ååï¼å¦è¥è´µå¸ä¸åæ¶çå®è£
ææªå鲿鲿·æªæ½å¯¼è´çç»çåéï¼æå¸æ¦ä¸è´è´£ã', |
| | | 'æ¶è´§æ¶ééªæ¶äº§åæ°éãè§æ ¼åææ ç ´æï¼å¦åç°é®é¢éäºæ¶è´§ä¸æ¥å
ï¼ä»¥ä¹¦é¢éç¥å¹¶éä¸ç°åºè¯æææï¼å¦ç ´æç
§ççï¼ï¼ç¸å
³è¯æèµæä¸è¶³ï¼æå¨ä¸è¿°æ¥æå
æªæåºè´¨éå¼è®®çï¼é¾æè§ä¸ºäº§ååæ ¼ï¼æå¸å°ä¸äºæ¿æ
ä»»ä½è´£ä»»ãæ¬è¯·çæï¼'], |
| | | deliveryOutbound: false,//åè´§é»è®¤åºåº |
| | | flowCardMerge: 0,//æµç¨å¡åçæå° |
| | | printBtn:1,//æå°çé¢ä¸ä¸ªæé®ä¸æ¯å¦æ¾ç¤ºæ ç¾æå°ç¸å
³æé®ï¼0æ¾ç¤ºå¸¸å·ï¼1天津å
¶å®ä¸æ¾ç¤º |
| | | materialOutboundColor:true,//åºåæ¥è¯¢å
¥åºè¶
è¿ä¸å®æ¶é´æ¹åé¢è²ï¼æ´é³trueï¼å
¶ä»false |
| | | storageBtn:true,//æ¯å¦æ¾ç¤ºæ¥å·¥å
¥åºç¸å
³å
å®¹ï¼æ´é³trueï¼å
¶ä»false |
| | | teamsType:true,//æ¯å¦å¼å¯çç»ä¸ææ¡ï¼æ´é³trueï¼å
¶ä»false |
| | | alienFunction:false,//æ¯å¦å¼å¯å¼å½¢åè½ï¼ææ¶é½æ¯false |
| | | //天津 |
| | | printLabel: { |
| | | custom: (item1) => { |
| | | return `<div class="row3" style="text-align: center;font-weight: bolder;"> |
| | | <label style="font-size: 22px;margin-top: 28px;">W:${item1.width}</label> |
| | | |
| | | |
| | | |
| | | |
| | | <label style="font-size: 22px;margin-top: 28px;">H:${item1.height}</label> |
| | | </div>` |
| | | }, |
| | | customSemi: (item1) => { |
| | | return `<div class="row3" style="text-align: center;font-weight: bolder;"> |
| | | <label style="font-weight: bolder;font-size: 10px;margin-top: 8px;">W:${item1.width}</label> |
| | | |
| | | <label style="font-weight: bolder;font-size: 10px;margin-top: 8px;">H:${item1.height}</label> |
| | | </div>` |
| | | }, |
| | | labelType: 'ååæ ç¾', |
| | | labelValue:2, |
| | | labelType3: 'æåæ ç¾3', |
| | | labelValue3:3, |
| | | className:{ |
| | | custom:{ |
| | | printFlowCardName: () => { |
| | | return `printFlowCard_finished` |
| | | }, |
| | | entiretyName: () => { |
| | | return `entirety_finished` |
| | | }, |
| | | contentRowName: () => { |
| | | return `contentRow` |
| | | } |
| | | }, |
| | | semi:{ |
| | | printFlowCardName: () => { |
| | | return `printFlowCard_semi` |
| | | }, |
| | | entiretyName: () => { |
| | | return `entirety_semi` |
| | | }, |
| | | contentRowName: () => { |
| | | return `contentRow` |
| | | } |
| | | }, |
| | | |
| | | |
| | | }, |
| | | printFlowCard: {//æµç¨å¡æå°æ ·å¼ |
| | | patch:'æ£å', |
| | | lackOf:'次å', |
| | | processingNote: (itemtextarea) => { |
| | | return `` |
| | | }, |
| | | }, |
| | | hideButton:'true',//æµç¨å¡æå°ç颿鮿¯å¦æ¾ç¤º |
| | | getSelectFlowCard:2,//æµç¨å¡æå°æ¥è¯¢æ¯å¦åå¹¶ 1åå¹¶2ä¸åå¹¶ |
| | | columnsLabel:2,//ä¸è¡ä¸¤åæåæ ç¾ 1æ°çä¸è¡ä¸¤åæåæ ç¾ï¼2å
¶å® |
| | | }, |
| | | |
| | | //å¸¸å· |
| | | printLabel1: { |
| | | custom: (item1) => { |
| | | return `<div class="row3" style="text-align: center;font-weight: bolder;"> |
| | | <label style="font-weight: bolder;font-size:12px;">${item1.width}*${item1.height}=${item1.quantity}</label> |
| | | </div>` |
| | | |
| | | }, |
| | | customSemi: (item1) => { |
| | | return `<div class="row3" style="text-align: center;font-weight: bolder;"> |
| | | <label style="font-weight: bolder;font-size:10px;">${item1.width}*${item1.height}=${item1.quantity}</label> |
| | | </div>` |
| | | }, |
| | | labelType: 'æåæ ç¾2', |
| | | labelValue:3, |
| | | |
| | | printFlowCard: { |
| | | patch:'æ£å', |
| | | lackOf:'次å', |
| | | processingNote: (itemtextarea) => { |
| | | return `${itemtextarea.processing_note}` |
| | | }, |
| | | }, |
| | | hideButton:'false', |
| | | }, |
| | | |
| | | |
| | | }), |
| | | actions: { |
| | | // |
| | | } |
| | | }) |
| | |
| | | export default defineStore('companyInfo', { |
| | | |
| | | state: () => ({ |
| | | hollow:'*', |
| | | notChangeProduct:false,//天津trueï¼å
¶ä»falseï¼æ¯å¦å¼å¯éæ¬äººå建ç产åä¸è½ä¿®æ¹ |
| | | timeOut:true,//éåtrueï¼å
¶ä»falseï¼æ¯å¦å¼å¯åè´§è¶
æ¶æ¹åå¤éæ¡ç¶æé¢è² |
| | | connectMes:true,//常å·,ä¹ä¹trueï¼å
¶ä»falseï¼æ¾ç¤ºè®¢åæ¥å·¥è½¬ç§»æ¯å¦å¯ç¨ |
| | |
| | | address:'æµæ±çéåå¸éä¸åºæ¹å®
éå·¥ä¸åè½åºé¹¤å²©è¡28å·2å·', |
| | | telephone:'153 8178 1915 ç¦å天æ', |
| | | fax:'', |
| | | errorArea:0.3, |
| | | errorArea:0.3,//ç»ç®é¢ç§¯è¯¯å·® |
| | | widHeiLength:{//订å宽é«é¿åº¦ |
| | | regexp:/^(0|[1-9][0-9]{0,4}([.][0-9]{1,2})?)$/,//æ£å0.00-99999.99 |
| | | //regexp:/^(0|[1-9][0-9]{0,3}([.][0-9]{1,2})?)$/,//æ£å0.00-9999.99 |
| | | msg:'basicData.msg.range99999Dec2' |
| | | }, |
| | | orderIdType:'year',//å端çæè®¢åå·ç±»åï¼day:æ¯å¤©çæï¼month:æ¯æçæ,year:æ¯å¹´çæ |
| | | deliveryIdType:'day', |
| | | deliveryIdType:'day',//å端çæåè´§åå·ç±»åï¼day:æ¯å¤©çæï¼month:æ¯æçæ |
| | | deliveryDate:15,//订åå建éè´§æ¥æ 天津7天ï¼å¸¸å·7天ï¼ä¹ä¹15å¤©ï¼æ°ç15天 |
| | | columnName:'å¾å·', |
| | | columnName:'å¾å·',//æå°çäº§åæ¶éè¦æ¾ç¤ºçååï¼æ²¡æä¸ºç©º |
| | | selectOrderReviewShow:true, //订åé¦é¡µå å·¥åå®¡æ ¸æé®æ¯å¦æ¾ç¤º |
| | | productName:"product_name", |
| | | decValue:2,//订åä¿ç使°ï¼å¤©æ´¥3ä½,常å·2ä½ |
| | | label:1,//æ ç¾ç±»åï¼èªå®ä¹æå°æ ç¾å¸¸å·2ï¼å
¶ä»1ï¼ |
| | | label:1,//æ ç¾ç±»å,常å·ä¸º2ï¼å
¶ä»ä¸º1 |
| | | calculateType:1,//订åè®¡ç®æ¹å¼ |
| | | reportType:2,//æ¥å·¥æ¯å¦æ¥è¯¢æ ·å订å2æ¥è¯¢ï¼1䏿¥è¯¢ |
| | | qualityInsStatus:2,//跨工åºè´¨æ£å®¡æ ¸ï¼1ä¸éè¦ï¼2éè¦ |
| | | remarkSwitch:2,//æµç¨å¡ä¸æ¯å¦æ¾ç¤ºå
¶å®å¤æ³¨ï¼1æ¾ç¤ºï¼2䏿¾ç¤º |
| | | icon:"",//åæ åæ° |
| | | icon:"",//åæ åæ°ï¼æ²¡æä¸ºç©º |
| | | printShowTitle:false,//æµç¨å¡èªå®ä¹æå°æ¯å¦æ¾ç¤ºæ ç¾ |
| | | longSide:null,//订åå建æé¿è¾¹æç¤ºé¢è² nullä¸æç¤ºé¢è² |
| | | showDeliveryCreator:false,//åè´§åå建人å
æ¾ç¤ºæè
åæ¾ç¤º falseåæ¾ç¤º |
| | | deliveryRemark: ['温馨æç¤ºï¼æå¸è´è´£åªéä¸å¸ãè´§å°å·¥å°æå·¥ååï¼è¯·äºäºå¤©å
å®è£
宿¯ï¼å¦æªè½åæ¶å®è£
宿¯ï¼è¯·æ¾ç½®äºé´åå¹²ç¥å¤ï¼å¹¶å好鲿鲿·çæªæ½ï¼é²æ¢ç»çåéï¼ææåçéèç»ç请å¿ç¨å¸¦é
¸æ§æç¢±æ§çæ¶²ä½æ¸
æ´èé¢ã', |
| | | '声æï¼è´§å°å·¥å°æå·¥ååï¼å¦è¥è´µå¸ä¸åæ¶çå®è£
ææªå鲿鲿·æªæ½å¯¼è´çç»çåéï¼æå¸æ¦ä¸è´è´£ã', |
| | | 'æ¶è´§æ¶ééªæ¶äº§åæ°éãè§æ ¼åææ ç ´æï¼å¦åç°é®é¢éäºæ¶è´§ä¸æ¥å
ï¼ä»¥ä¹¦é¢éç¥å¹¶éä¸ç°åºè¯æææï¼å¦ç ´æç
§ççï¼ï¼ç¸å
³è¯æèµæä¸è¶³ï¼æå¨ä¸è¿°æ¥æå
æªæåºè´¨éå¼è®®çï¼é¾æè§ä¸ºäº§ååæ ¼ï¼æå¸å°ä¸äºæ¿æ
ä»»ä½è´£ä»»ãæ¬è¯·çæï¼'], |
| | | deliveryOutbound: false,//åè´§é»è®¤åºåº |
| | | flowCardMerge: 0,//æµç¨å¡åçæå° |
| | | 'æ¶è´§æ¶ééªæ¶äº§åæ°éãè§æ ¼åææ ç ´æï¼å¦åç°é®é¢éäºæ¶è´§ä¸æ¥å
ï¼ä»¥ä¹¦é¢éç¥å¹¶éä¸ç°åºè¯æææï¼å¦ç ´æç
§ççï¼ï¼ç¸å
³è¯æèµæä¸è¶³ï¼æå¨ä¸è¿°æ¥æå
æªæåºè´¨éå¼è®®çï¼é¾æè§ä¸ºäº§ååæ ¼ï¼æå¸å°ä¸äºæ¿æ
ä»»ä½è´£ä»»ãæ¬è¯·çæï¼'],//æå°åè´§åç夿³¨ |
| | | deliveryOutbound: false,//åè´§é»è®¤åºåº,é»è®¤åºåºä¸ºtrue |
| | | flowCardMerge: 0,//æµç¨å¡åçæå°ï¼1åå¹¶ï¼å
¶ä»ä¸åå¹¶ |
| | | printBtn:1,//æå°çé¢ä¸ä¸ªæé®ä¸æ¯å¦æ¾ç¤ºæ ç¾æå°ç¸å
³æé®ï¼0æ¾ç¤ºå¸¸å·ï¼1天津å
¶å®ä¸æ¾ç¤º |
| | | printNumber:true,//å¤é订åæå°æµç¨å¡æ¯å¦æ¾ç¤ºå³ä¸è§åºå·ä¹ä¹false,å
¶å®true |
| | | materialOutboundColor:false,//åºåæ¥è¯¢å
¥åºè¶
è¿ä¸å®æ¶é´æ¹åé¢è²ï¼æ´é³trueï¼å
¶ä»false |
| | | storageBtn:false,//æ¯å¦æ¾ç¤ºæ¥å·¥å
¥åºç¸å
³å
å®¹ï¼æ´é³trueï¼å
¶ä»false |
| | | teamsType:false,//æ¯å¦å¼å¯çç»ä¸ææ¡ï¼æ´é³trueï¼å
¶ä»false |
| | | alienFunction:false,//æ¯å¦å¼å¯å¼å½¢åè½ï¼ææ¶é½æ¯false |
| | | //天津 |
| | | printLabel: { |
| | | custom: (item1) => { |
| | |
| | | const decimal2 = new Decimal(num2===null?0:num2); |
| | | return decimal1.plus(decimal2).toString(); |
| | | } |
| | | function addAuto(num1, num2,scale) { |
| | | const decimal1 = new Decimal(num1===null?0:num1); |
| | | const decimal2 = new Decimal(num2===null?0:num2); |
| | | return decimal1.plus(decimal2).toFixed(2) |
| | | } |
| | | |
| | | // å°è£
忳彿° |
| | | function subtract(num1, num2) { |
| | |
| | | multiply, |
| | | divide, |
| | | multiplyAuto, |
| | | divideAuto |
| | | divideAuto, |
| | | addAuto |
| | | |
| | | } |
| | |
| | | const userStore=useUserInfoStore() |
| | | const request = axios.create({ |
| | | baseURL: `http://${config.serverUrl}`, // 注æï¼ï¼ è¿éæ¯å
¨å±ç»ä¸å ä¸äº å端æ¥å£åç¼ åç¼ï¼å端å¿
é¡»è¿è¡è·¨åé
ç½®ï¼ |
| | | timeout: 30000 |
| | | timeout: 60000 |
| | | }) |
| | | |
| | | // |
| New file |
| | |
| | | import axios from 'axios' |
| | | import config from '../../config' |
| | | import useUserInfoStore from '@/stores/userInfo' |
| | | const userStore=useUserInfoStore() |
| | | const request = axios.create({ |
| | | baseURL: `http://${config.serverUrlTemp}`, // 注æï¼ï¼ è¿éæ¯å
¨å±ç»ä¸å ä¸äº å端æ¥å£åç¼ åç¼ï¼å端å¿
é¡»è¿è¡è·¨åé
ç½®ï¼ |
| | | timeout: 60000 |
| | | }) |
| | | |
| | | |
| | | |
| | | // |
| | | |
| | | // request æ¦æªå¨ |
| | | // å¯ä»¥èªè¯·æ±åéå对请æ±åä¸äºå¤ç |
| | | // æ¯å¦ç»ä¸å tokenï¼å¯¹è¯·æ±åæ°ç»ä¸å å¯ |
| | | request.interceptors.request.use(config => { |
| | | config.headers['Content-Type'] = 'application/json;charset=utf-8'; |
| | | if(userStore.user){ |
| | | config.headers['satoken'] = userStore.user.token; |
| | | } |
| | | // 设置请æ±å¤´ |
| | | return config |
| | | }, error => { |
| | | return Promise.reject(error) |
| | | }); |
| | | |
| | | // response æ¦æªå¨ |
| | | // å¯ä»¥å¨æ¥å£ååºåç»ä¸å¤çç»æ |
| | | request.interceptors.response.use( |
| | | response => { |
| | | let res = response.data |
| | | //ä¼ éæ¥éä¿¡æ¯ï¼ææ¥éä¿¡æ¯ä¼ éå°piniaä¸ |
| | | userStore.setResponseCode(parseInt(res.code),res.msg) |
| | | if((res.code != 200 && res.code != '200')){ |
| | | if(response.config.responseType !== 'blob'){ |
| | | return Promise.reject(res.code) |
| | | } |
| | | } |
| | | |
| | | // 妿æ¯è¿åçæä»¶ |
| | | if (response.config.responseType === 'blob') { |
| | | return res |
| | | } |
| | | // å
¼å®¹æå¡ç«¯è¿åçåç¬¦ä¸²æ°æ® |
| | | if (typeof res === 'string') { |
| | | res = res ? JSON.parse(res) : res |
| | | } |
| | | return res; |
| | | }, |
| | | error => { |
| | | console.log('err' + error) // for debug |
| | | return Promise.reject(error) |
| | | } |
| | | ) |
| | | |
| | | |
| | | export default request |
| | | |
| | |
| | | <div id="div-title"> |
| | | <el-breadcrumb :separator-icon="ArrowRight"> |
| | | <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/warehouseBasicData/warehouseSearchBasicData' }">{{$t('warehouseBasicData.BasicData')}}</el-breadcrumb-item> |
| | | <!-- <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/warehouseBasicData/canvas' }">canvas</el-breadcrumb-item>--> |
| | | <el-breadcrumb-item v-show="false" /> |
| | | </el-breadcrumb> |
| | | </div> |
| New file |
| | |
| | | |
| | | |
| | | |
| | | |
| | | <script setup> |
| | | import { Leafer, Polygon,Ellipse,Line,Path } from 'leafer-ui' |
| | | import {nextTick, onMounted, onUnmounted, onUpdated, reactive, ref, watch} from "vue" |
| | | import { saveAs } from 'file-saver'; |
| | | import DXFWriter from 'dxf-writer'; |
| | | import DxfParser from 'dxf-parser'; |
| | | import {round} from "xe-utils"; |
| | | import request from "@/utils/request"; |
| | | import {ElMessage} from "element-plus"; |
| | | |
| | | let XMargin=ref(30) |
| | | let YMargin=ref(30) |
| | | let points=ref([]) |
| | | let data1=ref(0) |
| | | let data2=ref(0) |
| | | let data3=ref(0) |
| | | let data4=ref(0) |
| | | let data5=ref(0) |
| | | let data6=ref(0) |
| | | let data7=ref(0) |
| | | let data8=ref(0) |
| | | |
| | | let datas1=ref(0) |
| | | let datas2=ref(0) |
| | | let datas3=ref(0) |
| | | let datas4=ref(0) |
| | | let datas5=ref(0) |
| | | let datas6=ref(0) |
| | | let datas7=ref(0) |
| | | let datas8=ref(0) |
| | | let big=0 |
| | | let leafer; |
| | | |
| | | onMounted(() => { |
| | | const main =document.getElementById('mains') |
| | | const width =document.getElementById('width') |
| | | const height =document.getElementById('height') |
| | | const iocn =document.getElementById('iocn') |
| | | width.innerHTML=1500 |
| | | height.innerHTML=600 |
| | | if(1500/400>600/300){ |
| | | big=1500/400 |
| | | }else{ |
| | | big=600/300 |
| | | } |
| | | let widthAgv=1500/big |
| | | let heightAgv=600/big |
| | | main.style.width=widthAgv+"px" |
| | | main.style.height=heightAgv+"px" |
| | | main.style.backgroundColor="white" |
| | | iocn.style.marginLeft=XMargin.value/big+"px" |
| | | iocn.style.marginTop=YMargin.value/big+"px" |
| | | datas2.value=heightAgv |
| | | datas8.value=heightAgv |
| | | datas5.value=widthAgv |
| | | datas7.value=widthAgv |
| | | leafer=new Leafer({ view: 'canvas' }) |
| | | |
| | | points.value=[0, heightAgv, 0, 0, widthAgv, 0, widthAgv,heightAgv] |
| | | const polygon = new Polygon({ |
| | | points: points.value, |
| | | fill: '#32cd79', |
| | | origin: [0, 0], |
| | | scale:0.5 |
| | | }) |
| | | leafer.add(polygon) |
| | | |
| | | }) |
| | | const getproject = () => { |
| | | leafer=new Leafer({ view: 'canvas' }) |
| | | points.value=[datas1.value+(parseInt(data1.value)/big), datas2.value-(parseInt(data2.value)/big), datas3.value+(parseInt(data3.value)/big), datas4.value+(parseInt(data4.value)/big), |
| | | datas5.value-(parseInt(data5.value)/big), datas6.value+(parseInt(data6.value)/big), datas7.value-(parseInt(data7.value)/big), datas8.value-(parseInt(data8.value)/big)] |
| | | const polygon = new Polygon({ |
| | | points: points.value, |
| | | fill: '#32cd79', |
| | | origin: [0, 0] |
| | | }) |
| | | leafer.add(polygon) |
| | | |
| | | } |
| | | |
| | | const exportToDXF = () => { |
| | | const dxf = new DXFWriter(); |
| | | const polygonPoints = points.value.map((coord, index) => ({ |
| | | x: index % 2 === 0 ? coord : undefined, |
| | | y: index % 2 !== 0 ? -coord : undefined |
| | | })).filter(point => point.x !== undefined && point.y !== undefined); |
| | | |
| | | let arr=[] |
| | | for (let i=0;i<points.value.length;i++){ |
| | | let a=[] |
| | | if(i % 2 === 0){ |
| | | a.push(points.value[i]*big) |
| | | a.push((points.value[i+1]*big)) |
| | | a.push(0) |
| | | arr.push(a) |
| | | } |
| | | |
| | | } |
| | | let minX = Infinity, minY = Infinity; |
| | | let maxX = -Infinity, maxY = -Infinity; |
| | | arr.forEach(p => { |
| | | minX = Math.min(Math.abs(p[0]),minX ); |
| | | minY = Math.min(Math.abs(p[1]),minY); |
| | | maxX = Math.max(Math.abs(p[0]),maxX ); |
| | | maxY = Math.max(Math.abs(p[1]),maxY); |
| | | }); |
| | | |
| | | arr.forEach(p => { |
| | | p[1]=maxY-minY-p[1] |
| | | }); |
| | | |
| | | |
| | | dxf.drawPolyline(arr,{ closed: true, layer: '0' }) |
| | | |
| | | const blob = new Blob([dxf.toDxfString()], { type: 'text/plain;charset=utf-8' }); |
| | | saveAs(blob, 'map.dxf'); |
| | | } |
| | | |
| | | |
| | | function toBottomOrigin(y, canvasHeight) { |
| | | return canvasHeight - y; // å°å·¦ä¸è§Yåæ è½¬æ¢ä¸ºå·¦ä¸è§åæ ç³» |
| | | } |
| | | |
| | | function addPolygonAsLines(dxf, points, layer = '0') { |
| | | for (let i = 0; i < points.length; i++) { |
| | | const nextIdx = (i + 1) % points.length; |
| | | dxf.drawPolygon( |
| | | points[i].x, points[i].y, |
| | | points[nextIdx].x, points[nextIdx].y |
| | | ); |
| | | } |
| | | } |
| | | |
| | | const uploadToServer = (data, fileName) => { |
| | | request.post('/order/upload-dxf', { |
| | | fileName: fileName, |
| | | fileData: data |
| | | }, { |
| | | headers: {'Content-Type': 'application/json'} |
| | | }); |
| | | }; |
| | | |
| | | const file = ref(null); |
| | | const triggerFileSelect = () => { |
| | | request.post("/order/selectUploadDxf").then((res) => { |
| | | if (res.code === "200" ) { |
| | | console.log(res.data) |
| | | const b64Data = res.data.data.file_data; |
| | | const byteCharacters = atob(b64Data); |
| | | const parser = new DxfParser(); |
| | | const dxfData = parser.parseSync(byteCharacters) |
| | | console.log(dxfData) |
| | | } |
| | | }) |
| | | }; |
| | | |
| | | |
| | | |
| | | const fileToBase64 = (file) => { |
| | | return new Promise((resolve, reject) => { |
| | | const reader = new FileReader(); |
| | | reader.onload = () => resolve(reader.result); |
| | | reader.onerror = reject; |
| | | reader.readAsDataURL(file); |
| | | }); |
| | | }; |
| | | |
| | | const handleFileUpload = async (event) => { |
| | | const main = document.getElementById('mains') |
| | | const width = document.getElementById('width') |
| | | const height = document.getElementById('height') |
| | | leafer.removeAll() |
| | | leafer = new Leafer({view: 'canvas'}); |
| | | const file = event.target.files[0]; |
| | | try { |
| | | const base64 = await fileToBase64(file); |
| | | const pureBase64 = base64.replace(/^data:.+;base64,/, ""); |
| | | uploadToServer(pureBase64, file.name) |
| | | } catch (error) { |
| | | console.error('转æ¢å¤±è´¥:', error); |
| | | } |
| | | if (file) { |
| | | const reader = new FileReader(); |
| | | reader.onload = async (e) => { |
| | | const text = e.target.result; |
| | | try { |
| | | const parser = new DxfParser(); |
| | | const dxfData = parser.parseSync(text); |
| | | |
| | | let minX = Infinity, minY = Infinity; |
| | | let maxX = -Infinity, maxY = -Infinity; |
| | | dxfData.entities.forEach(entity => { |
| | | if (entity.type === 'LINE' || entity.type === 'LWPOLYLINE') { |
| | | entity.vertices.forEach(vertices => { |
| | | minX = Math.min(Math.abs(vertices.x), minX); |
| | | minY = Math.min(Math.abs(vertices.y), minY); |
| | | maxX = Math.max(Math.abs(vertices.x), maxX); |
| | | maxY = Math.max(Math.abs(vertices.y), maxY); |
| | | }) |
| | | } |
| | | if (entity.type === 'ARC') { |
| | | const center = {x: entity.center.x, y: entity.center.y}; |
| | | const radius = entity.radius; |
| | | const startAngle = entity.startAngle * (180 / Math.PI); |
| | | const endAngle = entity.endAngle * (180 / Math.PI); |
| | | |
| | | const points = []; |
| | | const steps = 32; |
| | | for (let i = 0; i <= steps; i++) { |
| | | const angle = startAngle + (endAngle - startAngle) * (i / steps); |
| | | const x = center.x + radius * Math.cos(angle * Math.PI / 180); |
| | | const y = center.y + radius * Math.sin(angle * Math.PI / 180); |
| | | points.push({x, y}); |
| | | } |
| | | |
| | | |
| | | points.forEach(p => { |
| | | minX = Math.min(minX, p.x); |
| | | minY = Math.min(minY, p.y); |
| | | maxX = Math.max(maxX, p.x); |
| | | maxY = Math.max(maxY, p.y); |
| | | }); |
| | | } |
| | | }); |
| | | if ((maxX - minX) / 400 > (maxY - minY) / 300) { |
| | | big = (maxX - minX) / 400 |
| | | } else { |
| | | big = (maxY - minY) / 300 |
| | | } |
| | | |
| | | Object.values(dxfData.entities).forEach(entity => { |
| | | /*const bounds = drawEntity(entity); |
| | | |
| | | if (bounds) { |
| | | minX = Math.min(minX, bounds.minX); |
| | | minY = Math.min(minY, bounds.minY); |
| | | maxX = Math.max(maxX, bounds.maxX); |
| | | maxY = Math.max(maxY, bounds.maxY); |
| | | }*/ |
| | | switch (entity.type) { |
| | | |
| | | case 'LINE': |
| | | /*main.style.width=(maxX-minX)+"px" |
| | | main.style.height=(maxY-minY)+"px" |
| | | width.innerHTML=round(maxX-minX,2) |
| | | height.innerHTML=round(maxY-minY,2) |
| | | const line = new Line({ |
| | | points: [(Math.abs(entity.vertices[0].x)-minX)/big, toBottomOrigin((Math.abs(entity.vertices[0].y)-minY)/big,(maxY-minY)/big), |
| | | (Math.abs(entity.vertices[1].x)-minX)/big, toBottomOrigin((Math.abs(entity.vertices[1].y)-minY)/big,(maxY-minY)/big)], |
| | | stroke: '#f00', |
| | | strokeWidth: 2 |
| | | })*/ |
| | | main.style.width = (maxX - minX) / big + "px" |
| | | main.style.height = (maxY - minY) / big + "px" |
| | | width.innerHTML = round(maxX - minX, 2) |
| | | height.innerHTML = round(maxY - minY, 2) |
| | | const line = new Line({ |
| | | points: [(Math.abs(entity.vertices[0].x) - minX) / big, ((maxY - minY) - (Math.abs(entity.vertices[0].y) - minY)) / big, |
| | | (Math.abs(entity.vertices[1].x) - minX) / big, ((maxY - minY) - (Math.abs(entity.vertices[1].y) - minY)) / big], |
| | | stroke: '#f00', |
| | | strokeWidth: 1 |
| | | }) |
| | | setTimeout(() => { |
| | | leafer.add(line); |
| | | }, 30); |
| | | break; |
| | | case 'LWPOLYLINE': |
| | | |
| | | main.style.width = (maxX - minX) / big + "px" |
| | | main.style.height = (maxY - minY) / big + "px" |
| | | main.style.backgroundColor = "white" |
| | | width.innerHTML = round(maxX - minX, 2) |
| | | height.innerHTML = round(maxY - minY, 2) |
| | | let point = entity.vertices.map(v => [ |
| | | (Math.abs(v.x) - minX) / big, |
| | | toBottomOrigin((Math.abs(v.y) - minY) / big, (maxY - minY) / big), |
| | | ]).flat() |
| | | const polygon = new Polygon({ |
| | | points: point, |
| | | fill: '#32cd79', |
| | | }) |
| | | setTimeout(() => { |
| | | leafer.add(polygon); |
| | | }, 30); |
| | | |
| | | break; |
| | | case 'CIRCLE': |
| | | big = (entity.radius * 2) / 400 |
| | | main.style.width = entity.radius * 2 / big + "px" |
| | | main.style.height = entity.radius * 2 / big + "px" |
| | | width.innerHTML = round(entity.radius * 2, 2) |
| | | height.innerHTML = round(entity.radius * 2, 2) |
| | | const ellipse = new Ellipse({ |
| | | width: entity.radius * 2 / big, |
| | | height: entity.radius * 2 / big, |
| | | fill: "#32cd79" |
| | | }) |
| | | setTimeout(() => { |
| | | leafer.add(ellipse); |
| | | }, 30); |
| | | |
| | | break; |
| | | case 'ELLIPSE': |
| | | console.log(entity) |
| | | |
| | | const {majorAxisEndPoint, axisRatio} = entity; |
| | | |
| | | const dx = majorAxisEndPoint.x; |
| | | const dy = majorAxisEndPoint.y; |
| | | const a = Math.sqrt(dx ** 2 + dy ** 2); |
| | | const c = a * axisRatio; |
| | | const θ = Math.atan2(dy, dx); |
| | | const l = axisRatio * (180 / Math.PI); |
| | | |
| | | if ((a * 2) / 400 > (c * 2) / 300) { |
| | | big = (a * 2) / 400 |
| | | } else { |
| | | big = (c * 2) / 300 |
| | | } |
| | | |
| | | main.style.width = a * 2 / big + "px" |
| | | main.style.height = c * 2 / big + "px" |
| | | width.innerHTML = round(a * 2, 2) |
| | | height.innerHTML = round(c * 2, 2) |
| | | const ellipse2 = new Ellipse({ |
| | | width: a * 2 / big, |
| | | height: c * 2 / big, |
| | | fill: "#32cd79", |
| | | }) |
| | | |
| | | setTimeout(() => { |
| | | leafer.add(ellipse2); |
| | | }, 30); |
| | | |
| | | break; |
| | | case 'ARC': |
| | | const center = {x: entity.center.x, y: entity.center.y}; |
| | | const radius = entity.radius; |
| | | const startAngle = entity.startAngle * (180 / Math.PI); |
| | | const endAngle = entity.endAngle * (180 / Math.PI); |
| | | |
| | | if ((maxX - minX) / 400 > (maxY - minY) / 300) { |
| | | big = (maxX - minX) / 400 |
| | | } else { |
| | | big = (maxY - minY) / 300 |
| | | } |
| | | |
| | | |
| | | // 计ç®åå¼§çèµ·ç¹åç»ç¹ |
| | | const startX = (center.x + radius * Math.cos(entity.startAngle) - minX); |
| | | const startY = (maxY - minY) - ((center.y + radius * Math.sin(entity.startAngle)) - minY); |
| | | const endX = (center.x + radius * Math.cos(entity.endAngle) - minX); |
| | | const endY = (maxY - minY) - ((center.y + radius * Math.sin(entity.endAngle)) - minY); |
| | | |
| | | // å建åå¼§è·¯å¾ |
| | | const path = new Path({ |
| | | path: `M ${startX / big} ${startY / big} A ${radius / big} ${radius / big} 0 ${endAngle - startAngle > 180 ? 1 : 0} 0 ${endX / big} ${endY / big}`, |
| | | stroke: '#f00', |
| | | strokeWidth: 1, |
| | | }); |
| | | |
| | | |
| | | setTimeout(() => { |
| | | leafer.add(path); |
| | | }, 30); |
| | | |
| | | |
| | | break; |
| | | |
| | | } |
| | | }) |
| | | // èªå¨ç¼©æ¾è§å¾ |
| | | /*if (minX !== Infinity) { |
| | | const width = maxX - minX; |
| | | const height = maxY - minY; |
| | | const centerX = (minX + maxX) / 2; |
| | | const centerY = (minY + maxY) / 2; |
| | | |
| | | main.style.width=width/big+"px" |
| | | main.style.height=height/big+"px" |
| | | |
| | | }*/ |
| | | |
| | | } catch (error) { |
| | | console.error('è§£æDXFæä»¶æ¶åºé:', error); |
| | | } |
| | | }; |
| | | reader.readAsText(file); |
| | | } |
| | | }; |
| | | |
| | | function drawEntity(entity) { |
| | | switch (entity.type) { |
| | | case 'LWPOLYLINE': |
| | | return drawPolyline(entity); |
| | | case 'POLYLINE': |
| | | return drawPolyline(entity); |
| | | case 'LINE': |
| | | return drawLine(entity); |
| | | case 'CIRCLE': |
| | | return drawCircle(entity); |
| | | case 'ARC': |
| | | return drawArc(entity); |
| | | case 'SPLINE': |
| | | return drawSpline(entity); |
| | | default: |
| | | console.warn('Unsupported entity type:', entity.type); |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | let minX = Infinity, minY = Infinity; |
| | | let maxX = -Infinity, maxY = -Infinity; |
| | | // ç»å¶å¤æ®µçº¿ |
| | | function drawPolyline(polyline) { |
| | | const points = polyline.vertices.map(v => { |
| | | return { x: Math.abs(v.x), y: Math.abs(v.y) }; // 翻转Yåæ |
| | | }); |
| | | |
| | | // å¤çéåå¤è¾¹å½¢ |
| | | if (polyline.flags && polyline.flags.includes('closed') && points.length > 0) { |
| | | points.push({...points[0]}); |
| | | } |
| | | |
| | | // 计ç®è¾¹ç |
| | | |
| | | points.forEach(p => { |
| | | minX = Math.min(p.x,minX); |
| | | minY = Math.min(p.y,minY); |
| | | maxX = Math.max(p.x,maxX); |
| | | maxY = Math.max(p.y,maxY); |
| | | }); |
| | | |
| | | let agvX=maxX-minX |
| | | let agvY=maxY-minY |
| | | |
| | | |
| | | // å建Leaferå¤è¾¹å½¢ |
| | | const polygon = new Polygon({ |
| | | points: points.flatMap(p => [(p.x-minX)/big,(agvY-(p.y-minY))/big]), |
| | | fill: 'rgba(100, 150, 255, 0.3)', |
| | | stroke: '#32cd79', |
| | | strokeWidth: 2, |
| | | cornerRadius: 0, |
| | | draggable: true |
| | | }); |
| | | |
| | | // ä¿ååå§DXFæ°æ® |
| | | polygon.dxfData = { |
| | | type: polyline.type, |
| | | layer: polyline.layer || '0', |
| | | color: polyline.color || 7 |
| | | }; |
| | | setTimeout(() => { |
| | | leafer.add(polygon); |
| | | }, 30); |
| | | |
| | | |
| | | return { minX, minY, maxX, maxY }; |
| | | } |
| | | |
| | | // ç»å¶ç´çº¿ |
| | | function drawLine(line) { |
| | | const points = line.vertices.map(v => { |
| | | return { x: Math.abs(v.x), y: Math.abs(v.y) }; |
| | | }); |
| | | |
| | | points.forEach(p => { |
| | | minX = Math.min(p.x,minX); |
| | | minY = Math.min(p.y,minY); |
| | | maxX = Math.max(p.x,maxX); |
| | | maxY = Math.max(p.y,maxY); |
| | | }); |
| | | |
| | | let agvX=maxX-minX |
| | | let agvY=maxY-minY |
| | | |
| | | const lineObj = new Line({ |
| | | points:[ |
| | | (points[0].x-minX)/big,(agvY-(points[0].y-minY))/big, |
| | | (points[1].x-minX)/big,(agvY-(points[1].y-minY))/big |
| | | ], |
| | | stroke: '#32cd79', |
| | | strokeWidth: 2 |
| | | }); |
| | | |
| | | setTimeout(() => { |
| | | leafer.add(lineObj); |
| | | }, 30); |
| | | |
| | | return { minX, minY, maxX, maxY }; |
| | | } |
| | | |
| | | // ç»å¶å |
| | | function drawCircle(circle) { |
| | | const center = { x: circle.center.x, y: circle.center.y }; |
| | | const radius = circle.radius; |
| | | |
| | | minX = center.x - radius; |
| | | minY = center.y - radius; |
| | | maxX = center.x + radius; |
| | | maxY = center.y + radius; |
| | | |
| | | const circleObj = new Leafer.Ellipse({ |
| | | x: center.x, |
| | | y: center.y, |
| | | radiusX: radius, |
| | | radiusY: radius, |
| | | fill: 'rgba(100, 150, 255, 0.3)', |
| | | stroke: '#32cd79', |
| | | strokeWidth: 2 |
| | | }); |
| | | |
| | | circleObj.dxfData = { |
| | | type: 'CIRCLE', |
| | | layer: circle.layer || '0', |
| | | color: circle.color || 7 |
| | | }; |
| | | |
| | | leafer.add(circleObj); |
| | | |
| | | return { minX, minY, maxX, maxY }; |
| | | } |
| | | |
| | | // ç»å¶åå¼§ |
| | | function drawArc(arc) { |
| | | const center = { x: arc.center.x, y: arc.center.y }; |
| | | const radius = arc.radius; |
| | | const startAngle = arc.startAngle*(180/Math.PI); |
| | | const endAngle = arc.endAngle*(180/Math.PI); |
| | | |
| | | const points = []; |
| | | const steps = 32; |
| | | for (let i = 0; i <= steps; i++) { |
| | | const angle = startAngle + (endAngle - startAngle) * (i / steps); |
| | | const x = center.x + radius * Math.cos(angle * Math.PI / 180); |
| | | const y = center.y + radius * Math.sin(angle * Math.PI / 180); |
| | | points.push({ x, y }); |
| | | } |
| | | |
| | | |
| | | points.forEach(p => { |
| | | minX = Math.min(minX, p.x); |
| | | minY = Math.min(minY, p.y); |
| | | maxX = Math.max(maxX, p.x); |
| | | maxY = Math.max(maxY, p.y); |
| | | }); |
| | | let agvX=maxX-minX |
| | | let agvY=maxY-minY |
| | | |
| | | // 计ç®åå¼§çèµ·ç¹åç»ç¹ |
| | | const startX = (center.x-minX)/big + radius/big * Math.cos(arc.startAngle); |
| | | const startY = (agvY-(center.y-minY))/big + radius/big * Math.sin(arc.startAngle); |
| | | const endX = (center.x-minX)/big + radius/big * Math.cos(arc.endAngle); |
| | | const endY = (agvY-(center.y-minY))/big + radius/big * Math.sin(arc.endAngle); |
| | | |
| | | // å建åå¼§è·¯å¾ |
| | | const path = new Path({ |
| | | path: `M ${endX} ${endY} A ${radius/big} ${radius/big} 0 ${endAngle - startAngle > 180 ? 1 : 0} 0 ${startX} ${startY}`, |
| | | stroke: '#32cd79', |
| | | strokeWidth: 2, |
| | | }); |
| | | |
| | | |
| | | setTimeout(() => { |
| | | leafer.add(path); |
| | | }, 30); |
| | | |
| | | |
| | | return { minX, minY, maxX, maxY }; |
| | | } |
| | | |
| | | // ç»å¶æ ·æ¡æ²çº¿ï¼ç®åå®ç°ï¼ |
| | | function drawSpline(spline) { |
| | | if (!spline.controlPoints || spline.controlPoints.length < 2) { |
| | | console.warn('Invalid SPLINE entity'); |
| | | return null; |
| | | } |
| | | |
| | | const points = spline.controlPoints.map(p => { |
| | | return { x: p.x, y: -p.y }; |
| | | }); |
| | | |
| | | // åå»ºæ ·æ¡æ²çº¿è·¯å¾ï¼ä½¿ç¨ä¸æ¬¡è´å¡å°æ²çº¿è¿ä¼¼ï¼ |
| | | let pathData = `M ${points[0].x} ${points[0].y}`; |
| | | |
| | | if (points.length === 2) { |
| | | pathData += ` L ${points[1].x} ${points[1].y}`; |
| | | } else { |
| | | for (let i = 1; i < points.length; i++) { |
| | | const p0 = points[i-1]; |
| | | const p1 = points[i]; |
| | | const cp1x = p0.x + (p1.x - p0.x) / 3; |
| | | const cp1y = p0.y + (p1.y - p0.y) / 3; |
| | | const cp2x = p1.x - (p1.x - p0.x) / 3; |
| | | const cp2y = p1.y - (p1.y - p0.y) / 3; |
| | | |
| | | pathData += ` C ${cp1x} ${cp1y}, ${cp2x} ${cp2y}, ${p1.x} ${p1.y}`; |
| | | } |
| | | } |
| | | |
| | | const path = new Leafer.Path({ |
| | | path: pathData, |
| | | stroke: '#32cd79', |
| | | strokeWidth: 2, |
| | | fill: 'none' |
| | | }); |
| | | |
| | | path.dxfData = { |
| | | type: 'SPLINE', |
| | | layer: spline.layer || '0', |
| | | color: spline.color || 7 |
| | | }; |
| | | |
| | | leafer.add(path); |
| | | |
| | | // 计ç®è¾¹ç |
| | | points.forEach(p => { |
| | | minX = Math.min(minX, p.x); |
| | | minY = Math.min(minY, p.y); |
| | | maxX = Math.max(maxX, p.x); |
| | | maxY = Math.max(maxY, p.y); |
| | | }); |
| | | |
| | | return { minX, minY, maxX, maxY }; |
| | | } |
| | | |
| | | const handleInputX = (newValue) => { |
| | | const iocn =document.getElementById('iocn') |
| | | if(newValue+20*big<=1500){ |
| | | iocn.style.marginLeft=newValue/big+"px" |
| | | } |
| | | |
| | | }; |
| | | const handleInputY = (newValue) => { |
| | | const iocn =document.getElementById('iocn') |
| | | iocn.style.marginTop=newValue/big+"px" |
| | | }; |
| | | |
| | | |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div style="width: 460px;height: 320px;justify-content: center;display: flex;"> |
| | | <div> |
| | | <div id="width" style="height: 20px;"></div> |
| | | <div id="height" style="width: 60px;margin-left: -40px;"></div> |
| | | <div id="mains" style="margin-top: -20px" > |
| | | <div id="iocn" style="width: 20px;height: 20px;position: absolute;"></div> |
| | | <canvas id="canvas" ></canvas> |
| | | </div> |
| | | </div> |
| | | |
| | | |
| | | </div> |
| | | |
| | | <el-input class="contactNumber" @blur="getproject" type="text" v-model="data1" /> |
| | | <el-input class="contactNumber" @blur="getproject" type="text" v-model="data2" /> |
| | | <el-input class="contactNumber" @blur="getproject" type="text" v-model="data3" /> |
| | | <el-input class="contactNumber" @blur="getproject" type="text" v-model="data4" /><br> |
| | | <el-input class="contactNumber" @blur="getproject" type="text" v-model="data5" /> |
| | | <el-input class="contactNumber" @blur="getproject" type="text" v-model="data6" /> |
| | | <el-input class="contactNumber" @blur="getproject" type="text" v-model="data7" /> |
| | | <el-input class="contactNumber" @blur="getproject" type="text" v-model="data8" /><br> |
| | | <el-button type="primary" @click="exportToDXF">导åºDXF</el-button> |
| | | <div> |
| | | <input type="file" @change="handleFileUpload" accept=".dxf" /> |
| | | </div> |
| | | <el-input-number @input="handleInputX" v-model="XMargin"/> |
| | | <el-input-number @input="handleInputY" v-model="YMargin"/> |
| | | |
| | | <button @click="triggerFileSelect">éæ©æä»¶</button> |
| | | </template> |
| | | |
| | | <style> |
| | | .contactNumber{ |
| | | width: 60px; |
| | | height:20px; |
| | | border: none; |
| | | box-shadow: none; |
| | | font-size: 15px; |
| | | } |
| | | |
| | | #mains { |
| | | position: relative; |
| | | } |
| | | input[type="file"] { |
| | | margin-top: 10px; |
| | | } |
| | | </style> |
| | |
| | | materialRequisitionPersonnel:'', |
| | | materialRequisitionTeam:'', |
| | | orderId:'', |
| | | project:'', |
| | | batch:'', |
| | | materialRequisitionDate:'', |
| | | reviewedState:'', |
| | | reviewed:'', |
| | | warehouseManager:userStore.user.userName |
| | | }) |
| | | |
| | | let userNameCutting = ref([]) |
| | | |
| | | let filterData = ref({ |
| | | |
| | |
| | | if (res.code == 200) { |
| | | |
| | | titleSelectJson.value = deepClone(res.data) |
| | | console.log("a"+titleSelectJson.value) |
| | | const today = new Date |
| | | today.setTime(today.getTime() + (15 * 24 * 60 * 60 * 1000)) |
| | | today.setTime(today.getTime()) |
| | | titleUploadData.value.materialRequisitionDate = today.getFullYear() + |
| | | '-' + ("0" + (today.getMonth() + 1)).slice(-2) |
| | | + '-' + ("0" + today.getDate()).slice(-2) |
| | |
| | | } |
| | | }) |
| | | } |
| | | |
| | | const initUser = async ()=> { |
| | | await request.get(`/BasicWarehouse/BasicWarehouseTypeUser/` + t('machine.cutting')).then((res) => { |
| | | |
| | | if (res.code == 200) { |
| | | userNameCutting.value=res.data.userName |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | //åæ¥è¯¢ |
| | | const getWork = async ()=> { |
| | | await request.get(`/BasicWarehouse/BasicWarehouseType/`+t('ingredients.originalFilm')+'|'+t('ingredients.accessories')).then((res) => { |
| | |
| | | onMounted(async()=>{ |
| | | await initOrder() |
| | | |
| | | await initUser() |
| | | |
| | | |
| | | //å¯ç¨è¡¨æ ¼æå¨éä¸ |
| | | addListener(xGrid.value,gridOptions,cellArea.value) |
| | |
| | | request.post("/materialInventory/getSelectMaterialInventory/1/100",filterData.value).then((res) => { |
| | | |
| | | if(res.code==200){ |
| | | console.log("b"+titleSelectJson.value) |
| | | titleUploadData.value.warehouseManager=userStore.user.userName |
| | | titleUploadData.value.outboundType = titleSelectJson.value.outboundType[0].operateTypeName |
| | | materialStore.value=[] |
| | |
| | | if(titleUploadData.value.reviewedState!==0){ |
| | | gridOptions.toolbarConfig.buttons[1].disabled = true |
| | | gridOptions.toolbarConfig.buttons[0].disabled = true |
| | | gridOptions.toolbarConfig.buttons[3].disabled = true |
| | | |
| | | |
| | | } |
| | |
| | | }) |
| | | break |
| | | } |
| | | case 'addToExamine': { |
| | | const selectRecords = $grid.getCheckboxRecords() |
| | | if (selectRecords.length === 0) { |
| | | ElMessage.warning(t('productStock.unselectedData')) |
| | | return |
| | | } |
| | | const errMap = await $grid.validate(selectRecords) |
| | | if (errMap) { |
| | | ElMessage.warning(t('productStock.dataVerificationFailed')) |
| | | return |
| | | } |
| | | //è¡¨å¤´æ°æ®æ ¡éª |
| | | const outboundType = titleUploadData.value.outboundType |
| | | if(outboundType === null || outboundType === undefined || outboundType === ''){ |
| | | ElMessage.error(t('ingredientsStock.pleaseOutboundType')) |
| | | return |
| | | } |
| | | let flowData = ref({ |
| | | materialOutboundDetail: selectRecords, |
| | | title: titleUploadData.value, |
| | | materialOutboundId: route.query.materialOutboundId, |
| | | userName:userStore.user.userName, |
| | | userId:userStore.user.userId |
| | | |
| | | }) |
| | | request.post("/materialInventory/saveToExamineMaterialOutbound", flowData.value).then((res) => { |
| | | if(res.code==200 && res.data==="true"){ |
| | | ElMessage.success(t('basicData.msg.saveSuccess')) |
| | | router.push({path: '/main/ingredientsStock/MaterialOutbound', query:{random:Math.random()}}) |
| | | }else if(res.data==="false1"){ |
| | | ElMessage.warning(t('basicData.msg.quantityError')) |
| | | }else{ |
| | | ElMessage.warning(t('basicData.msg.saveFail')) |
| | | } |
| | | }).catch((err)=>{ |
| | | ElMessage.error(t('basicData.msg.ServerConnectionError')) |
| | | router.push("/login") |
| | | }) |
| | | break |
| | | } |
| | | |
| | | } |
| | | } |
| | |
| | | buttons: [ |
| | | {'code': 'add', 'name': t('basicData.save'),status: 'primary',icon: 'vxe-icon-save'}, |
| | | {'code': 'toExamine', 'name': t('basicData.review'),status: 'primary'}, |
| | | {'code': 'CounterExamination', 'name': t('basicData.cancelReview'),status: 'primary'} |
| | | {'code': 'CounterExamination', 'name': t('basicData.cancelReview'),status: 'primary'}, |
| | | {'code': 'addToExamine', 'name': t('reportingWorks.saveAndReview'),status: 'primary',icon: 'vxe-icon-save'}, |
| | | ], |
| | | /*import: false, |
| | | export: true, |
| | |
| | | }) |
| | | |
| | | |
| | | const getproject = () => { |
| | | if(titleUploadData.value.orderId!==''){ |
| | | request.post(`/order/getOrderById/` +titleUploadData.value.orderId ).then((res) => { |
| | | if (res.code == 200) { |
| | | if(res.data.order!=null){ |
| | | titleUploadData.value.project=res.data.order.project |
| | | titleUploadData.value.batch=res.data.order.batch |
| | | }else{ |
| | | titleUploadData.value.project='' |
| | | titleUploadData.value.batch='' |
| | | } |
| | | |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | </script> |
| | | |
| | |
| | | <div class="head" style="background-color: white"> |
| | | <el-row> |
| | | <el-col :span="2"><el-text>{{$t('ingredientsStock.materialRequisitionDate')}}:</el-text></el-col> |
| | | <el-col :span="3"><el-input v-model="titleUploadData.materialRequisitionDate" :readonly="true" ></el-input></el-col> |
| | | <el-col :span="3"> |
| | | <el-date-picker |
| | | v-model="titleUploadData.materialRequisitionDate" |
| | | type="date" |
| | | format="YYYY-MM-DD" |
| | | value-format="YYYY-MM-DD" |
| | | :placeholder="$t('delivery.selectDate')"/> |
| | | </el-col> |
| | | <el-col :span="2"><el-text>{{$t('ingredientsStock.materialRequisitionPersonnel')}}:</el-text></el-col> |
| | | <el-col :span="3"><el-input v-model="titleUploadData.materialRequisitionPersonnel" /></el-col> |
| | | <el-col :span="3"> |
| | | <el-select v-model="titleUploadData.materialRequisitionPersonnel" clearable placeholder=" " > |
| | | <el-option v-for="item in userNameCutting" |
| | | :key="item.id" |
| | | :label="item" |
| | | :value="item"/> |
| | | </el-select> |
| | | </el-col> |
| | | <el-col :span="2"><el-text>{{$t('ingredientsStock.materialRequisitionTeam')}}:</el-text></el-col> |
| | | <el-col :span="3"><el-input v-model="titleUploadData.materialRequisitionTeam" /></el-col> |
| | | |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="2"><el-text>{{$t('ingredientsStock.outboundType')}}ï¼</el-text></el-col> |
| | | <el-col :span="3"> |
| | | <el-select v-model="titleUploadData.outboundType" clearable placeholder="" > |
| | |
| | | /> |
| | | </el-select> |
| | | </el-col> |
| | | <el-col :span="2"><el-text>{{$t('order.orderId')}}:</el-text></el-col> |
| | | <el-col :span="3"><el-input v-model="titleUploadData.orderId" /></el-col> |
| | | |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="2"><el-text>{{$t('ingredientsStock.warehouseManager')}}:</el-text></el-col> |
| | | <el-col :span="3"><el-input v-model="titleUploadData.warehouseManager" :readonly="true" /></el-col> |
| | | |
| | | <el-col :span="2"><el-text>{{$t('order.orderId')}}:</el-text></el-col> |
| | | <el-col :span="3"><el-input @blur="getproject" v-model="titleUploadData.orderId" /></el-col> |
| | | <el-col :span="2"><el-text>{{$t('order.project')}}:</el-text></el-col> |
| | | <el-col :span="3"><el-input v-model="titleUploadData.project" /></el-col> |
| | | <el-col :span="2"><el-text>{{$t('order.batch')}}:</el-text></el-col> |
| | | <el-col :span="3"><el-input v-model="titleUploadData.batch" /></el-col> |
| | | </el-row> |
| | | </div> |
| | | |
| | |
| | | {field: 'outboundType', width: '100',title: t('ingredientsStock.outboundType'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'warehouseManager',width: '100', title: t('ingredientsStock.warehouseManager'), sortable: true,showOverflow:"ellipsis",filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'materialRequisitionDate', width: '80',title: t('ingredientsStock.materialRequisitionDate'), sortable: true}, |
| | | {field: 'project',width: '100', title: t('order.project'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'batch',width: '100', title: t('order.batch'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'reviewed',width: '100', title: t('ingredientsStock.reviewed'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'reviewedTime', width: '100',title: t('ingredientsStock.reviewedTime'), sortable: true}, |
| | | {field: 'createTime',width: '100', title: t('basicData.creationTime'), sortable: true}, |
| | |
| | | <script setup> |
| | | |
| | | import {reactive, ref} from "vue"; |
| | | import {onMounted, reactive, ref} from "vue"; |
| | | import {useRouter} from 'vue-router' |
| | | import request from "@/utils/request"; |
| | | import deepClone from "@/utils/deepClone"; |
| | |
| | | import {ElMessage, ElMessageBox} from "element-plus"; |
| | | import {Search} from "@element-plus/icons-vue"; |
| | | import { useI18n } from 'vue-i18n' |
| | | import {toolbarButtonClickEvent} from "@/hook/mouseMove"; |
| | | import {addListener, toolbarButtonClickEvent} from "@/hook/mouseMove"; |
| | | import {changeFilterEvent,filterChanged} from "@/hook" |
| | | import {divideAuto, multiply} from "@/utils/decimal"; |
| | | import companyInfo from "@/stores/sd/companyInfo"; |
| | | import footSum from "@/hook/footSum"; |
| | | |
| | | //è¯è¨è·å |
| | | const { t } = useI18n() |
| | | const userStore = useUserInfoStore() |
| | | const company = companyInfo() |
| | | const router = useRouter() |
| | | let produceList = ref([]) |
| | | let produceLists = ref([]) |
| | |
| | | |
| | | |
| | | |
| | | onMounted(() => { |
| | | addListener(xGrid.value,gridOptions) |
| | | |
| | | |
| | | //ç¬¬ä¸æ¬¡è°ç¨ |
| | | request.get(`/BasicWarehouse/BasicWarehouseType/`+t('ingredients.originalFilm')+'|'+t('ingredients.accessories')).then((res) => { |
| | | if(res.code==200){ |
| | | gridOptions.columns.splice(0,gridOptions.columns.length) |
| | |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | }) |
| | | }) |
| | | |
| | | |
| | | |
| | | |
| | | |
| | |
| | | if (columnIndex === 0) { |
| | | return t('basicData.total') |
| | | } |
| | | // if (props.tableProp.footList.includes(column.field)) { |
| | | // return sumNum(data, column.field) |
| | | // } |
| | | const List = ["inventoryQuantity",'availableQuantity','totalArea'] |
| | | if (List.includes(column.field)) { |
| | | return footSum(data, column.field) |
| | | } |
| | | return '' |
| | | }) |
| | | ] |
| | |
| | | if ($grid) { |
| | | switch (code) { |
| | | case 'out': { |
| | | $grid.clearFilter() |
| | | const selectRecords = $grid.getCheckboxRecords() |
| | | |
| | | |
| | |
| | | } |
| | | |
| | | case 'delete': { |
| | | |
| | | $grid.clearFilter() |
| | | const selectRecords = $grid.getCheckboxRecords() |
| | | if (selectRecords.length === 0) { |
| | | ElMessage.warning(t('productStock.unselectedData')) |
| | |
| | | } |
| | | |
| | | |
| | | const rowStyle = ({ row,rowIndex }) => { |
| | | if(company.materialOutboundColor){ |
| | | let date = new Date(); |
| | | let date1=new Date(); |
| | | let date2=new Date(); |
| | | date1.setMonth(date.getMonth()-3); |
| | | date2.setMonth(date.getMonth()-6); |
| | | |
| | | const date3=new Date(row.createTime); |
| | | |
| | | const diff = date1.getTime() - date2.getTime(); |
| | | const diffInDays = diff / (1000 * 60 * 60 * 24); |
| | | if(date3>=date1){ |
| | | return { |
| | | backgroundColor: '#ffffff', |
| | | } |
| | | }else if(date3>=date2&&date1>date3){ |
| | | return { |
| | | backgroundColor: '#e0e7c8', |
| | | } |
| | | }else{ |
| | | return { |
| | | backgroundColor: '#afa7ab', |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | |
| | | ref="xGrid" |
| | | v-bind="gridOptions" |
| | | v-on="gridEvents" |
| | | :row-style="rowStyle" |
| | | |
| | | > |
| | | <!-- @toolbar-button-click="toolbarButtonClickEvent"--> |
| | |
| | | width: 100%; |
| | | height: calc(100% - 35px); |
| | | } |
| | | .vxe-grid { |
| | | /* ç¦ç¨æµè§å¨é»è®¤éä¸ */ |
| | | -webkit-user-select: none; |
| | | -moz-user-select: none; |
| | | -ms-user-select: none; |
| | | user-select: none; |
| | | } |
| | | </style> |
| | |
| | | import {ElMessage} from "element-plus"; |
| | | import { useI18n } from 'vue-i18n' |
| | | import footSum from "@/hook/footSum"; |
| | | import companyInfo from "@/stores/sd/companyInfo"; |
| | | |
| | | //è¯è¨è·å |
| | | const { t } = useI18n() |
| | | |
| | | const company = companyInfo() |
| | | const userStore = useUserInfoStore() |
| | | const username = userStore.user.userName |
| | | const userid = userStore.user.userId |
| | |
| | | return |
| | | } |
| | | let flowData = ref({ |
| | | decValue:company.decValue, |
| | | userId: userid, |
| | | userName: username, |
| | | storageRegion: storageRegion.value, |
| | |
| | | <template> |
| | | <div class="main-div-customer"> |
| | | <vxe-grid |
| | | max-height="100%" |
| | | height="100%" |
| | | @filter-change="filterChanged" |
| | | class="mytable-scrollbar" |
| | | ref="xGrid" |
| | |
| | | <script setup> |
| | | |
| | | import {reactive, ref} from "vue"; |
| | | import {onMounted, reactive, ref} from "vue"; |
| | | import {useRouter} from 'vue-router' |
| | | import request from "@/utils/request"; |
| | | import deepClone from "@/utils/deepClone"; |
| | | import {ElMessage} from "element-plus"; |
| | | import { useI18n } from 'vue-i18n' |
| | | import footSum from "@/hook/footSum"; |
| | | import {addListener} from "@/hook/mouseMove"; |
| | | |
| | | //è¯è¨è·å |
| | | const { t } = useI18n() |
| | |
| | | |
| | | |
| | | |
| | | onMounted(() => { |
| | | addListener(xGrid.value,gridOptions) |
| | | |
| | | //ç¬¬ä¸æ¬¡è°ç¨ |
| | | request.post(`/finishedGoodsInventory/getSelect/1/${total.pageSize}`,filterData.value).then((res) => { |
| | | |
| | |
| | | router.push("/login") |
| | | } |
| | | }) |
| | | }) |
| | | |
| | | |
| | | |
| | | |
| | | //å®ä¹å½åé¡µæ° |
| | |
| | | {field: 'order.orderId', width: '150',title: t('order.orderId'),showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'order.project', width: '120',title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'order.orderType', width: '100',title: t('order.orderType'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'order.customerId', width: '120',title: t('processCard.customerId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'order.customerName', width: '100',title: t('processCard.customerName'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'order.batch', width: '100',title: t('order.batch'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'order.salesman', width: '100',title: t('order.salesman'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'orderDetail.productName', width: '100',title: t('order.product'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'orderDetail.productId',width: '100', title: t('order.productId'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'orderDetail.buildingNumber',width: '100', title: t('order.buildingNumber'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | |
| | | {field: 'orderDetail.width', width: '100',title: t('order.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'orderDetail.height',width: '100', title: t('order.height'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | |
| | | |
| | | {field: 'actualSignalArea',width: '140', title: t('productStock.singlePieceArea'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'area',width: '100', title: t('productStock.totalArea'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | |
| | | {field: 'weight',width: '100', title: t('processCard.weight'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'boxNo',width: '100', title: t('productStock.boxNumber'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'storageRegion',width: '100', title: t('productStock.inventoryArea'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'status',width: '100', title: t('productStock.status'), filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | |
| | |
| | | /*import: false, |
| | | export: true, |
| | | print: true,*/ |
| | | export: true, |
| | | zoom: true, |
| | | custom: true |
| | | }, |
| | |
| | | <template> |
| | | <div class="main-div-customer"> |
| | | <vxe-grid |
| | | max-height="100%" |
| | | height="100%" |
| | | @filter-change="filterChanged" |
| | | class="mytable-scrollbar" |
| | | ref="xGrid" |
| | |
| | | width: 99%; |
| | | height: 100%; |
| | | } |
| | | .vxe-grid { |
| | | /* ç¦ç¨æµè§å¨é»è®¤éä¸ */ |
| | | -webkit-user-select: none; |
| | | -moz-user-select: none; |
| | | -ms-user-select: none; |
| | | user-select: none; |
| | | } |
| | | </style> |
| | |
| | | import {Search} from "@element-plus/icons-vue"; |
| | | import { useI18n } from 'vue-i18n' |
| | | import footSum from "@/hook/footSum"; |
| | | import companyInfo from "@/stores/sd/companyInfo"; |
| | | |
| | | //è¯è¨è·å |
| | | const { t } = useI18n() |
| | | const router = useRouter() |
| | | const route = useRoute() |
| | | |
| | | const userStore = useUserInfoStore() |
| | | const username = userStore.user.userName |
| | | const userid = userStore.user.userId |
| | |
| | | {field: 'operationNumber', width: '100',title: t('order.OrderNum'), showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'processId', width: '150',title: t('processCard.processId'), showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'quantity', width: '140',title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'orderDetail.price', width: '140',title: t('order.price'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'orderDetail.productId',width: '100', title: t('order.productId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'orderDetail.productName',width: '140', title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'orderDetail.width', width: '100',title: t('order.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'orderDetail.height',width: '100', title: t('order.height'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'area',width: '100', title: t('order.area'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'money',width: '100', title: t('order.grossAmount'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'order.project',width: '100', title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'order.customerName',width: '100', title: t('order.customers'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'operator', width: '100',title: t('productStock.creator'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'operateTime', width:'140', title: t('productStock.productionDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'reviewed', width: '100',title: t('productStock.reviewed'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | |
| | | /*import: false, |
| | | export: true, |
| | | print: true,*/ |
| | | export: true, |
| | | zoom: true, |
| | | custom: true |
| | | }, |
| | | |
| | | footerMethod ({ columns, data }) {//页è彿° |
| | | let footList = ['quantity'] |
| | | let footList = ['quantity','area','money'] |
| | | return[ |
| | | columns.map((column, columnIndex) => { |
| | | if (columnIndex === 0) { |
| | |
| | | import footSum from "@/hook/footSum"; |
| | | import {VXETable} from "vxe-table"; |
| | | import PrintPackingList from "@/components/mm/PrintPackingList.vue"; |
| | | import PrintPackingListLuoyang from "@/components/mm/PrintPackingListLuoyang.vue"; |
| | | import {CircleCheck, Download, Printer} from "@element-plus/icons-vue/global"; |
| | | import print from "vue3-print-nb"; |
| | | import companyInfo from "@/stores/sd/companyInfo" |
| | | |
| | | //è¯è¨è·å |
| | | const { t } = useI18n() |
| | | const router = useRouter() |
| | | const route = useRoute() |
| | | const company = companyInfo() |
| | | const dialogTableVisible = ref(false) |
| | | const dialogTableVisible1 = ref(false) |
| | | let produceList = ref([]) |
| | | const getTableRow = (row,type) =>{ |
| | | switch (type) { |
| | |
| | | const $table = xGrid.value |
| | | //gridOptions.columns.unshift(a) |
| | | if ($table) { |
| | | |
| | | const selectRecords = $table.getCheckboxRecords() |
| | | |
| | | if (selectRecords.length <= 0) { |
| | | ElMessage.warning(t('productStock.unselectedData')) |
| | | return |
| | | } |
| | | if(company.companyName==="æ´é³åæ¹ç»çææ¯è¡ä»½æéå
¬å¸"){ |
| | | printRow.value.list = JSON.stringify(selectRecords) |
| | | dialogTableVisible1.value = true |
| | | }else{ |
| | | printRow.value.list = JSON.stringify(selectRecords) |
| | | dialogTableVisible.value = true |
| | | } |
| | | |
| | | } |
| | | return; |
| | | |
| | |
| | | reserve:true |
| | | } |
| | | |
| | | |
| | | const companyList = ref([ |
| | | {key: 1,value: 'æ´é³åæ¹ç»çææ¯è¡ä»½æéå
¬å¸'}, |
| | | {key: 2,value: '䏿µ·åç»ç»çææ¯å·¥ä¸æéå
¬å¸'} |
| | | ]) |
| | | let companyVal = ref(1) |
| | | |
| | | </script> |
| | | |
| | |
| | | :printList="printRow.list" |
| | | style="width: 100%;height: 100%"/> |
| | | </el-dialog> |
| | | <el-dialog |
| | | id="sizePrintCalrd1" |
| | | v-model="dialogTableVisible1" |
| | | title="è£
ç®±åæå°" |
| | | destroy-on-close |
| | | style="width: 75%;height:75% "> |
| | | <template #header="{ close, titleId, titleClass }"> |
| | | <el-button v-print="printRecord" :icon="Printer" circle/> |
| | | <el-select v-model="companyVal" style="width: 120px;margin-left: 10px"> |
| | | <el-option |
| | | v-for="item in companyList" |
| | | :key="item.key" |
| | | :label="item.value" |
| | | :value="item.key" /> |
| | | </el-select> |
| | | </template> |
| | | <print-packing-list-luoyang |
| | | id="record" |
| | | :printList="printRow.list" |
| | | :companyVal="companyVal" |
| | | style="width: 100%;height: 100%"/> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | display: flex; |
| | | flex-wrap: wrap |
| | | } |
| | | |
| | | :deep(#sizePrintCalrd1 .el-dialog__body) { |
| | | height: 90%; |
| | | width: 100%; |
| | | overflow-y: auto; |
| | | display: flex; |
| | | flex-wrap: wrap |
| | | } |
| | | </style> |
| | |
| | | {field: 'operationOrderNumber', width:'150', title: t('productStock.operationOrderNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'operationNumber', width: '100',title: t('order.OrderNum'), showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'operateType', width: '120',title:t('warehouseBasicData.type'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'projectNo', width: '120',title:t('ingredientsStock.projectNo'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'materialOutbound.orderId', width: '120',title:t('order.orderId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'materialOutbound.project', width: '120',title:t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'materialOutbound.batch', width: '120',title:t('order.batch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'quantity', width: '140',title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'inventoryId',width: '100', title: t('ingredientsStock.id'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'materialCode',width: '140', title: t('ingredients.materialCode'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | |
| | | import {onMounted, ref} from 'vue'; |
| | | import {ElMessage, ElLoading} from "element-plus"; |
| | | import request from "@/utils/request"; |
| | | import requestTemp from "@/utils/requestTemp"; |
| | | |
| | | const props = defineProps({ |
| | | project : null |
| | |
| | | // ç¨äºåå¨ä»å端è·åå°çæ°æ®ï¼åå§å为空æ°ç» |
| | | const receivedData = ref([]); |
| | | |
| | | const fetchProjectInfo = async (projectNumber) => { |
| | | try { |
| | | const res = await request.post(`/glassOptimize/getProjectByProjectNo/${projectNumber}`); |
| | | console.log('宿´ååºæ°æ®:', res); // ç¨äºè°è¯æ¥ç宿´ååºç»æ |
| | | |
| | | if (Number(res.code) === 200 && res.data && res.data.data && res.data.data.length > 0) { |
| | | // æ£ç¡®è®¿é®åµå¥çæ°æ®ç»æ |
| | | const projectData = res.data.data[0]; // 注æè¿éæ¯ res.data.data[0] |
| | | |
| | | console.log('è·åå°çglass_thickness:', projectData.glass_thickness); |
| | | console.log('è·åå°çglass_type:', projectData.glass_type); |
| | | |
| | | // ç¡®ä¿computed.valueå·²åå§å |
| | | if (!computed.value) { |
| | | computed.value = {}; |
| | | } |
| | | |
| | | computed.value.glass_thickness = projectData.glass_thickness; |
| | | computed.value.glass_type = projectData.glass_type; |
| | | |
| | | console.log('设置åçcomputed.value:', computed.value); |
| | | } else { |
| | | console.warn('æªæ¾å°é¡¹ç®ä¿¡æ¯ææ°æ®æ ¼å¼ä¸æ£ç¡®'); |
| | | } |
| | | } catch (error) { |
| | | console.error('è·å项ç®ä¿¡æ¯å¤±è´¥', error); |
| | | ElMessage.error('è·å项ç®ä¿¡æ¯å¤±è´¥'); |
| | | } |
| | | }; |
| | | |
| | | console.log(receivedData) |
| | | const handleFetchData = async (projectNumber) => { |
| | |
| | | const res = await request.post(`/glassOptimize/selectProjectCompute/${projectNumber}`); |
| | | if (Number(res.code) === 200 && res.data && res.data.data) { |
| | | receivedData.value = res.data.data; |
| | | // è·å项ç®ä¿¡æ¯ |
| | | await fetchProjectInfo(projectNumber); |
| | | } else { |
| | | console.error('请æ±åºç°é®é¢ï¼ç¶æç ï¼', res.code, 'ï¼é误信æ¯ï¼', res.msg); |
| | | if (res.code === 404) { |
| | |
| | | console.log('ç¶ç»ä»¶æ¥æ¶å°çæ°æ®1:', data); |
| | | } |
| | | |
| | | // åéæ°æ®å°é¢åè®¡ç®æ¥å£ |
| | | // åéæ°æ®å°é¢åè®¡ç®æ¥å£ |
| | | const sendToComputeTempering = async () => { |
| | | let loading; |
| | | try { |
| | | // æ¾ç¤ºå è½½æç¤º |
| | | loading = ElLoading.service({ |
| | | lock: true, |
| | | text: 'æ£å¨è®¡ç®ä¸ï¼è¯·ç¨å...', |
| | | background: 'rgba(0, 0, 0, 0.7)' |
| | | }); |
| | | |
| | | console.log('åéå°åç«¯çæ°æ®', JSON.stringify(computedCard.value, null, 2)); |
| | | |
| | | // åéæ°æ®å°é¢åè®¡ç®æ¥å£ |
| | | const response = await requestTemp.post('/computeTempering/inputTemperingData', computedCard.value); |
| | | |
| | | console.log('å端åå§ååº:', response); |
| | | |
| | | // æ£æ¥ååºç»æå¹¶æ£ç¡®å¤ç |
| | | if (response && (response.code === 200 || response.status === 200)) { |
| | | // ElMessage.success('模æè®¡ç®æå!'); |
| | | |
| | | // å¤çè¿åçæ°æ® |
| | | let resultData = response.data; |
| | | |
| | | // 妿dataæ¯å符串ï¼éè¦è§£æJSON |
| | | if (typeof resultData === 'string') { |
| | | try { |
| | | resultData = JSON.parse(resultData); |
| | | } catch (parseError) { |
| | | console.error('è§£æè¿åæ°æ®å¤±è´¥:', parseError); |
| | | ElMessage.warning('è¿åæ°æ®æ ¼å¼å¼å¸¸ï¼ä½¿ç¨åå§æ°æ®'); |
| | | // å³ä½¿è§£æå¤±è´¥ä¹ç»§ç»ä½¿ç¨åå§æ°æ® |
| | | } |
| | | } |
| | | |
| | | // æ´æ°computedData以æ¾ç¤ºè¿åçç»æ |
| | | computedData.value = { |
| | | code: 200, |
| | | data: resultData |
| | | }; |
| | | |
| | | console.log('æ¥æ¶å°çå¤çåæ°æ®:', computedData.value); |
| | | } else { |
| | | // å¤çé误æ
åµ |
| | | const errorMessage = response?.msg || response?.message || '模æè®¡ç®å¤±è´¥'; |
| | | ElMessage.error(errorMessage); |
| | | } |
| | | } catch (error) { |
| | | console.error('请æ±å¤±è´¥:', error); |
| | | |
| | | // ç¡®ä¿å
³éå è½½æç¤º |
| | | if (loading) { |
| | | loading.close(); |
| | | } |
| | | } |
| | | }; |
| | | |
| | | const handleSimulation = async () => { |
| | | let arry = computeCardRef.value.selectFullData(); |
| | | let data = arry; |
| | |
| | | }else{ |
| | | state.value=2 |
| | | } |
| | | |
| | | if(props.project!=null){ |
| | | computed.value.glass_thickness=props.project.glass_thickness |
| | | computed.value.glass_type=props.project.glass_type |
| | | } |
| | | // 计ç®é¢åæµç¨å¡çæ°éæ»å |
| | | let maxQty = 0; |
| | | if(data.length>0){ |
| | | // éåææå¾éäºé¢åçæµç¨å¡ï¼ç´¯å å®ä»¬çæ°é |
| | | arry.forEach(item => { |
| | | if (item.tempering) { |
| | | maxQty += item.total_num || 0; |
| | | } |
| | | }); |
| | | |
| | | // å°è®¡ç®åºçé¢åæ°éæ»åæ·»å å° computed.value ä¸ |
| | | computed.value.max_qty = maxQty; |
| | | |
| | | if (data.length > 0) { |
| | | // å建ææå¼æ¥è¯·æ±çPromiseæ°ç» |
| | | const detailPromises = []; |
| | | data.forEach(item=>{ |
| | | const processCard = { |
| | | process_no: item.processId, |
| | |
| | | glass_details: [] |
| | | }; |
| | | |
| | | request.post(`/glassOptimize/selectComputeDetail/${item.processId}/${item.technologyNumber}/${item.patch_state}`).then((res) => { |
| | | // åå»ºå¼æ¥è¯·æ±Promiseå¹¶ä¿å |
| | | const detailPromise = request.post(`/glassOptimize/selectComputeDetail/${item.processId}/${item.technologyNumber}/${item.patch_state}`).then((res) => { |
| | | if(Number(res.code) === 200){ |
| | | res.data.data.forEach(items=>{ |
| | | const detail={ |
| | | process_id:null, |
| | | technology_number:null, |
| | | order_number:null, |
| | | layers_number:null, |
| | | max_width:null, |
| | | max_height:null, |
| | | child_width:null, |
| | | child_height:null, |
| | | quantity:null, |
| | | patch_state:null |
| | | process_id: items.process_id, |
| | | technology_number: items.technology_number, |
| | | order_number: items.order_number, |
| | | layers_number: item.total_layers, |
| | | max_width: items.maxwidth, |
| | | max_height: items.maxheight, |
| | | child_width: items.width, |
| | | child_height: items.height, |
| | | quantity: items.quantity, |
| | | patch_state: item.patch_state |
| | | } |
| | | detail.process_id=items.process_id |
| | | detail.technology_number=items.technology_number |
| | | detail.order_number=items.order_number |
| | | detail.layers_number=item.total_layers |
| | | detail.max_width=items.maxwidth |
| | | detail.max_height=items.maxheight |
| | | detail.child_width=items.width |
| | | detail.child_height=items.height |
| | | detail.quantity=items.quantity |
| | | detail.patch_state=item.patch_state |
| | | |
| | | processCard.glass_details.push(detail) |
| | | }) |
| | | |
| | | |
| | | return processCard; |
| | | }else{ |
| | | ElMessage.warning(res.msg) |
| | | return processCard; |
| | | } |
| | | }) |
| | | computed.value.process_cards.push(processCard) |
| | | }) |
| | | console.log(computed.value) |
| | | }).catch(error => { |
| | | console.error('è·å详æ
失败:', error); |
| | | return processCard; |
| | | }); |
| | | |
| | | detailPromises.push(detailPromise); |
| | | }); |
| | | |
| | | // çå¾
ææå¼æ¥è¯·æ±å®æ |
| | | try { |
| | | const completedProcessCards = await Promise.all(detailPromises); |
| | | |
| | | // å°å®æçæµç¨å¡æ·»å å°computed.valueä¸ |
| | | if (!computed.value.process_cards) { |
| | | computed.value.process_cards = []; |
| | | } |
| | | computed.value.process_cards = completedProcessCards; |
| | | |
| | | console.log('宿´çcomputed.valueæ°æ®:', computed.value); |
| | | } catch (error) { |
| | | console.error('å¤çæµç¨å¡è¯¦æ
æ¶åºé:', error); |
| | | ElMessage.error('è·åæµç¨å¡è¯¦æ
失败'); |
| | | } |
| | | }else{ |
| | | ElMessage.warning("没æéè¦é¢åå·¥èºçæ°æ®è¯·ç´æ¥ä¿å") |
| | | state.value=3 |
| | | // å³ä½¿æ²¡æé¢åæ°æ®ï¼ä¹è¦è®¾ç½® max_qty 为 0 |
| | | computed.value.max_qty = 0; |
| | | return |
| | | } |
| | | |
| | | // åå¹¶æ°æ® |
| | | computedCard.value = { |
| | | ...computed.value, |
| | | ...computedCard.value |
| | | }; |
| | | |
| | | // console.log('æç»åéå°åç«¯çæ°æ®:', computedCard.value); |
| | | |
| | | await sendToComputeTempering(); |
| | | }; |
| | | |
| | | |
| | | /*request.post(`/glassOptimize/simulationCalculate`,computed.value).then((res) => { |
| | |
| | | text: 'æ£å¨è®¡ç®ä¸ï¼è¯·ç¨å...', |
| | | background: 'rgba(0, 0, 0, 0.7)' |
| | | }); |
| | | console.log('åéå°åç«¯çæ°æ®',computedCard.value) |
| | | // console.log('åéå°åç«¯çæ°æ®',computedCard.value) |
| | | const mockData = { |
| | | code: 200, |
| | | data: [ |
| | |
| | | const projectNumber = row.projectNumber; |
| | | const thickness = row.glass_thickness; |
| | | const glassType = row.glass_type; |
| | | const quantity = row.quantity; |
| | | const area = row.glass_total_area; |
| | | const optimizeState = row.optimize_state; |
| | | await router.push({ |
| | | name: 'optimizeInfo', |
| | | params: { |
| | | projectNo: projectNumber, |
| | | thickNess: thickness, |
| | | model: glassType |
| | | model: glassType, |
| | | quantity: quantity, |
| | | area: area, |
| | | optimizeState:optimizeState |
| | | } |
| | | }); |
| | | } |
| | |
| | | } |
| | | |
| | | // å
Œ
±å¤ç彿°ï¼å¤çç¸åæ°æ®æ¶çæä½ï¼å¹¶è¿åtargetRoute对象ï¼å³é®èååå廿å¼ï¼ |
| | | const handleSameDataOperation = async ({projectNumber, thickness, glassType}) => { |
| | | const handleSameDataOperation = async ({projectNumber, thickness, glassType,quantity,glass_total_area,optimize_state}) => { |
| | | const targetRoute = { |
| | | name: 'optimizeInfo', |
| | | params: { |
| | | projectNo: projectNumber, |
| | | thickNess: String(thickness), |
| | | model: glassType |
| | | thickNess: thickness, |
| | | model: glassType, |
| | | quantity: quantity, |
| | | area: glass_total_area, |
| | | optimizeState:optimize_state |
| | | } |
| | | }; |
| | | const currentRoute = router.currentRoute.value; |
| | |
| | | |
| | | }; |
| | | const handleSimulationClick = () => { |
| | | inputValues.project_no = inputValue.value; |
| | | |
| | | inputValues.glass_thickness = props.project.glass_thickness ; |
| | | inputValues.glass_type = props.project.glass_type; |
| | | inputValues.tempering_time = heatingTime.value || inputValues.tempering_time || 0; |
| | | |
| | | inputValues.load_width = furnaceWidth.value |
| | | inputValues.load_length = furnaceLength.value |
| | |
| | | processId: null, |
| | | technologyNumber: null, |
| | | patchState: null, |
| | | glassThickness: String, // æ·»å ç»çååº¦å±æ§ |
| | | glassType: String // æ·»å ç»çç±»å屿§ |
| | | }); |
| | | |
| | | |
| | |
| | | <script setup> |
| | | import {onMounted, reactive, ref} from "vue"; |
| | | import {onMounted, reactive, ref, watch} from "vue"; |
| | | import {useI18n} from "vue-i18n"; |
| | | import {Search} from "@element-plus/icons-vue"; |
| | | import request from "@/utils/request"; |
| | |
| | | }) |
| | | |
| | | const xGrid = ref() |
| | | |
| | | // æ·»å çå¬å¨ - çå¬èç³»éæ©åå |
| | | watch(optionVal, (newVal, oldVal) => { |
| | | if (oldVal !== undefined && newVal !== oldVal) { |
| | | // å½èç³»æ¹åæ¶ï¼èªå¨å·æ°æ°æ® |
| | | if (newVal) { |
| | | selectFlowCardList(); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | |
| | | const gridOptions = reactive({ |
| | | |
| | | height: '100%', |
| | |
| | | } |
| | | ); |
| | | |
| | | |
| | | watch(() => props.technologyNumber, |
| | | (newValue, oldValue) => { |
| | | if (props.technologyNumber != null) { |
| | | getWorkOrder(); |
| | | } |
| | | }); |
| | | |
| | | |
| | | const getWorkOrder = () => { |
| | | if (props.processId!=null || props.processId!=""){ |
| | | if ((props.processId != null && props.processId != "") && |
| | | (props.technologyNumber != null && props.technologyNumber != "")) { |
| | | request.post(`/glassOptimize/getProcessCardDetail/${props.processId}/${props.technologyNumber}`).then((res) => { |
| | | if(res.code==200){ |
| | | xGrid.value.loadData(res.data.data) |
| | |
| | | } |
| | | }) |
| | | } |
| | | |
| | | } |
| | | </script> |
| | | |
| | |
| | | return formattedItem; |
| | | }); |
| | | data.forEach(item => { |
| | | |
| | | if(formattedData[0].autoFillEdge==="true"){ |
| | | item.longGrind1=0 |
| | | item.longGrind2=0 |
| | | item.shortGrind1=0 |
| | | item.shortGrind2=0 |
| | | |
| | | if(item.width>=formattedData[0].minAutoLenght){ |
| | | item.longGrind1 = formattedData[0].leftEdge; |
| | | item.longGrind2 = formattedData[0].rightEdge; |
| | |
| | | item.shortGrind2 = formattedData[0].downEdge; |
| | | } |
| | | } |
| | | item.longGrind1=0 |
| | | item.longGrind2=0 |
| | | item.shortGrind1=0 |
| | | item.shortGrind2=0 |
| | | item.height=parseFloat(item.height.toFixed(2)) |
| | | item.width=parseFloat(item.width.toFixed(2)) |
| | | |
| | |
| | | |
| | | import request from "@/utils/request" |
| | | import deepClone from "@/utils/deepClone" |
| | | import {ElDatePicker, ElMessage} from "element-plus" |
| | | import {ElCheckbox, ElDatePicker, ElMessage} from "element-plus" |
| | | import useProductGlassTypeStore from "@/stores/sd/product/productGlassType" |
| | | import {nextTick, onMounted, onUnmounted, reactive, ref, watch} from "vue" |
| | | import {ArrowLeftBold, Search} from "@element-plus/icons-vue" |
| | |
| | | } |
| | | flag = !flag |
| | | } |
| | | |
| | | //åå |
| | | let flashback = ref(1) |
| | | |
| | | //å®ä¹æåºè§å |
| | | const optionVal = ref(0) |
| | | const options = [ |
| | | { |
| | | value: 0, |
| | | label: t('processCard.mainWidth'), |
| | | }, |
| | | { |
| | | value: 1, |
| | | label: t('processCard.mainHeight'), |
| | | }, |
| | | ] |
| | | |
| | | //å®ä¹æ¶é´ |
| | | const form = reactive({ |
| | |
| | | |
| | | }) |
| | | produceList = produceList.value.concat(deepClone(res.data.data)) |
| | | produceList.forEach(item => { |
| | | // 妿 shape å¯è½æ¯åç¬¦ä¸²å°±ç¨ ==ï¼å¦æä¸å®æ¯æ°åå°±ç¨ === |
| | | item.shape = (item.shape == 2) ? t('order.alien') : t('order.universalShape'); |
| | | }); |
| | | xGrid.value.reloadData(produceList) |
| | | gridOptions.loading = false |
| | | } else { |
| | |
| | | spacerThickness: 0, |
| | | inWeight: 4000, |
| | | inMaxQuantity: 20, |
| | | inLenMin:400, |
| | | inLenMin:350, |
| | | inLenMax:3500, |
| | | inShortMax:2500, |
| | | inShortMin:400 |
| | | inShortMin:350 |
| | | }, |
| | | rules:{ |
| | | shelfThickness: [ |
| | |
| | | ],//表头æé® |
| | | |
| | | toolbarConfig: { |
| | | // buttons: [{ |
| | | // |
| | | // }], |
| | | slots:{ |
| | | buttons: "toolbar_buttons" |
| | | }, |
| | | buttons: [{ |
| | | |
| | | }], |
| | | // import: false, |
| | | // export: true, |
| | | // print: true, |
| | |
| | | |
| | | }) |
| | | const gridEventsRight = { |
| | | toolbarButtonClick({code}) { |
| | | const $grid = xGridLeft.value |
| | | if ($grid) { |
| | | switch (code) { |
| | | case 'sorting': { |
| | | request.post(`/processCard/selectSortingCard/${orderId}/${productionId}/${flashback.value}/${optionVal.value}`, filterData.value).then((res) => { |
| | | |
| | | if (res.code == 200) { |
| | | pageTotal.value = res.data.total |
| | | maxProcseeId=res.data.maxFlowCard[0].process_id |
| | | orderOtherMoney.value = res.data.orderOtherMoney |
| | | orderOtherMoney.value.forEach(item => { |
| | | let column = { |
| | | field: `${item.column}`, |
| | | width: 100, |
| | | title: item.alias, |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged, |
| | | sortable: true |
| | | } |
| | | |
| | | gridOptions.columns.push(column) |
| | | |
| | | }) |
| | | produceList = res.data.data |
| | | produceList.forEach(item => { |
| | | // 妿 shape å¯è½æ¯åç¬¦ä¸²å°±ç¨ ==ï¼å¦æä¸å®æ¯æ°åå°±ç¨ === |
| | | item.shape = (item.shape == 2) ? t('order.alien') : t('order.universalShape'); |
| | | }); |
| | | xGrid.value.reloadData(produceList) |
| | | gridOptions.loading = false |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | }) |
| | | return; |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | }, |
| | | formSubmit () { |
| | | let form = gridOptions.formConfig.data |
| | | form.orderId =orderId |
| | |
| | | ElMessage.warning(t('processCard.schedulingOk')) |
| | | return |
| | | } |
| | | //productionId |
| | | |
| | | const $gridLeft = xGridLeft.value |
| | | const leftData = $gridLeft.getTableData().fullData |
| | | |
| | | //è½æ¶é¡ºåº |
| | | let index = 1 |
| | | if (leftData.length !== 0) { |
| | | index = leftData[0].landingSequence + 1 |
| | | //index = index.toString().padStart(2, '0') |
| | | } |
| | | let processId= null |
| | | // if (leftData.length !== 0){ |
| | | // processId = productionId + index.toString().padStart(3, '0') |
| | | // } |
| | | // else { |
| | | if (maxProcseeId!== null || maxProcseeId!== undefined|| maxProcseeId!== ''){ |
| | | if (leftData.length !== 0){ |
| | | const str=leftData[0].processId |
| | | const lastThree = str.slice(-3); |
| | | const result = lastThree*1 + 1; |
| | | processId= productionId + result.toString().padStart(3, '0') |
| | | } |
| | | else { |
| | | // æªååä¸ä½ |
| | | const lastThree = maxProcseeId.slice(-3); |
| | | const result = lastThree*1 + 1; |
| | | processId= productionId + result.toString().padStart(3, '0') |
| | | index = Math.max(...leftData.map(d => d.landingSequence || 0)) + 1 |
| | | } |
| | | |
| | | } |
| | | else { |
| | | // æµç¨å¡å· |
| | | let processId = null |
| | | if (maxProcseeId) { |
| | | const base = leftData.length !== 0 ? leftData[0].processId : maxProcseeId |
| | | const lastThree = base.slice(-3) |
| | | const result = parseInt(lastThree) + 1 |
| | | processId = productionId + result.toString().padStart(3, '0') |
| | | } else { |
| | | processId = productionId + index.toString().padStart(3, '0') |
| | | } |
| | | //} |
| | | |
| | | |
| | | const regex = /^(\d+|)$/; |
| | | const regex = /^(\d+|)$/ |
| | | if (!regex.test(checkedNum.value)) { |
| | | ElMessage.warning(t('processCard.schedulingNo')) |
| | | return |
| | | } |
| | | //å¤ææ£æ´æ° |
| | | if (/^[1-9]\d*$/.test(checkedNum.value)) { |
| | | checkedList.forEach((item) => { |
| | | //å®ä¹keyå¼ä¿æ |
| | | //夿å¯ç¨æ°éæ¯å¦å¤§äºçäºè¾å
¥çæ°é,䏿»¡è¶³åæåºå¼å¸¸ |
| | | if (item.baiscQuantity * 1 < checkedNum.value * 1) throw new Error(t('processCard.schedulingQuantity')); |
| | | item.quantity = checkedNum.value |
| | | item.processId = processId |
| | | item.landingSequence = index |
| | | item.baiscQuantity = item.baiscQuantity - checkedNum.value |
| | | item.computeGrossArea = (item.computeGrossArea - item.width * item.height * checkedNum.value / 1000000).toFixed(2) |
| | | |
| | | //å é¤key |
| | | let key = item._X_ROW_KEY |
| | | try { |
| | | if (/^[1-9]\d*$/.test(checkedNum.value)) { |
| | | //æè¾å
¥æ°é |
| | | checkedList.forEach((item) => { |
| | | if (item.baiscQuantity < checkedNum.value * 1) { |
| | | throw new Error(t('processCard.schedulingQuantity')) |
| | | } |
| | | item.quantity = checkedNum.value * 1 |
| | | item.processId = processId |
| | | item.landingSequence = index // â
å䏿¹æ¬¡ï¼è½æ¶é¡ºåºä¸è´ |
| | | item.baiscQuantity -= checkedNum.value * 1 |
| | | item.computeGrossArea = ( |
| | | item.computeGrossArea - item.width * item.height * checkedNum.value / 1000000 |
| | | ).toFixed(2) |
| | | |
| | | const key = item._X_ROW_KEY |
| | | delete item._X_ROW_KEY |
| | | |
| | | if (item.baiscQuantity === 0) { |
| | | $grid.remove(item) |
| | | } |
| | | $gridLeft.insertAt(item) |
| | | //éæ°èµå¼key |
| | | |
| | | const currentLeft = $gridLeft.getTableData().fullData |
| | | $gridLeft.clearSort() |
| | | $gridLeft.loadData([...currentLeft, item]) |
| | | item._X_ROW_KEY = key |
| | | }) |
| | | |
| | | //æ¸
é¤ä¸¤è¾¹å¤éæ¡ |
| | | $gridLeft.clearCheckboxRow() |
| | | $grid.clearCheckboxRow() |
| | | } else if (checkedNum.value === '') {//夿æ°éè¾å
¥æ¡æ è¾å
¥æ°å |
| | | |
| | | } else if (checkedNum.value === '') { |
| | | //没æè¾å
¥æ°é |
| | | checkedList.forEach((item) => { |
| | | item.processId = processId |
| | | item.landingSequence = index |
| | | item.quantity = item.baiscQuantity |
| | | }) |
| | | //å é¤key |
| | | checkedList.forEach((item) => { |
| | | delete item._X_ROW_KEY |
| | | }) |
| | | $gridLeft.insertAt(checkedList) |
| | | |
| | | $grid.remove(checkedList) |
| | | //æ¸
é¤ä¸¤è¾¹å¤éæ¡ |
| | | const currentLeft = $gridLeft.getTableData().fullData |
| | | $gridLeft.clearSort() |
| | | $gridLeft.loadData([...currentLeft, ...checkedList]) |
| | | } |
| | | |
| | | $gridLeft.clearCheckboxRow() |
| | | $grid.clearCheckboxRow() |
| | | } |
| | | if (checkedNum.value){ |
| | | checkedNum.value ='' |
| | | |
| | | // æå
¥åè§è§æåº |
| | | // $nextTick(() => { |
| | | // $gridLeft.sort('landingSequence', 'asc') |
| | | // }) |
| | | } catch (e) { |
| | | ElMessage.warning(e.message ) |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | //æç¼å·å建æµç¨å¡ |
| | |
| | | weight.value = parseFloat(weightsum.toFixed(2)); |
| | | }; |
| | | |
| | | //ååºèµå¼ |
| | | function onFlashbackChange(checked) { |
| | | flashback.value = checked ? 0 : 1 |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | |
| | | <vxe-grid |
| | | id="rightTable" |
| | | ref="xGrid" |
| | | checkbox-config="{ reserve: true, strict: true }" |
| | | :checkbox-config="{labelField: 'name', highlight: true, range: true,reserve: true, strict: true}" |
| | | class="mytable-scrollbar" |
| | | height="100%" |
| | | v-bind="gridOptions" |
| | | v-on="gridEventsRight" |
| | | @checkbox-change="handleCheckboxChange" |
| | | @checkbox-all="handleCheckboxChange" |
| | | @checkbox-range-end="handleCheckboxChange" |
| | | > |
| | | |
| | | <!-- èªå®ä¹ toolbar_buttons ææ§½ --> |
| | | <template #toolbar_buttons="{ $grid }"> |
| | | |
| | | |
| | | <!-- æå¨ååºæææé® --> |
| | | |
| | | <el-select |
| | | :default-first-option="true" |
| | | ref="getSelect" style="width: 80px" |
| | | v-model="optionVal" |
| | | class="m-2" |
| | | > |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | /> |
| | | </el-select> |
| | | |
| | | <el-button |
| | | type="primary" |
| | | style="margin-right:8px;width: 50px" |
| | | @click="$grid.dispatchEvent('toolbar-button-click', { code: 'sorting' })" |
| | | > |
| | | {{ t('processCard.sorting') }} |
| | | </el-button> |
| | | |
| | | <el-checkbox |
| | | :model-value="flashback === 0" |
| | | @change="onFlashbackChange" |
| | | > |
| | | {{ t('processCard.flashback') }} |
| | | </el-checkbox> |
| | | |
| | | |
| | | </template> |
| | | |
| | | |
| | | |
| | | <!-- @toolbar-button-click="toolbarButtonClickEvent"--> |
| | | <!-- 䏿æ¾ç¤ºææä¿¡æ¯ææ§½--> |
| | | <template #content="{ row }"> |
| | |
| | | import {CircleCheck, Download, Printer} from "@element-plus/icons-vue/global"; |
| | | import TagStyleDesigner from "@/components/pp/TagStyleDesigner.vue"; |
| | | import useUserInfoStore from "@/stores/userInfo"; |
| | | import { ElCheckbox } from 'element-plus' |
| | | |
| | | |
| | | const company = companyInfo() |
| | | const userStore = useUserInfoStore() |
| | | const userId = userStore.user.userId |
| | |
| | | list: null, |
| | | printMergeVal: null, |
| | | like: null, |
| | | merge: null |
| | | merge: null, |
| | | printFc:null, |
| | | flashback:null, |
| | | landingSequence:null, |
| | | compound:null |
| | | }) |
| | | |
| | | //æ ç¾ |
| | |
| | | lableType: null//æ ç¾ç±»å |
| | | }) |
| | | |
| | | //åå |
| | | let flashback = ref(1) |
| | | //è½æ¶é¡ºåº |
| | | let landingSequence= ref(1) |
| | | //åæ¶æå° |
| | | let compound = ref(null) |
| | | |
| | | const getTableRow = (row, type) => { |
| | | switch (type) { |
| | |
| | | let orderId = route.query.orderId |
| | | data.value.printList = JSON.parse(route.query.printList) |
| | | |
| | | let printFc = route.query.printNumberFc |
| | | let inquiryMode = route.query.checkedValue |
| | | |
| | | // ç¬¬ä¸æ¬¡å è½½æ¥è¯¢ |
| | |
| | | gridOptions.loading = false |
| | | |
| | | |
| | | hideButton(); |
| | | hideHead() |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | |
| | | |
| | | |
| | | const gridOptions = reactive({ |
| | | toolbar: true, |
| | | loading: true, |
| | | border: "full",//è¡¨æ ¼å è¾¹æ¡ |
| | | keepSource: true,//ä¿ææºæ°æ® |
| | |
| | | field: 'technology_number', |
| | | title: t('processCard.technologyNumber'), |
| | | showOverflow: "ellipsis", |
| | | width: 110, |
| | | width: 120, |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged, |
| | | sortable: true |
| | | }, |
| | | {field: 'glass_address', title: t('processCard.glassAddress'), width: 90}, |
| | | {field: 'quantity', title: t('order.quantity'), width: 90}, |
| | |
| | | ],//表头æé® |
| | | |
| | | toolbarConfig: { |
| | | slots:{ |
| | | buttons: "toolbar_buttons" |
| | | }, |
| | | buttons: [ |
| | | {code: 'print', name: t('processCard.print'), status: 'primary'}, |
| | | {code: 'customLabel', name: t('processCard.customLabelPrinting'), status: 'primary'}, |
| | | {code: 'printLabel', name: t('processCard.labelPrinting'), status: 'primary'}, |
| | | {code: 'printLabel2', name: t('processCard.labelPrinting2'), status: 'primary'}, |
| | | {code: 'sortTable', name: t('processCard.sortSummary'), status: 'primary'}, |
| | | // {code: 'printTest', name: "æµè¯æå°", status: 'primary'}, |
| | | // {code: 'printLike', name: "åé
ç½®æå°", status: 'primary'}, |
| | | // {code: 'print', name: t('processCard.print'), status: 'primary'}, |
| | | // {code: 'customLabel', name: t('processCard.customLabelPrinting'), status: 'primary'}, |
| | | // {code: 'printLabel', name: t('processCard.labelPrinting'), status: 'primary'}, |
| | | // {code: 'printLabel2', name: t('processCard.labelPrinting2'), status: 'primary'}, |
| | | // {code: 'sortTable', name: t('processCard.sortSummary'), status: 'primary'}, |
| | | ], |
| | | // import: false, |
| | | // export: true, |
| | |
| | | printRow.value.printMergeVal = printMerge.value |
| | | printRow.value.like = null |
| | | printRow.value.merge = company.flowCardMerge |
| | | printRow.value.printFc= printFc |
| | | printRow.value.flashback = flashback.value |
| | | printRow.value.landingSequence=landingSequence.value |
| | | printRow.value.compound = compound.value |
| | | // router.push({path: '/main/processCard/printProcess', query: {printList: JSON.stringify(selectRecords),printMerge:printMergeVal}}) |
| | | if(company.companyName=='常å·å¸åå©ç»çæéå
¬å¸'){ |
| | | dialogTableVisibleStraight.value = true |
| | |
| | | addListener(xGridDetail.value, detailGridOptions) |
| | | } |
| | | |
| | | const hideButton = () => { |
| | | // æ ¹æ®æ¡ä»¶å¼ hidePrintLabels è¿æ»¤æé®æ°ç» |
| | | gridOptions.toolbarConfig.buttons = gridOptions.toolbarConfig.buttons.filter(button => { |
| | | // æ ¹æ® hidePrintLabels è¿æ»¤ printLabel å printLabel2 æé® |
| | | if (hidePrintLabels === 'true') { |
| | | if (button.code === 'printLabel' || button.code === 'printLabel2') { |
| | | return false; // éè printLabel å printLabel2 |
| | | } |
| | | } |
| | | // 妿 printBtn 为 '1'ï¼åéè customLabel æé® |
| | | if (btnType == 1 && button.code === 'customLabel') { |
| | | console.log('Hiding customLabel button'); |
| | | return false; // éè customLabel æé® |
| | | } |
| | | |
| | | // é»è®¤æ
åµä¸è¿å trueï¼ä¿çå
¶ä»æé® |
| | | return true; |
| | | }); |
| | | //夿æä¸ªæé® code æ¯å¦è¦æ¾ç¤º |
| | | function isButtonVisible(code) { |
| | | // 妿è¦éè printLabel/printLabel2 |
| | | if (hidePrintLabels && (code === 'printLabel' || code === 'printLabel2')) { |
| | | return false |
| | | } |
| | | |
| | | // 妿 btnType 为 1ï¼è¦éè customLabel |
| | | if (btnType === 1 && code === 'customLabel') { |
| | | return false |
| | | } |
| | | return true |
| | | } |
| | | |
| | | const hideHead = () => { |
| | | |
| | | // 夿 btnType æ¯å¦çäº '1' (å¯ä»¥æ ¹æ®éè¦è°æ´ä¸ºæ°å 1) |
| | | if (btnType == 1) { |
| | | const headDiv = document.querySelector('.head'); |
| | |
| | | }) |
| | | } |
| | | |
| | | function onFlashbackChange(checked) { |
| | | flashback.value = checked ? 0 : 1 |
| | | } |
| | | |
| | | function onlandingSequenceChange(checked) { |
| | | landingSequence.value = checked ? 0 : 1 |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | |
| | | v-bind="gridOptions" |
| | | v-on="gridEvents" |
| | | |
| | | |
| | | > |
| | | <!-- èªå®ä¹ toolbar_buttons ææ§½ --> |
| | | <template #toolbar_buttons="{ $grid }"> |
| | | |
| | | |
| | | <!-- æå¨ååºæææé® --> |
| | | <el-button |
| | | v-if="isButtonVisible('print')" |
| | | type="primary" |
| | | style="margin-right:8px;" |
| | | @click="$grid.dispatchEvent('toolbar-button-click', { code: 'print' })" |
| | | > |
| | | {{ t('processCard.print') }} |
| | | </el-button> |
| | | |
| | | <el-button |
| | | v-if="isButtonVisible('customLabel')" |
| | | type="primary" |
| | | style="margin-right:8px;" |
| | | @click="$grid.dispatchEvent('toolbar-button-click', { code: 'customLabel' })" |
| | | > |
| | | {{ t('processCard.customLabelPrinting') }} |
| | | </el-button> |
| | | |
| | | <el-button |
| | | v-if="isButtonVisible('printLabel')" |
| | | type="primary" |
| | | style="margin-right:8px;" |
| | | @click="$grid.dispatchEvent('toolbar-button-click', { code: 'printLabel' })" |
| | | > |
| | | {{ t('processCard.labelPrinting') }} |
| | | </el-button> |
| | | |
| | | <el-button |
| | | v-if="isButtonVisible('printLabel2')" |
| | | type="primary" |
| | | style="margin-right:8px;" |
| | | @click="$grid.dispatchEvent('toolbar-button-click', { code: 'printLabel2' })" |
| | | > |
| | | {{ t('processCard.labelPrinting2') }} |
| | | </el-button> |
| | | |
| | | <el-button |
| | | v-if="isButtonVisible('sortTable')" |
| | | type="primary" |
| | | style="margin-right:8px;" |
| | | @click="$grid.dispatchEvent('toolbar-button-click', { code: 'sortTable' })" |
| | | > |
| | | {{ t('processCard.sortSummary') }} |
| | | </el-button> |
| | | |
| | | <el-checkbox |
| | | :model-value="flashback === 0" |
| | | @change="onFlashbackChange" |
| | | > |
| | | {{ t('processCard.flashback') }} |
| | | </el-checkbox> |
| | | <el-checkbox |
| | | :model-value="landingSequence === 0" |
| | | @change="onlandingSequenceChange" |
| | | > |
| | | {{ t('processCard.landingSequence') }} |
| | | </el-checkbox> |
| | | <el-input |
| | | v-model="compound" |
| | | :placeholder="$t('processCard.printCompound')" |
| | | clearable |
| | | style="margin-left:20px; width: 110px;" |
| | | /> |
| | | |
| | | </template> |
| | | <!-- @toolbar-button-click="toolbarButtonClickEvent"--> |
| | | <!-- 䏿æ¾ç¤ºææä¿¡æ¯ææ§½--> |
| | | <template #content="{ row }"> |
| | |
| | | :printLike="printRow.like" |
| | | :printList="printRow.list" |
| | | :printMerge="printRow.printMergeVal" |
| | | :printFc="printRow.printFc" |
| | | :merges="printRow.merge" |
| | | :flashback = "printRow.flashback" |
| | | :landingSequence = "printRow.landingSequence" |
| | | :compound = "printRow.compound" |
| | | style="width: 100%;height: 100%"/> |
| | | </el-dialog> |
| | | |
| | |
| | | |
| | | import request from "@/utils/request" |
| | | import deepClone from "@/utils/deepClone" |
| | | import {ElDatePicker, ElMessage} from "element-plus" |
| | | import {ElCheckbox, ElDatePicker, ElMessage} from "element-plus" |
| | | import {nextTick, onMounted, onUnmounted, reactive, ref, watch} from "vue" |
| | | import {useRouter} from 'vue-router' |
| | | import {useI18n} from 'vue-i18n' |
| | |
| | | technologyNumber: null, |
| | | process: null |
| | | }) |
| | | |
| | | //è½æ¶é¡ºåº |
| | | let landingSequence= ref(1) |
| | | //æå° |
| | | let printRow = ref({ |
| | | list: null, |
| | |
| | | faceOrientation: null,//å
å¤é¢ |
| | | type: null,//æ ç¾æ¨¡æ¿ |
| | | lableType: null,//æ ç¾ç±»å |
| | | dataType: null//æ ç¾ç±»å |
| | | dataType: null, |
| | | landingSequence:null |
| | | }) |
| | | |
| | | |
| | |
| | | hiprintTemplate.value.print(object) |
| | | |
| | | } |
| | | const orderOtherMoney = ref(null) |
| | | |
| | | const {currentRoute} = useRouter() |
| | | const route = currentRoute.value |
| | |
| | | newDataCollection.push(item); |
| | | }) |
| | | } |
| | | orderOtherMoney.value = res.data.orderOtherMoney |
| | | orderOtherMoney.value.forEach(item => { |
| | | let column = { |
| | | field: `${item.column}`, |
| | | width: 100, |
| | | title: item.alias, |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged, |
| | | sortable: true |
| | | } |
| | | |
| | | gridOptions.columns.push(column) |
| | | |
| | | }) |
| | | titleSelectJson.value.dataType = res.data.type |
| | | xGrid.value.reloadData(newDataCollection) |
| | | gridOptions.loading = false |
| | |
| | | title: t('order.OrderNum'), |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged, width: 100 |
| | | filterMethod: filterChanged, width: 120 |
| | | , sortable: true |
| | | }, |
| | | { |
| | | field: 'technology_number', |
| | | title: t('processCard.technologyNumber'), |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged, width: 100 |
| | | filterMethod: filterChanged, width: 120 |
| | | , sortable: true |
| | | }, |
| | | { |
| | | field: 'width', |
| | |
| | | id += selectRecords[i].id + "|" |
| | | } |
| | | } |
| | | |
| | | labelRow.value.landingSequence = landingSequence |
| | | labelRow.value.list = JSON.stringify(selectRecords) |
| | | labelRow.value.faceOrientation = faceOrientation |
| | | labelRow.value.type = type |
| | |
| | | } |
| | | }) |
| | | } |
| | | |
| | | function onlandingSequenceChange(checked) { |
| | | landingSequence.value = checked ? 0 : 1 |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | |
| | | :value="item.value" |
| | | /> |
| | | </el-select> |
| | | |
| | | <el-checkbox |
| | | :model-value="landingSequence === 0" |
| | | @change="onlandingSequenceChange" |
| | | > |
| | | {{ t('processCard.landingSequence') }} |
| | | </el-checkbox> |
| | | </div> |
| | | |
| | | <div class="main-table"> |
| | |
| | | :lableType="labelRow.lableType" |
| | | :list="labelRow.list" |
| | | :type="labelRow.type" |
| | | :landingSequence="labelRow.landingSequence" |
| | | style="width: 100%;height: 100%"/> |
| | | </el-dialog> |
| | | |
| | |
| | | let labelList = ref([]) |
| | | let projectNo = ref([]) |
| | | let type = ref([]) |
| | | let printStyle = ref([]) |
| | | let orderId = ref([]) |
| | | const data = ref({ |
| | | printList: [] |
| | |
| | | const printType=route.query.printType |
| | | projectNo.value = route.query.projectNo |
| | | type.value = route.query.type |
| | | printStyle.value = route.query.printStyle |
| | | |
| | | |
| | | |
| | | onMounted(() => { |
| | | console.log(printStyle.value) |
| | | console.log(type) |
| | | if (localStorage.getItem('hasRefreshed')=="false") { |
| | | // 设置æ å¿ï¼è¡¨ç¤ºå·²ç»å·æ°è¿ |
| | | localStorage.setItem('hasRefreshed', 'true'); |
| | |
| | | <el-input v-if="!company.showDeliveryCreator" v-model="remarks" style="background-color: transparent;border: none;margin-top: -20px;width: 100px"/> |
| | | <div id="printFlowCard" > |
| | | <!-- åæåæ ç¾--> |
| | | <template v-for="(item,id) in labelList"> |
| | | <div v-if="type!=='3'" id="entirety" > |
| | | <template v-if="type!=='3'&&printStyle==='1'" v-for="(item,id) in labelList"> |
| | | <div id="entirety" > |
| | | <div class="row1" > |
| | | <!--é¢åçå¾åºå·ï¼é¢åçå¾éç顺åº--> |
| | | <!-- <div class="cell" v-if="item.heat_layout_id!==undefined">{{ item.heat_layout_id }}/{{ item.heat_layout_sort }}</div>--> |
| | |
| | | |
| | | |
| | | <!--æååç§°--> |
| | | <template v-if="type==='3'" v-for="(item,id) in labelList"> |
| | | <div v-if="type==='3'" id="entirety" v-for="n in item.quantity" > |
| | | <template v-if="type==='3'&&printStyle==='1'" v-for="(item,id) in labelList"> |
| | | <div id="entirety" v-for="n in item.quantity" > |
| | | |
| | | <div class="row1" v-if="item.heat_layout_id!=null"> |
| | | |
| | |
| | | </div> |
| | | </div> |
| | | <div class="element-to-break-after" v-if="(id+1)%44==0"></div> |
| | | </template> |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | <template v-if="type!=='3'&&printStyle==='2'" v-for="(item,id) in labelList"> |
| | | <div id="entirety1" > |
| | | |
| | | <div class="row1" > |
| | | <!--é¢åçå¾åºå·ï¼é¢åçå¾éç顺åº--> |
| | | <!-- <div class="cell" v-if="item.heat_layout_id!==undefined">{{ item.heat_layout_id }}/{{ item.heat_layout_sort }}</div>--> |
| | | <span >{{ item.customer_name }}</span> |
| | | |
| | | <template v-if="company.showDeliveryCreator"> |
| | | <span v-if="item.process.includes('夹è¶')||item.process.includes('夹å±')">è¶ç</span> |
| | | <span v-else-if="item.process.includes('ä¸ç©º')">ä¸ç©º</span> |
| | | <span v-else-if="item.process.includes('ç¾å¶')">ç¾å¶</span> |
| | | <span v-else></span> |
| | | </template> |
| | | |
| | | <!--stock_id çå¾--> |
| | | <!-- <div class="cell1" v-if="item.stock_id!=undefined">{{ item.stock_id+'/'+item.polys_id }}</div>--> |
| | | |
| | | </div> |
| | | <div v-if="item.customer_name!==undefined" class="row9"> |
| | | <span v-if="company.showDeliveryCreator">{{ item.order_id }}</span> |
| | | <span v-if="!company.showDeliveryCreator">{{ item.process_id }}</span> |
| | | </div> |
| | | <div class="row3" v-if="item.other_columns!=null&&(JSON.parse(item.other_columns).S02!=null)"> |
| | | <span v-if="item.heat_layout_id!==undefined && company.showDeliveryCreator" style="font-size: 7pt;"> |
| | | ({{ item.stock_id }}) {{ item.heat_layout_id }}/{{ item.heat_layout_sort }} |
| | | </span> |
| | | <span v-if="item.stock_id!==undefined && !company.showDeliveryCreator" style="font-size: 7pt"> |
| | | {{ item.stock_id }}/{{ item.polys_id }} |
| | | </span> |
| | | {{JSON.parse(item.other_columns).S02}}={{item.quantity}} |
| | | </div> |
| | | <div class="row3" v-else> |
| | | <span v-if="item.heat_layout_sort!==undefined && company.showDeliveryCreator" > |
| | | ({{ item.stock_id }}) {{ item.heat_layout_id }}/{{ item.heat_layout_sort }} |
| | | </span> |
| | | <span v-if="item.stock_id!==undefined && !company.showDeliveryCreator" > |
| | | {{ item.stock_id }}/{{ item.polys_id }} |
| | | </span> |
| | | {{Math.round(item.width)}}x{{Math.round(item.height)}}={{item.quantity}} |
| | | </div> |
| | | <div v-if="item.customer_name!==undefined" class="row5"> |
| | | <span>{{item.project}}</span> |
| | | <span>{{item.building_number?item.building_number.replace(/\r|\n|\s/g,''):''}}</span> |
| | | <span v-if="item.bend_radius!=null">R={{item.bend_radius}}</span> |
| | | </div> |
| | | <div v-if="item.customer_name!==undefined" class="row6"> |
| | | <span>{{item.glass_child}}</span> |
| | | <span v-if="company.showDeliveryCreator" style="font-size: 8pt" >{{item.processing_note}}</span> |
| | | <span v-else style="font-size: 8pt"></span> |
| | | |
| | | <br v-if="!company.showDeliveryCreator" /> |
| | | <span v-if="!company.showDeliveryCreator" style="font-size: 8pt;margin-top: -10px">{{item.product_name}}</span> |
| | | </div> |
| | | </div> |
| | | <div class="element-to-break-after" v-if="(id+1)%18==0"></div> |
| | | </template> |
| | | |
| | | |
| | | |
| | | <template v-if="type==='3'&&printStyle==='2'" v-for="(item,id) in labelList"> |
| | | <div id="entirety1" v-for="n in item.quantity" > |
| | | |
| | | <div class="row1" v-if="item.heat_layout_id!=null"> |
| | | <span>{{ item.customer_name }}</span> |
| | | </div> |
| | | <div class="row1" v-else> |
| | | <span >{{ item.customer_name }}</span> |
| | | </div> |
| | | <div class="row2" > |
| | | <span > {{item.order_id}}</span> |
| | | <span >{{ remarks }}</span> |
| | | </div> |
| | | <div class="row3" v-if="item.other_columns!=null&&(JSON.parse(item.other_columns).S02!=null)"> |
| | | <span v-if="item.heat_layout_id!==null && company.showDeliveryCreator" > |
| | | ({{ item.stock_id }}) {{ item.heat_layout_id }}/{{ item.heat_layout_sort }} |
| | | </span> |
| | | <span v-if="item.stock_id!==null && !company.showDeliveryCreator" > |
| | | {{ item.stock_id }}/{{ item.polys_id }} |
| | | </span> |
| | | {{JSON.parse(item.other_columns).S02}}={{item.quantity}} |
| | | </div> |
| | | <div class="row3" v-else> |
| | | <span v-if="item.heat_layout_id!==null && company.showDeliveryCreator" > |
| | | ({{ item.stock_id }}) {{ item.heat_layout_id }}/{{ item.heat_layout_sort }} |
| | | </span> |
| | | <span v-if="item.stock_id!==null && !company.showDeliveryCreator" > |
| | | {{ item.stock_id }}/{{ item.polys_id }} |
| | | </span> |
| | | {{Math.round(item.width)}}x{{Math.round(item.height)}}={{item.quantity}} |
| | | </div> |
| | | |
| | | <div class="row5"> |
| | | <span style="white-space: pre-wrap;">{{ item.building_number?item.building_number.replace(/\r|\n|\s/g,''):'' }}</span> |
| | | <span v-if="item.bend_radius!=null">R={{item.bend_radius}}</span> |
| | | </div> |
| | | <div class="row6"> |
| | | <span style="font-size: 10pt">{{item.glass_child}}</span> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | </div> |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | .row3 { |
| | | margin-top: -5px; |
| | | height: 18px; |
| | |
| | | } |
| | | |
| | | |
| | | #entirety1{ |
| | | text-align: center; |
| | | width: 240px; |
| | | height: 170px; |
| | | margin-bottom: 7px; |
| | | margin-right: 5px; |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | } |
| | | |
| | | |
| | | #entirety1 .row1 { |
| | | font-weight: bold; |
| | | height: 30px; |
| | | } |
| | | #entirety1 .row1 span { |
| | | font-size: 15pt; |
| | | font-weight: bold; |
| | | } |
| | | #entirety1 .row2 span { |
| | | font-size: 12pt; |
| | | font-weight: bold; |
| | | } |
| | | |
| | | #entirety1 .row2 { |
| | | font-weight: bold; |
| | | height: 30px; |
| | | } |
| | | |
| | | |
| | | |
| | | #entirety1 .row3 { |
| | | margin-top: -5px; |
| | | height: 36px; |
| | | font-size: 25px; |
| | | font-weight: bolder; |
| | | } |
| | | |
| | | #entirety1 .row3 span { |
| | | font-size: 15px; |
| | | } |
| | | |
| | | #entirety1 .row9 { |
| | | margin-top: -15px; |
| | | height: 40px; |
| | | font-size: 18pt; |
| | | font-weight: bolder; |
| | | } |
| | | |
| | | #entirety1 .row9 span { |
| | | font-size: 15pt; |
| | | font-weight: bold; |
| | | } |
| | | |
| | | #entirety1 .row5 { |
| | | height: 30px; |
| | | font-weight: bold; |
| | | font-size: 6pt; |
| | | } |
| | | #entirety1 .row5 span { |
| | | font-size: 15pt; |
| | | font-weight: bold; |
| | | } |
| | | |
| | | #entirety1 .row6 { |
| | | margin-top: -10px; |
| | | height: 50px; |
| | | font-weight: bold; |
| | | font-size: 18px; |
| | | } |
| | | #entirety1 .row6 span { |
| | | white-space: normal; |
| | | font-size: 16px; |
| | | font-weight: bold; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | |
| | | const printVisible= ref(false) |
| | | const orderInfo = useOrderInfoStore() |
| | | |
| | | |
| | | let printNumberFc = company.printNumber; |
| | | const userStore = useUserInfoStore() |
| | | const userId = userStore.user.userId |
| | | |
| | |
| | | |
| | | if (res.code == 200) { |
| | | produceList = produceList.value.concat(deepClone(res.data.data)) |
| | | gridOptions.toolbarConfig.buttons[2].visible=false |
| | | /*gridOptions.toolbarConfig.buttons[2].visible=false |
| | | let roleId=res.data.user |
| | | if (roleId=='1' || roleId=='17'){ |
| | | gridOptions.toolbarConfig.buttons[2].visible=true |
| | | } |
| | | }*/ |
| | | |
| | | xGrid.value.reloadData(produceList) |
| | | gridOptions.loading = false |
| | |
| | | } |
| | | } |
| | | let array = orderIdList.split('|'); |
| | | router.push({path: '/main/processCard/PrintFlowCard', query: {printList: JSON.stringify(selectRecords),checkedValue:checkedValue.value.value}}) |
| | | if (selectRecords.length==1){ |
| | | printNumberFc = true |
| | | } |
| | | router.push({path: '/main/processCard/PrintFlowCard', query: {printList: JSON.stringify(selectRecords),checkedValue:checkedValue.value.value,printNumberFc:printNumberFc}}) |
| | | return; |
| | | |
| | | } |
| | |
| | | let produceList = ref([]) |
| | | let titleStyleVisible = ref(false) |
| | | let print = ref("1") |
| | | let printStyle = ref("1") |
| | | |
| | | //æ ç¾ |
| | | let labelRow = ref({ |
| | |
| | | const company = companyInfo() |
| | | let hidePrintLabels = company.printLabel.hideButton; |
| | | |
| | | //åå |
| | | let flashback = ref(1) |
| | | //è½æ¶é¡ºåº |
| | | let landingSequence= ref(1) |
| | | //åæ¶æå° |
| | | let compound = ref(null) |
| | | |
| | | const form = reactive({ |
| | | date1: '', |
| | | orderId: '', |
| | |
| | | printMergeVal: null, |
| | | like: null, |
| | | project:null, |
| | | merge: null |
| | | merge: null, |
| | | flashback:null, |
| | | compound:null, |
| | | landingSequence:null, |
| | | }) |
| | | const getTableRow = (row, type) => { |
| | | switch (type) { |
| | | case 'edit' :{ |
| | | if(parseInt(print.value)==1){ |
| | | router.push({path: '/main/processCard/PrintLabel', query: { projectNo: row.project_no,type:1 }}) |
| | | router.push({path: '/main/processCard/PrintLabel', query: { projectNo: row.project_no,type:1,printStyle:parseInt(printStyle.value) }}) |
| | | }else{ |
| | | router.push({path: '/main/processCard/PrintCustomLabelSemi2', query: { projectNo: row.project_no,type:1 }}) |
| | | } |
| | |
| | | } |
| | | case 'edit1' :{ |
| | | if(parseInt(print.value)==1){ |
| | | router.push({path: '/main/processCard/PrintLabel', query: { projectNo: row.project_no,type:2 }}) |
| | | router.push({path: '/main/processCard/PrintLabel', query: { projectNo: row.project_no,type:2,printStyle:parseInt(printStyle.value) }}) |
| | | }else{ |
| | | router.push({path: '/main/processCard/PrintCustomLabelSemi2', query: { projectNo: row.project_no,type:2 }}) |
| | | } |
| | | break |
| | | } |
| | | case 'edit2' :{ |
| | | router.push({path: '/main/processCard/PrintLabel', query: { projectNo: row.project_no,type:3 }}) |
| | | router.push({path: '/main/processCard/PrintLabel', query: { projectNo: row.project_no,type:3,printStyle:parseInt(printStyle.value) }}) |
| | | break |
| | | } |
| | | case 'edit3' :{ |
| | | printRow.value.project=row.project_no |
| | | printRow.value.merge = company.flowCardMerge |
| | | printRow.value.flashback = flashback.value |
| | | printRow.value.compound = compound.value |
| | | printRow.value.landingSequence=landingSequence.value |
| | | if(company.companyName=='常å·å¸åå©ç»çæéå
¬å¸'){ |
| | | dialogTableVisibleStraight.value = true |
| | | }else{ |
| | |
| | | if (res.code == 200) { |
| | | if(hidePrintLabels=="true"){ |
| | | //å é¤ä¸ææ¡ |
| | | remove(gridOptions.toolbarConfig.slots) |
| | | //remove(gridOptions.toolbarConfig.slots) |
| | | const button = {'code': 'printLabel', |
| | | status: 'primary', |
| | | 'name': t('processCard.finishedProductPrinting2')} |
| | |
| | | buttons: [ |
| | | ], |
| | | slots:{ |
| | | buttons: "toolbar_buttons" |
| | | buttons: "toolbar_buttons", |
| | | }, |
| | | zoom: true, |
| | | custom: true |
| | |
| | | </template> |
| | | |
| | | <template #toolbar_buttons> |
| | | <vxe-select @change="changeOrderType" v-model="printStyle" > |
| | | <vxe-option value="1" label="11å4è¡"></vxe-option> |
| | | <vxe-option value="2" label="6è¡3å"></vxe-option> |
| | | </vxe-select> |
| | | </template> |
| | | |
| | | <template #toolbar_button2> |
| | | <vxe-select @change="changeOrderType" v-model="print" > |
| | | <vxe-option value="1" label="EPSON LQ-82KF ESC/P2"></vxe-option> |
| | | <vxe-option value="2" label="TSC TTP-244Pro"></vxe-option> |
| | | </vxe-select> |
| | | </template> |
| | | |
| | | |
| | | |
| | | |
| | |
| | | :printMerge="printRow.printMergeVal" |
| | | :printProject="printRow.project" |
| | | :merges="printRow.merge" |
| | | :flashback = "printRow.flashback" |
| | | :compound = "printRow.compound" |
| | | :landingSequence = "printRow.landingSequence" |
| | | style="width: 100%;height: 100%"/> |
| | | </el-dialog> |
| | | |
| | |
| | | {code: 'delete', name: t('basicData.delete'), status: 'primary'}, |
| | | {code: 'rack', name: t('processCard.combinedFrame'), status: 'primary'}, |
| | | ], |
| | | slots: { |
| | | tools: 'toolbar_buttons' |
| | | }, |
| | | import: false, |
| | | // export: true, |
| | | // print: true, |
| | |
| | | |
| | | let composingData = ref({ |
| | | composing: selectRecords, |
| | | userId: user.user.userId, |
| | | userName:user.user.userName |
| | | }) |
| | | |
| | | //ä¿®æ¹æçç¶æ |
| | |
| | | reserve: true |
| | | } |
| | | |
| | | function exportExcel(url, fileName,date) { |
| | | if(date===null){ |
| | | ElMessage.warning(t('report.pleaseSelectADateFirst')) |
| | | return |
| | | } |
| | | |
| | | |
| | | const date1 = new Date(date[0]); |
| | | const date2 = new Date(date[1]); |
| | | const timeDiff = Math.abs(date2.getTime() - date1.getTime()); |
| | | const daysDiff = timeDiff / (1000 * 3600 * 24); |
| | | if(Math.floor(daysDiff)>180){ |
| | | ElMessage.warning(t('report.theFilteringTimeForExportCannotExceed180Days')) |
| | | return |
| | | } |
| | | let dataMp = ref({ |
| | | date: date, |
| | | }) |
| | | request.post(url,dataMp.value,{responseType :'blob'}).then(res => { |
| | | const blob = new Blob([res]) |
| | | if ('download' in document.createElement('a')) { // éIEä¸è½½ |
| | | const elink = document.createElement('a') |
| | | elink.download = `${fileName}.xlsx` |
| | | elink.style.display = 'none' |
| | | elink.href = URL.createObjectURL(blob) |
| | | document.body.appendChild(elink) |
| | | elink.click() |
| | | URL.revokeObjectURL(elink.href) // éæ¾URL 对象 |
| | | document.body.removeChild(elink) |
| | | } else { // IE10+ä¸è½½ |
| | | navigator.msSaveBlob(blob, fileName) |
| | | } |
| | | |
| | | }) |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | |
| | | > |
| | | </vxe-pager> |
| | | </template> |
| | | <template #toolbar_buttons> |
| | | <vxe-button style="margin-right: 0.5rem" |
| | | @click="exportExcel('/processCard/exportDateProcess', |
| | | t('order.processCard'), |
| | | orderInfo.workOrderDate)"> |
| | | {{t('basicData.export')}}</vxe-button> |
| | | </template> |
| | | |
| | | </vxe-grid> |
| | | </div> |
| | |
| | | filterMethod: filterChanged, |
| | | width:110 |
| | | }, |
| | | {field: 'batch', width: 90, title: t('order.batch')}, |
| | | { |
| | | field: 'order_number', |
| | | title: t('order.OrderNum'), |
| | |
| | | import deepClone from "@/utils/deepClone"; |
| | | import {ElDatePicker, ElMessage} from "element-plus"; |
| | | import {useI18n} from 'vue-i18n' |
| | | import exportExcel from "@/hook/exportExcel"; |
| | | import footSum from "@/hook/footSum" |
| | | import {changeFilterEvent} from "@/hook" |
| | | //è¯è¨è·å |
| | |
| | | |
| | | //è·åä¸å¤©åå°å½åæ¶é´ |
| | | function getNowTime() { |
| | | const start = new Date(new Date().getTime() - 3600 * 1000 * 24 * 3) |
| | | .toISOString() |
| | | .replace('T', ' ') |
| | | .slice(0, 10) //é»è®¤å¼å§æ¶é´7天å |
| | | const end = new Date(new Date().getTime()) |
| | | .toISOString() |
| | | .replace('T', ' ') |
| | | .slice(0, 10)//é»è®¤ç»ææ¶é´å½åæ¶é´ |
| | | return [start, end] |
| | | const pad = (n) => n.toString().padStart(2, '0'); |
| | | |
| | | const formatDate = (date) => { |
| | | const year = date.getFullYear(); |
| | | const month = pad(date.getMonth() + 1); |
| | | const day = pad(date.getDate()); |
| | | return `${year}-${month}-${day} 08:00:00`; |
| | | }; |
| | | |
| | | const now = new Date(); |
| | | const startDate = new Date(now.getTime() - 3600 * 1000 * 24 * 3); // ä¸å¤©å |
| | | const start = formatDate(startDate); |
| | | const end = formatDate(now); |
| | | |
| | | return [start, end]; |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | // ä½¿ç¨ setDate æ¹æ³å ä¸å¤© |
| | | date.setDate(date.getDate() + 1); |
| | | let newEndTime = date.toISOString().split('T')[0]; // è·å YYYY-MM-DD æ ¼å¼çå符串 |
| | | const pad = (n) => n.toString().padStart(2, '0'); |
| | | let year = date.getFullYear(); |
| | | let month = pad(date.getMonth() + 1); |
| | | let day = pad(date.getDate()); |
| | | let newEndTime = `${year}-${month}-${day} 08:00:00`; |
| | | //ç¬¬ä¸æ¬¡å è½½æ°æ® |
| | | request.post(`/report/damageReport/1/${total.pageSize}/${startTime}/${newEndTime}`, filterData.value).then((res) => { |
| | | |
| | |
| | | |
| | | //页è翻页æ¥è¯¢ |
| | | const selectPageList = () => { |
| | | let startTime = form.date1[0] |
| | | let endTime = form.date1[1] |
| | | let date = new Date(endTime); // å°æ¥æå符串转为 Date 对象 |
| | | |
| | | // ä½¿ç¨ setDate æ¹æ³å ä¸å¤© |
| | | date.setDate(date.getDate() + 1); |
| | | let newEndTime = date.toISOString().split('T')[0]; // è·å YYYY-MM-DD æ ¼å¼çå符串 |
| | | const rawStart = new Date(form.date1[0]); |
| | | const rawEnd = new Date(form.date1[1]); |
| | | // 妿æ¶é´é¨åæ¯ 00:00ï¼å设置为 08:00 |
| | | if (rawStart.getHours() === 8 || rawStart.getHours() === 0) { |
| | | rawStart.setHours(8, 0, 0, 0); |
| | | } |
| | | if (rawEnd.getHours() === 8 || rawEnd.getHours() === 0) { |
| | | rawEnd.setHours(8, 0, 0, 0); |
| | | } |
| | | const startTime = formatDateTime(rawStart); |
| | | const endPlusOne = new Date(rawEnd); |
| | | endPlusOne.setDate(endPlusOne.getDate()); |
| | | const newEndTime = formatDateTime(endPlusOne); |
| | | form.date1 = [startTime, newEndTime]; |
| | | request.post(`/report/damageReport/${pageNum.value}/${total.pageSize}/${startTime}/${newEndTime}`, filterData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | |
| | |
| | | }) |
| | | } |
| | | |
| | | const formatDateTime = (date) => { |
| | | const year = date.getFullYear(); |
| | | const month = pad(date.getMonth() + 1); |
| | | const day = pad(date.getDate()); |
| | | const hour = pad(date.getHours()); |
| | | const minute = pad(date.getMinutes()); |
| | | return `${year}-${month}-${day} ${hour}:${minute}:00`; |
| | | }; |
| | | |
| | | |
| | | //ç¹å»æ¥è¯¢ |
| | | const getWorkOrder = () => { |
| | | gridOptions.loading = true |
| | | let startTime = form.date1[0] |
| | | let endTime = form.date1[1] |
| | | let date = new Date(endTime); // å°æ¥æå符串转为 Date 对象 |
| | | // ä½¿ç¨ setDate æ¹æ³å ä¸å¤© |
| | | date.setDate(date.getDate() + 1); |
| | | let newEndTime = date.toISOString().split('T')[0]; // è·å YYYY-MM-DD æ ¼å¼çå符串 |
| | | // åå§ form.date1 æ¯æ¥æå¯¹è±¡æ°ç» |
| | | const rawStart = new Date(form.date1[0]); |
| | | const rawEnd = new Date(form.date1[1]); |
| | | // 妿æ¶é´é¨åæ¯ 00:00ï¼å设置为 08:00 |
| | | if (rawStart.getHours() === 8 || rawStart.getHours() === 0) { |
| | | rawStart.setHours(8, 0, 0, 0); |
| | | } |
| | | if (rawEnd.getHours() === 8 || rawEnd.getHours() === 0) { |
| | | rawEnd.setHours(8, 0, 0, 0); |
| | | } |
| | | |
| | | const startTime = formatDateTime(rawStart); |
| | | const endPlusOne = new Date(rawEnd); |
| | | endPlusOne.setDate(endPlusOne.getDate()); |
| | | const newEndTime = formatDateTime(endPlusOne); |
| | | form.date1 = [startTime, newEndTime]; |
| | | request.post(`/report/damageReport/${pageNum.value}/${total.pageSize}/${startTime}/${newEndTime}`, filterData.value).then((res) => { |
| | | |
| | | if (res.code == 200) { |
| | |
| | | } |
| | | gridOptions.loading = true |
| | | |
| | | let startTime = form.date1[0] |
| | | let endTime = form.date1[1] |
| | | let date = new Date(endTime); // å°æ¥æå符串转为 Date 对象 |
| | | |
| | | // ä½¿ç¨ setDate æ¹æ³å ä¸å¤© |
| | | date.setDate(date.getDate() + 1); |
| | | let newEndTime = date.toISOString().split('T')[0]; // è·å YYYY-MM-DD æ ¼å¼çå符串 |
| | | const rawStart = new Date(form.date1[0]); |
| | | const rawEnd = new Date(form.date1[1]); |
| | | // 妿æ¶é´é¨åæ¯ 00:00ï¼å设置为 08:00 |
| | | if (rawStart.getHours() === 8 || rawStart.getHours() === 0) { |
| | | rawStart.setHours(8, 0, 0, 0); |
| | | } |
| | | if (rawEnd.getHours() === 8 || rawEnd.getHours() === 0) { |
| | | rawEnd.setHours(8, 0, 0, 0); |
| | | } |
| | | const startTime = formatDateTime(rawStart); |
| | | const endPlusOne = new Date(rawEnd); |
| | | endPlusOne.setDate(endPlusOne.getDate()); |
| | | const newEndTime = formatDateTime(endPlusOne); |
| | | form.date1 = [startTime, newEndTime]; |
| | | request.post(`/report/damageReport/1/${total.pageSize}/${startTime}/${newEndTime}`, filterData.value).then((res) => { |
| | | |
| | | if (res.code == 200) { |
| | |
| | | showOverflow: "ellipsis", |
| | | filters:[{ data: '' }],slots: { filter: 'num1_filter' } |
| | | }, |
| | | {field: 'batch', width: 90, title: t('order.batch')}, |
| | | { |
| | | field: 'processId', width: 130, title: t('processCard.processId'), filters:[{ data: '' }],slots: { filter: 'num1_filter' } |
| | | }, |
| | |
| | | |
| | | }) |
| | | |
| | | function exportExcel(url, fileName,date) { |
| | | if(date===null){ |
| | | ElMessage.warning(t('report.pleaseSelectADateFirst')) |
| | | return |
| | | } |
| | | |
| | | |
| | | const date1 = new Date(date[0]); |
| | | const date2 = new Date(date[1]); |
| | | const timeDiff = Math.abs(date2.getTime() - date1.getTime()); |
| | | const daysDiff = timeDiff / (1000 * 3600 * 24); |
| | | if(Math.floor(daysDiff)>180){ |
| | | ElMessage.warning(t('report.theFilteringTimeForExportCannotExceed180Days')) |
| | | return |
| | | } |
| | | let dataMp = ref({ |
| | | date: date, |
| | | }) |
| | | request.post(url,dataMp.value,{responseType :'blob'}).then(res => { |
| | | const blob = new Blob([res]) |
| | | if ('download' in document.createElement('a')) { // éIEä¸è½½ |
| | | const elink = document.createElement('a') |
| | | elink.download = `${fileName}.xlsx` |
| | | elink.style.display = 'none' |
| | | elink.href = URL.createObjectURL(blob) |
| | | document.body.appendChild(elink) |
| | | elink.click() |
| | | URL.revokeObjectURL(elink.href) // éæ¾URL 对象 |
| | | document.body.removeChild(elink) |
| | | } else { // IE10+ä¸è½½ |
| | | navigator.msSaveBlob(blob, fileName) |
| | | } |
| | | |
| | | }) |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | |
| | | v-model="form.date1" |
| | | :start-placeholder="$t('basicData.startDate')" |
| | | :end-placeholder="$t('basicData.endDate')" |
| | | format="YYYY/MM/DD" |
| | | format="YYYY/MM/DD HH:mm" |
| | | type="daterange" |
| | | value-format="YYYY-MM-DD" |
| | | value-format="YYYY-MM-DD HH:mm" |
| | | /> |
| | | |
| | | <el-button type="primary" @click="getWorkOrder">{{$t('basicData.search')}}</el-button> |
| | |
| | | import {changeFilterEvent, filterChanged} from "@/hook" |
| | | import exportExcel from "@/hook/exportExcel"; |
| | | import footSum from "@/hook/footSum" |
| | | import moment from "moment"; |
| | | //è¯è¨è·å |
| | | const {t} = useI18n() |
| | | let router = useRouter() |
| | |
| | | title: t('processCard.splitFrameTime'), |
| | | type: 'date', |
| | | attrs: {placeholder: '', type: 'date'}, |
| | | formatter: ({ cellValue }) => { |
| | | if (!cellValue) return '' |
| | | return moment(cellValue) |
| | | .utcOffset(8) |
| | | .format('YYYY-MM-DD HH:mm:ss') |
| | | } |
| | | } |
| | | ],//表头æé® |
| | | |
| | |
| | | // total.dataTotal = res.data.total.total*1 |
| | | // total.pageTotal= res.data.total.pageTotal |
| | | // pageTotal.value = res.data.total |
| | | total.value = res.data.footSum |
| | | //total.value = res.data.footSum |
| | | produceList = produceList.value.concat(deepClone(res.data.data)) |
| | | titleSelectJson.value.processType = res.data.process |
| | | xGrid.value.reloadData(produceList) |
| | |
| | | request.post(`/report/selectProcessToBeCompleted/${pageNum.value}/${total.pageSize}/${startTime}/${newEndTime}/${inputVal}`, filterData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | |
| | | total.value = res.data.footSum |
| | | //total.value = res.data.footSum |
| | | produceList = deepClone(res.data.data) |
| | | xGrid.value.reloadData(produceList) |
| | | } else { |
| | |
| | | // total.dataTotal = res.data.total.total*1 |
| | | // total.pageTotal= res.data.total.pageTotal |
| | | // pageTotal.value = res.data.total |
| | | total.value = res.data.footSum |
| | | //total.value = res.data.footSum |
| | | produceList = deepClone(res.data.data) |
| | | xGrid.value.reloadData(produceList) |
| | | } else { |
| | |
| | | } |
| | | const List = ["quantity",'childArea','actualArea','completeNum','completeArea','incompleteNum','incompleteArea'] |
| | | if (List.includes(column.field)) { |
| | | //return footSum(data, column.field) |
| | | return total.value?.[column.field] ?? 0 |
| | | return footSum(data, column.field) |
| | | } |
| | | return '' |
| | | }) |
| | |
| | | |
| | | <el-sub-menu index="1" > |
| | | <template #title >{{$t('report.productionReport')}}</template> |
| | | <el-menu-item index="/main/report/WorkInProgressCombination">{{$t('report.WorkInProgressCombination')}}</el-menu-item> |
| | | <el-menu-item index="/main/report/WorkInProgress">{{$t('report.workInProgressReport')}}</el-menu-item> |
| | | <el-menu-item index="/main/report/ProcessToBeCompleted">{{$t('report.processToBeCompleted')}}</el-menu-item> |
| | | <el-menu-item index="/main/report/ProductionSchedule">{{$t('report.productionAndShippingProgress')}}</el-menu-item> |
| | |
| | | }) |
| | | } |
| | | |
| | | const orderOtherMoney = ref(null) |
| | | //ç¹å»æ¥è¯¢ |
| | | const getWorkOrder = () => { |
| | | let inputVal = form.orderId |
| | |
| | | // total.dataTotal = res.data.total.total*1 |
| | | // total.pageTotal= res.data.total.pageTotal |
| | | // pageTotal.value = res.data.total |
| | | orderOtherMoney.value = res.data.orderOtherMoney |
| | | orderOtherMoney.value.forEach(item => { |
| | | let column = { |
| | | field: `${item.column}`, |
| | | width: 100, |
| | | title: item.alias, |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged, |
| | | sortable: true |
| | | } |
| | | |
| | | gridOptions.columns.push(column) |
| | | |
| | | }) |
| | | produceList = deepClone(res.data.data) |
| | | xGrid.value.reloadData(produceList) |
| | | } else { |
| | |
| | | {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50}, |
| | | {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50}, |
| | | { |
| | | field: 'processId', width: 120, title: t('processCard.processId'), filters: [{data: ''}], |
| | | field: 'processId', width: 135, title: t('processCard.processId'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | {field: 'childWidth', width: 120, title: t('order.width')}, |
| | | {field: 'childHeight', width: 120, title: t('order.height')}, |
| | | {field: 'childWidth', width: 120, title: t('order.width'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged}, |
| | | {field: 'childHeight', width: 120, title: t('order.height'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged}, |
| | | {field: 'quantity', width: 120, title: t('order.quantity')}, |
| | | |
| | | {field: 'area', width: 100, title: t('order.area')}, |
| | |
| | | let column = [1,2,3] |
| | | //ç¹å»æ¥è¯¢ |
| | | const getWorkOrder = () => { |
| | | let orderId = form.orderId |
| | | if (orderId === '') { |
| | | orderId = null |
| | | } |
| | | let startTime = time.date1[0] |
| | | let endTime = time.date1[1] |
| | | let date = new Date(endTime); // å°æ¥æå符串转为 Date 对象 |
| | | // ä½¿ç¨ setDate æ¹æ³å ä¸å¤© |
| | | date.setDate(date.getDate() + 1); |
| | | let newEndTime = date.toISOString().split('T')[0]; // è·å YYYY-MM-DD æ ¼å¼çå符串 |
| | | request.post(`/report/taskCompletionStatus/${startTime}/${newEndTime}`,column).then((res) => { |
| | | request.post(`/report/taskCompletionStatus/${startTime}/${newEndTime}/${orderId}`,column).then((res) => { |
| | | if (res.code == 200) { |
| | | if(res.data.data.length===0){ |
| | | ElMessage.warning(t('report.noDataFoundForThisOrder')) |
| | |
| | | item.reportWorkQuantity=JSON.parse(item.reportWorkQuantity) |
| | | item.reportWorkQuantityCount=JSON.parse(item.reportWorkQuantityCount) |
| | | }) |
| | | mergeCells.value = res.data.mergeCell |
| | | //mergeCells.value = res.data.mergeCells |
| | | xGrid.value.loadData(res.data.data) |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | |
| | | // export: true, |
| | | // print: true, |
| | | slots: { |
| | | tools: 'toolbar_buttons' |
| | | //tools: 'toolbar_buttons' |
| | | }, |
| | | zoom: true, |
| | | custom: true |
| | |
| | | <template #quantitySum="{ row,column }"> |
| | | <span>{{ quantitySum(row,column) }} </span> |
| | | </template> |
| | | <template #toolbar_buttons> |
| | | <vxe-button style="margin-right: 0.5rem" |
| | | @click="exportExcel('/report/exportTaskCompletionStatus', |
| | | t('report.TaskCompletionStatus'), |
| | | time.date1)"> |
| | | {{t('basicData.export')}}</vxe-button> |
| | | </template> |
| | | <!-- <template #toolbar_buttons>--> |
| | | <!-- <vxe-button style="margin-right: 0.5rem"--> |
| | | <!-- @click="exportExcel('/report/exportTaskCompletionStatus',--> |
| | | <!-- t('report.TaskCompletionStatus'),--> |
| | | <!-- time.date1)">--> |
| | | <!-- {{t('basicData.export')}}</vxe-button>--> |
| | | <!-- </template>--> |
| | | |
| | | </vxe-grid> |
| | | </div> |
| | |
| | | <script setup> |
| | | |
| | | import {reactive, ref} from "vue"; |
| | | import {onMounted, reactive, ref} from "vue"; |
| | | import {useRouter} from 'vue-router' |
| | | import request from "@/utils/request"; |
| | | import deepClone from "@/utils/deepClone"; |
| | | import {ElDatePicker, ElMessage} from "element-plus"; |
| | | import {useI18n} from 'vue-i18n' |
| | | import footSum from "@/hook/footSum" |
| | | import {addListener, toolbarButtonClickEvent} from "@/hook/mouseMove" |
| | | import {VxeUI} from "vxe-pc-ui"; |
| | | //è¯è¨è·å |
| | | const {t} = useI18n() |
| | | let router = useRouter() |
| | |
| | | |
| | | //è·åä¸å¤©åå°å½åæ¶é´ |
| | | function getNowTime() { |
| | | const start = new Date(new Date().getTime() - 3600 * 1000 * 24 * 3) |
| | | .toISOString() |
| | | .replace('T', ' ') |
| | | .slice(0, 10) //é»è®¤å¼å§æ¶é´7天å |
| | | const end = new Date(new Date().getTime()) |
| | | .toISOString() |
| | | .replace('T', ' ') |
| | | .slice(0, 10)//é»è®¤ç»ææ¶é´å½åæ¶é´ |
| | | return [start, end] |
| | | const pad = (n) => n.toString().padStart(2, '0'); |
| | | |
| | | const formatDate = (date) => { |
| | | const year = date.getFullYear(); |
| | | const month = pad(date.getMonth() + 1); |
| | | const day = pad(date.getDate()); |
| | | return `${year}-${month}-${day} 08:00:00`; |
| | | }; |
| | | |
| | | const now = new Date(); |
| | | const startDate = new Date(now.getTime() - 3600 * 1000 * 24 * 3); // ä¸å¤©å |
| | | const start = formatDate(startDate); |
| | | const end = formatDate(now); |
| | | |
| | | return [start, end]; |
| | | } |
| | | |
| | | onMounted(() => { |
| | | //å¯ç¨è¡¨æ ¼æå¨éä¸ |
| | | addListener(xGrid.value, gridOptions) |
| | | |
| | | }) |
| | | |
| | | //ç¬¬ä¸æ¬¡å è½½è·åè¿ä¸å¤©æ¶é´åé»è®¤ç¶æ |
| | | form.date1 = getNowTime() |
| | |
| | | let date = new Date(endTime); // å°æ¥æå符串转为 Date 对象 |
| | | // ä½¿ç¨ setDate æ¹æ³å ä¸å¤© |
| | | date.setDate(date.getDate() + 1); |
| | | let newEndTime = date.toISOString().split('T')[0]; // è·å YYYY-MM-DD æ ¼å¼çå符串 |
| | | const pad = (n) => n.toString().padStart(2, '0'); |
| | | let year = date.getFullYear(); |
| | | let month = pad(date.getMonth() + 1); |
| | | let day = pad(date.getDate()); |
| | | let newEndTime = `${year}-${month}-${day} 08:00:00`; |
| | | //ç¬¬ä¸æ¬¡å è½½æ°æ® |
| | | request.post(`/report/teamOutput/1/${total.pageSize}/${startTime}/${newEndTime}/${selectProcesses}`, filterData.value).then((res) => { |
| | | |
| | |
| | | //页è翻页æ¥è¯¢ |
| | | const selectPageList = () => { |
| | | gridOptions.loading = true |
| | | let startTime = form.date1[0] |
| | | let endTime = form.date1[1] |
| | | let selectProcesses = procseeValue.value |
| | | let date = new Date(endTime); // å°æ¥æå符串转为 Date 对象 |
| | | // ä½¿ç¨ setDate æ¹æ³å ä¸å¤© |
| | | date.setDate(date.getDate() + 1); |
| | | let newEndTime = date.toISOString().split('T')[0]; // è·å YYYY-MM-DD æ ¼å¼çå符串 |
| | | const rawStart = new Date(form.date1[0]); |
| | | const rawEnd = new Date(form.date1[1]); |
| | | // 妿æ¶é´é¨åæ¯ 00:00ï¼å设置为 08:00 |
| | | if (rawStart.getHours() === 8 || rawStart.getHours() === 0) { |
| | | rawStart.setHours(8, 0, 0, 0); |
| | | } |
| | | if (rawEnd.getHours() === 8 || rawEnd.getHours() === 0) { |
| | | rawEnd.setHours(8, 0, 0, 0); |
| | | } |
| | | const startTime = formatDateTime(rawStart); |
| | | const endPlusOne = new Date(rawEnd); |
| | | endPlusOne.setDate(endPlusOne.getDate()); |
| | | const newEndTime = formatDateTime(endPlusOne); |
| | | const selectProcesses = procseeValue.value; |
| | | form.date1 = [startTime, newEndTime]; |
| | | request.post(`/report/teamOutput/${pageNum.value}/${total.pageSize}/${startTime}/${newEndTime}/${selectProcesses}`, filterData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | |
| | |
| | | } |
| | | }) |
| | | } |
| | | const formatDateTime = (date) => { |
| | | const year = date.getFullYear(); |
| | | const month = pad(date.getMonth() + 1); |
| | | const day = pad(date.getDate()); |
| | | const hour = pad(date.getHours()); |
| | | const minute = pad(date.getMinutes()); |
| | | return `${year}-${month}-${day} ${hour}:${minute}:00`; |
| | | }; |
| | | |
| | | |
| | | //ç¹å»æ¥è¯¢ |
| | | const getWorkOrder = () => { |
| | | gridOptions.loading = true |
| | | let startTime = form.date1[0] |
| | | let endTime = form.date1[1] |
| | | let selectProcesses = procseeValue.value |
| | | let date = new Date(endTime); // å°æ¥æå符串转为 Date 对象 |
| | | // ä½¿ç¨ setDate æ¹æ³å ä¸å¤© |
| | | date.setDate(date.getDate() + 1); |
| | | let newEndTime = date.toISOString().split('T')[0]; // è·å YYYY-MM-DD æ ¼å¼çå符串 |
| | | // åå§ form.date1 æ¯æ¥æå¯¹è±¡æ°ç» |
| | | const rawStart = new Date(form.date1[0]); |
| | | const rawEnd = new Date(form.date1[1]); |
| | | // 妿æ¶é´é¨åæ¯ 00:00ï¼å设置为 08:00 |
| | | if (rawStart.getHours() === 8 || rawStart.getHours() === 0) { |
| | | rawStart.setHours(8, 0, 0, 0); |
| | | } |
| | | if (rawEnd.getHours() === 8 || rawEnd.getHours() === 0) { |
| | | rawEnd.setHours(8, 0, 0, 0); |
| | | } |
| | | |
| | | const startTime = formatDateTime(rawStart); |
| | | const endPlusOne = new Date(rawEnd); |
| | | endPlusOne.setDate(endPlusOne.getDate()); |
| | | const newEndTime = formatDateTime(endPlusOne); |
| | | const selectProcesses = procseeValue.value; |
| | | form.date1 = [startTime, newEndTime]; |
| | | request.post(`/report/teamOutput/${pageNum.value}/${total.pageSize}/${startTime}/${newEndTime}/${selectProcesses}`, filterData.value).then((res) => { |
| | | |
| | | if (res.code == 200) { |
| | |
| | | produceList.forEach(item => { |
| | | item.mmTotal = sumMmValues(item.workProcessName); |
| | | }); |
| | | console.log(produceList) |
| | | xGrid.value.loadData(produceList) |
| | | gridOptions.loading = false |
| | | } else { |
| | |
| | | } |
| | | gridOptions.loading = true |
| | | |
| | | let startTime = form.date1[0] |
| | | let endTime = form.date1[1] |
| | | let date = new Date(endTime); // å°æ¥æå符串转为 Date 对象 |
| | | // ä½¿ç¨ setDate æ¹æ³å ä¸å¤© |
| | | date.setDate(date.getDate() + 1); |
| | | let newEndTime = date.toISOString().split('T')[0]; // è·å YYYY-MM-DD æ ¼å¼çå符串 |
| | | const rawStart = new Date(form.date1[0]); |
| | | const rawEnd = new Date(form.date1[1]); |
| | | // 妿æ¶é´é¨åæ¯ 00:00ï¼å设置为 08:00 |
| | | if (rawStart.getHours() === 8 || rawStart.getHours() === 0) { |
| | | rawStart.setHours(8, 0, 0, 0); |
| | | } |
| | | if (rawEnd.getHours() === 8 || rawEnd.getHours() === 0) { |
| | | rawEnd.setHours(8, 0, 0, 0); |
| | | } |
| | | const startTime = formatDateTime(rawStart); |
| | | const endPlusOne = new Date(rawEnd); |
| | | endPlusOne.setDate(endPlusOne.getDate()); |
| | | const newEndTime = formatDateTime(endPlusOne); |
| | | form.date1 = [startTime, newEndTime]; |
| | | request.post(`/report/teamOutput/1/${total.pageSize}/${startTime}/${newEndTime}/${selectProcesses}`, filterData.value).then((res) => { |
| | | |
| | | if (res.code == 200) { |
| | |
| | | { |
| | | field: 'project', width: 120, title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' } |
| | | }, |
| | | {field: 'batch', width: 90, title: t('order.batch')}, |
| | | {field: 'orderType', width: 90, title: t('order.orderType')}, |
| | | { |
| | | field: 'processId', width: 140, title: t('processCard.processId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' } |
| | | }, |
| | |
| | | |
| | | }) |
| | | } |
| | | |
| | | const handleCellDblClick = ({ row, column, cell, $event }) => { |
| | | VxeUI.clipboard.copy(row[column.property]) |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | |
| | | v-model="form.date1" |
| | | :start-placeholder="$t('basicData.startDate')" |
| | | :end-placeholder="$t('basicData.endDate')" |
| | | format="YYYY/MM/DD" |
| | | style="width: 250px" |
| | | format="YYYY/MM/DD HH:mm" |
| | | style="width: 350px" |
| | | type="daterange" |
| | | value-format="YYYY-MM-DD" |
| | | value-format="YYYY/MM/DD HH:mm" |
| | | /> |
| | | |
| | | <el-select v-model="procseeValue" clearable default-value="default_city" style="width: 120px"> |
| | |
| | | height="100%" |
| | | v-bind="gridOptions" |
| | | @filter-change="filterChanged" |
| | | @cell-dblclick="handleCellDblClick" |
| | | |
| | | > |
| | | <!-- @toolbar-button-click="toolbarButtonClickEvent"--> |
| | |
| | | width: 100%; |
| | | height: calc(100% - 35px); |
| | | } |
| | | .vxe-grid { |
| | | /* ç¦ç¨æµè§å¨é»è®¤éä¸ */ |
| | | -webkit-user-select: none; |
| | | -moz-user-select: none; |
| | | -ms-user-select: none; |
| | | user-select: none; |
| | | } |
| | | </style> |
| | |
| | | <script setup> |
| | | |
| | | import {reactive, ref} from "vue"; |
| | | import {onMounted, reactive, ref} from "vue"; |
| | | import {useRouter} from 'vue-router' |
| | | import request from "@/utils/request"; |
| | | import deepClone from "@/utils/deepClone"; |
| | | import {ElDatePicker, ElMessage} from "element-plus"; |
| | | import {useI18n} from 'vue-i18n' |
| | | //import {changeFilterEvent, filterChanged} from "@/hook" |
| | | import footSum from "@/hook/footSum" |
| | | import {addListener} from "@/hook/mouseMove"; |
| | | import {VxeUI} from "vxe-pc-ui"; |
| | | //è¯è¨è·å |
| | | const {t} = useI18n() |
| | | let router = useRouter() |
| | |
| | | }) |
| | | |
| | | //å·¥åº |
| | | const value = ref() |
| | | const valueProcess = ref() |
| | | |
| | | //æ ¹æ®ä»¥ä¸åæ®µæ±æ»æ¥è¯¢ |
| | | const stateValue = ref('') |
| | |
| | | let pageNum = ref(1) |
| | | let pageState = null |
| | | |
| | | |
| | | onMounted(() => { |
| | | //å¯ç¨è¡¨æ ¼æå¨éä¸ |
| | | addListener(xGrid.value, gridOptions) |
| | | }) |
| | | |
| | | //ç¬¬ä¸æ¬¡å è½½ |
| | | let selectProcesses = value.value |
| | | let selectProcesses = valueProcess.value |
| | | let inputVal = form.orderId |
| | | if (inputVal == '') { |
| | | inputVal = null |
| | |
| | | pageTotal: 0, |
| | | dataTotal: 0, |
| | | pageSize: 100 |
| | | }) |
| | | let newItem= ref({ |
| | | basic_name: 'å
¨é¨', |
| | | basic_type: 'product', |
| | | basic_category: 'process', |
| | | id: "001" |
| | | }) |
| | | //å®ä¹æ¥æ¶å è½½è¡¨å¤´ä¸ææ°æ® |
| | | const titleSelectJson = ref({ |
| | |
| | | produceList = produceList.value.concat(deepClone(res.data.data)) |
| | | titleSelectJson.value.processType = res.data.process |
| | | titleSelectJson.value.processType.splice(0,1) |
| | | xGrid.value.reloadData(produceList) |
| | | titleSelectJson.value.processType.unshift(newItem.value) |
| | | //xGrid.value.reloadData(produceList) |
| | | gridOptions.loading = false |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | |
| | | //页è翻页æ¥è¯¢ |
| | | const selectPageList = () => { |
| | | let inputVal = form.orderId |
| | | let selectProcesses = value.value |
| | | let selectProcesses = valueProcess.value |
| | | if (inputVal == '') { |
| | | inputVal = null |
| | | } |
| | |
| | | if (res.code == 200) { |
| | | total.value = res.data.total |
| | | produceList = deepClone(res.data.data) |
| | | produceList.forEach(item => { |
| | | // 妿 shape å¯è½æ¯åç¬¦ä¸²å°±ç¨ ==ï¼å¦æä¸å®æ¯æ°åå°±ç¨ === |
| | | item.shape = (item.shape == 2) ? t('order.alien') : t('order.universalShape'); |
| | | }); |
| | | xGrid.value.loadData(produceList) |
| | | gridOptions.loading = false |
| | | } else { |
| | |
| | | //ç¹å»æ¥è¯¢ |
| | | const getWorkOrder = () => { |
| | | gridOptions.loading = true |
| | | let selectProcesses = value.value |
| | | let selectProcesses = valueProcess.value |
| | | let inputVal = form.orderId |
| | | if (inputVal == '') { |
| | | inputVal = null |
| | |
| | | total.pageTotal = res.data.total.pageTotal |
| | | pageTotal.value = res.data.total |
| | | total.value = res.data.total |
| | | res.data.data.forEach(item => { |
| | | // 妿 shape å¯è½æ¯åç¬¦ä¸²å°±ç¨ ==ï¼å¦æä¸å®æ¯æ°åå°±ç¨ === |
| | | item.shape = (item.shape == 2) ? t('order.alien') : t('order.universalShape'); |
| | | }); |
| | | xGrid.value.loadData(res.data.data) |
| | | gridOptions.loading = false |
| | | } else { |
| | |
| | | filterData.value[column.property] = value |
| | | } |
| | | |
| | | getWorkOrder() |
| | | // let selectProcesses = value.value |
| | | // let optionVal=stateValue.value |
| | | // if (optionVal == '') { |
| | | // optionVal = null |
| | | // } |
| | | // request.post(`/report/workInProgress/1/${total.pageSize}/${inputVal}/${inputProject}/${selectProcesses}/${optionVal}`, filterData.value).then((res) => { |
| | | // |
| | | // if (res.code == 200) { |
| | | // total.dataTotal = res.data.total.total*1 |
| | | // total.pageTotal=parseInt(res.data.total) |
| | | // pageNum.value=1 |
| | | // produceList = deepClone(res.data.data) |
| | | // console.log(res.data.data) |
| | | // xGrid.value.reloadData(produceList) |
| | | // gridOptions.loading=false |
| | | // } else { |
| | | // ElMessage.warning(res.msg) |
| | | // } |
| | | // //handleUpdateData(produceList) |
| | | // }) |
| | | let selectProcesses = valueProcess.value |
| | | let inputVal = form.orderId |
| | | if (inputVal == '') { |
| | | inputVal = null |
| | | } |
| | | let inputProject = form.project |
| | | if (inputProject == '') { |
| | | inputProject = null |
| | | } |
| | | let optionVal=stateValue.value |
| | | if (optionVal == '') { |
| | | optionVal = null |
| | | } |
| | | request.post(`/report/workInProgress/${pageNum.value}/${total.pageSize}/${inputVal}/${inputProject}/${selectProcesses}/${optionVal}`, filterData.value).then((res) => { |
| | | |
| | | if (res.code == 200) { |
| | | total.dataTotal = res.data.total.total * 1 |
| | | total.pageTotal = res.data.total.pageTotal |
| | | pageTotal.value = res.data.total |
| | | total.value = res.data.total |
| | | res.data.data.forEach(item => { |
| | | // 妿 shape å¯è½æ¯åç¬¦ä¸²å°±ç¨ ==ï¼å¦æä¸å®æ¯æ°åå°±ç¨ === |
| | | item.shape = (item.shape == 2) ? t('order.alien') : t('order.universalShape'); |
| | | }); |
| | | xGrid.value.reloadData(res.data.data) |
| | | gridOptions.loading = false |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | //handleUpdateData(produceList) |
| | | }) |
| | | |
| | | |
| | | } |
| | | |
| | |
| | | {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50}, |
| | | { |
| | | field: 'thisProcess', width: 120, title: t('report.workingProcedure'), |
| | | visible: true |
| | | visible: true,filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | |
| | | }, |
| | | { |
| | | field: 'orderId', |
| | |
| | | {field: 'orderNumber', width: 100, title: t('order.OrderNum'),visible: true}, |
| | | {field: 'technologyNumber', width: 120, title: t('processCard.technologyNumber'),filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, showOverflow: "ellipsis",visible: true}, |
| | | {field: 'bend_radius', width: 100, title: t('order.bendRadius'),visible: true}, |
| | | {field: 'shape', width: 100, title: t('order.shape'),visible: true}, |
| | | {field: 'process', width: 120, title: t('craft.process'),visible: true}, |
| | | {field: 'quantity', width: 120, title: t('order.quantity'),visible: true}, |
| | |
| | | {field: 'stockNum', width: 120, title: t('productStock.inventoryQuantity'),visible: true}, |
| | | {field: 'stockArea', width: 120, title: t('report.inventoryArea'),visible: true}, |
| | | {field: 'productName', width: 120, title: t('order.product'),visible: true}, |
| | | {field: 'glassName', width: 120, title: t('report.workProcessName'),visible: true}, |
| | | {field: 'bendRadius', width: 120, title: t('order.bendRadius'),visible: true}, |
| | | {field: 'teamsGroupsName', width: 110,title: 'ä¸å·¥åºæ¥å·¥',showOverflow:"ellipsis",filters: [{data: ''}], |
| | | {field: 'teamsGroupsName', width: 110,title: t('report.teamsGroupsName'),showOverflow:"ellipsis",filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}}, |
| | | ],//表头æé® |
| | | |
| | |
| | | const List = ["quantity",'stockNum','stockArea',] |
| | | if (List.includes(column.field)) { |
| | | //return footSum(data, column.field) |
| | | return total.value?.[column.field] ?? 0 |
| | | return footSum(data, column.field) |
| | | } |
| | | return '' |
| | | }) |
| | |
| | | }) |
| | | |
| | | function exportExcel(url, fileName,date) { |
| | | let processes = value.value |
| | | let processes = valueProcess.value |
| | | let inputVal = form.orderId |
| | | if (inputVal == '') { |
| | | inputVal = null |
| | |
| | | // VXETable.updateColumns(tableRef.value, columns); |
| | | // } |
| | | } |
| | | |
| | | const handleCellDblClick = ({ row, column, cell, $event }) => { |
| | | VxeUI.clipboard.copy(row[column.property]) |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | | <div style="width: 100%;height: 100%"> |
| | | <div class="head"> |
| | | |
| | | <el-input v-model="form.orderId" :placeholder="$t('order.orderId')" clearable style="width: 130px"></el-input> |
| | | <el-input v-model="form.orderId" :placeholder="$t('order.orderId')" clearable style="width: 130px;display: none"></el-input> |
| | | |
| | | <el-input v-model="form.project" clearable :placeholder="$t('order.project')" style="width: 130px"></el-input> |
| | | |
| | | <el-select v-model="stateValue" class="m-2" :placeholder="$t('processCard.pleaseSelect')" clearable allow-create filterable style="width: 140px"> |
| | | <el-input v-model="form.project" clearable :placeholder="$t('order.project')" style="width: 130px;display: none"></el-input> |
| | | |
| | | <el-select v-model="stateValue" class="m-2" :placeholder="$t('processCard.pleaseSelect')" clearable allow-create filterable style="width: 140px;display: none"> |
| | | <el-option |
| | | v-for="item in stateOptions" |
| | | :key="item.value" |
| | |
| | | :value="item.value" |
| | | /> |
| | | </el-select> |
| | | |
| | | <el-select v-model="value" clearable :placeholder="$t('reportingWorks.selectProcess')" default-value="default_city" style="width: 120px"> |
| | | {{$t('report.workingProcedure')}}ï¼ |
| | | <el-select v-model="valueProcess" clearable :placeholder="$t('reportingWorks.selectProcess')" default-value="default_city" style="width: 120px"> |
| | | <el-option |
| | | v-for="item in titleSelectJson['processType']" |
| | | :key="item.id" |
| | |
| | | :value="item.basic_name" |
| | | /> |
| | | </el-select> |
| | | |
| | | <el-button type="primary" @click="getWorkOrder">{{$t('basicData.search')}}</el-button> |
| | | </div> |
| | | <div class="main-table"> |
| | |
| | | v-bind="gridOptions" |
| | | :optimize="true" |
| | | @filter-change="filterChanged" |
| | | |
| | | @cell-dblclick="handleCellDblClick" |
| | | > |
| | | <!-- @toolbar-button-click="toolbarButtonClickEvent"--> |
| | | <!-- 䏿æ¾ç¤ºææä¿¡æ¯ææ§½--> |
| | |
| | | width: 100%; |
| | | height: calc(100% - 35px); |
| | | } |
| | | .vxe-grid { |
| | | /* ç¦ç¨æµè§å¨é»è®¤éä¸ */ |
| | | -webkit-user-select: none; |
| | | -moz-user-select: none; |
| | | -ms-user-select: none; |
| | | user-select: none; |
| | | } |
| | | </style> |
| New file |
| | |
| | | <script setup> |
| | | |
| | | import {onMounted, reactive, ref} from "vue"; |
| | | import {useRouter} from 'vue-router' |
| | | import request from "@/utils/request"; |
| | | import deepClone from "@/utils/deepClone"; |
| | | import {ElCheckbox, ElDatePicker, ElMessage} from "element-plus"; |
| | | import {useI18n} from 'vue-i18n' |
| | | import { filterChanged} from "@/hook" |
| | | import footSum from "@/hook/footSum" |
| | | import {addListener} from "@/hook/mouseMove"; |
| | | import {VxeUI} from "vxe-pc-ui"; |
| | | //è¯è¨è·å |
| | | const {t} = useI18n() |
| | | let router = useRouter() |
| | | let filterData = ref({}) |
| | | //æäº¤ç表å |
| | | const form = reactive({ |
| | | date1: '', |
| | | orderId: '', |
| | | project: '' |
| | | }) |
| | | |
| | | //项ç®åç§°æ±æ» |
| | | let projectSummary= ref(1) |
| | | //å·¥åº |
| | | const value = ref() |
| | | |
| | | //æ ¹æ®ä»¥ä¸åæ®µæ±æ»æ¥è¯¢ |
| | | const stateValue = ref('') |
| | | const stateOptions = [ |
| | | { |
| | | value: 1, |
| | | label: t('order.orderId'), |
| | | }, |
| | | { |
| | | value: 2, |
| | | label: t('processCard.processId'), |
| | | }, |
| | | // { |
| | | // value: 3, |
| | | // label: t('order.project'), |
| | | // }, |
| | | { |
| | | value: 4, |
| | | label: t('processCard.technologyNumber'), |
| | | }, |
| | | ] |
| | | |
| | | //表尾æ±å |
| | | const sumNum = (list, field) => { |
| | | let count = 0 |
| | | list.forEach(item => { |
| | | count += Number(item[field]) |
| | | }) |
| | | return count.toFixed(2) |
| | | } |
| | | |
| | | //å®ä¹æ»å¨æ¡é«åº¦ |
| | | let scrollTop = ref(null) |
| | | let scrollHeight = ref(null) |
| | | let clientHeight = ref(null) |
| | | const scrollEvnt = (row) => { |
| | | // å
容é«åº¦ |
| | | scrollTop.value = row.$event.target.scrollTop |
| | | scrollHeight.value = row.$event.target.scrollHeight |
| | | clientHeight.value = row.$event.target.clientHeight |
| | | } |
| | | |
| | | |
| | | //å®ä¹é¡µé¢æ»é¡µæ° |
| | | let pageTotal = ref('') |
| | | //å®ä¹æ°æ®è¿åç»æ |
| | | let produceList = ref([]) |
| | | //å®ä¹å½åé¡µæ° |
| | | let pageNum = ref(1) |
| | | let pageState = null |
| | | |
| | | onMounted(() => { |
| | | //å¯ç¨è¡¨æ ¼æå¨éä¸ |
| | | addListener(xGrid.value, gridOptions) |
| | | }) |
| | | |
| | | //ç¬¬ä¸æ¬¡å è½½ |
| | | let selectProcesses = value.value |
| | | let inputVal = form.orderId |
| | | if (inputVal == '') { |
| | | inputVal = null |
| | | } |
| | | let inputProject = form.project |
| | | if (inputProject == '') { |
| | | inputProject = null |
| | | } |
| | | let total = reactive({ |
| | | pageTotal: 0, |
| | | dataTotal: 0, |
| | | pageSize: 100 |
| | | }) |
| | | let newItem= ref({ |
| | | basic_name: 'å
¨é¨', |
| | | basic_type: 'product', |
| | | basic_category: 'process', |
| | | id: "001" |
| | | }) |
| | | //å®ä¹æ¥æ¶å è½½è¡¨å¤´ä¸ææ°æ® |
| | | const titleSelectJson = ref({ |
| | | processType: [], |
| | | }) |
| | | let optionVal=projectSummary.value |
| | | if (optionVal == '') { |
| | | optionVal = null |
| | | } |
| | | //ç¬¬ä¸æ¬¡å è½½æ°æ® |
| | | request.post(`/report/workInProgressCombination/1/${total.pageSize}/${selectProcesses}/${inputVal}/${inputProject}/${optionVal}`, filterData.value).then((res) => { |
| | | |
| | | if (res.code == 200) { |
| | | // total.dataTotal = res.data.total.total*1 |
| | | // total.pageTotal= res.data.total.pageTotal |
| | | // pageTotal.value = res.data.total |
| | | total.value = res.data.total |
| | | // produceList = produceList.value.concat(deepClone(res.data.data)) |
| | | titleSelectJson.value.processType = res.data.process |
| | | titleSelectJson.value.processType.splice(0,1) |
| | | titleSelectJson.value.processType.unshift(newItem.value) |
| | | xGrid.value.reloadData(produceList) |
| | | gridOptions.loading = false |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | }) |
| | | |
| | | //页è翻页æ¥è¯¢ |
| | | const selectPageList = () => { |
| | | let inputVal = form.orderId |
| | | let selectProcesses = value.value |
| | | if (inputVal == '') { |
| | | inputVal = null |
| | | } |
| | | let inputProject = form.project |
| | | if (inputProject == '') { |
| | | inputProject = null |
| | | } |
| | | let optionVal=projectSummary.value |
| | | if (optionVal == '') { |
| | | optionVal = null |
| | | } |
| | | request.post(`/report/workInProgressCombination/${pageNum.value}/${total.pageSize}/${inputVal}/${inputProject}/${selectProcesses}/${optionVal}`, filterData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | total.value = res.data.total |
| | | produceList = deepClone(res.data.data) |
| | | produceList.forEach(item => { |
| | | // 妿 shape å¯è½æ¯åç¬¦ä¸²å°±ç¨ ==ï¼å¦æä¸å®æ¯æ°åå°±ç¨ === |
| | | item.shape = (item.shape == 2) ? t('order.alien') : t('order.universalShape'); |
| | | }); |
| | | xGrid.value.loadData(produceList) |
| | | gridOptions.loading = false |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | //ç¹å»æ¥è¯¢ |
| | | const getWorkOrder = () => { |
| | | gridOptions.loading = true |
| | | let selectProcesses = value.value |
| | | let inputVal = form.orderId |
| | | if (inputVal == '') { |
| | | inputVal = null |
| | | } |
| | | let inputProject = form.project |
| | | if (inputProject == '') { |
| | | inputProject = null |
| | | } |
| | | let optionVal=projectSummary.value |
| | | if (optionVal == '') { |
| | | optionVal = null |
| | | } |
| | | request.post(`/report/workInProgressCombination/${pageNum.value}/${total.pageSize}/${inputVal}/${inputProject}/${selectProcesses}/${optionVal}`, filterData.value).then((res) => { |
| | | |
| | | if (res.code == 200) { |
| | | // total.dataTotal = res.data.total.total * 1 |
| | | // total.pageTotal = res.data.total.pageTotal |
| | | // pageTotal.value = res.data.total |
| | | total.value = res.data.total |
| | | xGrid.value.loadData(res.data.data) |
| | | gridOptions.loading = false |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | //页è跳转 |
| | | const handlePageChange = ({currentPage, pageSize}) => { |
| | | pageNum.value = currentPage |
| | | total.pageTotal = pageSize |
| | | selectPageList() |
| | | } |
| | | |
| | | |
| | | /*使ç¨çéï¼å端è·åæ°æ®*/ |
| | | const changeFilterEvent = (event, option, $panel,) => { |
| | | // æå¨è§¦åçé |
| | | $panel.changeOption(event, !!option.data, option) |
| | | } |
| | | |
| | | |
| | | |
| | | /*å端è¿åç»æå¤å±åµå¥å±ç¤º*/ |
| | | const hasDecimal = (value) => { |
| | | const regex = /\./; // å®ä¹æ£å表达å¼ï¼æ¥æ¾å°æ°ç¹ |
| | | return regex.test(value); // è¿åtrue/false |
| | | } |
| | | |
| | | //åç»ä»¶æ¥æ¶åæ° |
| | | const xGrid = ref() |
| | | const gridOptions = reactive({ |
| | | loading: true, |
| | | border: "full",//è¡¨æ ¼å è¾¹æ¡ |
| | | keepSource: true,//ä¿ææºæ°æ® |
| | | align: 'center',//æåå±
ä¸ |
| | | stripe: true,//æé©¬çº¹ |
| | | rowConfig: {isCurrent: true, isHover: true, height: 30},//é¼ æ ç§»å¨æéæ©é«äº® |
| | | id: 'WorkInProgress', |
| | | showFooter: true,//æ¾ç¤ºè |
| | | printConfig: {}, |
| | | importConfig: {}, |
| | | exportConfig: {}, |
| | | scrollY: {enabled: true},//å¼å¯èææ»å¨ |
| | | showOverflow: true, |
| | | columnConfig: { |
| | | resizable: true, |
| | | useKey: true |
| | | }, |
| | | filterConfig: { //çéé
置项 |
| | | // remote: true |
| | | }, |
| | | customConfig: { |
| | | storage: true |
| | | }, |
| | | editConfig: { |
| | | trigger: 'click', |
| | | mode: 'row', |
| | | showStatus: true |
| | | },//è¡¨å¤´åæ° |
| | | columns: [ |
| | | {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50}, |
| | | {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50}, |
| | | { |
| | | field: 'thisProcess', width: 120, title: t('report.workingProcedure'), |
| | | visible: true, filters: [{data: ''}],slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged, |
| | | }, |
| | | { |
| | | field: 'project', width: 220, title: t('order.project'), filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged, |
| | | visible: true |
| | | }, |
| | | {field: 'stockNum', width: 120, title: t('productStock.inventoryQuantity'),visible: true}, |
| | | {field: 'stockArea', width: 120, title: t('report.inventoryArea'),visible: true}, |
| | | {field: 'glassName', width: 420, title: t('report.workProcessName'),visible: true, filters: [{data: ''}] |
| | | ,slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged,}, |
| | | ],//表头æé® |
| | | |
| | | toolbarConfig: { |
| | | // buttons: [{ |
| | | // |
| | | // }], |
| | | slots: { |
| | | tools: 'toolbar_buttons' |
| | | }, |
| | | // import: false, |
| | | // export: true, |
| | | // print: true, |
| | | zoom: true, |
| | | custom: true |
| | | }, |
| | | data: [],//table bodyå®é
æ°æ® |
| | | //è鍿±å |
| | | footerMethod ({ columns, data }) {//页è彿° |
| | | return[ |
| | | columns.map((column, columnIndex) => { |
| | | if (columnIndex === 0) { |
| | | return t('basicData.total') |
| | | } |
| | | const List = ["quantity",'stockNum','stockArea',] |
| | | if (List.includes(column.field)) { |
| | | //return footSum(data, column.field) |
| | | return footSum(data, column.field) |
| | | } |
| | | return '' |
| | | }) |
| | | ] |
| | | }, |
| | | |
| | | }) |
| | | |
| | | function onlandingSequenceChange(checked) { |
| | | projectSummary.value = checked ? 0 : 1 |
| | | } |
| | | |
| | | function exportExcel(url, fileName,date) { |
| | | let processes = value.value |
| | | let inputVal = form.orderId |
| | | if (inputVal == '') { |
| | | inputVal = null |
| | | } |
| | | let inputProject = form.project |
| | | if (inputProject == '') { |
| | | inputProject = null |
| | | } |
| | | if(date===null){ |
| | | ElMessage.warning(t('report.pleaseSelectADateFirst')) |
| | | return |
| | | } |
| | | |
| | | if(processes===null){ |
| | | ElMessage.warning(t('report.pleaseSelectAProcessFirst')) |
| | | return |
| | | } |
| | | |
| | | const date1 = new Date(date[0]); |
| | | const date2 = new Date(date[1]); |
| | | const timeDiff = Math.abs(date2.getTime() - date1.getTime()); |
| | | const daysDiff = timeDiff / (1000 * 3600 * 24); |
| | | if(Math.floor(daysDiff)>180){ |
| | | ElMessage.warning(t('report.theFilteringTimeForExportCannotExceed180Days')) |
| | | return |
| | | } |
| | | let dataMp = ref({ |
| | | date: date, |
| | | processes: processes, |
| | | orderId: inputVal, |
| | | project: inputProject |
| | | }) |
| | | request.post(url,dataMp.value,{responseType :'blob'}).then(res => { |
| | | const blob = new Blob([res]) |
| | | if ('download' in document.createElement('a')) { // éIEä¸è½½ |
| | | const elink = document.createElement('a') |
| | | elink.download = `${fileName}.xlsx` |
| | | elink.style.display = 'none' |
| | | elink.href = URL.createObjectURL(blob) |
| | | document.body.appendChild(elink) |
| | | elink.click() |
| | | URL.revokeObjectURL(elink.href) // éæ¾URL 对象 |
| | | document.body.removeChild(elink) |
| | | } else { // IE10+ä¸è½½ |
| | | navigator.msSaveBlob(blob, fileName) |
| | | } |
| | | |
| | | }) |
| | | } |
| | | |
| | | const handleCellDblClick = ({ row, column, cell, $event }) => { |
| | | VxeUI.clipboard.copy(row[column.property]) |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | | <div style="width: 100%;height: 100%"> |
| | | <div class="head"> |
| | | <el-input v-model="form.orderId" :placeholder="$t('order.orderId')" clearable style="width: 130px;display: none"></el-input> |
| | | |
| | | <el-input v-model="form.project" clearable :placeholder="$t('order.project')" style="width: 130px;display: none"></el-input> |
| | | {{$t('report.workingProcedure')}}ï¼ |
| | | <el-select v-model="value" clearable :placeholder="$t('reportingWorks.selectProcess')" default-value="default_city" style="width: 120px"> |
| | | <el-option |
| | | v-for="item in titleSelectJson['processType']" |
| | | :key="item.id" |
| | | :label="item.basic_name" |
| | | :value="item.basic_name" |
| | | /> |
| | | </el-select> |
| | | |
| | | <el-checkbox |
| | | :model-value="projectSummary === 0" |
| | | @change="onlandingSequenceChange" |
| | | > |
| | | {{ t('order.project') }} |
| | | </el-checkbox> |
| | | |
| | | <el-button type="primary" @click="getWorkOrder">{{$t('basicData.search')}}</el-button> |
| | | </div> |
| | | <div class="main-table"> |
| | | <vxe-grid |
| | | ref="xGrid" |
| | | class="mytable-scrollbar" |
| | | height="100%" |
| | | v-bind="gridOptions" |
| | | :optimize="true" |
| | | @cell-dblclick="handleCellDblClick" |
| | | > |
| | | <!-- @toolbar-button-click="toolbarButtonClickEvent"--> |
| | | <!-- 䏿æ¾ç¤ºææä¿¡æ¯ææ§½--> |
| | | <template #content="{ row }"> |
| | | <ul class="expand-wrapper"> |
| | | <li v-for="(item,index) in gridOptions.columns" v-show="item.field!=undefined "> |
| | | <span style="font-weight: bold">{{ item.title + ': ' }}</span> |
| | | <span>{{ row[item.field] }}</span> |
| | | </li> |
| | | </ul> |
| | | </template> |
| | | |
| | | <!--左边åºå®æ¾ç¤ºçææ§½--> |
| | | <template #button_slot="{ row }"> |
| | | <el-button link size="small" type="primary" @click="getTableRow(row,'edit')">{{$t('basicData.edit')}}</el-button> |
| | | <el-button link size="small" type="primary" @click="getTableRow(row,'setType')">{{$t('basicData.cancelReview')}}</el-button> |
| | | <el-button link size="small" type="primary" @click="getTableRow(row,'delete')">{{$t('basicData.delete')}}</el-button> |
| | | </template> |
| | | |
| | | <template #num1_filter="{ column, $panel }"> |
| | | <div> |
| | | <div v-for="(option, index) in column.filters" :key="index"> |
| | | <input type="text" |
| | | v-model="option.data" |
| | | @keyup.enter.native="$panel.confirmFilter()" |
| | | @input="changeFilterEvent($event, option, $panel)"/> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <!-- <template #pager>--> |
| | | <!-- <!–ä½¿ç¨ pager ææ§½–>--> |
| | | <!-- <!– 'PrevJump','NextJump', –>--> |
| | | <!-- <vxe-pager--> |
| | | <!-- v-model:current-page="pageNum"--> |
| | | <!-- v-model:page-size="total.pageSize"--> |
| | | <!-- v-model:pager-count="total.pageTotal"--> |
| | | <!-- :layouts="[ 'PrevPage', 'Jump','PageCount', 'NextPage', 'Total']"--> |
| | | <!-- :total="total.dataTotal"--> |
| | | <!-- @page-change="handlePageChange"--> |
| | | <!-- >--> |
| | | <!-- </vxe-pager>--> |
| | | <!-- </template>--> |
| | | <template #toolbar_buttons> |
| | | <vxe-button style="margin-right: 0.5rem" |
| | | @click="exportExcel('/report/exportWorkInProgressCombination', |
| | | t('report.WorkInProgressCombination'), |
| | | form.date1)"> |
| | | {{t('basicData.export')}}</vxe-button> |
| | | </template> |
| | | |
| | | </vxe-grid> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | .head{ |
| | | width: 100%; |
| | | height: 35px; |
| | | } |
| | | |
| | | .main-table{ |
| | | width: 100%; |
| | | height: calc(100% - 35px); |
| | | } |
| | | .vxe-grid { |
| | | /* ç¦ç¨æµè§å¨é»è®¤éä¸ */ |
| | | -webkit-user-select: none; |
| | | -moz-user-select: none; |
| | | -ms-user-select: none; |
| | | user-select: none; |
| | | } |
| | | </style> |
| | |
| | | classes: '', |
| | | //è´£ä»»å·¥åº |
| | | responsibleProcess: '', |
| | | //å
è£
æ¹å¼ |
| | | packagingMethod:'', |
| | | order: { |
| | | //客æ·ç¼å· |
| | | customerId: '', |
| | |
| | | |
| | | }) |
| | | |
| | | let btnValue=company.storageBtn |
| | | let teamsTypeValue=company.teamsType |
| | | //æ¯å¦ç¹å»æ¥å·¥å
¥åº |
| | | let storageBtn = ref(false) |
| | | //ç®±å· åºä½ 夿³¨ |
| | | const storageRegion = ref(null); |
| | | const container = ref(null); |
| | | const remark = ref(null); |
| | | |
| | | //å
è£
æ¹å¼ |
| | | const mannerPacking = ref(null) |
| | | const mannerPackingOp = [ |
| | | // { |
| | | // value: t('reportingWorks.early'), |
| | | // label: t('reportingWorks.early'), |
| | | // }, |
| | | // { |
| | | // value: t('reportingWorks.nightShift'), |
| | | // label: t('reportingWorks.nightShift'), |
| | | // }, |
| | | { |
| | | value: 'æ¨ç®±', |
| | | label: 'æ¨ç®±', |
| | | }, |
| | | { |
| | | value: 'éæ¶', |
| | | label: 'éæ¶', |
| | | }, |
| | | { |
| | | value: 'åæ¶', |
| | | label: 'åæ¶', |
| | | }, |
| | | ] |
| | | |
| | | |
| | | let inputDisabled = ref(false) |
| | |
| | | && titleUploadData.value.thisProcess!=null){ |
| | | getWork() |
| | | getQuantity() |
| | | |
| | | } |
| | | } |
| | | } |
| | |
| | | }, |
| | | toolbarConfig: {//表头æé® |
| | | buttons: [ |
| | | // {code: 'empty', name: 'æ¸
空æ¥å·¥æ°é'}, |
| | | // {code: 'sameCompletion', name: 'å®å·¥ç¸å'}, |
| | | // {code: 'sameDamage', name: 'æ¬¡ç ´ç¸å'}, |
| | | // {code: 'sameOneCompletion', name: 'å®å·¥ä¸åç¸å'}, |
| | | // {code: 'sameOneDamage', name: 'æ¬¡ç ´ä¸åç¸å'}, |
| | | {code: 'saveReportingWork', name: t('basicData.save'), status: 'primary', icon: 'vxe-icon-save',disabled:true}, |
| | | {code: 'saveReportingWorkReview', name: t('reportingWorks.saveAndReview'), status: 'primary', icon: 'vxe-icon-save',disabled:true}, |
| | | {code: 'saveWorkStorage', name: t('reportingWorks.saveWorkStorage'), status: 'primary', icon: 'vxe-icon-save'}, |
| | | ], |
| | | // import: false, |
| | | // export: true, |
| | | // print: true, |
| | | zoom: true, |
| | | custom: true |
| | | }, |
| | |
| | | // }) |
| | | |
| | | break |
| | | } |
| | | case 'saveWorkStorage':{ |
| | | if(xGrid.value.getTableData().fullData.length===0){ |
| | | ElMessage.warning(t('reportingWorks.selectProcessCardData')) |
| | | return |
| | | } |
| | | const device = titleUploadData.value.deviceName |
| | | if(device === null || device === undefined || device === ''){ |
| | | ElMessage.error(t('reportingWorks.selectWorkReportingEquipment')) |
| | | return |
| | | } |
| | | const teamsGroupsName = titleUploadData.value.teamsGroupsName |
| | | if(teamsGroupsName === null || teamsGroupsName === undefined || teamsGroupsName === ''){ |
| | | ElMessage.error(t('reportingWorks.selectWorkReportingTeam')) |
| | | return |
| | | } |
| | | |
| | | if (mannerPacking.value === null || mannerPacking.value === undefined || mannerPacking.value === ''){ |
| | | ElMessage.error(t('reportingWorks.msgMannerPacking')) |
| | | return |
| | | } |
| | | const parts = technologicalProcess.split('->'); |
| | | const last = parts[parts.length - 1]; |
| | | let processId = titleUploadData.value.processId |
| | | //å¹é
â/âååå符串 |
| | | const regex = /([^\/]+)\/([^\/]+)/; |
| | | //æ¥æ¾å¹é
çå符串 |
| | | const resultProcessId = processId.match(regex); |
| | | //æµç¨å¡å· |
| | | let processIdStr = resultProcessId[1]; |
| | | //å±å· |
| | | let technologyStr = resultProcessId[2]; |
| | | if (last != titleUploadData.value.thisProcess){ |
| | | ElMessage.error('è¯·éæ©æåå·¥åºæ¥å·¥å
¥åº') |
| | | return |
| | | } |
| | | storageBtn.value = true |
| | | //æ¥å·¥æ°å¢ |
| | | saveReportingWork(0,'save') |
| | | |
| | | } |
| | | } |
| | | } |
| | |
| | | //ç¬¬ä¸æ¬¡å è½½æ°æ® |
| | | let groupChangeProcess = ref(false)//ç¨äºæ¬çç»æ¾ç¤ºé®é¢ |
| | | const initTiltle = async () => { |
| | | hideButton() |
| | | await request.post(`/reportingWork/selectProcess/${user.user.userId}`).then((res) => { |
| | | if (res.code == 200) { |
| | | titleSelectJson.value.processType = res.data.process |
| | |
| | | return false |
| | | } |
| | | } |
| | | |
| | | //å
è£
æ¹å¼ |
| | | titleUploadData.value.packagingMethod = mannerPacking.value |
| | | titleUploadData.value.creator = user.user.userName |
| | | titleUploadData.value.creatorId = user.user.userId |
| | | const requestDetailData = xGrid.value.getTableData().fullData.filter((row) => { |
| | |
| | | request.post(`/reportingWork/saveReportingWork`,requestData).then(res =>{ |
| | | if (res.code == 200){ |
| | | ElMessage.success(t('reportingWorks.successfulJobApplication')) |
| | | //æ¥å·¥å
¥åº |
| | | if(storageBtn.value == true){ |
| | | getStorageWork(); |
| | | } |
| | | router.push({path:'/main/reportingWorks/AddReportingWork',query:{processId:titleUploadData.value.processId,random:Math.random()}}) |
| | | }else{ |
| | | const errorObj = JSON.parse(res.msg) |
| | |
| | | |
| | | //ä¸ææ¬¾éæ©å·¥åºæ¶æ¥è¯¢ |
| | | const getWork = () => { |
| | | |
| | | let processId = titleUploadData.value.processId |
| | | if (processId == "" || processId == null) { |
| | | ElMessage.warning(t('reportingWorks.theProcessCardNumberCannotBeEmpty')) |
| | |
| | | //设å¤ä¸ææ¡ |
| | | titleSelectJson.value.deviceType = res.data.device |
| | | //çç»ä¸ææ¡ |
| | | //titleSelectJson.value.teamsType = res.data.teams |
| | | if (teamsTypeValue==true){ |
| | | titleSelectJson.value.teamsType = res.data.teams |
| | | } |
| | | |
| | | //å½åæµç¨å¡å·¥åº |
| | | titleSelectJson.value.thisProcessType = res.data.thisProcess |
| | | //åå²çç» |
| | |
| | | } |
| | | }); |
| | | xGrid.value.reloadData(modifiedCollection) |
| | | hideButton() |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | } |
| | |
| | | } |
| | | }) |
| | | |
| | | |
| | | //æ¥å·¥å
¥åºæ¹æ³ |
| | | const getStorageWork = () => { |
| | | let processId = titleUploadData.value.processId |
| | | //å¹é
â/âååå符串 |
| | | const regex = /([^\/]+)\/([^\/]+)/; |
| | | //æ¥æ¾å¹é
çå符串 |
| | | const resultProcessId = processId.match(regex); |
| | | //æµç¨å¡å· |
| | | let processIdStr = resultProcessId[1]; |
| | | //å±å· |
| | | let technologyStr = resultProcessId[2]; |
| | | //å¼å§å¤çå
¥åºéè¦çæ°æ® |
| | | let rawData = xGrid.value.getTableData().fullData |
| | | const seen = new Set(); |
| | | const result = rawData.filter(item => { |
| | | // 1. å
æ completedQuantity 为 0 çåé¤ |
| | | if (item.completedQuantity === 0) { |
| | | return false; |
| | | } |
| | | // 2. éå°ç¸å order_numberï¼åªä¿çç¬¬ä¸æ¬¡ï¼åé¢é½ä¸¢å¼ |
| | | if (seen.has(item.order_number)) { |
| | | return false; |
| | | } |
| | | seen.add(item.order_number); |
| | | return true; |
| | | }); |
| | | |
| | | // ç»æ¯æ¡è®°å½è¿½å order åæ®µ |
| | | const resultData = result.map(item => ({ |
| | | ...item, |
| | | order: { |
| | | orderId: titleUploadData.value.orderId |
| | | }, |
| | | processId:processIdStr, |
| | | orderNumber:item.order_number |
| | | })); |
| | | let flowData = ref({ |
| | | decValue:company.decValue, |
| | | userId: user.user.userId, |
| | | userName: user.user.userName, |
| | | storageRegion: storageRegion.value, |
| | | remark: remark.value, |
| | | container: container.value, |
| | | flowCard: resultData, |
| | | }) |
| | | //è°ç¨å
¥åºæ¥å£ |
| | | request.post("/finishedGoodsInventory/addSelectWarehousing",flowData.value).then((res) => { |
| | | if(res.code==200 && res.data==="true"){ |
| | | ElMessage.success(t('productStock.receivedSuccessfully')) |
| | | // router.push({path:'/maiggn/productStock/CreateProductStock',query:{random:Math.random()}}) |
| | | }else if(res.data==="false1"){ |
| | | ElMessage.warning(t('basicData.msg.quantityError')) |
| | | }else if(res.data==="false2"){ |
| | | ElMessage.warning(t('basicData.msg.dataDoesNotExist')) |
| | | }else{ |
| | | ElMessage.warning(t('productStock.entryFailure')) |
| | | } |
| | | }).catch((err)=>{ |
| | | ElMessage.error(t('basicData.msg.ServerConnectionError')) |
| | | router.push("/login") |
| | | }) |
| | | } |
| | | |
| | | const hideButton = () => { |
| | | // è·åæåä¸éå·¥åº |
| | | const parts = technologicalProcess.split('->'); |
| | | let last = parts[parts.length - 1]; |
| | | if (last === '') { |
| | | last = null; |
| | | } |
| | | const els = document.querySelectorAll('.inventory_content'); |
| | | |
| | | // æ¯å¦æ¾ç¤ºæ¥å·¥å
¥åºç¸å
³æé®å
容 |
| | | if (btnValue == false || last != titleUploadData.value.thisProcess) { |
| | | els.forEach(el => { |
| | | el.style.display = 'none'; |
| | | }); |
| | | } else { |
| | | els.forEach(el => { |
| | | el.style.display = ''; |
| | | }); |
| | | // é¿å
é夿·»å æé® |
| | | const exists = gridOptions.toolbarConfig.buttons.some(btn => btn.code === 'saveWorkStorage'); |
| | | if (!exists) { |
| | | let buttons = { |
| | | code: 'saveWorkStorage', |
| | | name: t('reportingWorks.saveWorkStorage'), |
| | | status: 'primary', |
| | | icon: 'vxe-icon-save' |
| | | }; |
| | | gridOptions.toolbarConfig.buttons.push(buttons); |
| | | } |
| | | } |
| | | |
| | | // è¿æ»¤æé®ï¼éè saveWorkStorage æé®æ¶æº |
| | | gridOptions.toolbarConfig.buttons = gridOptions.toolbarConfig.buttons.filter(button => { |
| | | if ((btnValue == false || last != titleUploadData.value.thisProcess) && button.code === 'saveWorkStorage') { |
| | | return false; |
| | | } |
| | | return true; |
| | | }); |
| | | }; |
| | | |
| | | |
| | | |
| | | const changeGroup = (value)=> { |
| | | //夿åå²çç»æ¯å¦ææ¤çç»ä¿¡æ¯ |
| | | const exists = titleSelectJson.value.historyTeams.some(item => item.basic_name === value) |
| | | if(! exists){ |
| | | titleSelectJson.value.historyTeams.push({ |
| | | basic_name: value, |
| | | process: titleUploadData.value.thisProcess, |
| | | basic_type: 'teamsgroups', |
| | | id: 555 |
| | | }) |
| | | } |
| | | |
| | | |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | |
| | | |
| | | <el-button :disabled="disabledFlag" :loading="loadingFlag" @click="reviewReportingWork" type="primary">{{$t('reportingWorks.passAudit')}} |
| | | </el-button> |
| | | |
| | | <span class="inventory_content"> |
| | | <el-select style="width: 100px" v-model="mannerPacking" class="processesSt" :placeholder="$t('reportingWorks.mannerPacking')"> |
| | | <el-option |
| | | v-for="item in mannerPackingOp" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | /> |
| | | </el-select> |
| | | <el-input style="width: 100px" v-model="container" class="m-2" :placeholder="$t('productStock.pleaseEnterTheBoxNumber')"> |
| | | </el-input> |
| | | <el-input style="width: 100px" v-model="storageRegion" class="m-2" :placeholder="$t('productStock.pleaseEnterTheStorageLocation')"> |
| | | </el-input> |
| | | <el-input style="width: 200px" v-model="remark" class="m-2" :placeholder="$t('productStock.pleaseEnterANote')"> |
| | | </el-input> |
| | | </span> |
| | | <!-- <el-button type="primary">å®¡æ ¸ä¸éè¿</el-button>--> |
| | | |
| | | <label>{{technologicalProcess}}</label> |
| | |
| | | <el-col :span="3"> |
| | | <el-select :disabled="groupChangeProcess" |
| | | v-model="titleUploadData.teamsGroupsName" |
| | | @change="changeGroup" |
| | | clearable |
| | | :placeholder="$t('reportingWorks.selectTeam')"> |
| | | <el-option |
| | | v-for="item in titleSelectJson['teamsType']" |
| | | :key="item.id" |
| | | :label="item.basicName" |
| | | :value="item.basicName" |
| | | :label="item.user_name" |
| | | :value="item.user_name" |
| | | /> |
| | | </el-select> |
| | | </el-col> |
| | |
| | | <el-option :label="$t('orderBasicData.commonProcess')" value="" /> |
| | | <el-option :label="$t('orderBasicData.laminatingProcessA')" value="stepA" /> |
| | | <el-option :label="$t('orderBasicData.laminatingProcessB')" value="stepB" /> |
| | | <el-option :label="$t('orderBasicData.laminatingProcessA')" value="stepC" /> |
| | | <el-option :label="$t('orderBasicData.laminatingProcessB')" value="stepD" /> |
| | | <el-option :label="$t('orderBasicData.laminatingProcessC')" value="stepC" /> |
| | | <el-option :label="$t('orderBasicData.laminatingProcessD')" value="stepD" /> |
| | | </el-select> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | {field: 'select',type:'checkbox',title: t('basicData.check'), width: 80,fixed:"left"}, |
| | | {type: 'seq', title: t('basicData.Number'), width: 80 ,fixed:"left"}, |
| | | {field: 'orderId',width:120, title: t('order.orderId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'finishedGoodsInventory.boxNo',width:120, title: t('ç®±å·'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'productName',width:120, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'width',width:120, title: t('order.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'height',width:120, title: t('order.height'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | |
| | | import {CircleCheck, Download, Printer} from "@element-plus/icons-vue/global"; |
| | | import PrintSheet1 from "@/components/sd/delivery/PrintSheet1.vue"; |
| | | import PrintSheet2 from "@/components/sd/delivery/PrintSheet2.vue"; |
| | | import PrintSheetLuoyang from "@/components/sd/delivery/PrintSheetLuoyang.vue"; |
| | | import PrintSheetLuoyangDetails from "@/components/sd/delivery/PrintSheetLuoyangDetails.vue"; |
| | | import useOrderInfoStore from "@/stores/sd/order/orderInfo"; |
| | | import { saveAs } from "file-saver" |
| | | import companyInfo from "@/stores/sd/companyInfo"; |
| | | |
| | | //è¯è¨è·å |
| | | const { t } = useI18n() |
| | | const orderInfo = useOrderInfoStore() |
| | | const router = useRouter() |
| | | const company = companyInfo() |
| | | const userStore = useUserInfoStore() |
| | | const username = userStore.user.userName |
| | | const userid = userStore.user.userId |
| | |
| | | orderInfo.selectDeliveryDate = res.data.selectDate |
| | | pageNum.value=1 |
| | | produceList = deepClone(res.data.data) |
| | | if(company.companyName=='æ´é³åæ¹ç»çææ¯è¡ä»½æéå
¬å¸'){ |
| | | xGrid.value.menuConfig.body.options[0][2].visible=true |
| | | xGrid.value.menuConfig.body.options[0][3].visible=true |
| | | xGrid.value.menuConfig.body.options[0][4].visible=true |
| | | xGrid.value.menuConfig.body.options[0][5].visible=true |
| | | } |
| | | xGrid.value.loadData(produceList) |
| | | gridOptions.loading=false |
| | | }else{ |
| | |
| | | pageNum.value=1 |
| | | produceList = deepClone(res.data.data) |
| | | xGrid.value.loadData(produceList) |
| | | if(company.companyName=='æ´é³åæ¹ç»çææ¯è¡ä»½æéå
¬å¸'){ |
| | | xGrid.value.menuConfig.body.options[0][2].visible=true |
| | | xGrid.value.menuConfig.body.options[0][3].visible=true |
| | | } |
| | | gridOptions.loading=false |
| | | }else{ |
| | | ElMessage.warning(res.msg) |
| | |
| | | } |
| | | produceList = deepClone(res.data.data) |
| | | xGrid.value.loadData(produceList) |
| | | if(company.companyName=='æ´é³åæ¹ç»çææ¯è¡ä»½æéå
¬å¸'){ |
| | | xGrid.value.menuConfig.body.options[0][2].visible=true |
| | | xGrid.value.menuConfig.body.options[0][3].visible=true |
| | | } |
| | | gridOptions.loading=false |
| | | }else{ |
| | | ElMessage.warning(res.msg) |
| | |
| | | } |
| | | break |
| | | } |
| | | case 'sheet3': { |
| | | const selectRecords = $grid.getCheckboxRecords() |
| | | if (selectRecords.length === 0) { |
| | | if(rowClickIndex.value.deliveryState>0){ |
| | | ElMessage.warning(t('order.printingNumber')+rowClickIndex.value.printingNumber) |
| | | let delivery=([]) |
| | | delivery.push(rowClickIndex.value) |
| | | flowData.value.delivery=delivery |
| | | dialogTableVisible.value = true |
| | | sheetIndex.value=3 |
| | | }else{ |
| | | ElMessage.warning(t('order.orderNotApproved')) |
| | | } |
| | | }else{ |
| | | let a=0 |
| | | selectRecords.forEach((item) => { |
| | | if(item.deliveryState==0){ |
| | | ElMessage.warning(t('order.orderNotApproved')) |
| | | a=1 |
| | | } |
| | | }) |
| | | if(a==0){ |
| | | flowData.value.delivery=selectRecords |
| | | dialogTableVisible.value = true |
| | | sheetIndex.value=3 |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | break |
| | | |
| | | } |
| | | case 'sheet4': { |
| | | const selectRecords = $grid.getCheckboxRecords() |
| | | if (selectRecords.length === 0) { |
| | | if(rowClickIndex.value.deliveryState>0){ |
| | | ElMessage.warning(t('order.printingNumber')+rowClickIndex.value.printingNumber) |
| | | let delivery=([]) |
| | | delivery.push(rowClickIndex.value) |
| | | flowData.value.delivery=delivery |
| | | dialogTableVisible.value = true |
| | | sheetIndex.value=4 |
| | | }else{ |
| | | ElMessage.warning(t('order.orderNotApproved')) |
| | | } |
| | | }else{ |
| | | let a=0 |
| | | selectRecords.forEach((item) => { |
| | | if(item.deliveryState==0){ |
| | | ElMessage.warning(t('order.orderNotApproved')) |
| | | a=1 |
| | | } |
| | | }) |
| | | if(a==0){ |
| | | flowData.value.delivery=selectRecords |
| | | dialogTableVisible.value = true |
| | | sheetIndex.value=4 |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | break |
| | | |
| | | } |
| | | case 'sheet5': { |
| | | const selectRecords = $grid.getCheckboxRecords() |
| | | if (selectRecords.length === 0) { |
| | | if(rowClickIndex.value.deliveryState>0){ |
| | | ElMessage.warning(t('order.printingNumber')+rowClickIndex.value.printingNumber) |
| | | let delivery=([]) |
| | | delivery.push(rowClickIndex.value) |
| | | flowData.value.delivery=delivery |
| | | dialogTableVisible.value = true |
| | | sheetIndex.value=5 |
| | | }else{ |
| | | ElMessage.warning(t('order.orderNotApproved')) |
| | | } |
| | | }else{ |
| | | let a=0 |
| | | selectRecords.forEach((item) => { |
| | | if(item.deliveryState==0){ |
| | | ElMessage.warning(t('order.orderNotApproved')) |
| | | a=1 |
| | | } |
| | | }) |
| | | if(a==0){ |
| | | flowData.value.delivery=selectRecords |
| | | dialogTableVisible.value = true |
| | | sheetIndex.value=5 |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | break |
| | | |
| | | } |
| | | case 'sheet6': { |
| | | const selectRecords = $grid.getCheckboxRecords() |
| | | if (selectRecords.length === 0) { |
| | | if(rowClickIndex.value.deliveryState>0){ |
| | | ElMessage.warning(t('order.printingNumber')+rowClickIndex.value.printingNumber) |
| | | let delivery=([]) |
| | | delivery.push(rowClickIndex.value) |
| | | flowData.value.delivery=delivery |
| | | dialogTableVisible.value = true |
| | | sheetIndex.value=6 |
| | | }else{ |
| | | ElMessage.warning(t('order.orderNotApproved')) |
| | | } |
| | | }else{ |
| | | let a=0 |
| | | selectRecords.forEach((item) => { |
| | | if(item.deliveryState==0){ |
| | | ElMessage.warning(t('order.orderNotApproved')) |
| | | a=1 |
| | | } |
| | | }) |
| | | if(a==0){ |
| | | flowData.value.delivery=selectRecords |
| | | dialogTableVisible.value = true |
| | | sheetIndex.value=6 |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | break |
| | | } |
| | | } |
| | | } |
| | | }, |
| | |
| | | [ |
| | | { code: 'sheet1', name: t('basicData.print'), prefixIcon: 'vxe-icon-file-txt', visible: true}, |
| | | { code: 'sheet2', name: t('basicData.print')+ t('delivery.noMoney'), prefixIcon: 'vxe-icon-file-txt', visible: true}, |
| | | { code: 'sheet3', name: t('æ´é³æå°æ 尺寸'), prefixIcon: 'vxe-icon-file-txt', visible: false}, |
| | | { code: 'sheet4', name: t('æ´é³æå°æ 尺寸')+ t('delivery.noMoney'), prefixIcon: 'vxe-icon-file-txt', visible: false}, |
| | | { code: 'sheet5', name: t('æ´é³æå°æå°ºå¯¸'), prefixIcon: 'vxe-icon-file-txt', visible: false}, |
| | | { code: 'sheet6', name: t('æ´é³æå°æå°ºå¯¸')+ t('delivery.noMoney'), prefixIcon: 'vxe-icon-file-txt', visible: false}, |
| | | ] |
| | | ] |
| | | } |
| | |
| | | </template> |
| | | <print-sheet1 id="child" v-if="sheetIndex===1" :deliveryId="flowData.delivery" /> |
| | | <print-sheet2 id="child" v-if="sheetIndex===2" :deliveryId="flowData.delivery" /> |
| | | <print-sheet-luoyang id="child" v-if="sheetIndex===3" :deliveryId="flowData.delivery" :type="1" /> |
| | | <print-sheet-luoyang id="child" v-if="sheetIndex===4" :deliveryId="flowData.delivery" :type="2" /> |
| | | <print-sheet-luoyang-details id="child" v-if="sheetIndex===5" :deliveryId="flowData.delivery" :type="3" /> |
| | | <print-sheet-luoyang-details id="child" v-if="sheetIndex===6" :deliveryId="flowData.delivery" :type="4" /> |
| | | |
| | | </el-dialog> |
| | | </div> |
| | |
| | | import CreateCustomer from "@/views/sd/customer/CreateCustomer.vue" |
| | | import OrderOtherMoney from "@/components/sd/order/OrderOtherMoney.vue" |
| | | import OrderSizeCheck from "@/components/sd/order/OrderSizeCheck.vue" |
| | | import UpdateAlienEditor from "@/components/sd/order/UpdateAlienEditor.vue" |
| | | import {changeFilterEvent,filterChanged} from "@/hook" |
| | | import {addListener,toolbarButtonClickEvent} from "@/hook/mouseMove" |
| | | import downLoadFile from "@/hook/downLoadFile" |
| | |
| | | let sizeCheckVisible = ref(false) |
| | | let dialogTransferVisible = ref(false) |
| | | let uploadPictureVisible = ref(false) |
| | | let alienEditorVisible = ref(false) |
| | | const transferData = ref({ |
| | | oldOrderId:null, |
| | | newOrderNumber:null, |
| | |
| | | { code: 'sizeCheck', name: t('basicData.sizeReview'), prefixIcon: 'vxe-icon-eye-fill', visible: true, disabled: false }, |
| | | { code: 'updateOrderId', name: t('searchOrder.updateOrderId'), prefixIcon: 'vxe-icon-eye-fill', visible: true, disabled: false }, |
| | | { code: 'reportingTransfer', name: t('searchOrder.reportingTransfer'), prefixIcon: 'vxe-icon-send', visible: true, disabled: true }, |
| | | /*{ code: 'uploadPicture', name: 'Upload Picture', visible: true, }*/ |
| | | { code: 'uploadPicture', name: t('order.graphic'),prefixIcon: 'vxe-icon-send', visible: true, } |
| | | ] |
| | | ] |
| | | } |
| | |
| | | {field: 'bendRadius',width:160, title: t('order.bendRadius'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'edgingType',width:160, title: t('order.edgingType'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'processingNote',width:200, title: t('order.processingNote'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'fileName',width:200, title: t('order.drawingNo'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'remarks',width:140, title: t('basicData.remarks'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | |
| | | |
| | |
| | | } |
| | | computedMoney(result.cell) |
| | | gridOptions.menuConfig.body.options[0][5].disabled=false |
| | | xGrid.value.updateFooter() |
| | | break |
| | | } |
| | | case 'copyAll' :{ |
| | |
| | | } |
| | | computedMoney(result.cell) |
| | | gridOptions.menuConfig.body.options[0][5].disabled=false |
| | | xGrid.value.updateFooter() |
| | | break |
| | | } |
| | | case 'clearChecked' :{ |
| | |
| | | } |
| | | computedMoney(result.cell) |
| | | gridOptions.menuConfig.body.options[0][5].disabled=false |
| | | |
| | | break |
| | | } |
| | | case 'computedMoney' :{ |
| | |
| | | } |
| | | computedMoney(result.cell) |
| | | gridOptions.menuConfig.body.options[0][5].disabled=false |
| | | xGrid.value.updateFooter() |
| | | break |
| | | } |
| | | case 'incrementalChecked' : { |
| | |
| | | } |
| | | computedMoney(result.cell) |
| | | gridOptions.menuConfig.body.options[0][5].disabled = false |
| | | xGrid.value.updateFooter() |
| | | break |
| | | } |
| | | case "reportingTransfer":{ |
| | |
| | | ElMessage.warning(t('components.pleaseClickToSelectARowFirst')) |
| | | return |
| | | } |
| | | uploadPictureVisible.value= true |
| | | rowIndex=row |
| | | alienEditorVisible.value= true |
| | | } |
| | | |
| | | } |
| | | } |
| | | }, |
| | |
| | | onMounted(async ()=>{ |
| | | gridOptions.loading = true |
| | | await initOrder(0) |
| | | |
| | | //å¼å½¢å¯¼å
¥ |
| | | if(!company.alienFunction){ |
| | | gridOptions.menuConfig.body.options[0][13].disabled=true |
| | | } |
| | | |
| | | //å¯ç¨è¡¨æ ¼æå¨éä¸ |
| | | addListener(xGrid.value,gridOptions) |
| | |
| | | const orderDetails = res.data.orderDetails |
| | | orderDetails.forEach(item => { |
| | | item.otherColumns = JSON.parse(item.otherColumns) |
| | | if(res.data.orderFile!=null){ |
| | | res.data.orderFile.forEach(items=>{ |
| | | if(items.order_number==item.orderNumber) |
| | | item.fileData=items.file_data |
| | | }) |
| | | } |
| | | }) |
| | | otherMoney.value =res.data.orderOtherMoneyList |
| | | //å è½½å¯è¡¨æ°æ® |
| | |
| | | // } |
| | | // } |
| | | titleUploadData.value.money=countMoney(xGrid.value.getTableData().fullData).toString() |
| | | xGrid.value.updateFooter() |
| | | |
| | | } |
| | | |
| | |
| | | if(flag){ |
| | | done() |
| | | titleUploadData.value.money=countMoney(xGrid.value.getTableData().fullData).toString() |
| | | } |
| | | } |
| | | |
| | | //å
³éå¼å½¢ç¼è¾çé¢ |
| | | const refAlienEditor = ref() |
| | | const closeAlienEditorDialog = async (done) => { |
| | | const flag = await refAlienEditor.value.validate() |
| | | if(flag){ |
| | | done() |
| | | } |
| | | } |
| | | //æ¹åè®¡ç®æ¹å¼ |
| | |
| | | } |
| | | |
| | | //å¾çä¸ä¼ åç§° |
| | | const getUploadPicture = (name) => { |
| | | uploadPictureVisible.value = false |
| | | const getUploadPicture = async (name, fileData) => { |
| | | const row = xGrid.value.getCurrentRecord() |
| | | if(!row.otherColumns){ |
| | | row.otherColumns = {} |
| | | row.fileName = name |
| | | row.fileData = fileData |
| | | row.shape=2 |
| | | ElMessage.success("ä¿åæå") |
| | | alienEditorVisible.value=false |
| | | |
| | | } |
| | | row.otherColumns.S02 = name |
| | | } |
| | | |
| | | const fileToBase64 = (file) => { |
| | | return new Promise((resolve, reject) => { |
| | | const reader = new FileReader(); |
| | | reader.onload = () => resolve(reader.result); |
| | | reader.onerror = reject; |
| | | reader.readAsDataURL(file); |
| | | }); |
| | | }; |
| | | |
| | | </script> |
| | | |
| | |
| | | :otherMoney="otherMoney" |
| | | style="width: 100%;height: 100%" /> |
| | | </el-dialog> |
| | | <!--å¼å½¢å¯¼å
¥--> |
| | | <el-dialog v-model="alienEditorVisible" |
| | | :title="$t('')" |
| | | :close-on-click-modal="false" |
| | | :close-on-press-escape="false" |
| | | destroy-on-close |
| | | style="width: 614px;height:470px "> |
| | | <update-alien-editor |
| | | ref="refAlienEditor" |
| | | :rowIndex="rowIndex" |
| | | @getUploadPicture="getUploadPicture" |
| | | style="width: 100%;height: 100%" /> |
| | | </el-dialog> |
| | | |
| | | <!-- å°ºå¯¸å®¡æ ¸çªå£--> |
| | | <el-dialog |
| | |
| | | <el-dialog v-model="uploadPictureVisible" |
| | | :close-on-click-modal="false" |
| | | destroy-on-close width="500"> |
| | | <upload-picture @getUploadPicture="getUploadPicture"/> |
| | | <upload-picture /> |
| | | </el-dialog> |
| | | |
| | | |
| | |
| | | size="small"> |
| | | {{ $t('basicData.edit') }} |
| | | </el-button> |
| | | <el-popconfirm @confirm="getTableRow(row,'delete')" :title="$t('searchOrder.deleteConfirm')"> |
| | | <el-popconfirm |
| | | v-if="userStore.user.permissions.indexOf('selectOrder.edit') > -1" |
| | | @confirm="getTableRow(row,'delete')" |
| | | :title="$t('searchOrder.deleteConfirm')"> |
| | | <template #reference> |
| | | <el-button link type="primary" size="small">{{ $t('basicData.delete') }}</el-button> |
| | | </template> |
| | |
| | | <script setup> |
| | | import {computed, onMounted, reactive, ref, watch} from "vue" |
| | | import {computed, onMounted, reactive, ref, watch,onUpdated,onBeforeUnmount} from "vue" |
| | | import {useRouter,useRoute} from "vue-router" |
| | | import request from "@/utils/request" |
| | | import {ElMessage, ElMessageBox} from "element-plus" |
| | |
| | | import {useI18n} from "vue-i18n" |
| | | import companyInfo from "@/stores/sd/companyInfo" |
| | | import UpdateOrderCraft from "@/components/sd/order/UpdateOrderCraft.vue" |
| | | import { saveAs } from 'file-saver'; |
| | | import DXFWriter from 'dxf-writer'; |
| | | import DxfParser from 'dxf-parser'; |
| | | import { Leafer, Polygon,Ellipse,Line,Path } from 'leafer-ui' |
| | | import {round} from "xe-utils"; |
| | | const { t } = useI18n() |
| | | |
| | | const router = useRouter() |
| | |
| | | {field: 'childWidth',width:120, title: t('craft.childWidth'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'childHeight',width:120, title: t('craft.childHeight'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'arc',width:120, title: t('craft.arc'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'archRise',width:120, title: t('craft.archRise'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'area',width:120, title: t('craft.area'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'orderDetail.quantity',width:120, title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'process',width:120, title: t('craft.process'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | |
| | | parseInt(item.orderNumber) === i+1 |
| | | ) |
| | | let widthList = [] |
| | | sameOrderNumber.forEach((item) => |
| | | let arcList = [] |
| | | let archRiseList = [] |
| | | sameOrderNumber.forEach((item) =>{ |
| | | widthList.push(item.childWidth) |
| | | ) |
| | | arcList.push(item.arc) |
| | | archRiseList.push(item.archRise) |
| | | console.log(item.archRise) |
| | | }) |
| | | widthList = widthList.sort(); |
| | | arcList = arcList.sort(); |
| | | archRiseList = archRiseList.sort(); |
| | | sameOrderNumber.forEach((item,index) =>{ |
| | | item.childWidth = widthList[index] |
| | | item.arc = arcList[index] |
| | | item.archRise = archRiseList[index] |
| | | }) |
| | | |
| | | } |
| | |
| | | |
| | | //ä¿®æ¹åæ é项 |
| | | let trademarkVisible = ref(false) |
| | | const updateTrademark = (row) => { |
| | | let trademarkRow = ref(null) |
| | | let dxfData =ref(null) |
| | | const updateTrademark = async(row) => { |
| | | let flowData = ref({ |
| | | orderId: row.orderId, |
| | | orderNumber: row.orderNumber |
| | | }) |
| | | await request.post("/order/selectUploadDxf",flowData.value).then((res) => { |
| | | if (res.code === "200") { |
| | | if(res.data.data!=null){ |
| | | const b64Data = res.data.data.file_data; |
| | | const byteCharacters = atob(b64Data); |
| | | const parser = new DxfParser(); |
| | | dxfData.value = parser.parseSync(byteCharacters) |
| | | }else{ |
| | | dxfData.value =null |
| | | } |
| | | |
| | | } |
| | | }) |
| | | |
| | | trademarkRow.value=row |
| | | trademarkVisible.value= true |
| | | /*Object.keys(trademarkAttr.value).forEach((key) => { |
| | | if(key==='location'){ |
| | |
| | | }) |
| | | |
| | | rowIndex.value = row |
| | | |
| | | } |
| | | |
| | | const changeTrademark = ()=>{ |
| | | if(company.alienFunction){ |
| | | exportToDXF() |
| | | } |
| | | rowIndex.value.icon = JSON.stringify(trademarkAttr.value) |
| | | trademarkVisible.value=false |
| | | Object.keys(trademarkAttr.value).forEach((key) => (trademarkAttr.value[key] = '')) |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | craftVisible.value= false |
| | | } |
| | | |
| | | onUpdated(() => { |
| | | if (trademarkVisible.value&&trademarkRow.value!=null) { |
| | | ongetproject(trademarkRow.value) |
| | | } |
| | | }) |
| | | |
| | | |
| | | //åå§å夿æ¯å¦æidä¼ å
¥ |
| | |
| | | }) |
| | | //ä¿åä¿®æ¹å·¥èº |
| | | const reviewOrderCraft = (state) => { |
| | | |
| | | request.post(`/order/reviewProcessById/${titleUploadData.value.orderId}/${state}`,xGrid.value.getRecordset().updateRecords).then(res =>{ |
| | | if(res.code==200){ |
| | | gridOptions.toolbarConfig.buttons[2].disabled = true |
| | |
| | | trademarkAttr.value[key] = [] |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | const iconChange = () => { |
| | |
| | | let enlargementFlag = ref(false) |
| | | const trademarkenlargement = () => { |
| | | enlargementFlag.value = !enlargementFlag.value |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /*dxfæä»¶è§£æåå
¶å¯¼åº*/ |
| | | |
| | | let state=ref(false) |
| | | let points=ref([]) |
| | | let data1=ref(0);let data2=ref(0);let data3=ref(0);let data4=ref(0) |
| | | let data5=ref(0);let data6=ref(0);let data7=ref(0);let data8=ref(0) |
| | | |
| | | let datas1=ref(0);let datas2=ref(0);let datas3=ref(0);let datas4=ref(0) |
| | | let datas5=ref(0);let datas6=ref(0);let datas7=ref(0);let datas8=ref(0) |
| | | let big=10 |
| | | let leafer; |
| | | let parsedDXFData = ref([]); |
| | | let orderDetailWidth=ref(0) |
| | | let orderDetailHeight=ref(0) |
| | | let widthAgv=ref(0) |
| | | let heightAgv=ref(0) |
| | | |
| | | const ongetproject = (row) => { |
| | | |
| | | if(dxfData.value==null){ |
| | | orderDetailWidth.value=row.childWidth |
| | | orderDetailHeight.value=row.childHeight |
| | | const main =document.getElementById('mains') |
| | | const width =document.getElementById('width') |
| | | const height =document.getElementById('height') |
| | | if(orderDetailWidth.value/400>orderDetailHeight.value/250){ |
| | | big=orderDetailWidth.value/400 |
| | | }else{ |
| | | big=orderDetailHeight.value/250 |
| | | } |
| | | let widthAgv=orderDetailWidth.value/big |
| | | let heightAgv=orderDetailHeight.value/big |
| | | main.style.width=widthAgv+"px" |
| | | main.style.height=heightAgv+"px" |
| | | main.style.backgroundColor = "#8d9095" |
| | | datas2.value=heightAgv |
| | | datas8.value=heightAgv |
| | | datas5.value=widthAgv |
| | | datas7.value=widthAgv |
| | | if(leafer!=undefined){ |
| | | leafer.clear() |
| | | } |
| | | leafer=new Leafer({ view: 'canvas' }) |
| | | points.value=[0, heightAgv, 0, 0, widthAgv, 0, widthAgv,heightAgv] |
| | | const polygon = new Polygon({ |
| | | points: points.value, |
| | | fill: '#32cd79', |
| | | origin: [0, 0] |
| | | }) |
| | | setTimeout(() => { |
| | | leafer.add(polygon); |
| | | }, 30); |
| | | |
| | | trademarkAttr.value.location = t('craft.lowLeft') |
| | | }else{ |
| | | state.value=false |
| | | handleFileUpload() |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | const getproject = () => { |
| | | if (dxfData.value == null||state.value){ |
| | | leafer = new Leafer({view: 'canvas'}) |
| | | points.value = [datas1.value + (parseInt(data5.value) / big), datas2.value - (parseInt(data6.value) / big), datas3.value + (parseInt(data1.value) / big), datas4.value + (parseInt(data2.value) / big), |
| | | datas5.value - (parseInt(data3.value) / big), datas6.value + (parseInt(data4.value) / big), datas7.value - (parseInt(data7.value) / big), datas8.value - (parseInt(data8.value) / big)] |
| | | const polygon = new Polygon({ |
| | | points: points.value, |
| | | fill: '#32cd79', |
| | | origin: [0, 0] |
| | | }) |
| | | leafer.add(polygon) |
| | | } |
| | | } |
| | | |
| | | |
| | | const exportToDXF = async () => { |
| | | const dxf = new DXFWriter(); |
| | | const polygonPoints = points.value.map((coord, index) => ({ |
| | | x: index % 2 === 0 ? coord : undefined, |
| | | y: index % 2 !== 0 ? -coord : undefined |
| | | })).filter(point => point.x !== undefined && point.y !== undefined); |
| | | |
| | | let arr=[] |
| | | for (let i=0;i<points.value.length;i++){ |
| | | let a=[] |
| | | if(i % 2 === 0){ |
| | | a.push(points.value[i]*big) |
| | | a.push((points.value[i+1]*big)) |
| | | a.push(0) |
| | | arr.push(a) |
| | | } |
| | | |
| | | } |
| | | let minX = Infinity, minY = Infinity; |
| | | let maxX = -Infinity, maxY = -Infinity; |
| | | arr.forEach(p => { |
| | | minX = Math.min(Math.abs(p[0]),minX ); |
| | | minY = Math.min(Math.abs(p[1]),minY); |
| | | maxX = Math.max(Math.abs(p[0]),maxX ); |
| | | maxY = Math.max(Math.abs(p[1]),maxY); |
| | | }); |
| | | |
| | | arr.forEach(p => { |
| | | p[1]=maxY-minY-p[1] |
| | | }); |
| | | |
| | | |
| | | dxf.drawPolyline(arr,{ closed: true, layer: '0' }) |
| | | |
| | | const blob = new Blob([dxf.toDxfString()], {type: 'text/plain;charset=utf-8'}); |
| | | const base64 = await fileToBase64(blob); |
| | | let filterData=ref({ |
| | | dataBase64:base64.replace(/^data:.+;base64,/, ""), |
| | | orderId:rowIndex.value.orderId, |
| | | orderNumber:rowIndex.value.orderNumber |
| | | }) |
| | | request.post(`/order/updateOrderFile`,filterData.value).then(res =>{ |
| | | if(res.code==200){ |
| | | //saveAs(blob, 'map.dxf'); |
| | | }else{ |
| | | ElMessage.error(res.msg) |
| | | } |
| | | }) |
| | | //saveAs(blob, 'map.dxf'); |
| | | } |
| | | |
| | | const fileToBase64 = (file) => { |
| | | return new Promise((resolve, reject) => { |
| | | const reader = new FileReader(); |
| | | reader.onload = () => resolve(reader.result); |
| | | reader.onerror = reject; |
| | | reader.readAsDataURL(file); |
| | | }); |
| | | }; |
| | | |
| | | |
| | | function toBottomOrigin(y, canvasHeight) { |
| | | return canvasHeight - y; // å°å·¦ä¸è§Yåæ è½¬æ¢ä¸ºå·¦ä¸è§åæ ç³» |
| | | } |
| | | |
| | | |
| | | const handleFileUpload = () => { |
| | | const main =document.getElementById('mains') |
| | | const width =document.getElementById('width') |
| | | const height =document.getElementById('height') |
| | | if(leafer!=undefined){ |
| | | leafer.clear() |
| | | } |
| | | leafer = new Leafer({ view: 'canvas' }); |
| | | try { |
| | | let minX = Infinity, minY = Infinity; |
| | | let maxX = -Infinity, maxY = -Infinity; |
| | | dxfData.value.entities.forEach(entity => { |
| | | if (entity.type === 'LINE' || entity.type === 'LWPOLYLINE') { |
| | | entity.vertices.forEach(vertices => { |
| | | minX = Math.min(vertices.x, minX); |
| | | minY = Math.min(vertices.y, minY); |
| | | maxX = Math.max(vertices.x, maxX); |
| | | maxY = Math.max(vertices.y, maxY); |
| | | }) |
| | | } |
| | | if (entity.type === 'ARC') { |
| | | const center = {x: entity.center.x, y: entity.center.y}; |
| | | const radius = entity.radius; |
| | | const startAngle = entity.startAngle * (180 / Math.PI); |
| | | const endAngle = entity.endAngle * (180 / Math.PI); |
| | | |
| | | const points = []; |
| | | const steps = 32; |
| | | for (let i = 0; i <= steps; i++) { |
| | | const angle = startAngle + (endAngle - startAngle) * (i / steps); |
| | | const x = center.x + radius * Math.cos(angle * Math.PI / 180); |
| | | const y = center.y + radius * Math.sin(angle * Math.PI / 180); |
| | | points.push({x, y}); |
| | | } |
| | | |
| | | |
| | | points.forEach(p => { |
| | | minX = Math.min(minX, p.x); |
| | | minY = Math.min(minY, p.y); |
| | | maxX = Math.max(maxX, p.x); |
| | | maxY = Math.max(maxY, p.y); |
| | | }); |
| | | } |
| | | }); |
| | | if ((maxX - minX) / 400 > (maxY - minY) / 250) { |
| | | big = (maxX - minX) / 400 |
| | | } else { |
| | | big = (maxY - minY) / 250 |
| | | } |
| | | |
| | | Object.values(dxfData.value.entities).forEach(entity => { |
| | | switch (entity.type) { |
| | | case 'LINE': |
| | | main.style.width = (maxX - minX) / big + "px" |
| | | main.style.height = (maxY - minY) / big + "px" |
| | | main.style.backgroundColor = "#8d9095" |
| | | width.innerHTML = round(maxX - minX, 2) |
| | | height.innerHTML = round(maxY - minY, 2) |
| | | const line = new Line({ |
| | | points: [(entity.vertices[0].x - minX) / big, ((maxY - minY) - (entity.vertices[0].y- minY)) / big, |
| | | (entity.vertices[1].x - minX) / big, ((maxY - minY) - (entity.vertices[1].y - minY)) / big], |
| | | stroke: '#f00', |
| | | strokeWidth: 1 |
| | | }) |
| | | setTimeout(() => { |
| | | leafer.add(line); |
| | | }, 30); |
| | | break; |
| | | case 'LWPOLYLINE': |
| | | |
| | | main.style.width = (maxX - minX) / big + "px" |
| | | main.style.height = (maxY - minY) / big + "px" |
| | | main.style.backgroundColor = "#8d9095" |
| | | width.innerHTML = round(maxX - minX, 2) |
| | | height.innerHTML = round(maxY - minY, 2) |
| | | |
| | | |
| | | let point = entity.vertices.map(v => [ |
| | | (v.x - minX) / big, |
| | | toBottomOrigin((v.y - minY) / big, (maxY - minY) / big), |
| | | ]).flat() |
| | | |
| | | if(entity.vertices.length==4){ |
| | | isQuadrilateral(maxY,minY,maxX,minX,point) |
| | | } |
| | | |
| | | const polygon = new Polygon({ |
| | | points: point, |
| | | fill: '#32cd79', |
| | | }) |
| | | setTimeout(() => { |
| | | leafer.add(polygon); |
| | | }, 30); |
| | | |
| | | break; |
| | | case 'CIRCLE': |
| | | big = (entity.radius * 2) / 400 |
| | | main.style.width = entity.radius * 2 / big + "px" |
| | | main.style.height = entity.radius * 2 / big + "px" |
| | | width.innerHTML = round(entity.radius * 2, 2) |
| | | height.innerHTML = round(entity.radius * 2, 2) |
| | | const ellipse = new Ellipse({ |
| | | width: entity.radius * 2 / big, |
| | | height: entity.radius * 2 / big, |
| | | fill: "#32cd79" |
| | | }) |
| | | setTimeout(() => { |
| | | leafer.add(ellipse); |
| | | }, 30); |
| | | |
| | | break; |
| | | case 'ELLIPSE': |
| | | console.log(entity) |
| | | |
| | | const {majorAxisEndPoint, axisRatio} = entity; |
| | | |
| | | const dx = majorAxisEndPoint.x; |
| | | const dy = majorAxisEndPoint.y; |
| | | const a = Math.sqrt(dx ** 2 + dy ** 2); |
| | | const c = a * axisRatio; |
| | | const θ = Math.atan2(dy, dx); |
| | | const l = axisRatio * (180 / Math.PI); |
| | | |
| | | if ((a * 2) / 400 > (c * 2) / 250) { |
| | | big = (a * 2) / 400 |
| | | } else { |
| | | big = (c * 2) / 250 |
| | | } |
| | | |
| | | main.style.width = a * 2 / big + "px" |
| | | main.style.height = c * 2 / big + "px" |
| | | width.innerHTML = round(a * 2, 2) |
| | | height.innerHTML = round(c * 2, 2) |
| | | const ellipse2 = new Ellipse({ |
| | | width: a * 2 / big, |
| | | height: c * 2 / big, |
| | | fill: "#32cd79", |
| | | }) |
| | | |
| | | setTimeout(() => { |
| | | leafer.add(ellipse2); |
| | | }, 30); |
| | | |
| | | break; |
| | | case 'ARC': |
| | | const center = {x: entity.center.x, y: entity.center.y}; |
| | | const radius = entity.radius; |
| | | const startAngle = entity.startAngle * (180 / Math.PI); |
| | | const endAngle = entity.endAngle * (180 / Math.PI); |
| | | |
| | | if ((maxX - minX) / 400 > (maxY - minY) / 250) { |
| | | big = (maxX - minX) / 400 |
| | | } else { |
| | | big = (maxY - minY) / 250 |
| | | } |
| | | |
| | | |
| | | // 计ç®åå¼§çèµ·ç¹åç»ç¹ |
| | | const startX = (center.x + radius * Math.cos(entity.startAngle) - minX); |
| | | const startY = (maxY - minY) - ((center.y + radius * Math.sin(entity.startAngle)) - minY); |
| | | const endX = (center.x + radius * Math.cos(entity.endAngle) - minX); |
| | | const endY = (maxY - minY) - ((center.y + radius * Math.sin(entity.endAngle)) - minY); |
| | | |
| | | // å建åå¼§è·¯å¾ |
| | | const path = new Path({ |
| | | path: `M ${startX / big} ${startY / big} A ${radius / big} ${radius / big} 0 ${endAngle - startAngle > 180 ? 1 : 0} 0 ${endX / big} ${endY / big}`, |
| | | stroke: '#f00', |
| | | strokeWidth: 1, |
| | | }); |
| | | |
| | | |
| | | setTimeout(() => { |
| | | leafer.add(path); |
| | | }, 30); |
| | | |
| | | |
| | | break; |
| | | |
| | | } |
| | | }) |
| | | trademarkAttr.value.xMargin=trademarkAttr.value.xMargin+1 |
| | | trademarkAttr.value.xMargin=trademarkAttr.value.xMargin-1 |
| | | trademarkAttr.value.location = t('craft.lowLeft') |
| | | } catch (error) { |
| | | console.error('è§£æDXFæä»¶æ¶åºé:', error); |
| | | } |
| | | |
| | | |
| | | }; |
| | | const handleClosed = () => { |
| | | data1.value=0 |
| | | data2.value=0 |
| | | data3.value=0 |
| | | data4.value=0 |
| | | data5.value=0 |
| | | data6.value=0 |
| | | data7.value=0 |
| | | data8.value=0 |
| | | big=0 |
| | | } |
| | | |
| | | |
| | | const isQuadrilateral = (maxY,minY,maxX,minX,point) => { |
| | | state.value=true |
| | | datas1.value=0 |
| | | datas2.value=(maxY - minY) / big |
| | | datas3.value=0 |
| | | datas4.value=0 |
| | | datas5.value=(maxX - minX) / big |
| | | datas6.value=0 |
| | | datas7.value=(maxX - minX) / big |
| | | datas8.value=(maxY - minY) / big |
| | | //points.value=[0, heightAgv, 0, 0, widthAgv, 0, widthAgv,heightAgv] |
| | | |
| | | let numbers = [point[0], point[2], point[4], point[6]]; // ç¤ºä¾æ°ç» |
| | | let maxX1 = Math.max(...numbers); // æ¾å°æå¤§å¼ |
| | | let maxIndex = numbers.findIndex(num => num === maxX1); // å®ä½ç¬¬ä¸ä¸ªå¹é
ç´¢å¼ |
| | | let remaining = [...numbers]; // å¤å¶åæ°ç»é¿å
çªå |
| | | remaining.splice(maxIndex, 1); // ä»
ç§»é¤ç¬¬ä¸ä¸ªæå¤§å¼å®ä¾ |
| | | let maxX2 = Math.max(...remaining); // å¨å©ä½æ°ç»ä¸æ¾ç¬¬äºå¤§å¼ |
| | | |
| | | let arr=[] |
| | | for (let i=0;i<point.length;i++){ |
| | | let a=[] |
| | | if(i % 2 === 0){ |
| | | a.push(point[i]) |
| | | a.push((point[i+1])) |
| | | arr.push(a) |
| | | } |
| | | |
| | | } |
| | | let x=[] |
| | | let y=[] |
| | | |
| | | let upperRight=null //å³ä¸ |
| | | let lowerRight=null //å³ä¸ |
| | | let topLeft=null //å·¦ä¸ |
| | | let lowerLeft=null //å·¦ä¸ |
| | | |
| | | arr.forEach(item=>{ |
| | | if(item[0]==maxX1||item[0]==maxX2){ |
| | | x.push(item) |
| | | }else{ |
| | | y.push(item) |
| | | } |
| | | }) |
| | | |
| | | if(x[0][1]>x[1][1]){ |
| | | lowerRight=x[0] |
| | | upperRight=x[1] |
| | | }else{ |
| | | upperRight=x[0] |
| | | lowerRight=x[1] |
| | | } |
| | | |
| | | if(y[0][1]>y[1][1]){ |
| | | lowerLeft=y[0] |
| | | topLeft=y[1] |
| | | }else { |
| | | topLeft=y[0] |
| | | lowerLeft=y[1] |
| | | } |
| | | |
| | | |
| | | if(lowerLeft[0]*big===0){ |
| | | data5.value=0 |
| | | }else{ |
| | | data5.value=round(lowerLeft[0]*big,0) |
| | | } |
| | | if(lowerLeft[1]*big===0){ |
| | | data6.value=0 |
| | | }else{ |
| | | data6.value=round(maxY-minY-lowerLeft[1]*big,0) |
| | | } |
| | | if(topLeft[0]*big===0){ |
| | | data1.value=0 |
| | | }else{ |
| | | data1.value=round(topLeft[0]*big,0) |
| | | } |
| | | if(topLeft[1]*big===0){ |
| | | data2.value=0 |
| | | }else{ |
| | | data2.value=round(topLeft[1]*big,0) |
| | | } |
| | | if(upperRight[0]*big===0){ |
| | | data3.value=0 |
| | | }else{ |
| | | data3.value=round(maxX-minX-upperRight[0]*big,0) |
| | | } |
| | | if(upperRight[1]*big===0){ |
| | | data4.value=0 |
| | | }else{ |
| | | data4.value=round(upperRight[1]*big,0) |
| | | } |
| | | if(lowerRight[0]*big===0){ |
| | | data7.value=0 |
| | | }else{ |
| | | data7.value=round(maxX-minX-lowerRight[0]*big,0) |
| | | } |
| | | if(lowerRight[1]*big===0){ |
| | | data8.value=0 |
| | | }else{ |
| | | data8.value=round(maxY-minY-lowerRight[1]*big,0) |
| | | } |
| | | } |
| | | |
| | | |
| | | /*åæ æå¨*/ |
| | | |
| | | const parent = ref(null) |
| | | const draggable = ref(null) |
| | | const isDragging = ref(false) |
| | | const startPos = ref({ x: 0, y: 0 }) |
| | | |
| | | const startDragUpperLeft = (e) => { |
| | | const parentRect = parent.value.getBoundingClientRect() |
| | | isDragging.value = true |
| | | startPos.value = { |
| | | x: parentRect.x+trademarkAttr.value.xMargin/big, |
| | | y: parentRect.y+trademarkAttr.value.yMargin/big |
| | | } |
| | | |
| | | document.addEventListener('mousemove', dragUpperLeft) |
| | | document.addEventListener('mouseup', stopDragUpperLeft) |
| | | } |
| | | |
| | | const dragUpperLeft = (e) => { |
| | | if (!isDragging.value) return |
| | | |
| | | // éå¶å¨ç¶å
ç´ èå´å
|
| | | const parentRect = parent.value.getBoundingClientRect() |
| | | const boxRect = draggable.value.getBoundingClientRect() |
| | | |
| | | let newX = (e.clientX-parentRect.x) |
| | | let newY = (e.clientY-parentRect.y) |
| | | |
| | | const maxX = parentRect.width - boxRect.width |
| | | const maxY = parentRect.height - boxRect.height |
| | | |
| | | newX = Math.max(0, Math.min(newX, maxX)) |
| | | newY = Math.max(0, Math.min(newY, maxY)) |
| | | |
| | | trademarkAttr.value.xMargin=round(newX*big,0) |
| | | trademarkAttr.value.yMargin=round(newY*big,0) |
| | | |
| | | } |
| | | |
| | | const stopDragUpperLeft = (e) => { |
| | | isDragging.value = false |
| | | document.removeEventListener('mousemove', dragUpperLeft) |
| | | document.removeEventListener('mouseup', stopDragUpperLeft) |
| | | } |
| | | |
| | | const startDragUpperRight = (e) => { |
| | | const parentRect = parent.value.getBoundingClientRect() |
| | | const boxRect = draggable.value.getBoundingClientRect() |
| | | isDragging.value = true |
| | | |
| | | startPos.value = { |
| | | x: parentRect.x+parentRect.width - (trademarkAttr.value.xMargin/big), |
| | | y: parentRect.y+trademarkAttr.value.yMargin/big |
| | | } |
| | | document.addEventListener('mousemove', dragUpperRight) |
| | | document.addEventListener('mouseup', stopDragUpperRight) |
| | | } |
| | | |
| | | const dragUpperRight = (e) => { |
| | | if (!isDragging.value) return |
| | | |
| | | // éå¶å¨ç¶å
ç´ èå´å
|
| | | const parentRect = parent.value.getBoundingClientRect() |
| | | const boxRect = draggable.value.getBoundingClientRect() |
| | | |
| | | let newX = (parentRect.x+parentRect.width-e.clientX) |
| | | let newY = (e.clientY-parentRect.y) |
| | | |
| | | const maxX = parentRect.width - boxRect.width |
| | | const maxY = parentRect.height - boxRect.height |
| | | |
| | | newX = Math.max(0, Math.min(newX, maxX)) |
| | | newY = Math.max(0, Math.min(newY, maxY)) |
| | | |
| | | trademarkAttr.value.xMargin=round(newX*big,0) |
| | | trademarkAttr.value.yMargin=round(newY*big,0) |
| | | |
| | | } |
| | | |
| | | const stopDragUpperRight = (e) => { |
| | | isDragging.value = false |
| | | document.removeEventListener('mousemove', dragUpperRight) |
| | | document.removeEventListener('mouseup', stopDragUpperRight) |
| | | } |
| | | |
| | | const startDragLowLeft = (e) => { |
| | | isDragging.value = true |
| | | const parentRect = parent.value.getBoundingClientRect() |
| | | startPos.value = { |
| | | x: parentRect.x+trademarkAttr.value.xMargin/big, |
| | | y: parentRect.y+parentRect.height-trademarkAttr.value.yMargin/big |
| | | } |
| | | |
| | | document.addEventListener('mousemove', dragLowLeft) |
| | | document.addEventListener('mouseup', stopDragLowLeft) |
| | | } |
| | | |
| | | const dragLowLeft = (e) => { |
| | | if (!isDragging.value) return |
| | | // éå¶å¨ç¶å
ç´ èå´å
|
| | | const parentRect = parent.value.getBoundingClientRect() |
| | | const boxRect = draggable.value.getBoundingClientRect() |
| | | |
| | | let newX = (e.clientX-parentRect.x) |
| | | let newY = (parentRect.y+parentRect.height-e.clientY) |
| | | |
| | | |
| | | const maxX = parentRect.width - boxRect.width |
| | | const maxY = parentRect.height - boxRect.height |
| | | |
| | | newX = Math.max(0, Math.min(newX, maxX)) |
| | | newY = Math.max(0, Math.min(newY, maxY)) |
| | | |
| | | trademarkAttr.value.xMargin=round(newX*big,0) |
| | | trademarkAttr.value.yMargin=round(newY*big,0) |
| | | } |
| | | |
| | | const stopDragLowLeft = (e) => { |
| | | isDragging.value = false |
| | | document.removeEventListener('mousemove', dragLowLeft) |
| | | document.removeEventListener('mouseup', stopDragLowLeft) |
| | | } |
| | | |
| | | |
| | | const startDragLowRight = (e) => { |
| | | isDragging.value = true |
| | | const parentRect = parent.value.getBoundingClientRect() |
| | | const boxRect = draggable.value.getBoundingClientRect() |
| | | startPos.value = { |
| | | x: parentRect.x+parentRect.width-trademarkAttr.value.xMargin/big, |
| | | y: parentRect.y+parentRect.height-trademarkAttr.value.yMargin/big |
| | | } |
| | | |
| | | document.addEventListener('mousemove', dragLowRight) |
| | | document.addEventListener('mouseup', stopDragLowRight) |
| | | } |
| | | |
| | | const dragLowRight = (e) => { |
| | | if (!isDragging.value) return |
| | | |
| | | const parentRect = parent.value.getBoundingClientRect() |
| | | const boxRect = draggable.value.getBoundingClientRect() |
| | | |
| | | let newX = (parentRect.x+parentRect.width-e.clientX) |
| | | let newY = (parentRect.y+parentRect.height-e.clientY) |
| | | |
| | | const maxX = parentRect.width - boxRect.width |
| | | const maxY = parentRect.height - boxRect.height |
| | | |
| | | newX = Math.max(0, Math.min(newX, maxX)) |
| | | newY = Math.max(0, Math.min(newY, maxY)) |
| | | |
| | | |
| | | trademarkAttr.value.xMargin=round(newX*big,0) |
| | | trademarkAttr.value.yMargin=round(newY*big,0) |
| | | } |
| | | |
| | | const stopDragLowRight = (e) => { |
| | | isDragging.value = false |
| | | document.removeEventListener('mousemove', dragLowRight) |
| | | document.removeEventListener('mouseup', stopDragLowRight) |
| | | } |
| | | |
| | | |
| | |
| | | :title="$t('craft.TrademarkAttribute')" |
| | | :close-on-click-modal="false" |
| | | :close-on-press-escape="false" |
| | | @closed="handleClosed" |
| | | style="width: 922px;height:443px ; |
| | | position: relative;" > |
| | | <div style="width: 50%;height: 100%;float: left"> |
| | |
| | | </el-row> |
| | | |
| | | <el-row> |
| | | <el-col :span="4">{{$t('order.width')}}:</el-col> |
| | | <el-col :span="4">X:</el-col> |
| | | <el-col :span="6"> |
| | | <el-input-number v-model="trademarkAttr.xMargin"/> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <el-row> |
| | | <el-col :span="4">{{$t('order.height')}}:</el-col> |
| | | <el-col :span="4">Y:</el-col> |
| | | <el-col :span="6"> |
| | | <el-input-number v-model="trademarkAttr.yMargin"/> |
| | | </el-col> |
| | |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <div v-if="!enlargementFlag" style="width: 400px;height: 250px;border: 2px solid #000;float: left;position: relative;"> |
| | | <div |
| | | <div style="width: 404px;height: 254px;border: 2px solid #000;float: left; |
| | | position: relative;display: flex;justify-content: center;align-content: center;"> |
| | | |
| | | <div id="mains" ref="parent" > |
| | | <div id="iocn" ref="draggable" |
| | | v-if="tagCheck(t('craft.upperLeft'))" |
| | | style="float: left;width: 50px;height: 90px;margin-left: 1rem;margin-top: 15px"> |
| | | <el-row class="icon"> |
| | | <el-col class="icon" > |
| | | <el-image @dblclick="trademarkenlargement" style="width: 100%;height: 100%" :class="{'xStyle':trademarkAttr.xImage,'yStyle':trademarkAttr.yImage}" :src="iconNickname"/> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row > |
| | | <el-col :span="12" >{{$t('order.width')}}:</el-col> |
| | | <el-col :span="12" >{{trademarkAttr.xMargin}}</el-col> |
| | | </el-row> |
| | | <el-row > |
| | | <el-col :span="12" >{{$t('order.height')}}:</el-col> |
| | | <el-col :span="12" >{{trademarkAttr.yMargin}}</el-col> |
| | | </el-row> |
| | | :style="{marginLeft:trademarkAttr.xMargin/big+'px',marginTop:trademarkAttr.yMargin/big+'px'}" |
| | | style="width: 20px;height: 20px;left: 0;top: 0;background-color: red;position: absolute;" |
| | | @mousedown="startDragUpperLeft" |
| | | > |
| | | <el-image @dblclick="trademarkenlargement" style="width: 100%;height: 100%" :src="iconNickname"/> |
| | | </div> |
| | | |
| | | <div |
| | | v-if="tagCheck(t('craft.upperRight'))" |
| | | style="float: right;width: 50px;height: 90px;margin-right: 1rem;margin-top: 15px"> |
| | | <el-row class="icon"> |
| | | <el-col class="icon" > |
| | | <el-image @dblclick="trademarkenlargement" style="width: 100%;height: 100%" :class="{'xStyle':trademarkAttr.xImage,'yStyle':trademarkAttr.yImage}" :src="iconNickname"/> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row > |
| | | <el-col :span="12" >{{$t('order.width')}}:</el-col> |
| | | <el-col :span="12" >{{trademarkAttr.xMargin}}</el-col> |
| | | </el-row> |
| | | <el-row > |
| | | <el-col :span="12" >{{$t('order.height')}}:</el-col> |
| | | <el-col :span="12" >{{trademarkAttr.yMargin}}</el-col> |
| | | </el-row> |
| | | <div id="iocn" ref="draggable" v-if="tagCheck(t('craft.upperRight'))" @mousedown="startDragUpperRight" :style="{marginRight:trademarkAttr.xMargin/big+'px',marginTop:trademarkAttr.yMargin/big+'px'}" style="width: 20px;height: 20px;right: 0;top: 0;background-color: red;position: absolute;"> |
| | | <el-image @dblclick="trademarkenlargement" style="width: 100%;height: 100%" :src="iconNickname"/> |
| | | </div> |
| | | <div id="iocn" ref="draggable" v-if="tagCheck(t('craft.lowLeft'))" @mousedown="startDragLowLeft" :style="{marginLeft:trademarkAttr.xMargin/big+'px',marginBottom:trademarkAttr.yMargin/big+'px'}" style="width: 20px;height: 20px;left: 0;bottom: 0;background-color: red;position: absolute;"> |
| | | <el-image @dblclick="trademarkenlargement" style="width: 100%;height: 100%" :src="iconNickname"/> |
| | | </div> |
| | | <div id="iocn" ref="draggable" v-if="tagCheck(t('craft.lowRight'))" @mousedown="startDragLowRight" :style="{marginRight:trademarkAttr.xMargin/big+'px',marginBottom:trademarkAttr.yMargin/big+'px'}" style="width: 20px;height: 20px;right: 0;bottom: 0;background-color: red;position: absolute;"> |
| | | <el-image @dblclick="trademarkenlargement" style="width: 100%;height: 100%" :src="iconNickname"/> |
| | | </div> |
| | | <canvas id="canvas" ></canvas> |
| | | </div> |
| | | |
| | | |
| | | <div |
| | | |
| | | v-if="tagCheck(t('craft.lowLeft'))" |
| | | style="width: 50px;height: 90px;margin-left: 1rem;float: left;position: absolute;bottom: 15px" > |
| | | <el-row > |
| | | <el-col :span="12" >{{$t('order.width')}}:</el-col> |
| | | <el-col :span="12" >{{trademarkAttr.xMargin}}</el-col> |
| | | </el-row> |
| | | <el-row > |
| | | <el-col :span="12" >{{$t('order.height')}}:</el-col> |
| | | <el-col :span="12" >{{trademarkAttr.yMargin}}</el-col> |
| | | </el-row> |
| | | <el-row class="icon"> |
| | | <el-col class="icon" > |
| | | <el-image @dblclick="trademarkenlargement" style="width: 100%;height: 100%" :class="{'xStyle':trademarkAttr.xImage,'yStyle':trademarkAttr.yImage}" :src="iconNickname"/> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | </div> |
| | | |
| | | |
| | | <div |
| | | v-if="tagCheck(t('craft.lowRight'))" |
| | | style="width: 50px;height: 90px;position: absolute;bottom: 15px;right: 1rem"> |
| | | <el-row> |
| | | <el-col :span="12" >{{$t('order.width')}}:</el-col> |
| | | <el-col :span="12" >{{trademarkAttr.xMargin}}</el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12" >{{$t('order.height')}}:</el-col> |
| | | <el-col :span="12" >{{trademarkAttr.yMargin}}</el-col> |
| | | </el-row> |
| | | <el-row class="icon"> |
| | | <el-col class="icon"> |
| | | <el-image style="width: 100%;height: 100%" @dblclick="trademarkenlargement" :class="{'xStyle':trademarkAttr.xImage,'yStyle':trademarkAttr.yImage}" :src="iconNickname"/> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <div id="width" style="height: 20px;position: absolute;top: 33px;left: 652px;">{{orderDetailWidth}}</div> |
| | | <div id="height" style="width: 60px;position: absolute;top: 178px;left: 390px;">{{orderDetailHeight}}</div> |
| | | <div style="float: left;margin-top: 20px;margin-left: 80px"> |
| | | <el-input class="contactNumber" @blur="getproject" type="text" v-model="data1" /> |
| | | <el-input class="contactNumber" @blur="getproject" type="text" v-model="data2" /> |
| | | <el-input class="contactNumber" @blur="getproject" type="text" v-model="data3" /> |
| | | <el-input class="contactNumber" @blur="getproject" type="text" v-model="data4" /><br> |
| | | <el-input class="contactNumber" @blur="getproject" type="text" v-model="data5" /> |
| | | <el-input class="contactNumber" @blur="getproject" type="text" v-model="data6" /> |
| | | <el-input class="contactNumber" @blur="getproject" type="text" v-model="data7" /> |
| | | <el-input class="contactNumber" @blur="getproject" type="text" v-model="data8" /><br> |
| | | </div> |
| | | <div style="position: absolute;left: 405px;top: 115px;color: red">{{$t('order.height')}}</div> |
| | | <div style="position: absolute;left: 200px;top: 250px;color: red">{{$t('order.width')}}</div> |
| | | |
| | | |
| | | </div> |
| | | <div v-if="enlargementFlag" style="width: 400px;height: 250px;float: left;position: relative;"> |
| | | <div id="width" style="height: 20px;position: absolute;top: 332px;left: 520px;">ä¸</div> |
| | | <div id="width" style="height: 20px;position: absolute;top: 354px;left: 520px;">ä¸</div> |
| | | <div id="width" style="height: 20px;position: absolute;top: 312px;left: 562px;">横</div> |
| | | <div id="width" style="height: 20px;position: absolute;top: 312px;left: 625px;">ç«</div> |
| | | <div id="width" style="height: 20px;position: absolute;top: 312px;left: 695px;">横</div> |
| | | <div id="width" style="height: 20px;position: absolute;top: 312px;left: 760px;">ç«</div> |
| | | <div v-if="enlargementFlag" style="width: 400px;height: 250px;float: left;position: relative;background-color: red"> |
| | | <el-image @dblclick="trademarkenlargement" style="z-index: 9999;max-width: 100%;max-height: 100%" :src="iconNickname"/> |
| | | </div> |
| | | </el-dialog> |
| | | |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | width: 50px; |
| | | height: 50px; |
| | | } |
| | | .contactNumber{ |
| | | width: 60px; |
| | | height:20px; |
| | | border: none; |
| | | box-shadow: none; |
| | | font-size: 15px; |
| | | } |
| | | |
| | | #mains { |
| | | position: relative; |
| | | } |
| | | </style> |
| | |
| | | productTotal.value.id = null |
| | | productTotal.value.state = 0 |
| | | } |
| | | if(productTotal.value.id!==null && productTotal.value.creator!==userInfo.user.userName || company.notChangeProduct){ |
| | | console.log(productTotal.value.id) |
| | | if(productTotal.value.id != null |
| | | && |
| | | productTotal.value.creator !== userInfo.user.userName |
| | | & company.notChangeProduct |
| | | ){ |
| | | ElMessage.warning('å建人æ¯ï¼'+productTotal.value.creator+' æ æ³æä½ï¼') |
| | | return; |
| | | } |
| | |
| | | |
| | | //å®¡æ ¸äº§åç¶æ |
| | | const updateProductState = (state) => { |
| | | if(productTotal.value.id!==null && productTotal.value.creator!==userInfo.user.userName || company.notChangeProduct){ |
| | | if(productTotal.value.id!==null && productTotal.value.creator!==userInfo.user.userName && company.notChangeProduct){ |
| | | ElMessage.warning('å建人æ¯ï¼'+productTotal.value.creator+' æ æ³æä½ï¼') |
| | | return; |
| | | } |
| | |
| | | if (hollowBasic.value[item] === '' && item !== 'GlueDepth') { |
| | | throw new Error(t('product.msg.HollowReview')) |
| | | } |
| | | childName += hollowBasic.value[item] |
| | | childName += hollowBasic.value[item] || '' |
| | | }) |
| | | }catch (e){ |
| | | ElMessage.warning(e.message) |
| | |
| | | let childName = '' |
| | | try { |
| | | Object.keys(InterlayerBasic.value).forEach((item, index) => { |
| | | if (InterlayerBasic.value[item] === '') { |
| | | if (InterlayerBasic.value[item] === '' && item !== 'color') { |
| | | throw new Error(t('product.msg.InterlayerReview')) |
| | | } |
| | | childName += InterlayerBasic.value[item] |
| | |
| | | break |
| | | } |
| | | case 'hollow' :{ |
| | | productName+='*'+item.detail+"*" |
| | | productName+=company.hollow + item.detail + company.hollow |
| | | break |
| | | } |
| | | } |
| New file |
| | |
| | | { |
| | | "name": "north-glass-erp", |
| | | "lockfileVersion": 2, |
| | | "requires": true, |
| | | "packages": {} |
| | | } |
| | |
| | | import cn.dev33.satoken.annotation.SaCheckPermission; |
| | | import com.example.erp.common.Result; |
| | | import com.example.erp.entity.mm.BasicWarehouseType; |
| | | import com.example.erp.entity.sd.BasicData; |
| | | import com.example.erp.service.mm.BasicWarehouseTypeService; |
| | | import com.example.erp.service.sd.BasicDateService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | return Result.seccess(basicWarehouseTypeService.deleteBasicWarehouse(basicWarehouseType)); |
| | | } |
| | | |
| | | @ApiOperation("ç¨æ·åºç¡æ°æ®æ¥è¯¢è¿åjsonå¯¹è±¡æ ¼å¼") |
| | | @GetMapping("/BasicWarehouseTypeUser/{type}") |
| | | public Result BasicWarehouseTypeUser(@PathVariable String type){ |
| | | return Result.seccess(basicWarehouseTypeService.BasicWarehouseTypeUser(type)); |
| | | } |
| | | |
| | | } |
| | |
| | | public Result getSelectPrint( @RequestBody Map<String, Object> object){ |
| | | return Result.seccess(finishedGoodsInventoryService.getSelectPrintSv(object)); |
| | | } |
| | | |
| | | /*è£
ç®±æå°æ¥è¯¢*/ |
| | | @ApiOperation("è£
ç®±æå°å
容æ¥è¯¢æ¥å£") |
| | | @SaCheckPermission("storageRecordPint.search") |
| | | @PostMapping("/getSelectPrints") |
| | | public Result getSelectPrints( @RequestBody Map<String, Object> object){ |
| | | return Result.seccess(finishedGoodsInventoryService.getSelectPrintSvs(object)); |
| | | } |
| | | } |
| | |
| | | return Result.seccess(materialInventoryService.mesMaterialOutbound(reportingWork)); |
| | | } |
| | | |
| | | @ApiOperation("mesåçæ¥è¯¢") |
| | | @PostMapping ("/mesOriginalSelect") |
| | | public Result mesOriginalSelect() { |
| | | return Result.seccess(materialInventoryService.mesOriginalSelect()); |
| | | } |
| | | |
| | | @ApiOperation("ç©ææ°å¢è¿åæ¥å£") |
| | | @PostMapping("/cancelMaterialAdditionRecord") |
| | | public Result cancelMaterialAdditionRecord( @RequestBody Map<String,Object> object){ |
| | |
| | | return Result.seccess(materialInventoryService.getOptimizeOutboundReport(type,pageNum,pageSize,selectDate,materialLog)); |
| | | } |
| | | |
| | | @ApiOperation("ç©æåºåºä¿åå¹¶å®¡æ ¸æ¥å£") |
| | | @SaCheckPermission("createOutbound.add") |
| | | @PostMapping("/saveToExamineMaterialOutbound") |
| | | public Result saveToExamineMaterialOutbound( @RequestBody Map<String,Object> object){ |
| | | |
| | | return Result.seccess(materialInventoryService.saveToExamineMaterialOutbound(object)); |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | return Result.seccess(glassOptimizeService.getProjectListSv()); |
| | | } |
| | | |
| | | @ApiOperation("æ ¹æ®å·¥ç¨å¡å·å·¥ç¨æ¥è¯¢æµç¨å¡") |
| | | @PostMapping ("/getProjectByProjectNo/{projectNo}") |
| | | public Result getProjectByProjectNo( |
| | | @PathVariable String projectNo |
| | | ){ |
| | | return Result.seccess(glassOptimizeService.getProjectByProjectNoSv(projectNo)); |
| | | } |
| | | |
| | | |
| | | |
| | | //å·¥ç¨ç®¡çæ¥è¯¢ |
| | | @ApiOperation("å·¥ç¨ç®¡çæ¥è¯¢æ¥å£") |
| | | @PostMapping("/optimizeProjectMange/{startSelectTime}/{endSelectTime}") |
| | |
| | | |
| | | import cn.dev33.satoken.annotation.SaCheckPermission; |
| | | import com.example.erp.common.Constants; |
| | | import com.example.erp.dto.pp.FlowCardDTO; |
| | | import com.example.erp.dto.pp.TeamOutputDTO; |
| | | import com.example.erp.entity.pp.FlowCard; |
| | | import com.example.erp.entity.sd.DeliveryDetail; |
| | | import com.example.erp.entity.sd.Order; |
| | |
| | | import com.example.erp.entity.sd.OrderGlassDetail; |
| | | import com.example.erp.exception.ServiceException; |
| | | import com.example.erp.service.pp.FlowCardService; |
| | | import com.example.erp.tools.DownExcel; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.IOException; |
| | | import java.sql.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | |
| | | } |
| | | |
| | | //åæ¶æ°å¢æç»æ¥è¯¢ |
| | | @ApiOperation("åæ¶æç»æ°å¢æ¥å£") |
| | | @ApiOperation("åæ¶æ°å¢æç»æ¥è¯¢") |
| | | @PostMapping("/selectNoCard/{orderId}/{productionId}") |
| | | public Result SelectNoCard( |
| | | @PathVariable String orderId, |
| | | @PathVariable String productionId, |
| | | @RequestBody FlowCard flowCard) { |
| | | return Result.seccess(flowCardService.selectNoCardSv(orderId, productionId, flowCard)); |
| | | |
| | | } |
| | | |
| | | @ApiOperation("åæ¶æ°å¢æç»æåºæ¥è¯¢") |
| | | @PostMapping("/selectSortingCard/{orderId}/{productionId}/{flashback}/{optionVal}") |
| | | public Result selectSortingCard( |
| | | @PathVariable String orderId, |
| | | @PathVariable String productionId, |
| | | @PathVariable String flashback, |
| | | @PathVariable String optionVal, |
| | | @RequestBody FlowCard flowCard) { |
| | | return Result.seccess(flowCardService.selectSortingCardSv(orderId, productionId,flashback,optionVal, flowCard)); |
| | | |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | @ApiOperation("æå°æµç¨å¡æ°æ®æ¥è¯¢æ¥å£") |
| | | @PostMapping("/getSelectPrinting/{printMerge}/{printLike}/{merge}") |
| | | @PostMapping("/getSelectPrinting/{printMerge}/{printLike}/{merge}/{flashback}/{compound}/{landingSequence}") |
| | | public Result getSelectPrinting( |
| | | @PathVariable String printMerge, |
| | | @PathVariable String printLike, |
| | | @PathVariable String merge, |
| | | @PathVariable String flashback, |
| | | @PathVariable String compound, |
| | | @PathVariable String landingSequence, |
| | | @RequestBody Map<String, Object> object) { |
| | | return Result.seccess(flowCardService.getSelectPrintingSv(object,printMerge,printLike,merge)); |
| | | return Result.seccess(flowCardService.getSelectPrintingSv(object,printMerge,printLike,merge,flashback,compound,landingSequence)); |
| | | } |
| | | |
| | | @ApiOperation("å·¥ç¨æå°æµç¨å¡æ°æ®æ¥è¯¢æ¥å£") |
| | | @PostMapping("/getSelectPrintProject/{printProject}/{merge}") |
| | | @PostMapping("/getSelectPrintProject/{printProject}/{merge}/{flashback}/{landingSequence}") |
| | | public Result getSelectPrintProject( |
| | | @PathVariable String printProject,@PathVariable String merge) { |
| | | return Result.seccess(flowCardService.getSelectPrintProject(printProject,merge)); |
| | | @PathVariable String printProject,@PathVariable String merge,@PathVariable String flashback,@PathVariable String landingSequence) { |
| | | return Result.seccess(flowCardService.getSelectPrintProject(printProject,merge,flashback,landingSequence)); |
| | | } |
| | | |
| | | @ApiOperation("æå°æ ç¾æ°æ®æ¥è¯¢æ¥å£") |
| | |
| | | public Result processCardAutoRack(@ RequestBody Map<String, Object> object) { |
| | | return Result.seccess(flowCardService.processCardAutoRack(object)); |
| | | } |
| | | |
| | | @ApiOperation("æµç¨å¡æ¥è¯¢å¯¼åº") |
| | | @PostMapping("/exportDateProcess") |
| | | public void exportDateProcess(HttpServletResponse response, |
| | | @RequestBody Map<String, Object> dates |
| | | ) throws IOException, IllegalAccessException, InstantiationException { |
| | | //åæ°ï¼ç¸åºçæ°æ®ï¼å®ä½ç±»ä¿¡æ¯ï¼ç¸åºçæ¹æ³ï¼æ°æ®è·åï¼ï¼çæçexcelåå |
| | | DownExcel.download(response, FlowCardDTO.class, flowCardService.exportDateProcessSv(dates), "DateProcess"); |
| | | } |
| | | } |
| | |
| | | package com.example.erp.controller.pp; |
| | | |
| | | import cn.dev33.satoken.annotation.SaCheckPermission; |
| | | import com.example.erp.common.Constants; |
| | | import com.example.erp.common.Result; |
| | | import com.example.erp.dto.pp.*; |
| | | import com.example.erp.entity.pp.DamageDetails; |
| | | import com.example.erp.entity.pp.FlowCard; |
| | | import com.example.erp.entity.pp.Report; |
| | | import com.example.erp.entity.sd.Order; |
| | | import com.example.erp.entity.sd.OrderDetail; |
| | | import com.example.erp.entity.sd.OrderGlassDetail; |
| | | import com.example.erp.exception.ServiceException; |
| | | import com.example.erp.service.pp.ReportService; |
| | | import com.example.erp.service.pp.WorkOrderService; |
| | | import com.example.erp.tools.DownExcel; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.IOException; |
| | | import java.sql.Date; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | |
| | | |
| | | //æµç¨å¡è¿åº¦ |
| | | @ApiOperation("æµç¨å¡è¿åº¦") |
| | | @SaCheckPermission("processCardProgress.search") |
| | | @SaCheckPermission("selectOrder.search") |
| | | @PostMapping("/processCardProgress/{orderId}") |
| | | public Result processCardProgress(@PathVariable String orderId, @RequestBody List<Integer> columns) { |
| | | return Result.seccess(reportService.processCardProgressSv(orderId, columns)); |
| | |
| | | public Result damageReport( |
| | | @PathVariable Integer pageNum, |
| | | @PathVariable Integer pageSize, |
| | | @PathVariable Date selectTime1, |
| | | @PathVariable Date selectTime2, |
| | | @PathVariable String selectTime1, |
| | | @PathVariable String selectTime2, |
| | | @RequestBody DamageReportDTO damageReportDTO) { |
| | | return Result.seccess(reportService.selectDamageReportSv(pageNum, pageSize, selectTime1, selectTime2, damageReportDTO)); |
| | | |
| | |
| | | |
| | | @ApiOperation("ä»»å¡å®ææ
嵿±æ»è¿åº¦") |
| | | @SaCheckPermission("taskCompletionStatus.search") |
| | | @PostMapping("/taskCompletionStatus/{selectTime1}/{selectTime2}") |
| | | @PostMapping("/taskCompletionStatus/{selectTime1}/{selectTime2}/{orderId}") |
| | | public Result taskCompletionStatus(@PathVariable Date selectTime1, |
| | | @PathVariable Date selectTime2, |
| | | @PathVariable String orderId, |
| | | @RequestBody List<Integer> columns) { |
| | | return Result.seccess(reportService.taskCompletionStatusSv(selectTime1, selectTime2, columns)); |
| | | return Result.seccess(reportService.taskCompletionStatusSv(selectTime1, selectTime2,orderId, columns)); |
| | | } |
| | | |
| | | @ApiOperation("订å计ååè§£") |
| | |
| | | public Result teamOutput( |
| | | @PathVariable Integer pageNum, |
| | | @PathVariable Integer pageSize, |
| | | @PathVariable Date selectTime1, |
| | | @PathVariable Date selectTime2, |
| | | @PathVariable String selectTime1, |
| | | @PathVariable String selectTime2, |
| | | @PathVariable String selectProcesses, |
| | | @RequestBody TeamOutputDTO teamOutputDTO) { |
| | | return Result.seccess(reportService.teamOutputSv(pageNum, pageSize, selectTime1, selectTime2,selectProcesses, teamOutputDTO)); |
| | |
| | | |
| | | @ApiOperation("æ¬¡ç ´æç»æ¥è¡¨å¯¼åº") |
| | | @PostMapping("/exportDamageReport") |
| | | public void exportDamageReport(HttpServletResponse response, @RequestBody List<LocalDate> dates) throws IOException, IllegalAccessException, InstantiationException { |
| | | public void exportDamageReport(HttpServletResponse response, @RequestBody Map<String, Object> dates) throws IOException, IllegalAccessException, InstantiationException { |
| | | //åæ°ï¼ç¸åºçæ°æ®ï¼å®ä½ç±»ä¿¡æ¯ï¼ç¸åºçæ¹æ³ï¼æ°æ®è·åï¼ï¼çæçexcelåå |
| | | DownExcel.download(response, DamageReportDTO.class, reportService.exportDamageReportSv(dates), "DamageReport"); |
| | | } |
| | |
| | | DownExcel.download(response, WorkInProgressDTO.class, reportService.exportWorkInProgressSv(dates), "WorkInProgress"); |
| | | } |
| | | |
| | | @ApiOperation("å¨å¶åæ±æ»æ¥è¡¨å¯¼åº") |
| | | @PostMapping("/exportWorkInProgressCombination") |
| | | public void exportWorkInProgressCombination(HttpServletResponse response, |
| | | @RequestBody Map<String, Object> dates) |
| | | throws IOException, IllegalAccessException, InstantiationException { |
| | | //åæ°ï¼ç¸åºçæ°æ®ï¼å®ä½ç±»ä¿¡æ¯ï¼ç¸åºçæ¹æ³ï¼æ°æ®è·åï¼ï¼çæçexcelåå |
| | | DownExcel.download(response, WorkInProgressCombinationDTO.class, reportService.exportWorkInProgressCombinationSv(dates), "WorkInProgressCombination"); |
| | | } |
| | | |
| | | // |
| | | |
| | | @ApiOperation("ä»»å¡å®ææ
åµå¯¼åº") |
| | | @PostMapping("/exportTaskCompletionStatus") |
| | | public void exportTaskCompletionStatus(HttpServletResponse response, @RequestBody List<LocalDate> dates) throws IOException, IllegalAccessException, InstantiationException { |
| | | //åæ°ï¼ç¸åºçæ°æ®ï¼å®ä½ç±»ä¿¡æ¯ï¼ç¸åºçæ¹æ³ï¼æ°æ®è·åï¼ï¼çæçexcelåå |
| | | DownExcel.download(response, TaskCompletionStatusDTO.class, reportService.exportDamageReportSv(dates), "TaskCompletionStatus"); |
| | | } |
| | | // @ApiOperation("ä»»å¡å®ææ
åµå¯¼åº") |
| | | // @PostMapping("/exportTaskCompletionStatus") |
| | | // public void exportTaskCompletionStatus(HttpServletResponse response, @RequestBody List<LocalDate> dates) throws IOException, IllegalAccessException, InstantiationException { |
| | | // //åæ°ï¼ç¸åºçæ°æ®ï¼å®ä½ç±»ä¿¡æ¯ï¼ç¸åºçæ¹æ³ï¼æ°æ®è·åï¼ï¼çæçexcelåå |
| | | // DownExcel.download(response, TaskCompletionStatusDTO.class, reportService.exportDamageReportSv(dates), "TaskCompletionStatus"); |
| | | // } |
| | | |
| | | @ApiOperation("åç颿坼åº") |
| | | @PostMapping("/exportRawMaterialRequisition") |
| | |
| | | //åæ°ï¼ç¸åºçæ°æ®ï¼å®ä½ç±»ä¿¡æ¯ï¼ç¸åºçæ¹æ³ï¼æ°æ®è·åï¼ï¼çæçexcelåå |
| | | DownExcel.download(response, TeamOutputDTO.class, reportService.exportTeamOutputSv(dates), "TeamOutput"); |
| | | } |
| | | |
| | | @ApiOperation("å¨å¶åæ±æ»æ¥è¡¨") |
| | | @SaCheckPermission("workInProgress.search") |
| | | @PostMapping("/workInProgressCombination/{pageNum}/{pageSize}/{orderId}/{inputProject}/{selectProcesses}/{optionVal}") |
| | | public Result workInProgressCombination( |
| | | @PathVariable Integer pageNum, |
| | | @PathVariable Integer pageSize, |
| | | @PathVariable String orderId, |
| | | @PathVariable String inputProject, |
| | | @PathVariable String selectProcesses, |
| | | @PathVariable String optionVal, |
| | | @RequestBody WorkInProgressDTO workInProgressDTO) { |
| | | return Result.seccess(reportService.workInProgressCombinationSv(pageNum, pageSize, orderId, inputProject,selectProcesses,optionVal, workInProgressDTO)); |
| | | |
| | | } |
| | | } |
| | |
| | | @RequestBody ReportingWork reportingWork){ |
| | | return Result.seccess(reportingWorkService.selectReportingWorkSv(pageNum,pageSize,selectTime1,selectTime2,orderId,reportingWork)); |
| | | |
| | | |
| | | } |
| | | |
| | | @ApiOperation("å 餿¥å·¥æ¥å£") |
| | |
| | | return Result.seccess(reportingWorkService.selectReportingWorkRecordByPhoneSv(selectPam)); |
| | | } |
| | | |
| | | } |
| | | @ApiOperation("ææºæ¥è¯¢æ¬å·¥åºè®¾å¤") |
| | | @PostMapping("/selectEquipmentByProcess/{process}") |
| | | public Result selectEquipmentByProcess(@PathVariable String process) { |
| | | return Result.seccess(reportingWorkService.selectEquipmentByProcessSv(process)); |
| | | }@ApiOperation("æ¥å·¥å
¥åºæ¥å£") |
| | | @PostMapping("/saveWorkStorage") |
| | | public Result saveWorkStorage( @RequestBody Map<String,Object> object){ |
| | | return Result.seccess(reportingWorkService.saveWorkStorage(object)); |
| | | |
| | | }} |
| | |
| | | import cn.dev33.satoken.annotation.SaCheckPermission; |
| | | import com.example.erp.common.Result; |
| | | import com.example.erp.entity.sd.BasicData; |
| | | import com.example.erp.service.sd.BasicDateService; |
| | | import com.example.erp.service.sd.BasicDataService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.web.bind.annotation.*; |
| | |
| | | @Api(value="订ååºç¡controller",tags={"订ååºç¡æ°æ®æä½æ¥å£"}) |
| | | public class BasicDataController { |
| | | final |
| | | BasicDateService basicDateService; |
| | | BasicDataService basicDataService; |
| | | |
| | | public BasicDataController(BasicDateService basicDateService) { |
| | | this.basicDateService = basicDateService; |
| | | public BasicDataController(BasicDataService basicDataService) { |
| | | this.basicDataService = basicDataService; |
| | | } |
| | | |
| | | @GetMapping("/orderBasicData") |
| | | public Result getOrderBasicData(){ |
| | | return Result.seccess(basicDateService.getOrderBasicData()); |
| | | return Result.seccess(basicDataService.getOrderBasicData()); |
| | | } |
| | | @GetMapping("/BasicDataByType/{type}") |
| | | public Result getBasicDataByType(@PathVariable String type){ |
| | | return Result.seccess(basicDateService.getBasicDataByType(type)); |
| | | return Result.seccess(basicDataService.getBasicDataByType(type)); |
| | | } |
| | | @GetMapping("/BasicDataByType/{type}/{childType}") |
| | | public Result getBasicDataByTypeAndChildType(@PathVariable String type,@PathVariable String childType){ |
| | | return Result.seccess(basicDateService.getBasicDataByTypeAndChildType(type,childType)); |
| | | return Result.seccess(basicDataService.getBasicDataByTypeAndChildType(type,childType)); |
| | | } |
| | | |
| | | |
| | |
| | | @SaCheckPermission("searchOrderBasicData.search") |
| | | @GetMapping("/getBasicData") |
| | | public Result getBasicData(){ |
| | | return Result.seccess(basicDateService.getBasicData()); |
| | | return Result.seccess(basicDataService.getBasicData()); |
| | | } |
| | | @ApiOperation("æ¥è¯¢åºç¡æ°æ®ç±»å") |
| | | @SaCheckPermission("searchOrderBasicData.search") |
| | | @GetMapping("/getBasicDataType") |
| | | public Result getBasicDataType(){ |
| | | return Result.seccess(basicDateService.getBasicDataType()); |
| | | return Result.seccess(basicDataService.getBasicDataType()); |
| | | } |
| | | |
| | | @ApiOperation("æ°å¢åºç¡æ°æ®") |
| | | @SaCheckPermission("searchOrderBasicData.add") |
| | | @PostMapping("addBasicData") |
| | | public Result addBasicData(@RequestBody Map<String,Object> map){ |
| | | return Result.seccess(basicDateService.addBasicData(map)); |
| | | return Result.seccess(basicDataService.addBasicData(map)); |
| | | } |
| | | |
| | | @ApiOperation("æ´æ°åºç¡æ°æ®") |
| | | @SaCheckPermission("searchOrderBasicData.update") |
| | | @PostMapping("updateBasicData") |
| | | public Result updateBasicData(@RequestBody BasicData basicData){ |
| | | return Result.seccess(basicDateService.updateBasicData(basicData)); |
| | | return Result.seccess(basicDataService.updateBasicData(basicData)); |
| | | } |
| | | @ApiOperation("å é¤åºç¡æ°æ®") |
| | | @SaCheckPermission("searchOrderBasicData.delete") |
| | | @PostMapping("deleteBasicData") |
| | | public Result deleteBasicData(@RequestBody BasicData basicData){ |
| | | return Result.seccess(basicDateService.deleteBasicData(basicData)); |
| | | return Result.seccess(basicDataService.deleteBasicData(basicData)); |
| | | } |
| | | } |
| | |
| | | return Result.seccess(null); |
| | | } |
| | | |
| | | @PostMapping("/upload-dxf") |
| | | public Result uploadDxf(@RequestBody Map<String,Object> object) { |
| | | return Result.seccess(orderService.uploadDxf(object)); |
| | | } |
| | | |
| | | @PostMapping("/selectUploadDxf") |
| | | public Result selectUploadDxf(@RequestBody Map<String,Object> object) { |
| | | return Result.seccess(orderService.selectUploadDxf(object)); |
| | | } |
| | | |
| | | @PostMapping("/updateOrderFile") |
| | | public Result updateOrderFile(@RequestBody Map<String,Object> map) { |
| | | return Result.seccess(orderService.updateOrderFile(map)); |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | private String orderId; |
| | | @ExcelProperty("项ç®åç§°") |
| | | private String project; |
| | | @ExcelProperty("æ¹æ¬¡") |
| | | private String batch; |
| | | @ExcelProperty("æµç¨å¡å·") |
| | | private String processId; |
| | | @ExcelProperty("订ååºå·") |
| New file |
| | |
| | | package com.example.erp.dto.pp; |
| | | |
| | | import com.alibaba.excel.annotation.ExcelProperty; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.example.erp.entity.sd.Order; |
| | | import com.example.erp.entity.sd.OrderDetail; |
| | | import com.example.erp.entity.sd.OrderGlassDetail; |
| | | import com.example.erp.entity.sd.Product; |
| | | import lombok.Data; |
| | | |
| | | import java.time.LocalDate; |
| | | |
| | | @Data |
| | | public class FlowCardDTO { |
| | | @TableId(type = IdType.AUTO) |
| | | |
| | | //éå®åå· |
| | | @ExcelProperty("éå®åå·") |
| | | private String orderId; |
| | | //æµç¨å¡å· |
| | | @ExcelProperty("æµç¨å¡å·") |
| | | private String processId; |
| | | //客æ·åç§° |
| | | @ExcelProperty("客æ·åç§°") |
| | | private String customerName; |
| | | //æ¹æ¬¡ |
| | | @ExcelProperty("æ¹æ¬¡") |
| | | private String batch; |
| | | @ExcelProperty("产åID") |
| | | private String productId; |
| | | @ExcelProperty("产ååç§°") |
| | | private String productName; |
| | | @ExcelProperty("项ç®åç§°") |
| | | private String project; |
| | | @ExcelProperty("æ°é") |
| | | private Integer quantity; |
| | | @ExcelProperty("é¢ç§¯") |
| | | private Double computeGrossArea; |
| | | @ExcelProperty("åæ¶å") |
| | | private String founder; |
| | | @ExcelProperty("å å·¥è¦æ±") |
| | | private String processingNote; |
| | | @ExcelProperty("æçç¶æ") |
| | | private String layoutStatus; |
| | | @ExcelProperty("åå¹¶ç¶æ") |
| | | private Integer merge; |
| | | @ExcelProperty("æ¶å·") |
| | | private String rack; |
| | | } |
| | |
| | | private String workProcessName; |
| | | @ExcelProperty("æ¥å·¥è®¾å¤") |
| | | private String deviceName; |
| | | @ExcelProperty("æ¹æ¬¡") |
| | | private String batch; |
| | | @ExcelProperty("订åç±»å") |
| | | private String orderType; |
| | | } |
| New file |
| | |
| | | package com.example.erp.dto.pp; |
| | | |
| | | import com.alibaba.excel.annotation.ExcelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class WorkInProgressCombinationDTO { |
| | | @ExcelProperty("å·¥åº") |
| | | private String thisProcess; |
| | | @ExcelProperty("项ç®åç§°") |
| | | private String project; |
| | | |
| | | @ExcelProperty("åºåæ°") |
| | | private Integer stockNum; |
| | | @ExcelProperty("åºåé¢ç§¯") |
| | | private Double stockArea; |
| | | @ExcelProperty("å¨å¶ååç§°") |
| | | private String glassName; |
| | | } |
| | |
| | | private Double stockArea; |
| | | @ExcelProperty("æååç§°") |
| | | private String productName; |
| | | @ExcelProperty("å¨å¶ååç§°") |
| | | private String glassName; |
| | | @ExcelProperty("弯é¢åå¾") |
| | | private String bendRadius; |
| | | @ExcelProperty("ç¼å·") |
| | |
| | | private LocalDate updateTime; |
| | | private LocalDate endTime; |
| | | private String processId; |
| | | |
| | | private String boxNo; |
| | | private Order order; |
| | | private OrderDetail orderDetail; |
| | | private Double weight; |
| | | |
| | | } |
| | |
| | | private String remarks; |
| | | private String processId; |
| | | |
| | | private Double area; |
| | | private Double money; |
| | | |
| | | private OrderDetail orderDetail; |
| | | |
| | | private Order order; |
| | |
| | | @ExcelProperty("ä¼åä½¿ç¨æ°é") |
| | | private Integer useCount; |
| | | |
| | | private MaterialOutbound materialOutbound; |
| | | |
| | | |
| | | } |
| | |
| | | private LocalDate reviewedTime; |
| | | private Integer reviewedState; |
| | | private LocalDate createTime; |
| | | private String project; |
| | | private String batch; |
| | | |
| | | |
| | | |
| | |
| | | private String deliveryDetailRemakes; |
| | | private Integer deliveryDetailState; |
| | | private String otherColumns; |
| | | private String boxNo; |
| | | private LocalDate createTime; |
| | | private LocalDate updateTime; |
| | | private Delivery delivery; |
| | |
| | | private Integer deliveryNum; |
| | | private Integer returnNum; |
| | | private Integer state; |
| | | private String fileName; |
| | | @TableField(select = false,exist= false) |
| | | private String fileData; |
| | | private LocalDate createTime; |
| | | private LocalDate updateTime; |
| | | @TableField(select = false,exist= false) |
| | |
| | | @TableField(value = "`group`") |
| | | private Integer group; |
| | | private LocalDate productionTime; |
| | | private Double archRise; |
| | | private LocalDate createTime; |
| | | |
| | | |
| | | @TableField(select = false,exist = false) |
| | | private Integer thickness; |
| | | |
| | |
| | | |
| | | Boolean updateBasicWarehouse(@Param("id") Long id,@Param("operateTypeName") String operateTypeName); |
| | | |
| | | List<String> getBasicWarehouseUser(String type); |
| | | |
| | | |
| | | } |
| | |
| | | |
| | | Map<String,Integer> getPageTotal(Integer offset, Integer pageSize, FinishedGoodsInventory finishedGoodsInventory); |
| | | |
| | | FlowCard getSelectWarehousingByProcessId(@Param("order_id") String order_id, |
| | | @Param("order_number") Integer order_number, |
| | | @Param("process_id") String process_id); |
| | | List<FlowCard> getSelectWarehousing(@Param("offset") Integer offset, |
| | | @Param("pageSize") Integer pageSize, |
| | | @Param("flowCard") FlowCard flowCard); |
| | |
| | | |
| | | Boolean updateInventory(@Param("flowCard") FlowCard flowCard, |
| | | @Param("storageRegion") String storageRegion, |
| | | @Param("remark") String remark); |
| | | @Param("remark") String remark, @Param("container") String container); |
| | | |
| | | Boolean updateInventoryOut(@Param("finishedOperateLog") FinishedOperateLog finishedOperateLog); |
| | | |
| | |
| | | |
| | | Boolean insertFinishedGoodsInventory(@Param("flowCard") FlowCard flowCard, |
| | | @Param("storageRegion") String storageRegion, |
| | | @Param("remark") String remark); |
| | | @Param("remark") String remark, @Param("container") String container); |
| | | |
| | | |
| | | List<OrderDetail> getSelectDeliveryDetail(@Param("offset") Integer offset, |
| | |
| | | public interface FinishedOperateLogMapper extends CrudRepository<FinishedOperateLog,Long> { |
| | | FinishedOperateLog getselectFinishedOperateLog(); |
| | | |
| | | Boolean insertIntFinishedOperateLog(@Param("flowCard") FlowCard flowCard ,@Param("userName") String userName,@Param("oddNumber") String oddNumber,@Param("container") String container); |
| | | Boolean insertIntFinishedOperateLog(@Param("flowCard") FlowCard flowCard ,@Param("userName") String userName, |
| | | @Param("oddNumber") String oddNumber,@Param("container") String container, |
| | | @Param("deliveryDetailMoney") Double deliveryDetailMoney,@Param("deliveryDetailArea") Double deliveryDetailArea); |
| | | |
| | | Boolean insertOutFinishedOperateLog(@Param("orderDetail") OrderDetail orderDetail,@Param("userName") String userName,@Param("oddNumber") String oddNumber); |
| | | |
| | |
| | | |
| | | List<Map<String, String>> getPrimaryListLimt(String orderId, String processId, String remarks); |
| | | |
| | | List<Map<String, String>> getPrimaryListLimts(String customerName, String project, String remarks); |
| | | |
| | | List<Map<String, Object>> getDetailList(String orderId, String processId, String remarks); |
| | | |
| | | List<Map<String, Object>> getDetailLists(String orderId, String remarks, Integer productId,String thickness); |
| | | |
| | | List<Map<String, Object>> getDetailList2(String orderId, String processId, String remarks); |
| | | } |
| | |
| | | List<MaterialLog> getOptimizeOutboundReport(Integer offset, Integer pageSize, String startDate, String endDate, MaterialLog materialLog, String type); |
| | | |
| | | Map<String,Integer> getOptimizeOutboundReportTotal(Integer offset, Integer pageSize, String startDate, String endDate, MaterialLog materialLog, String type); |
| | | |
| | | List<Map<String,Object>> getSelectMaterialInventoryMes(); |
| | | } |
| | |
| | | package com.example.erp.mapper.pp; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.example.erp.dto.pp.FlowCardDTO; |
| | | import com.example.erp.entity.pp.FlowCard; |
| | | import com.example.erp.entity.sd.OrderDetail; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.sql.Date; |
| | | import java.time.LocalDate; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | |
| | | |
| | | List<Map<String, String>> getPrimaryLists(String processId, String technologyNumber, String glassChild, String process, String orderId,Integer quantity); |
| | | |
| | | List<Map<String, Object>> getDetailList(String processId, String technologyNumber, String process); |
| | | List<Map<String, Object>> getDetailList(String processId, String technologyNumber, String process, String flashback, String landingSequence); |
| | | |
| | | List<Map<String, Object>> getDetailLists(String processId, String technologyNumber, String process,Integer orderNumber); |
| | | |
| | |
| | | |
| | | List<Map<String, Object>> getCustomLabelDetailMp(String name, String form, String id, FlowCard flowCard); |
| | | |
| | | List<Map<String, Object>> getPrintCustomData(String processId, Integer orderNumber); |
| | | List<Map<String, Object>> getPrintCustomData(String processId, Integer orderNumber, Integer printQuantity); |
| | | |
| | | List<Map<String, Object>> getPrintCustomData2(String processId); |
| | | |
| | |
| | | |
| | | List<Map<String, String>> selectReworkPrintMp(Date selectTime1, Date selectTime2, FlowCard flowCard); |
| | | |
| | | List<Map<String, Object>> getDetailListLike(String processId, String technologyNumber, String process); |
| | | List<Map<String, Object>> getDetailListLike(String processId, String technologyNumber, String process, String flashback, String landingSequence); |
| | | |
| | | List<Map<String, Object>> getDetailListMerge(String processId, String process); |
| | | List<Map<String, Object>> getDetailListMerge(String processId, String process, String flashback, String landingSequence); |
| | | |
| | | List<Map<String, Object>> getDetailListLikes(String processId, String technologyNumber, String process,String printProject,Integer quantity); |
| | | |
| | |
| | | |
| | | List<Map<String, Object>> getDetailListLikeRework(String processId, String printMerge, Integer orderNumber, String reportingWorkId); |
| | | |
| | | List<Map<String, Object>> getPrintCustomDataSemi(String processId, String technologyNumber, String process); |
| | | List<Map<String, Object>> getPrintCustomDataSemi(String processId, String technologyNumber, String process, Integer orderNumber); |
| | | |
| | | List<Map<String, String>> selectPrintNotMp(String orderId); |
| | | |
| | |
| | | String getProcessName(String processSub); |
| | | |
| | | List<Map<String, Object>> getProcessNameList(); |
| | | |
| | | List<FlowCardDTO> exportDateProcessMp(List<LocalDate> date); |
| | | |
| | | Integer getSumQuantity(String orderId); |
| | | |
| | | List<Map<String, Object>> getDetailCompoundList(String processId, String technologyNumber, String process, String flashback, String compound, String landingSequence); |
| | | |
| | | List<Map<String, Object>> getDetailListLikeCompound(String processId, String s, String process, String flashback, String compound, String landingSequence); |
| | | |
| | | List<Map<String, Object>> getPrintCustomDataSemiTj(String processId, String technologyNumber, String process); |
| | | |
| | | Integer getLayoutStatus(String processId); |
| | | |
| | | List<Map<String, String>> selectSortingCardMp(String orderId, String productionId, String flashback, String optionVal, FlowCard flowCard); |
| | | } |
| | |
| | | //å·¥ç¨ä¿¡æ¯æµç¨å¡ |
| | | List<Map<String, Object>> getProcessCardMpThirdParty(String projectNo); |
| | | |
| | | List<Map<String, Object>> getProjectByProjectNoSv(String projectNo); |
| | | } |
| | |
| | | List<Map<String, String>> processToBeCompletedMp(Date selectTime1, Date selectTime2, String orderId, |
| | | String inputProject, String selectProcesses, Report report); |
| | | |
| | | List<DamageReportDTO> selectDamageReportMp(Integer offset, Integer pageSize, Date selectTime1, Date selectTime2, DamageReportDTO damageReportDTO); |
| | | List<DamageReportDTO> selectDamageReportMp(Integer offset, Integer pageSize, String selectTime1, String selectTime2, DamageReportDTO damageReportDTO); |
| | | |
| | | List<Map<String, String>> splittingDetailsOutsideMp(String orderId, Report report); |
| | | |
| | |
| | | |
| | | List<Map<String, String>> productionScheduleMp(String orderId); |
| | | |
| | | List<Map<String, String>> taskCompletionStatusMp(Date selectTime1, Date selectTime2); |
| | | List<Map<String, String>> taskCompletionStatusMp(Date selectTime1, Date selectTime2, String orderId); |
| | | |
| | | List<Map<String, String>> orderPlanDecompositionMp(Date selectTime1, Date selectTime2, Report report); |
| | | |
| | |
| | | |
| | | List<CrossProcessBreakingDTO> exportCrossProcessBreakingMp(List<LocalDate> dates); |
| | | |
| | | Map<String, Integer> getDamageReportPageTotal(Integer offset, Integer pageSize, Date selectTime1, Date selectTime2, DamageReportDTO damageReportDTO); |
| | | Map<String, Integer> getDamageReportPageTotal(Integer offset, Integer pageSize, String selectTime1, String selectTime2, DamageReportDTO damageReportDTO); |
| | | |
| | | List<DamageReportDTO> exportDamageReportMp(List<LocalDate> dates); |
| | | |
| | |
| | | |
| | | List<YieldDTO> exportYieldMp(List<LocalDate> date, String process); |
| | | |
| | | List<TeamOutputDTO> teamOutputMp(Integer offset, Integer pageSize, Date selectTime1, Date selectTime2, String selectProcesses, String laminating, TeamOutputDTO teamOutputDTO); |
| | | List<TeamOutputDTO> teamOutputMp(Integer offset, Integer pageSize, String selectTime1, String selectTime2, String selectProcesses, String laminating, TeamOutputDTO teamOutputDTO); |
| | | |
| | | Map<String, Integer> teamOutputPageTotal(Integer offset, Integer pageSize, Date selectTime1, Date selectTime2, String selectProcesses, String laminating, TeamOutputDTO teamOutputDTO); |
| | | Map<String, Integer> teamOutputPageTotal(Integer offset, Integer pageSize, String selectTime1, String selectTime2, String selectProcesses, String laminating, TeamOutputDTO teamOutputDTO); |
| | | |
| | | List<Map<String, String>> workInProgressOrderMp(Integer offset, Integer pageSize, String orderId, String inputProject, String selectProcesses, WorkInProgressDTO workInProgressDTO); |
| | | |
| | |
| | | |
| | | Map<String,Float> processToBeCompletedFootSum(Date selectTime1, Date selectTime2, String orderId, String inputProject, String selectProcesses, Report report); |
| | | |
| | | Map<String,Float> damageReportFootSum(Date selectTime1, Date selectTime2, DamageReportDTO damageReportDTO); |
| | | Map<String,Float> damageReportFootSum(String selectTime1, String selectTime2, DamageReportDTO damageReportDTO); |
| | | |
| | | Map<String,Float> teamOutputFootSum(Date selectTime1, Date selectTime2, String selectProcesses, String laminating, TeamOutputDTO teamOutputDTO); |
| | | Map<String,Float> teamOutputFootSum(String selectTime1, String selectTime2, String selectProcesses, String laminating, TeamOutputDTO teamOutputDTO); |
| | | |
| | | String getLaminating(String selectProcesses); |
| | | |
| | | List<WorkInProgressDTO> workInProgressMpdataList1(Integer offset, Integer pageSize, String orderId, String inputProject, String selectProcesses, String laminating, WorkInProgressDTO workInProgressDTO); |
| | | |
| | | List<WorkInProgressDTO> workInProgressMpdataList2(Integer offset, Integer pageSize, String orderId, String inputProject, String selectProcesses, WorkInProgressDTO workInProgressDTO); |
| | | |
| | | List<WorkInProgressDTO> workInProgressOrderMpList1(Integer offset, Integer pageSize, String orderId, String inputProject, String selectProcesses, WorkInProgressDTO workInProgressDTO); |
| | | |
| | | List<WorkInProgressDTO> workInProgressProcessMpList1(Integer offset, Integer pageSize, String orderId, String inputProject, String selectProcesses, WorkInProgressDTO workInProgressDTO); |
| | | |
| | | List<WorkInProgressDTO> exportWorkInProgressMpdataList2(String process); |
| | | |
| | | List<WorkInProgressDTO> workInProgressCombinationMpdataList2(Integer offset, Integer pageSize, String selectProcesses, WorkInProgressDTO workInProgressDTO); |
| | | |
| | | List<WorkInProgressDTO> workInProgressCombinationMpdataList1(Integer offset, Integer pageSize, String selectProcesses, WorkInProgressDTO workInProgressDTO); |
| | | |
| | | Map<String,Float> workInProgressCombinationOrderFootSum(Integer offset, Integer pageSize, String orderId, String inputProject, String selectProcesses, WorkInProgressDTO workInProgressDTO); |
| | | |
| | | List<Map<String, Object>> getWorkInProgressCombination(String process, String laminating, String optionVal); |
| | | |
| | | List<String> selectProcess(); |
| | | |
| | | Map<String,Object> getWorkInProgressCombinationFootSum(String process, String laminating, String optionVal); |
| | | |
| | | List<WorkInProgressCombinationDTO> exportWorkInProgressCombination(String process, String laminating, String inputVal); |
| | | |
| | | |
| | | // Map<String, Integer> getWorkInProgressTotal( |
| | | // @Param("selectTime1") Date selectTime1, @Param("selectTime2") Date selectTime2, |
| | |
| | | |
| | | List<BasicDataProduce> SelectWorkBasicDeviceMp(String process); |
| | | |
| | | List<BasicDataProduce> SelectWorkBasicTeamsMp(String process); |
| | | List<Map<String,String>> SelectWorkBasicTeamsMp(String process); |
| | | |
| | | String SelectTechnologicalProcess(String processIdStr, String technologyStr); |
| | | |
| | |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.example.erp.dto.pp.ReworkDTO; |
| | | import com.example.erp.entity.mm.FinishedGoodsInventory; |
| | | import com.example.erp.entity.pp.FlowCard; |
| | | import com.example.erp.entity.pp.ReportingWorkDetail; |
| | | import com.example.erp.entity.pp.Rework; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | |
| | | |
| | | Boolean deleteReworkMp(String reworkId); |
| | | |
| | | Boolean updateReworkDdMp(String reportingWorkId, String orderSort, Integer technologyNumber, Integer reworkNum); |
| | | Boolean updateReworkDdMp(String reportingWorkId, String orderSort, Integer technologyNumber, Integer reworkNum, String reworkType, String reworkReason); |
| | | |
| | | Boolean updateReworkBgMp(String reportingWorkId, String orderSort, Integer technologyNumber); |
| | | } |
| File was renamed from north-glass-erp/src/main/java/com/example/erp/mapper/sd/BasicDateMapper.java |
| | |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.example.erp.entity.sd.BasicData; |
| | | import com.example.erp.entity.sd.Order; |
| | | import com.example.erp.service.sd.BasicDateService; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @Mapper |
| | | public interface BasicDateMapper extends BaseMapper<BasicData> { |
| | | public interface BasicDataMapper extends BaseMapper<BasicData> { |
| | | |
| | | List<BasicData> getOrderBasicData(String type); |
| | | List<String> getOrderBasicDataType(String type); |
| | |
| | | |
| | | List<DeliveryDetail> getSelectDeliveryPrinting(@Param("deliveryId") String deliveryId,@Param("type") String type); |
| | | |
| | | List<DeliveryDetail> getSelectDeliveryPrintingMoney(@Param("deliveryId") String deliveryId,@Param("type") String type); |
| | | |
| | | List<DeliveryDetail> getSelectDeliveryPrintingNoMoney(@Param("deliveryId") String deliveryId,@Param("type") String type); |
| | | |
| | | List<Map<String, Object>> getSelectDeliveryPrintingMoneySpecifications(@Param("deliveryId") String deliveryId, |
| | | @Param("productId") Integer productId,@Param("orderId") String orderId); |
| | | |
| | | List<Map<String, Object>> getSelectDeliveryPrintingNoMoneySpecifications(@Param("deliveryId") String deliveryId, |
| | | @Param("productId") Integer productId,@Param("orderId") String orderId); |
| | | |
| | | List<OrderDetail> getSelectOrderPrinting(Object productId, String orderId); |
| | | |
| | | List <Map<String, Object>> getSelectDeliveryDetailPrinting(@Param("deliveryId") String deliveryId, |
| | |
| | | |
| | | List<Order> exportOrderSummary(List<LocalDate> dates); |
| | | |
| | | boolean deleteOrderFile(String orderId); |
| | | |
| | | |
| | | } |
| | |
| | | List<OrderGlassDetail> getOrderGlassDetailByProductIdGlassChild(String orderId, Integer orderNumber); |
| | | |
| | | Integer getMinIdByGroup(String orderId, String orderNumber, String group); |
| | | Integer getMaxIdByGroup(String orderId, String orderNumber, String group); |
| | | |
| | | Integer getMinTechnologyNumberByGroup(String orderId, String orderNumber, String group); |
| | | |
| | | Integer getMaxTechnologyNumberByGroup(String orderId, String orderNumber, String group); |
| | | } |
| | |
| | | Map<String,String> scannerGlassInfo(String projectNo, Integer layoutId, Integer sort, String orderId); |
| | | |
| | | String getProcessIdByOptimizeHeatDetail(String projectId, Integer layoutId, Integer sort); |
| | | |
| | | Boolean saveOrderFile(String fileName,String dxfData,String orderId,Integer orderNumber); |
| | | |
| | | Boolean updateOrderFile(String fileName,String dxfData,String orderId,Integer orderNumber); |
| | | |
| | | Map<String,String> selectOrderFile( String orderId,Integer orderNumber); |
| | | |
| | | List<Map<String,String>> selectOrderFileList( String orderId); |
| | | } |
| | |
| | | |
| | | void insertByReportingWorkDetail(ReportingWorkDetail reportingWorkDetail, String processId, String thisProcess); |
| | | |
| | | List<Map<String,String>> filterOrderProcessCollect(Date selectTime1, Date selectTime2); |
| | | List<Map<String,String>> filterOrderProcessCollect(Date selectTime1, Date selectTime2, String orderId); |
| | | |
| | | List<Map<String, Integer>> getGlassLRowCollect(Date selectTime1, Date selectTime2); |
| | | List<Map<String, Integer>> getGlassLRowCollect(Date selectTime1, Date selectTime2, String orderId); |
| | | |
| | | String selectNextProcess(String processId, String technologyNumber, String thisProcess); |
| | | String selectNextProcess(String processId, String technologyNumber, String thisProcess, String orderNumber); |
| | | |
| | | List<Map<String, String>> selectShiftQuantitySv(String creatorId, String startDatetime, String endDatetime, String step); |
| | | } |
| | |
| | | List<ProductDetail> getGlassDetailList(); |
| | | |
| | | boolean insertList(List<ProductDetail> getProductDetails); |
| | | |
| | | String getGlassNameByGroup(Integer productId, Integer minTechnologyNumberByGroup, Integer maxTechnologyNumberByGroup); |
| | | } |
| | |
| | | List<Product> selectProduct(@Param("productName") String productName,@Param("productNameValue") String productNameValue); |
| | | |
| | | List<Product> selectProductId(@Param("productName") String productName,@Param("productNameValue") String productNameValue,@Param("id") Long id); |
| | | |
| | | Double getGlassThickness(Integer productId, Integer technologyNumber); |
| | | } |
| | |
| | | |
| | | import com.baomidou.dynamic.datasource.annotation.DS; |
| | | import com.example.erp.entity.mm.BasicWarehouseType; |
| | | import com.example.erp.entity.sd.BasicData; |
| | | import com.example.erp.entity.sd.Customer; |
| | | import com.example.erp.mapper.mm.BasicWarehouseTypeMapper; |
| | | import com.example.erp.mapper.sd.BasicDateMapper; |
| | | import com.example.erp.mapper.sd.CustomerMapper; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | |
| | | } |
| | | |
| | | |
| | | public Map<String, Object> BasicWarehouseTypeUser(String type){ |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("userName",basicWarehouseTypeMapper.getBasicWarehouseUser(type)); |
| | | return map; |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.transaction.interceptor.TransactionAspectSupport; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.sql.SQLException; |
| | | import java.sql.Wrapper; |
| | | import java.text.SimpleDateFormat; |
| | |
| | | String storageRegion = ""; |
| | | String remark = ""; |
| | | String container = ""; |
| | | int decValue = 0; |
| | | if (object.get("remark") != null) { |
| | | remark = object.get("remark").toString(); |
| | | } |
| | |
| | | if (object.get("userId") != null) { |
| | | userId = object.get("userId").toString(); |
| | | } |
| | | if (object.get("decValue") != null) { |
| | | decValue = Integer.parseInt(object.get("decValue").toString()); |
| | | } |
| | | Log log = new Log(); |
| | | log.setOperator(userName); |
| | | log.setOperatorId(userId); |
| | |
| | | if (!flowCardlist.isEmpty()){ |
| | | //è·ååå· |
| | | String oddNumber= orderNumberSetting("å
¥åº"); |
| | | for (FlowCard flowCard : flowCardlist) { |
| | | for (FlowCard flowCards : flowCardlist) { |
| | | FlowCard flowCard = finishedGoodsInventoryMapper.getSelectWarehousingByProcessId(flowCards.getOrder().getOrderId(),flowCards.getOrderNumber(),flowCards.getProcessId()); |
| | | Integer calculateType=flowCard.getOrder().getCalculateType(); |
| | | double deliveryDetailMoney = 0.0; |
| | | double deliveryDetailArea = 0.0; |
| | | BigDecimal getComputeArea= BigDecimal.valueOf(flowCard.getOrderDetail().getComputeArea()); |
| | | BigDecimal getQuantity= BigDecimal.valueOf(flowCard.getInventoryQuantity()); |
| | | BigDecimal getPrice= BigDecimal.valueOf(flowCard.getOrderDetail().getPrice()); |
| | | BigDecimal getWidth= BigDecimal.valueOf(flowCard.getOrderDetail().getWidth()); |
| | | BigDecimal getHeight= BigDecimal.valueOf(flowCard.getOrderDetail().getHeight()); |
| | | BigDecimal singlePieceArea =getComputeArea.multiply(getQuantity).setScale(decValue, RoundingMode.HALF_UP) |
| | | .multiply(getPrice).setScale(2, RoundingMode.HALF_UP); |
| | | //æ ¹æ®è®¢åè®¡ç®æ¹å¼è¿è¡éé¢è®¡ç® |
| | | if (calculateType==1){ |
| | | deliveryDetailMoney=singlePieceArea.doubleValue(); |
| | | deliveryDetailArea=getComputeArea.multiply(getQuantity).doubleValue(); |
| | | |
| | | }else if (calculateType==2){ |
| | | //夿å®é
åçé¢ç§¯è·ç»ç®åçé¢ç§¯æ¯å¦ç¸ç ç»ç®æ»é¢ç§¯è·å®é
æ»é¢ç§¯æ¯å¦ç¸ç |
| | | if(Objects.equals(flowCard.getOrderDetail().getArea(), flowCard.getOrderDetail().getComputeArea())&&Objects.equals(flowCard.getOrderDetail().getGrossArea(), flowCard.getOrderDetail().getComputeGrossArea())){ |
| | | deliveryDetailMoney=getWidth.multiply(getHeight).multiply(getQuantity).divide(BigDecimal.valueOf(1000000), decValue, RoundingMode.HALF_UP) |
| | | .multiply(getPrice).setScale(2, RoundingMode.HALF_UP).doubleValue(); |
| | | deliveryDetailArea=getWidth.multiply(getHeight).multiply(getQuantity).divide(BigDecimal.valueOf(1000000), decValue, RoundingMode.HALF_UP).doubleValue(); |
| | | }else{ |
| | | deliveryDetailMoney=singlePieceArea.doubleValue(); |
| | | deliveryDetailArea=getComputeArea.multiply(getQuantity).doubleValue(); |
| | | } |
| | | }else if (calculateType==3){ |
| | | deliveryDetailMoney=getQuantity.multiply(getPrice).setScale(2, RoundingMode.HALF_UP).doubleValue(); |
| | | deliveryDetailArea=getComputeArea.multiply(getQuantity).doubleValue(); |
| | | |
| | | }else if (calculateType==4){ |
| | | //夿å®é
åçé¢ç§¯è·ç»ç®åçé¢ç§¯æ¯å¦ç¸ç ç»ç®æ»é¢ç§¯è·å®é
æ»é¢ç§¯æ¯å¦ç¸ç |
| | | if(Objects.equals(flowCard.getOrderDetail().getArea(), flowCard.getOrderDetail().getComputeArea())&&Objects.equals(flowCard.getOrderDetail().getGrossArea(), flowCard.getOrderDetail().getComputeGrossArea())){ |
| | | deliveryDetailMoney=getWidth.multiply(getHeight).multiply(getQuantity).multiply(getPrice). |
| | | divide(BigDecimal.valueOf(1000000), 2, RoundingMode.HALF_UP).doubleValue(); |
| | | deliveryDetailArea=getWidth.multiply(getHeight).multiply(getQuantity).divide(BigDecimal.valueOf(1000000), decValue, RoundingMode.HALF_UP).doubleValue(); |
| | | }else{ |
| | | deliveryDetailMoney=getComputeArea.multiply(getQuantity).multiply(getPrice).setScale(decValue, RoundingMode.HALF_UP).doubleValue(); |
| | | deliveryDetailArea=getComputeArea.multiply(getQuantity).doubleValue(); |
| | | } |
| | | } |
| | | |
| | | |
| | | //æ·»å åºå
¥åºè®°å½ |
| | | finishedOperateLogMapper.insertIntFinishedOperateLog(flowCard,userName,oddNumber,container); |
| | | finishedOperateLogMapper.insertIntFinishedOperateLog(flowCard,userName,oddNumber,container,deliveryDetailMoney,deliveryDetailArea); |
| | | Integer finishedGoodsInventorycount = finishedGoodsInventoryMapper.findOrderNumberdcount(flowCard.getOrder().getOrderId(),flowCard.getOrderNumber()); |
| | | Integer ordersum = finishedGoodsInventoryMapper.findOrderQuantity(flowCard.getOrder().getOrderId()); |
| | | Integer ordernumbersum = finishedGoodsInventoryMapper.findOrderNumberdsum(flowCard.getOrder().getOrderId()); |
| | |
| | | /*System.out.println("è®¢åæ»æ°:" + ordersum + "å·²å
¥åºæ°éï¼" + ordernumbersum + "åå¤å
¥åºæ°é" + flowCard.getInventoryQuantity());*/ |
| | | if (finishedGoodsInventorycount > 0) { |
| | | //ä¿®æ¹åºå表å
¥åºæ°é |
| | | finishedGoodsInventoryMapper.updateInventory(flowCard,storageRegion, remark); |
| | | finishedGoodsInventoryMapper.updateInventory(flowCard,storageRegion, remark,container); |
| | | //ä¿®æ¹æµç¨å¡è¡¨å
¥åºæ°é |
| | | finishedGoodsInventoryMapper.updateflowcard(flowCard); |
| | | //ä¿®æ¹è®¢å表å
¥åºç¶æ |
| | |
| | | finishedGoodsInventoryMapper.updateOrderWarehousingState(flowCard.getOrder().getOrderId(),2); |
| | | } |
| | | } else { |
| | | if (finishedGoodsInventoryMapper.insertFinishedGoodsInventory(flowCard, storageRegion, remark)) { |
| | | if (finishedGoodsInventoryMapper.insertFinishedGoodsInventory(flowCard, storageRegion, remark,container)) { |
| | | //ä¿®æ¹æµç¨å¡è¡¨å
¥åºæ°é |
| | | finishedGoodsInventoryMapper.updateflowcard(flowCard); |
| | | //ä¿®æ¹è®¢åæç»è¡¨å
¥åºæ°é |
| | |
| | | return map; |
| | | } |
| | | |
| | | public Map<String, Object> getSelectPrintSvs(Map<String, Object> object) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();//æç»ç»æ |
| | | List<FinishedOperateLog> finishedOperateLogList = JSONArray.parseArray(JSONObject.toJSONString(object.get("printList")), FinishedOperateLog.class); |
| | | if (!finishedOperateLogList.isEmpty()) { |
| | | Set<String> processedProcessIds = new HashSet<>(); |
| | | for (FinishedOperateLog finishedOperateLog : finishedOperateLogList) { |
| | | String OrderId = finishedOperateLog.getOrderId(); |
| | | String Remarks = finishedOperateLog.getRemarks(); |
| | | |
| | | // æ£æ¥æ¯å¦å·²ç»å¤çè¿è¯¥ OrderIdï¼å¦æå¤çè¿åè·³è¿ |
| | | if (processedProcessIds.contains(OrderId) && processedProcessIds.contains(Remarks)) { |
| | | continue; |
| | | } |
| | | |
| | | Map<String, Object> itemmap = new HashMap<>(); |
| | | itemmap.put("detail", finishedOperateLogMapper.getPrimaryListLimts(finishedOperateLog.getOrder().getCustomerName(),finishedOperateLog.getOrder().getProject(),finishedOperateLog.getRemarks())); |
| | | |
| | | List<Map<String, Object>> detailList = finishedOperateLogMapper.getDetailList2(finishedOperateLog.getOrderId(),finishedOperateLog.getProcessId(),finishedOperateLog.getRemarks()); |
| | | |
| | | List<Map<String, Object>> detailsmaplist = new ArrayList<Map<String, Object>>(); |
| | | |
| | | for(Map<String, Object> details:detailList){ |
| | | Map<String, Object> detailsmap = new HashMap<>(); |
| | | detailsmap.put("product_name",details.get("product_name").toString()); |
| | | List<Map<String, Object>> orderDetailList = finishedOperateLogMapper |
| | | .getDetailLists( |
| | | finishedOperateLog.getOrderId(), |
| | | finishedOperateLog.getRemarks(), |
| | | Integer.valueOf(details.get("product_id").toString()), |
| | | details.get("thickness").toString() |
| | | ); |
| | | /*for (Map<String, Object>orderDetail:orderDetailList){ |
| | | |
| | | }*/ |
| | | |
| | | detailsmap.put("detailList",orderDetailList); |
| | | detailsmaplist.add(detailsmap); |
| | | |
| | | } |
| | | itemmap.put("detailList", detailsmaplist); |
| | | list.add(itemmap); |
| | | |
| | | |
| | | processedProcessIds.add(OrderId); |
| | | processedProcessIds.add(Remarks); |
| | | } |
| | | } |
| | | map.put("data", list); |
| | | return map; |
| | | } |
| | | |
| | | |
| | | public String deliveryDetailLogic(List<OrderDetail> list,Object savePoint,String userName) { |
| | | for (OrderDetail orderDetail : list) { |
| | |
| | | List<MaterialOutbound> materialOutboundList=materialInventoryMapper.getSelectMaterialOutboundProjectNo(projectNo); |
| | | OptimizeUse optimizeUses=materialInventoryMapper.getSelectOptimizeUses(projectNo,width,height); |
| | | |
| | | |
| | | if(optimizeUses.getNotUseCount()>0){ |
| | | MaterialInventory materialInventory=materialInventoryMapper.getMaterialInventoryById(Long.valueOf(optimizeUses.getRawStockCode())); |
| | | if(materialOutboundList.size()==1){ |
| | | List<MaterialOutboundDetail> materialOutboundDetailList=materialInventoryMapper.getSelectMaterialOutboundOptimizeUses(materialOutboundList.get(0).getMaterialOutboundId(),optimizeUses.getId()); |
| | |
| | | } |
| | | materialInventoryMapper.updateMaterialInventoryAvailableInventoryOutMes(Long.valueOf(optimizeUses.getRawStockCode()),quantity); |
| | | materialInventoryMapper.updateOptimizeUsesMes(optimizeUses.getId(),quantity); |
| | | } |
| | | |
| | | //ä¿åæ¥å¿ |
| | | Log log = new Log(); |
| | |
| | | map.put("selectDate",list); |
| | | return map; |
| | | } |
| | | |
| | | public Map<String, Object> mesOriginalSelect() { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("data", materialInventoryMapper.getSelectMaterialInventoryMes()); |
| | | return map; |
| | | } |
| | | |
| | | public String saveToExamineMaterialOutbound(Map<String,Object> object) { |
| | | String saveState = "true"; |
| | | //è®¾ç½®åæ»ç¹ |
| | | Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint(); |
| | | String materialOutboundId = ""; |
| | | String oddNumber; |
| | | if (object.get("materialOutboundId") != null) { |
| | | materialOutboundId = object.get("materialOutboundId").toString(); |
| | | } |
| | | Log log = new Log(); |
| | | log.setOperatorId(object.get("userId").toString()); |
| | | log.setOperator(object.get("userName").toString()); |
| | | log.setContent(object.toString()); |
| | | try { |
| | | MaterialOutbound materialOutbound = JSONObject.parseObject(JSONObject.toJSONString(object.get("title")), MaterialOutbound.class); |
| | | List<MaterialOutboundDetail> materialOutboundDetailList = JSONArray.parseArray(JSONObject.toJSONString(object.get("materialOutboundDetail")), MaterialOutboundDetail.class); |
| | | //æ¥è¯¢åºåºåæ¯å¦åå¨ |
| | | Integer MaterialOutboundConut = materialInventoryMapper.getMaterialOutboundCount(materialOutboundId); |
| | | if (MaterialOutboundConut != 0) { |
| | | |
| | | List<MaterialOutboundDetail> materialOutboundDetailLists = materialInventoryMapper.getIsNotMaterialOutboundDetail(materialOutboundId); |
| | | if (!materialOutboundDetailLists.isEmpty()) { |
| | | for (MaterialOutboundDetail materialOutboundDetail : materialOutboundDetailLists) { |
| | | //è¿åç©æåºåæ° |
| | | materialInventoryMapper.updateMaterialInventoryAvailableInt(materialOutboundDetail.getInventoryId(), materialOutboundDetail.getOutboundQuantity()); |
| | | if(materialOutboundDetail.getUseId()!=null){ |
| | | //è¿åä¼åå·¥ç¨åºåæ° |
| | | materialInventoryMapper.updateMaterialInventoryAvailableOptInt(materialOutboundDetail.getUseId(), materialOutboundDetail.getOutboundQuantity()); |
| | | }/*else{ |
| | | //è¿åç©æåºåæ° |
| | | materialInventoryMapper.updateMaterialInventoryAvailableInt(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity()); |
| | | }*/ |
| | | |
| | | } |
| | | } |
| | | //å 餿æåºåºæç»çæ°æ® |
| | | materialInventoryMapper.deleteMaterialOutboundDetail(materialOutboundId); |
| | | materialInventoryMapper.updateMaterialOutbound(materialOutbound, materialOutboundId); |
| | | materialInventoryMapper.deleteMaterialLog(materialOutboundId); |
| | | oddNumber = materialOutboundId; |
| | | log.setFunction("saveMaterialOutboundä¿®æ¹:"+oddNumber); |
| | | } else { |
| | | //è·ååå· |
| | | oddNumber = orderNumberSetting("åºåº"); |
| | | //æ°å¢ææåºåºè¡¨æ°æ® |
| | | materialInventoryMapper.insertMaterialOutbound(materialOutbound, oddNumber); |
| | | log.setFunction("saveMaterialOutboundæ°å¢:"+oddNumber); |
| | | } |
| | | |
| | | //è·å对象éå循ç¯è¿è¡æ°å¢ä¿®æ¹ |
| | | |
| | | if (!materialOutboundDetailList.isEmpty()) { |
| | | for (MaterialOutboundDetail materialOutboundDetail : materialOutboundDetailList) { |
| | | MaterialInventory materialInventory = materialInventoryMapper.getMaterialInventoryById(materialOutboundDetail.getId()); |
| | | if(materialInventory.getAvailableQuantity()>=materialOutboundDetail.getOutboundQuantity()){ |
| | | Integer materialOutboundDetailMaximum = materialInventoryMapper.getMaterialOutboundDetailMaximum(oddNumber); |
| | | //æ°å¢ææåºåºæç»æ°æ® |
| | | materialInventoryMapper.insertMaterialOutboundDetail(materialOutboundDetail, oddNumber, materialOutboundDetailMaximum + 1); |
| | | //ä¿®æ¹ç©æåºå表åºåºæ°é |
| | | materialInventoryMapper.updateMaterialInventoryAvailableOut(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity()); |
| | | |
| | | String projectNo=""; |
| | | if(materialOutboundDetail.getUseId()!=null){ |
| | | projectNo = materialInventoryMapper.selectProjectNo(materialOutboundDetail.getUseId()); |
| | | //ä¿®æ¹ä¼åå·¥ç¨è¡¨åºåºæ°é |
| | | materialInventoryMapper.updateMaterialInventoryAvailableOptOut(materialOutboundDetail.getUseId(), materialOutboundDetail.getOutboundQuantity()); |
| | | |
| | | }/*else{ |
| | | //ä¿®æ¹ç©æåºå表åºåºæ°é |
| | | materialInventoryMapper.updateMaterialInventoryAvailableOut(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity()); |
| | | }*/ |
| | | |
| | | if(materialOutboundDetail.getUseId()!=null){ |
| | | //ä¿®æ¹ç©æåºåæ°é |
| | | materialInventoryMapper.updateMaterialInventoryInventoryPlanQuantityOut(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity()); |
| | | }else{ |
| | | materialInventoryMapper.updateMaterialInventoryInventoryOut(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity()); |
| | | } |
| | | |
| | | materialInventoryMapper.updateMaterialOutboundToExamine(oddNumber,1,object.get("userName").toString()); |
| | | String json=""; |
| | | MaterialStore materialStore=materialStoreMapper.getSelectMaterialStoreById(Long.valueOf(materialOutboundDetail.getMaterialCode())); |
| | | json=materialStore.getJson().substring(1, materialStore.getJson().length() - 1); |
| | | MaterialLog materialLog=new MaterialLog(); |
| | | materialLog.setOperationOrderNumber(oddNumber); |
| | | materialLog.setOperationNumber(materialOutboundDetailMaximum + 1); |
| | | materialLog.setOperateType("ç©æåºåº"); |
| | | materialLog.setMaterialCode(Long.valueOf(materialOutboundDetail.getMaterialCode())); |
| | | materialLog.setMaterialName(convertString(json,"\"name\"")); |
| | | materialLog.setProducer(materialInventory.getProducer()); |
| | | materialLog.setUnit(convertString(json,"\"unit\"")); |
| | | materialLog.setWidth(convertDouble(json,"\"width\"")); |
| | | materialLog.setHeight(convertDouble(json,"\"height\"")); |
| | | materialLog.setThickness(convertDouble(json,"\"thickness\"")); |
| | | materialLog.setQuantity(materialOutboundDetail.getOutboundQuantity()); |
| | | materialLog.setSinglePieceArea(materialOutboundDetail.getSinglePieceArea()); |
| | | materialLog.setInventoryId(materialOutboundDetail.getId()); |
| | | materialLog.setInventoryArea(materialInventory.getInventoryArea()); |
| | | materialLog.setRemarks(materialOutboundDetail.getRemarks()); |
| | | materialLog.setProjectNo(projectNo); |
| | | materialLog.setOperator(object.get("userName").toString()); |
| | | materialLog.setOperateTime(LocalDate.now()); |
| | | materialLogMapper.insert(materialLog); |
| | | }else{ |
| | | TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); |
| | | return "false1"; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | } |
| | | logService.saveLog(log); |
| | | |
| | | } catch (Exception e) { |
| | | TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); |
| | | //å°å¼å¸¸ä¼ å
¥æ°æ®åº |
| | | SysError sysError = new SysError(); |
| | | sysError.setError(e+Arrays.toString(e.getStackTrace())); |
| | | sysError.setFunc("saveMaterialOutbound"); |
| | | sysErrorService.insert(sysError); |
| | | saveState = "false"; |
| | | |
| | | } |
| | | return saveState; |
| | | |
| | | } |
| | | |
| | | } |
| | |
| | | import com.example.erp.mapper.sd.*; |
| | | import com.example.erp.service.userInfo.LogService; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.awt.*; |
| | | import java.time.LocalDate; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | |
| | | } |
| | | } |
| | | |
| | | public Map<String, Object> getSelectPrintingSv(Map<String, Object> object, String printMerge, String printLike, String merge) { |
| | | public Map<String, Object> getSelectPrintingSv(Map<String, Object> object, String printMerge, String printLike, String merge, String flashback, String compound, String landingSequence) { |
| | | if (printMerge == null) { |
| | | printMerge = ""; |
| | | } |
| | |
| | | if (printMerge.equals("") || printMerge.equals("null")) { |
| | | //æ¯å¦å
å«åå² |
| | | //boolean containsCutting = flowCard.getProcess().contains("åå²"); |
| | | String processSub = flowCard.getProcess().substring(0, 2); |
| | | String processSub = flowCard.getProcess().split("->")[0]; |
| | | //è·åå·¥åºå¯¹åºçå«ç§° |
| | | String processName = flowCardMapper.getProcessName(processSub); |
| | | if (processName.equals("stepC") || processName.equals("stepD")) {//å·¥èºæ¯å¦å
å«å¤¹è¶ä¸ç©º |
| | | itemmap.put("detail", flowCardMapper.getPrimaryListLimt(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()), flowCard.getGlassChild(), flowCard.getProcess(), flowCard.getOrderId())); |
| | | itemmap.put("detail", flowCardMapper.getPrimaryListLimt(flowCard.getProcessId(), |
| | | String.valueOf("null".equals(compound) |
| | | ? flowCard.getTechnologyNumber()//æ£å¸¸å± |
| | | : compound ),//åæ¶å± |
| | | flowCard.getGlassChild(), flowCard.getProcess(), flowCard.getOrderId())); |
| | | |
| | | List<Map<String, Object>> detailList = flowCardMapper.getDetailList(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess()); |
| | | if (compound == null |
| | | || "null".equals(compound) |
| | | || compound.trim().isEmpty()){ |
| | | List<Map<String, Object>> detailList = flowCardMapper.getDetailList(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess(),flashback,landingSequence); |
| | | itemmap.put("detailList", detailList); |
| | | }else {//æéè¦åæ¶çå± |
| | | List<Map<String, Object>> detailList = flowCardMapper.getDetailCompoundList(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess(),flashback,compound,landingSequence); |
| | | itemmap.put("detailList", detailList); |
| | | } |
| | | } else { |
| | | if (merge.equals("1") && flowCard.getMerge().equals(1)) { |
| | | if (merge.equals("1") && flowCard.getMerge().equals(1)) {//å¦ |
| | | // æ£æ¥æ¯å¦å·²ç»å¤çè¿è¯¥ processIdï¼å¦æå¤çè¿åè·³è¿ |
| | | if (processedKeys.contains(uniqueKey)) { |
| | | continue; |
| | |
| | | // å°è¯¥ processId å å
¥å·²å¤çéå |
| | | processedKeys.add(uniqueKey); |
| | | itemmap.put("detail", flowCardMapper.getPrimaryList(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()), flowCard.getGlassChild(), flowCard.getProcess(), flowCard.getOrderId())); |
| | | |
| | | List<Map<String, Object>> detailList = flowCardMapper.getDetailListMerge(flowCard.getProcessId(), flowCard.getProcess()); |
| | | List<Map<String, Object>> detailList = flowCardMapper.getDetailListMerge(flowCard.getProcessId(), flowCard.getProcess(),flashback,landingSequence); |
| | | itemmap.put("detailList", detailList); |
| | | } else { |
| | | itemmap.put("detail", flowCardMapper.getPrimaryList(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()), flowCard.getGlassChild(), flowCard.getProcess(), flowCard.getOrderId())); |
| | | |
| | | List<Map<String, Object>> detailList = flowCardMapper.getDetailListLike(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()), flowCard.getProcess()); |
| | | itemmap.put("detail", flowCardMapper.getPrimaryListLimt(flowCard.getProcessId(), |
| | | String.valueOf("null".equals(compound) |
| | | ? flowCard.getTechnologyNumber()//æ£å¸¸å± |
| | | : compound ),//åæ¶å± |
| | | flowCard.getGlassChild(), flowCard.getProcess(), flowCard.getOrderId())); |
| | | if (compound == null |
| | | || "null".equals(compound) |
| | | || compound.trim().isEmpty()){ |
| | | List<Map<String, Object>> detailList = flowCardMapper.getDetailListLike(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()), flowCard.getProcess(),flashback,landingSequence); |
| | | itemmap.put("detailList", detailList); |
| | | }else {//æéè¦åæ¶çå± |
| | | List<Map<String, Object>> detailList = flowCardMapper.getDetailListLikeCompound(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()), flowCard.getProcess(),flashback,compound,landingSequence); |
| | | itemmap.put("detailList", detailList); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | } else { |
| | | } else {//å¦ |
| | | //æµç¨å¡æç»æ°æ® |
| | | if (printLike.equals("") || printLike.equals("null")) { |
| | | itemmap.put("detail", flowCardMapper.getPrimaryListMerge(flowCard.getProcessId(), printMerge, flowCard.getOrderId())); |
| | | |
| | | List<Map<String, Object>> detailList = flowCardMapper.getDetailList(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess()); |
| | | List<Map<String, Object>> detailList = flowCardMapper.getDetailList(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess(), flashback, landingSequence); |
| | | itemmap.put("detailList", detailList); |
| | | } else { |
| | | itemmap.put("detail", flowCardMapper.getPrimaryList(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()), flowCard.getGlassChild(), flowCard.getProcess(), flowCard.getOrderId())); |
| | | |
| | | List<Map<String, Object>> detailList = flowCardMapper.getDetailListLike(flowCard.getProcessId(), printMerge, flowCard.getProcess()); |
| | | List<Map<String, Object>> detailList = flowCardMapper.getDetailListLike(flowCard.getProcessId(), printMerge, flowCard.getProcess(), flashback, landingSequence); |
| | | itemmap.put("detailList", detailList); |
| | | } |
| | | } |
| | |
| | | return map; |
| | | } |
| | | |
| | | public Map<String, Object> getSelectPrintProject(String printProject, String merge) { |
| | | public Map<String, Object> getSelectPrintProject(String printProject, String merge, String flashback, String landingSequence) { |
| | | |
| | | Map<String, Object> map = new HashMap<>(); |
| | | List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();//æç»ç»æ |
| | |
| | | if (processName.equals("stepC") || processName.equals("stepD")) {//å·¥èºæ¯å¦å
å«å¤¹è¶ä¸ç©º |
| | | itemmap.put("detail", flowCardMapper.getPrimaryListLimt(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()), flowCard.getGlassChild(), flowCard.getProcess(), flowCard.getOrderId())); |
| | | if (flowCard.getPatchState().equals(0)) { |
| | | List<Map<String, Object>> detailList = flowCardMapper.getDetailList(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess()); |
| | | List<Map<String, Object>> detailList = flowCardMapper.getDetailList(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess(), flashback, landingSequence); |
| | | itemmap.put("detailList", detailList); |
| | | } else { |
| | | List<Map<String, Object>> detailList = flowCardMapper.getDetailLists(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess(), flowCard.getOrderNumber()); |
| | |
| | | processedKeys.add(uniqueKey); |
| | | itemmap.put("detail", flowCardMapper.getPrimaryList(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()), flowCard.getGlassChild(), flowCard.getProcess(), flowCard.getOrderId())); |
| | | |
| | | List<Map<String, Object>> detailList = flowCardMapper.getDetailListMerge(flowCard.getProcessId(), flowCard.getProcess()); |
| | | List<Map<String, Object>> detailList = flowCardMapper.getDetailListMerge(flowCard.getProcessId(), flowCard.getProcess(), flashback, landingSequence); |
| | | itemmap.put("detailList", detailList); |
| | | } else { |
| | | itemmap.put("detail", flowCardMapper.getPrimaryList(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()), flowCard.getGlassChild(), flowCard.getProcess(), flowCard.getOrderId())); |
| | | List<Map<String, Object>> detailList = flowCardMapper.getDetailListLike(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()), flowCard.getProcess()); |
| | | List<Map<String, Object>> detailList = flowCardMapper.getDetailListLike(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()), flowCard.getProcess(), flashback, landingSequence); |
| | | itemmap.put("detailList", detailList); |
| | | } |
| | | |
| | |
| | | List<FlowCard> flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("composing")), FlowCard.class); |
| | | if (!flowCardList.isEmpty()) { |
| | | for (FlowCard flowCard : flowCardList) { |
| | | //å
è·åæçç¶æ |
| | | Integer layoutStatus = flowCardMapper.getLayoutStatus(flowCard.getProcessId()); |
| | | //2ä¼åå ç¨ |
| | | if (layoutStatus!=2){ |
| | | flowCardMapper.updateComposing(flowCard.getProcessId()); |
| | | } |
| | | else { |
| | | return false; |
| | | } |
| | | |
| | | } |
| | | //ä¿åæ¥å¿ |
| | | Log log = new Log(); |
| | | log.setContent(object.toString()); |
| | | log.setFunction("FlowCardSvæµç¨å¡æçç¶æ"); |
| | | log.setOperatorId((String) object.get("userId")); |
| | | log.setOperator((String) object.get("userName")); |
| | | logService.saveLog(log); |
| | | return true; |
| | | } else { |
| | | return false; |
| | |
| | | |
| | | |
| | | public Map<String, Object> getSelectPrintCustomLabelSv(String type, Integer lableType, Map<String, Object> object) { |
| | | //æ ¹æ®mseä¼ è¿æ¥çå¼,妿ä¸åå¨ èµå¼false |
| | | String isRepeat = Optional.ofNullable(object.get("isRepeat")) |
| | | .map(Object::toString) |
| | | .orElse("false"); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();//æç»ç»æ |
| | | List<FlowCard> flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("printList")), FlowCard.class); |
| | |
| | | String processId = flowCard.getProcessId(); |
| | | Integer orderNumber = flowCard.getOrderNumber(); |
| | | String uniqueKey = processId + "|" + orderNumber; // ç¨ç¹æ®åç¬¦è¿æ¥é²æ¢å²çª |
| | | if (isRepeat=="false"){//æ ¹æ®mseä¼ è¿æ¥çå¼å¤ææ¯å¦å»é¤éå¤ |
| | | // æ£æ¥æ¯å¦å·²ç»å¤çè¿è¯¥ processIdï¼å¦æå¤çè¿åè·³è¿ |
| | | if (processedKeys.contains(uniqueKey)) { |
| | | continue; |
| | | } |
| | | Map<String, Object> itemmap = new HashMap<>(); |
| | | itemmap.put("data", flowCardMapper.getPrintCustomData(flowCard.getProcessId(), flowCard.getOrderNumber())); |
| | | list.add(itemmap); |
| | | } |
| | | |
| | | Map<String, Object> itemmap = new HashMap<>(); |
| | | |
| | | Integer sumQuantity = flowCardMapper.getSumQuantity(flowCard.getOrderId()); |
| | | List<Map<String, Object>> details = flowCardMapper.getPrintCustomData(flowCard.getProcessId(), flowCard.getOrderNumber(), flowCard.getPrintQuantity()); |
| | | |
| | | for (Map<String, Object> detail : details) { |
| | | detail.put("sumQuantity", sumQuantity); |
| | | } |
| | | |
| | | itemmap.put("data", details); |
| | | list.add(itemmap); |
| | | // å°è¯¥ processId å å
¥å·²å¤çéå |
| | | processedKeys.add(uniqueKey); |
| | | } |
| | | } else {//å°çæ ç¾ |
| | | for (FlowCard flowCard : flowCardList) { |
| | | Map<String, Object> itemmap = new HashMap<>(); |
| | | itemmap.put("data", flowCardMapper.getPrintCustomDataSemi(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess())); |
| | | String orderNumber = ""; |
| | | if (flowCard.getOrderNumber() != null) { |
| | | orderNumber = String.valueOf(flowCard.getOrderNumber()); |
| | | } |
| | | // 夿æ¯å¦ä¸ºé空å符串 |
| | | if (orderNumber != null && !orderNumber.trim().isEmpty()) { |
| | | |
| | | itemmap.put("data", flowCardMapper.getPrintCustomDataSemi( |
| | | flowCard.getProcessId(), |
| | | flowCard.getTechnologyNumber(), |
| | | flowCard.getProcess(), |
| | | flowCard.getOrderNumber() |
| | | )); |
| | | } else { |
| | | |
| | | itemmap.put("data", flowCardMapper.getPrintCustomDataSemiTj( |
| | | flowCard.getProcessId(), |
| | | flowCard.getTechnologyNumber(), |
| | | flowCard.getProcess() |
| | | )); |
| | | } |
| | | list.add(itemmap); |
| | | } |
| | | } |
| | |
| | | } else {//å°çæ ç¾ |
| | | for (FlowCard flowCard : flowCardList) { |
| | | Map<String, Object> itemmap = new HashMap<>(); |
| | | itemmap.put("data", flowCardMapper.getPrintCustomDataSemi(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess())); |
| | | itemmap.put("data", flowCardMapper.getPrintCustomDataSemi(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess(), flowCard.getOrderNumber())); |
| | | list.add(itemmap); |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | map.put("data", list); |
| | | map.put("orderOtherMoney", flowCardMapper.selectorderOtherMoney()); |
| | | map.put("type", flowCardMapper.selectType()); |
| | | return map; |
| | | } |
| | | |
| | | public Map<String, Object> getSelectPrintCustomLabelDetailsSv(String type, Integer lableType, Map<String, Object> object) { |
| | | String landingSequence = ""; |
| | | if (object.get("landingSequence") != null) { |
| | | landingSequence = object.get("landingSequence").toString(); |
| | | } |
| | | Map<String, Object> map = new HashMap<>(); |
| | | List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();//æç»ç»æ |
| | | List<FlowCard> flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("printList")), FlowCard.class); |
| | |
| | | continue; |
| | | } |
| | | Map<String, Object> itemmap = new HashMap<>(); |
| | | itemmap.put("data", flowCardMapper.getPrintCustomDataDetails(flowCard.getProcessId(), flowCard.getOrderNumber(), flowCard.getPrintQuantity())); |
| | | Integer sumQuantity = flowCardMapper.getSumQuantity(flowCard.getOrderId()); |
| | | List<Map<String, Object>> details = flowCardMapper.getPrintCustomDataDetails(flowCard.getProcessId(), flowCard.getOrderNumber(), flowCard.getPrintQuantity()); |
| | | |
| | | for (Map<String, Object> detail : details) { |
| | | detail.put("sumQuantity", sumQuantity); |
| | | } |
| | | itemmap.put("data", details); |
| | | list.add(itemmap); |
| | | |
| | | // å°è¯¥ processId å å
¥å·²å¤çéå |
| | |
| | | } else {//å°çæ ç¾ |
| | | for (FlowCard flowCard : flowCardList) { |
| | | Map<String, Object> itemmap = new HashMap<>(); |
| | | itemmap.put("data", flowCardMapper.getPrintCustomDataSemi(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess())); |
| | | itemmap.put("data", flowCardMapper.getPrintCustomDataSemi(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess(), flowCard.getOrderNumber())); |
| | | list.add(itemmap); |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (!"1".equals(landingSequence)) { |
| | | // æé ä¸ä¸ªå
æçè¾¹ãåæé¿è¾¹çæ¯è¾å¨ |
| | | Comparator<Map<String,Object>> comparator = Comparator |
| | | .comparingDouble((Map<String,Object> m) -> { |
| | | Map<String,Object> first = ((List<Map<String,Object>>)m.get("data")).get(0); |
| | | double w = ((Number) first.get("width")).doubleValue(); |
| | | double h = ((Number) first.get("height")).doubleValue(); |
| | | return Math.min(w, h); |
| | | }) |
| | | .thenComparingDouble(m -> { |
| | | Map<String,Object> first = ((List<Map<String,Object>>)m.get("data")).get(0); |
| | | double w = ((Number) first.get("width")).doubleValue(); |
| | | double h = ((Number) first.get("height")).doubleValue(); |
| | | return Math.max(w, h); |
| | | }); |
| | | |
| | | // 对æ´ä¸ª list æåºï¼å¹¶æ´ä½å转ï¼ç边大âåï¼çè¾¹ç¸åæ¶é¿è¾¹å¤§âå |
| | | list.sort(comparator.reversed()); |
| | | } |
| | | map.put("data", list); |
| | | map.put("title", flowCardMapper.getPrintTitle(type)); |
| | |
| | | } |
| | | |
| | | |
| | | public List exportDateProcessSv(Map<String, Object> dates) { |
| | | List<LocalDate> date= (List<LocalDate>) dates.get("date"); |
| | | return flowCardMapper.exportDateProcessMp(date); |
| | | } |
| | | |
| | | public Map<String, Object> selectSortingCardSv(String orderId, String productionId, String flashback, String optionVal, FlowCard flowCard) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("data", flowCardMapper.selectSortingCardMp(orderId, productionId,flashback,optionVal, flowCard)); |
| | | map.put("maxFlowCard", flowCardMapper.selectMaxFlowCard(orderId, productionId)); |
| | | map.put("orderOtherMoney", flowCardMapper.selectorderOtherMoney()); |
| | | return map; |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | public Map<String, Object> getProjectByProjectNoSv(String projectNo) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("data", glassOptimizeMapper.getProjectByProjectNoSv(projectNo)); |
| | | return map; |
| | | } |
| | | } |
| | |
| | | List<ProductionScheduling> schedulinglist = JSONArray.parseArray(JSONObject.toJSONString(object.get("scheduling")), ProductionScheduling.class); |
| | | if (!schedulinglist.isEmpty()) { |
| | | for (ProductionScheduling productionScheduling : schedulinglist) { |
| | | productionSchedulingMapper.insertSelective(schedulingId,productionScheduling.getOrderGlassDetail().getOrderId(),productionScheduling.getOrderNumber(),productionScheduling.getTechnologyNumber(),processes,productionScheduling.getSchedulingQuantity(),productionScheduling.getScheduledStartTime(),productionScheduling.getPlanEndTime(),productionScheduling.getNotes()); |
| | | productionSchedulingMapper.insertSelective(schedulingId,productionScheduling.getOrder().getOrderId(),productionScheduling.getOrderNumber(),productionScheduling.getTechnologyNumber(),processes,productionScheduling.getSchedulingQuantity(),productionScheduling.getScheduledStartTime(),productionScheduling.getPlanEndTime(),productionScheduling.getNotes()); |
| | | } |
| | | return true; |
| | | } |
| | |
| | | |
| | | package com.example.erp.service.pp; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.TypeReference; |
| | | import com.baomidou.dynamic.datasource.annotation.DS; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.example.erp.dto.pp.*; |
| | | import com.example.erp.entity.pp.DamageDetails; |
| | | import com.example.erp.entity.pp.Report; |
| | | import com.example.erp.entity.sd.BasicData; |
| | | import com.example.erp.entity.sd.OrderDetail; |
| | | import com.example.erp.entity.sd.OrderGlassDetail; |
| | | import com.example.erp.entity.sd.ProductDetail; |
| | | import com.example.erp.mapper.pp.FlowCardMapper; |
| | | import com.example.erp.mapper.pp.ProductionSchedulingMapper; |
| | | import com.example.erp.mapper.pp.ReportMapper; |
| | | import com.example.erp.mapper.sd.OrderProcessDetailMapper; |
| | | import com.example.erp.mapper.pp.ReportingWorkMapper; |
| | | import com.example.erp.mapper.sd.*; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.StringUtils; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.sql.Date; |
| | | import java.time.LocalDate; |
| | | import java.util.*; |
| | | import java.util.function.Function; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.hutool.core.convert.Convert.toDouble; |
| | | |
| | | @Service |
| | | @DS("pp") |
| | |
| | | private final OrderProcessDetailMapper orderProcessDetailMapper; |
| | | private final ProductionSchedulingMapper productionSchedulingMapper; |
| | | |
| | | private final OrderGlassDetailMapper orderGlassDetailMapper; |
| | | private final BasicDataMapper basicDataMapper; |
| | | private final ProductDetailMapper productDetailMapper; |
| | | private final OrderDetailMapper orderDetailMapper; |
| | | |
| | | public ReportService(ReportMapper reportMapper, OrderProcessDetailMapper orderProcessDetailMapper, ProductionSchedulingMapper productionSchedulingMapper) { |
| | | FlowCardMapper flowCardMapper; |
| | | private ReportingWorkMapper reportingWorkMapper; |
| | | |
| | | |
| | | //ä¸å·¥åºæ¥å·¥çç» |
| | | private void mergeTeamsGroupsName( List<WorkInProgressDTO> dataList1,List<WorkInProgressDTO> dataList2) { |
| | | |
| | | for (WorkInProgressDTO dto1 : dataList1) { |
| | | //æ ¹æ®å½åå·¥åºè·å æ¯å¦ä¸ºåçã夹è¶ãæè
å
¨é¨ |
| | | BasicData basicData = basicDataMapper. |
| | | selectOne(new QueryWrapper<BasicData>() |
| | | .eq("basic_name", dto1.getThisProcess()) |
| | | .last("limit 1") |
| | | ); |
| | | |
| | | OrderDetail orderDetail = orderDetailMapper |
| | | .selectOne( |
| | | new QueryWrapper<OrderDetail>() |
| | | .eq("order_id", dto1.getOrderId()) |
| | | .eq("order_number", dto1.getOrderNumber()) |
| | | ); |
| | | |
| | | //å¦æä¸ºåçï¼åæ ¹æ®äº§ååç§°åå·¥èºç¼å·è·åç»çåç§° |
| | | if(basicData.getNickname()==null || basicData.getNickname().isEmpty()){ |
| | | ProductDetail productDetail = productDetailMapper. |
| | | selectOne(new QueryWrapper<ProductDetail>() |
| | | .eq("prod_id", orderDetail.getProductId()) |
| | | .eq("glass_sort",dto1.getTechnologyNumber()) |
| | | ); |
| | | dto1.setGlassName(productDetail.getDetail()); |
| | | |
| | | }else if(basicData.getNickname().equals("stepC")){ |
| | | OrderGlassDetail orderGlassDetailGroup = orderGlassDetailMapper |
| | | .selectOne(new QueryWrapper<OrderGlassDetail>() |
| | | .eq("order_id", dto1.getOrderId()) |
| | | .eq("order_number", dto1.getOrderNumber()) |
| | | .eq("technology_number",dto1.getTechnologyNumber()) |
| | | ); |
| | | |
| | | String glassName = productDetailMapper.getGlassNameByGroup( |
| | | orderDetail.getProductId(), |
| | | orderGlassDetailMapper.getMinTechnologyNumberByGroup(dto1.getOrderId(),dto1.getOrderNumber(), String.valueOf(orderGlassDetailGroup.getGroup())), |
| | | orderGlassDetailMapper.getMaxTechnologyNumberByGroup(dto1.getOrderId(),dto1.getOrderNumber(), String.valueOf(orderGlassDetailGroup.getGroup())) |
| | | ); |
| | | dto1.setGlassName(glassName); |
| | | |
| | | }else{ |
| | | dto1.setGlassName(dto1.getProductName()); |
| | | } |
| | | |
| | | } |
| | | |
| | | Function<WorkInProgressDTO, String> keyFn = dto -> |
| | | dto.getProcessId() + "|" + |
| | | dto.getOrderNumber() + "|" + |
| | | dto.getTechnologyNumber(); |
| | | |
| | | Map<String, WorkInProgressDTO> map2 = dataList2.stream() |
| | | .collect(Collectors.toMap( |
| | | keyFn, |
| | | Function.identity(), |
| | | (existing, replacement) -> existing |
| | | )); |
| | | |
| | | for (WorkInProgressDTO dto1 : dataList1) { |
| | | WorkInProgressDTO dto2 = map2.get(keyFn.apply(dto1)); |
| | | if (dto2 != null) { |
| | | String tgn = dto2.getTeamsGroupsName(); |
| | | if (StringUtils.hasText(tgn)) { |
| | | dto1.setTeamsGroupsName(tgn); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | public ReportService(ReportMapper reportMapper, OrderProcessDetailMapper orderProcessDetailMapper, |
| | | ProductionSchedulingMapper productionSchedulingMapper, FlowCardMapper flowCardMapper, |
| | | OrderGlassDetailMapper orderGlassDetailMapper, BasicDataMapper basicDataMapper, |
| | | ProductDetailMapper productDetailMapper, OrderDetailMapper orderDetailMapper, |
| | | ReportingWorkMapper reportingWorkMapper) { |
| | | this.reportMapper = reportMapper; |
| | | this.orderProcessDetailMapper = orderProcessDetailMapper; |
| | | this.productionSchedulingMapper = productionSchedulingMapper; |
| | | this.flowCardMapper = flowCardMapper; |
| | | this.orderGlassDetailMapper = orderGlassDetailMapper; |
| | | this.basicDataMapper = basicDataMapper; |
| | | this.productDetailMapper = productDetailMapper; |
| | | this.orderDetailMapper = orderDetailMapper; |
| | | this.reportingWorkMapper = reportingWorkMapper; |
| | | } |
| | | |
| | | //æµç¨å¡è¿åº¦æ¹æ³ |
| | | public Map<String, Object> processCardProgressSv(String orderId, List<Integer> columns) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | //è·åè¡¨æ ¼å
å®¹æ°æ® |
| | | map.put("data", reportMapper.processCardProgressMp(orderId)); |
| | | List<Map<String, String>> dataList = reportMapper.processCardProgressMp(orderId); |
| | | |
| | | |
| | | //è·å表头工åºçéæ°æ® |
| | | List<Map<String, String>> processFilterList = orderProcessDetailMapper.filterOrderProcess(orderId); |
| | |
| | | } |
| | | } |
| | | map.put("title", uniqueList); |
| | | Map<String,Integer> clos = new HashMap<>(); |
| | | for (int i=0;i<uniqueList.size();i++){ |
| | | //æ ¹æ®æµç¨æ¥è¯¢åºç¡æ°æ® |
| | | BasicData basicData = basicDataMapper.selectOne( |
| | | new QueryWrapper<BasicData>() |
| | | .eq("basic_category","process") |
| | | .eq("basic_name",uniqueList.get(i).get("process")) |
| | | .last("limit 1") |
| | | ); |
| | | //å¤æç£¨è¾¹å磨边åå·¥åº |
| | | if(Objects.equals(basicData.getNickname(), "stepA") || Objects.equals(basicData.getNickname(), "stepC")){ |
| | | clos.put(uniqueList.get(i).get("process"), 15+i); |
| | | } |
| | | //夿ä¸ç©ºåä¸ç©ºåå·¥åº |
| | | if(Objects.equals(basicData.getNickname(), "stepB") || Objects.equals(basicData.getNickname(), "stepD")){ |
| | | columns.add(15+i); |
| | | } |
| | | } |
| | | |
| | | |
| | | List<Map<String, Integer>> getRowCount = orderProcessDetailMapper.getGlassLRow(orderId); |
| | |
| | | getRowCount.forEach(row -> { |
| | | Map<String, Integer> getRow = new HashMap<>(); |
| | | // { row: 0, col: 1, rowspan: 3, colspan: 0}, |
| | | Object rowNumObj = row.get("RowNum"); |
| | | if (rowNumObj instanceof Double) { |
| | | getRow.put("row", ((Double) rowNumObj).intValue()); |
| | | } else if (rowNumObj instanceof Integer) { |
| | | getRow.put("row", (Integer) rowNumObj); |
| | | } |
| | | getRow.put("row", row.get("RowNum")); |
| | | getRow.put("col", col); |
| | | getRow.put("rowspan", row.get("rowCount")); |
| | | getRow.put("colspan", 0); |
| | | rowCount.add(getRow); |
| | | }); |
| | | }); |
| | | if(!clos.isEmpty()){ |
| | | //循ç¯ç»æ |
| | | for (int i=0;i<dataList.size();i++ ) { |
| | | Map<String, String> data = JSON.parseObject(dataList.get(i).get("reportWorkQuantity"), |
| | | new TypeReference<Map<String, String>>() { |
| | | }); |
| | | |
| | | for (String key : clos.keySet()) { |
| | | if(data.get(key) != null){ |
| | | Integer max = orderGlassDetailMapper |
| | | .getMaxTechnologyNumberByGroup(dataList.get(i).get("order_id"), |
| | | String.valueOf(dataList.get(i).get("order_number")), |
| | | String.valueOf(dataList.get(i).get("group")) |
| | | ); |
| | | Integer min = orderGlassDetailMapper |
| | | .getMinTechnologyNumberByGroup(dataList.get(i).get("order_id"), |
| | | String.valueOf(dataList.get(i).get("order_number")), |
| | | String.valueOf(dataList.get(i).get("group")) |
| | | ); |
| | | if(min == Integer.parseInt(String.valueOf(dataList.get(i).get("technology_number"))) ){ |
| | | Map<String, Integer> getRow = new HashMap<>(); |
| | | // { row: 0, col: 1, rowspan: 3, colspan: 0}, |
| | | getRow.put("row", i ); |
| | | getRow.put("col", clos.get(key)); |
| | | getRow.put("rowspan", max-min+1); |
| | | getRow.put("colspan", 0); |
| | | rowCount.add(getRow); |
| | | }else{ |
| | | data.put(key,"0"); |
| | | } |
| | | |
| | | } |
| | | } |
| | | dataList.get(i).put("reportWorkQuantity",JSON.toJSONString(data)); |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | map.put("data",dataList ); |
| | | map.put("mergeCells", rowCount); |
| | | |
| | | return map; |
| | |
| | | if ("null".equals(optionVal)) { |
| | | optionVal = (""); |
| | | } |
| | | |
| | | if (selectProcesses.equals("å
¨é¨")){ |
| | | selectProcesses=""; |
| | | } |
| | | String laminating = reportMapper.getLaminating(selectProcesses); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | List<WorkInProgressDTO> dataList2 =reportMapper.workInProgressMpdataList2(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO); |
| | | if (optionVal.equals("1")){ |
| | | /* æ ¹æ®éå®åå·æ±æ»*/ |
| | | map.put("data", reportMapper.workInProgressOrderMp(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO)); |
| | | //map.put("data", reportMapper.workInProgressOrderMp(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO)); |
| | | List<WorkInProgressDTO> dataList1 =reportMapper.workInProgressOrderMpList1(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO); |
| | | mergeTeamsGroupsName(dataList1, dataList2); |
| | | map.put("data",dataList1); |
| | | // map.put("total", reportMapper.workInProgressOrderTotal(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO)); |
| | | map.put("total" ,reportMapper.workInProgressOrderFootSum(offset, pageSize,orderId, inputProject, selectProcesses, workInProgressDTO)); |
| | | }else if(optionVal.equals("2")){ |
| | | /* æ ¹æµç¨å¡å·æ±æ»*/ |
| | | map.put("data", reportMapper.workInProgressProcessMp(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO)); |
| | | /* æ ¹æ®æµç¨å¡å·æ±æ»*/ |
| | | //map.put("data", reportMapper.workInProgressProcessMp(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO)); |
| | | List<WorkInProgressDTO> dataList1 =reportMapper.workInProgressProcessMpList1(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO); |
| | | mergeTeamsGroupsName(dataList1, dataList2); |
| | | map.put("data",dataList1); |
| | | // map.put("total", reportMapper.workInProgressProcessTotal(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO)); |
| | | map.put("total" ,reportMapper.workInProgressOrderFootSum(offset, pageSize,orderId, inputProject, selectProcesses, workInProgressDTO)); |
| | | |
| | |
| | | |
| | | } else { |
| | | //没æéæ©åç» |
| | | map.put("data", reportMapper.workInProgressMp(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO)); |
| | | //map.put("data", reportMapper.workInProgressMp(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO)); |
| | | List<WorkInProgressDTO> dataList1 =reportMapper.workInProgressMpdataList1(offset, pageSize, orderId, inputProject, selectProcesses,laminating, workInProgressDTO); |
| | | mergeTeamsGroupsName(dataList1, dataList2); |
| | | map.put("data",dataList1); |
| | | //map.put("total", reportMapper.workInProgressTotal(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO)); |
| | | map.put("total" ,reportMapper.workInProgressOrderFootSum(offset, pageSize,orderId, inputProject, selectProcesses, workInProgressDTO)); |
| | | |
| | |
| | | return map; |
| | | } |
| | | |
| | | public Map<String, Object> selectDamageReportSv(Integer pageNum, Integer pageSize, Date selectTime1, Date selectTime2, DamageReportDTO damageReportDTO) { |
| | | public Map<String, Object> selectDamageReportSv(Integer pageNum, Integer pageSize, String selectTime1, String selectTime2, DamageReportDTO damageReportDTO) { |
| | | Integer offset = (pageNum - 1) * pageSize; |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("data", reportMapper.selectDamageReportMp(offset, pageSize, selectTime1, selectTime2, damageReportDTO)); |
| | |
| | | public Map<String, Object> splittingDetailsOutsideSv(String orderId, Report report) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("data", reportMapper.splittingDetailsOutsideMp(orderId, report)); |
| | | map.put("orderOtherMoney", flowCardMapper.selectorderOtherMoney()); |
| | | return map; |
| | | } |
| | | |
| | |
| | | return map; |
| | | } |
| | | |
| | | public Map<String, Object> taskCompletionStatusSv(Date selectTime1, Date selectTime2, List<Integer> columns) { |
| | | public Map<String, Object> taskCompletionStatusSv(Date selectTime1, Date selectTime2, String orderId, List<Integer> columns) { |
| | | if ("null".equals(orderId)) { |
| | | orderId = ""; |
| | | } |
| | | Map<String, Object> map = new HashMap<>(); |
| | | //è·åè¡¨æ ¼å
å®¹æ°æ® |
| | | map.put("data", reportMapper.taskCompletionStatusMp(selectTime1, selectTime2)); |
| | | map.put("data", reportMapper.taskCompletionStatusMp(selectTime1, selectTime2,orderId)); |
| | | |
| | | //è·å表头工åºçéæ°æ® |
| | | List<Map<String, String>> processFilterList = orderProcessDetailMapper.filterOrderProcessCollect(selectTime1, selectTime2); |
| | | List<Map<String, String>> processFilterList = orderProcessDetailMapper.filterOrderProcessCollect(selectTime1, selectTime2,orderId); |
| | | List<Map<String, String>> processList = processFilterList; |
| | | |
| | | List<String> filterList = new ArrayList<>(); |
| | |
| | | } |
| | | map.put("title", uniqueList); |
| | | |
| | | |
| | | List<Map<String, Integer>> getRowCount = orderProcessDetailMapper.getGlassLRowCollect(selectTime1, selectTime2); |
| | | List<Map<String, Integer>> getRowCount = orderProcessDetailMapper.getGlassLRowCollect(selectTime1, selectTime2,orderId); |
| | | List<Map<String, Integer>> rowCount = new ArrayList<>(); |
| | | columns.forEach(col -> { |
| | | getRowCount.forEach(row -> { |
| | | Map<String, Integer> getRow = new HashMap<>(); |
| | | // { row: 0, col: 1, rowspan: 3, colspan: 0}, |
| | | getRow.put("row", row.get("RowNum")); |
| | | Object rowNumObj = row.get("RowNum"); |
| | | if (rowNumObj instanceof Double) { |
| | | getRow.put("row", ((Double) rowNumObj).intValue()); |
| | | } else if (rowNumObj instanceof Integer) { |
| | | getRow.put("row", (Integer) rowNumObj); |
| | | } |
| | | getRow.put("col", col); |
| | | getRow.put("rowspan", row.get("rowCount")); |
| | | getRow.put("colspan", 0); |
| | | rowCount.add(getRow); |
| | | }); |
| | | }); |
| | | |
| | | |
| | | map.put("mergeCells", rowCount); |
| | | |
| | | return map; |
| | |
| | | return reportMapper.exportCrossProcessBreakingMp(dates); |
| | | } |
| | | |
| | | public List exportDamageReportSv(List<LocalDate> dates) { |
| | | if (dates != null && dates.size() > 1) { |
| | | dates.set(1, dates.get(1).plusDays(1)); // å°ç¬¬äºä¸ªæ¥æå ä¸å¤© |
| | | } |
| | | System.out.println(dates); |
| | | return reportMapper.exportDamageReportMp(dates); |
| | | // public List exportTeamOutputSv(Map<String, Object> dates) { |
| | | // List<LocalDate> date= (List<LocalDate>) dates.get("date"); |
| | | // String process= (String) dates.get("processes"); |
| | | // if (process.equals("å
¨é¨")){ |
| | | // process=""; |
| | | // } |
| | | // String laminating = reportMapper.getLaminating(process); |
| | | // return reportMapper.exportTeamOutputMp(date,process,laminating); |
| | | // } |
| | | public List exportDamageReportSv(Map<String, Object> dates) { |
| | | List<LocalDate> date= (List<LocalDate>) dates.get("date"); |
| | | return reportMapper.exportDamageReportMp(date); |
| | | } |
| | | |
| | | public List exportOrderPlanDecompositionSv(List<LocalDate> dates) { |
| | |
| | | |
| | | public List exportWorkInProgressSv(Map<String, Object> dates) { |
| | | String process= (String) dates.get("processes"); |
| | | if (process.equals("å
¨é¨")){ |
| | | process=""; |
| | | } |
| | | String inputVal= (String) dates.get("inputVal"); |
| | | String project= (String) dates.get("project"); |
| | | if ("null".equals(inputVal)) { |
| | |
| | | if ("null".equals(project)) { |
| | | project = ""; |
| | | } |
| | | return reportMapper.exportWorkInProgressMp(process,inputVal,project); |
| | | List<WorkInProgressDTO> dataList1 =reportMapper.exportWorkInProgressMp(process,inputVal,project); |
| | | List<WorkInProgressDTO> dataList2 =reportMapper.exportWorkInProgressMpdataList2(process); |
| | | |
| | | mergeTeamsGroupsName(dataList1, dataList2); |
| | | return dataList1; |
| | | } |
| | | |
| | | public List exportTaskCompletionStatusSv(Map<String, Object> dates) { |
| | |
| | | return reportMapper.exportYieldMp(date,process); |
| | | } |
| | | |
| | | public Map<String, Object> teamOutputSv(Integer pageNum, Integer pageSize, Date selectTime1, Date selectTime2, String selectProcesses, TeamOutputDTO teamOutputDTO) { |
| | | public Map<String, Object> teamOutputSv(Integer pageNum, Integer pageSize, String selectTime1, String selectTime2, String selectProcesses, TeamOutputDTO teamOutputDTO) { |
| | | if (selectProcesses.equals("å
¨é¨")){ |
| | | selectProcesses=""; |
| | | } |
| | |
| | | String laminating = reportMapper.getLaminating(process); |
| | | return reportMapper.exportTeamOutputMp(date,process,laminating); |
| | | } |
| | | |
| | | public Map<String, Object> workInProgressCombinationSv( |
| | | Integer pageNum, Integer pageSize, |
| | | String orderId, String inputProject, String selectProcesses, |
| | | String optionVal, WorkInProgressDTO workInProgressDTO) { |
| | | |
| | | Integer offset = (pageNum - 1) * pageSize; |
| | | |
| | | if ("null".equals(orderId)) { |
| | | orderId = ""; |
| | | } |
| | | if ("null".equals(inputProject)) { |
| | | inputProject = ""; |
| | | } |
| | | if ("null".equals(optionVal)) { |
| | | optionVal = ""; |
| | | } |
| | | if ("å
¨é¨".equals(selectProcesses)) { |
| | | selectProcesses = ""; |
| | | } |
| | | |
| | | String laminating = ""; |
| | | Map<String, Object> map = new HashMap<>(); |
| | | Map<String, Double> totalSumMap = new HashMap<>(); |
| | | |
| | | double totalStockNum = 0; |
| | | double totalStockArea = 0; |
| | | |
| | | // è·åææå·¥åº |
| | | List<String> processList = reportMapper.selectProcess(); |
| | | |
| | | // æç»æ°æ®éå |
| | | List<Map<String, Object>> resultList = new ArrayList<>(); |
| | | |
| | | if (!"".equals(selectProcesses)) { |
| | | laminating = reportingWorkMapper.getProcessLaminating(selectProcesses); |
| | | List<Map<String, Object>> singleResult = |
| | | reportMapper.getWorkInProgressCombination(selectProcesses, laminating, optionVal); |
| | | if (singleResult != null && !singleResult.isEmpty()) { |
| | | resultList.addAll(singleResult); |
| | | } |
| | | |
| | | Map<String, Object> total = |
| | | reportMapper.getWorkInProgressCombinationFootSum(selectProcesses, laminating, optionVal); |
| | | if (total != null) { |
| | | BigDecimal stockNum = (BigDecimal) total.get("stockNum"); |
| | | BigDecimal stockArea = (BigDecimal) total.get("stockArea"); |
| | | |
| | | if (stockNum != null) { |
| | | totalStockNum += stockNum.doubleValue(); |
| | | } |
| | | if (stockArea != null) { |
| | | totalStockArea += stockArea.doubleValue(); |
| | | } |
| | | } |
| | | |
| | | } else { |
| | | for (String process : processList) { |
| | | laminating = reportingWorkMapper.getProcessLaminating(process); |
| | | |
| | | List<Map<String, Object>> singleResult = |
| | | reportMapper.getWorkInProgressCombination(process, laminating, optionVal); |
| | | |
| | | if (singleResult != null && !singleResult.isEmpty()) { |
| | | resultList.addAll(singleResult); |
| | | } |
| | | |
| | | Map<String, Object> total = |
| | | reportMapper.getWorkInProgressCombinationFootSum(process, laminating, optionVal); |
| | | if (total != null) { |
| | | BigDecimal stockNum = (BigDecimal) total.get("stockNum"); |
| | | BigDecimal stockArea = (BigDecimal) total.get("stockArea"); |
| | | |
| | | if (stockNum != null) { |
| | | totalStockNum += stockNum.doubleValue(); |
| | | } |
| | | if (stockArea != null) { |
| | | totalStockArea += stockArea.doubleValue(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | totalSumMap.put("stockNum", totalStockNum); |
| | | totalSumMap.put("stockArea", totalStockArea); |
| | | |
| | | map.put("data", resultList); |
| | | map.put("total", totalSumMap); |
| | | map.put("process", productionSchedulingMapper.selectProcess()); |
| | | |
| | | return map; |
| | | } |
| | | |
| | | public List exportWorkInProgressCombinationSv(Map<String, Object> dates) { |
| | | String process= (String) dates.get("processes"); |
| | | if (process.equals("å
¨é¨")){ |
| | | process=""; |
| | | } |
| | | String inputVal= (String) dates.get("inputVal"); |
| | | String project= (String) dates.get("project"); |
| | | if ("null".equals(inputVal)) { |
| | | inputVal = ""; |
| | | } |
| | | if ("null".equals(project)) { |
| | | project = ""; |
| | | } |
| | | |
| | | String laminating = ""; |
| | | |
| | | // è·åææå·¥åº |
| | | List<String> processList = reportMapper.selectProcess(); |
| | | |
| | | // æç»æ°æ®éå |
| | | List<WorkInProgressCombinationDTO> resultList = new ArrayList<>(); |
| | | |
| | | if (!"".equals(process)) { |
| | | laminating = reportingWorkMapper.getProcessLaminating(process); |
| | | List<WorkInProgressCombinationDTO> singleResult = |
| | | reportMapper.exportWorkInProgressCombination(process, laminating, inputVal); |
| | | if (singleResult != null && !singleResult.isEmpty()) { |
| | | resultList.addAll((Collection<? extends WorkInProgressCombinationDTO>) singleResult); |
| | | } |
| | | |
| | | |
| | | } else { |
| | | for (String processVal : processList) { |
| | | laminating = reportingWorkMapper.getProcessLaminating(processVal); |
| | | |
| | | List<WorkInProgressCombinationDTO> singleResult = |
| | | reportMapper.exportWorkInProgressCombination(processVal, laminating, inputVal); |
| | | |
| | | if (singleResult != null && !singleResult.isEmpty()) { |
| | | resultList.addAll((Collection<? extends WorkInProgressCombinationDTO>) singleResult); |
| | | } |
| | | } |
| | | } |
| | | |
| | | return resultList; |
| | | } |
| | | } |
| | |
| | | import com.baomidou.dynamic.datasource.annotation.DS; |
| | | import com.example.erp.mapper.sd.*; |
| | | import com.example.erp.mapper.userInfo.LogMapper; |
| | | import com.example.erp.service.mm.FinishedGoodsInventoryService; |
| | | import com.example.erp.service.sd.OrderProcessDetailService; |
| | | import com.example.erp.service.userInfo.LogService; |
| | | import com.example.erp.service.userInfo.SysErrorService; |
| | |
| | | private final RestTemplate restTemplate; |
| | | private final PatchLogMapper patchLogMapper; |
| | | private final ReworkMapper reworkMapper; |
| | | private final BasicDateMapper basicDataMapper; |
| | | private final BasicDataMapper basicDataMapper; |
| | | private final FinishedGoodsInventoryService finishedGoodsInventoryService; |
| | | |
| | | |
| | | /*public ReportingWorkService(ReportingWorkMapper reportingWorkMapper, BasicDateProduceMapper basicDateProduceMapper, DamageDetailsMapper damageDetailsMapper, ReportingWorkDetailMapper reportingWorkDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, OrderProcessDetailService orderProcessDetailService, OrderMapper orderMapper, FlowCardMapper flowCardMapper, LogService logService, LogMapper logMapper, OrderGlassDetailMapper orderGlassDetailMapper, SysErrorService sysErrorService, OrderDetailMapper orderDetailMapper, FinishedOperateLogMapper finishedOperateLogMapper, ReportingWorkTransferMapper reportingWorkTransferMapper) { |
| | |
| | | reportingWork.setReportingWorkId(reportingWorkId); |
| | | String[] processIdStr = reportingWork.getProcessId().split("/"); |
| | | reportingWork.setProcessId(processIdStr[0]); |
| | | reportingWork.setThisWornQuantity(0); |
| | | reportingWork.setThisCompletedQuantity(0); |
| | | |
| | | int reviewState = (int) reportingWorkJson.get("type"); |
| | | if (reviewState == 1) {//å®¡æ ¸éè¿ |
| | |
| | | //æ¯å¦çº¿è¡¥ 1ç°è¡¥ 0æªç°è¡¥ |
| | | int isPatch = (reportingWorkJson.get("isPatch") != null) ? (int) reportingWorkJson.get("isPatch") : 0; |
| | | |
| | | reportingWork.setNextProcess(orderProcessDetailMapper.selectNextProcess(processIdStr[0],processIdStr[1],reportingWork.getThisProcess())); |
| | | //主表æå
¥ |
| | | reportingWorkMapper.insert(reportingWork); |
| | | //å¯è¡¨å¾ªç¯æå
¥ï¼å¹¶ä¸æå
¥æ¬¡ç ´ä¿¡æ¯è¡¨ãåæ ¹æ®æ¬¡ç ´ä¿¡æ¯ä¿®æ¹è®¢åç»çæµç¨è¡¨çå®å·¥æ°éä¸åºç ´æ°é |
| | | final Integer[] maxTechnologyNumber = {0,0}; |
| | | reportingWorkDetails.forEach(reportingWorkDetail -> { |
| | | //åçæ°éæ±æ»åå° |
| | | if(Integer.parseInt(reportingWorkDetail.getTechnologyNumber()) > maxTechnologyNumber[0]){ |
| | | maxTechnologyNumber[0] = Integer.valueOf(reportingWorkDetail.getTechnologyNumber()); |
| | | maxTechnologyNumber[1]+=1; |
| | | } |
| | | reportingWork.setThisCompletedQuantity(reportingWork.getThisCompletedQuantity() + reportingWorkDetail.getCompletedQuantity()); |
| | | reportingWork.setThisWornQuantity(reportingWork.getThisWornQuantity() + reportingWorkDetail.getBreakageQuantity()); |
| | | int qualityInsStatus = (int) reportingWorkJson.get("qualityInsStatus"); |
| | | reportingWorkDetail.setReportingWorkId(reportingWorkId); |
| | | List<DamageDetails> damageDetails = reportingWorkDetail.getDamageDetails(); |
| | | reportingWork.setNextProcess(orderProcessDetailMapper.selectNextProcess(processIdStr[0],processIdStr[1],reportingWork.getThisProcess(),reportingWorkDetail.getOrderNumber())); |
| | | |
| | | //æ¬¡ç ´æç»è¡¨æå
¥æ°æ® |
| | | if (damageDetails != null && !damageDetails.isEmpty()) { |
| | | damageDetails.forEach(damageDetail -> { |
| | |
| | | } |
| | | |
| | | //æ´æ°æµç¨å¡è¡¨çæ¥å·¥æ°é |
| | | if (Objects.equals(reportingWork.getNextProcess(), "")|| Objects.equals(reportingWork.getNextProcess(), null)) { |
| | | if (reportingWork.getNextProcess() == null || reportingWork.getNextProcess().isEmpty()) { |
| | | LambdaUpdateWrapper<FlowCard> flowCardLambdaUpdateWrapper = |
| | | new LambdaUpdateWrapper<>(); |
| | | flowCardLambdaUpdateWrapper |
| | |
| | | |
| | | |
| | | }); |
| | | //è·åæ¥å·¥å·¥åºæ¯å¦ä¸ºå¤åå·¥ç¨ |
| | | |
| | | reportingWork.setThisCompletedQuantity(reportingWork.getThisCompletedQuantity()/maxTechnologyNumber[1]); |
| | | |
| | | |
| | | reportingWorkMapper.update(reportingWork, new LambdaUpdateWrapper<ReportingWork>() |
| | | .eq(ReportingWork::getId, reportingWork.getId())); |
| | | |
| | |
| | | date.add(endDate); |
| | | Map<String, Object> result = new HashMap<>(); |
| | | BasicData basicData = basicDataMapper |
| | | .selectOne(new QueryWrapper<BasicData>().eq("basic_name", reportingWork.get("process"))); |
| | | .selectOne(new QueryWrapper<BasicData>() |
| | | .eq("basic_name", reportingWork.get("process")) |
| | | .last("limit 1") |
| | | ); |
| | | result.put("data",orderProcessDetailMapper.selectShiftQuantitySv(creatorId, startDate, endDate,basicData==null?null:basicData.getNickname())); |
| | | result.put("date",date); |
| | | return result; |
| | |
| | | |
| | | } |
| | | |
| | | |
| | | public List<BasicDataProduce> selectEquipmentByProcessSv(String process) { |
| | | return reportingWorkMapper.SelectWorkBasicDeviceMp(process); |
| | | } |
| | | |
| | | public String saveWorkStorage(Map<String, Object> object) { |
| | | //List<Map<String, Object>> flowCard = reportingWorkMapper.getStorageData(); |
| | | //finishedGoodsInventoryService.addSelectWarehousing(object); |
| | | return null; |
| | | }} |
| | |
| | | //å é¤è¿å·¥è¡¨å¯¹åºè¡¥çidæ°æ® |
| | | reworkMapper.deleteReworkMp(rework.getReworkId()); |
| | | //ä¿®æ¹æ¬¡ç ´æç»è¡¨è¡¥çæ°éåç¶æ |
| | | reworkMapper.updateReworkDdMp(rework.getReportingWorkId(),rework.getOrderSort(),rework.getTechnologyNumber(),rework.getReworkNum()); |
| | | reworkMapper.updateReworkDdMp(rework.getReportingWorkId(),rework.getOrderSort(),rework.getTechnologyNumber(),rework.getReworkNum(),rework.getReworkType(),rework.getReworkReason()); |
| | | //ä¿®æ¹æ¥å·¥æç»è¡¨ç¶æ |
| | | reworkMapper.updateReworkBgMp(rework.getReportingWorkId(),rework.getOrderSort(),rework.getTechnologyNumber()); |
| | | |
| File was renamed from north-glass-erp/src/main/java/com/example/erp/service/sd/BasicDateService.java |
| | |
| | | import com.example.erp.entity.sd.BasicData; |
| | | import com.example.erp.entity.sd.BasicOtherMoney; |
| | | import com.example.erp.entity.sd.Customer; |
| | | import com.example.erp.mapper.sd.BasicDateMapper; |
| | | import com.example.erp.mapper.sd.BasicDataMapper; |
| | | import com.example.erp.mapper.sd.BasicOtherMoneyMapper; |
| | | import com.example.erp.mapper.sd.CustomerMapper; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.*; |
| | | |
| | | @Service |
| | | @DS("sd") |
| | | public class BasicDateService { |
| | | private final BasicDateMapper basicDateMapper; |
| | | public class BasicDataService { |
| | | private final BasicDataMapper basicDataMapper; |
| | | |
| | | private final CustomerMapper customerMapper; |
| | | private final BasicOtherMoneyMapper basicOtherMoneyMapper; |
| | | |
| | | public BasicDateService(BasicDateMapper basicDateMapper, CustomerMapper customerMapper, BasicOtherMoneyMapper basicOtherMoneyMapper) { |
| | | this.basicDateMapper = basicDateMapper; |
| | | public BasicDataService(BasicDataMapper basicDataMapper, CustomerMapper customerMapper, BasicOtherMoneyMapper basicOtherMoneyMapper) { |
| | | this.basicDataMapper = basicDataMapper; |
| | | this.customerMapper = customerMapper; |
| | | this.basicOtherMoneyMapper = basicOtherMoneyMapper; |
| | | } |
| | |
| | | |
| | | public Map<String, List<Object>> getBasicDataByType(String type){ |
| | | //è¿ååºç¡æ°æ®éçææç±»å |
| | | List<String> orderBasicDataType = basicDateMapper.getOrderBasicDataType(type); |
| | | List<String> orderBasicDataType = basicDataMapper.getOrderBasicDataType(type); |
| | | //è¿åæ¤ç±»ååºç¡æ°æ®æææ°æ® |
| | | List<BasicData> orderBasicData = basicDateMapper.getOrderBasicData(type); |
| | | List<BasicData> orderBasicData = basicDataMapper.getOrderBasicData(type); |
| | | Map<String, List<Object>> BasicDataMap = new HashMap<>(); |
| | | //å建List对象 |
| | | |
| | |
| | | |
| | | public List<BasicData> getBasicDataByTypeAndChildType(String type, String childType) { |
| | | Map<String, List<Object>> BasicDataMap = new HashMap<>(); |
| | | return basicDateMapper.getOrderBasicDataByTypeAndChildType(type, childType); |
| | | return basicDataMapper.getOrderBasicDataByTypeAndChildType(type, childType); |
| | | |
| | | } |
| | | |
| | | public List<BasicData> getBasicData() { |
| | | return basicDateMapper.getBasicData(); |
| | | return basicDataMapper.getBasicData(); |
| | | } |
| | | |
| | | public Object getBasicDataType() { |
| | | List<BasicData> lastType = basicDateMapper.getBasicDataLastType(); |
| | | List<BasicData> firstType= basicDateMapper.getBasicDataFirstType(); |
| | | List<BasicData> lastType = basicDataMapper.getBasicDataLastType(); |
| | | List<BasicData> firstType= basicDataMapper.getBasicDataFirstType(); |
| | | List<Map<String,Object>> list = new ArrayList<>(); |
| | | if(!firstType.isEmpty()){ |
| | | firstType.forEach(item->{ |
| | |
| | | basicData.setBasicCategory(basicTypeList.get(1)); |
| | | basicData.setBasicName(map.get("input").toString()); |
| | | basicData.setNickname(map.get("nickname").toString()); |
| | | basicDateMapper.insert(basicData); |
| | | basicDataMapper.insert(basicData); |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | public int deleteBasicData(BasicData basicData) { |
| | | |
| | | return basicDateMapper.deleteById(basicData.getId()); |
| | | return basicDataMapper.deleteById(basicData.getId()); |
| | | } |
| | | |
| | | public int updateBasicData(BasicData basicData) { |
| | | return basicDateMapper.updateById(basicData); |
| | | return basicDataMapper.updateById(basicData); |
| | | } |
| | | } |
| | |
| | | if (object.get("type") != null) { |
| | | type = object.get("type").toString(); |
| | | } |
| | | int state = 0; |
| | | if (object.get("state") != null) { |
| | | state = Integer.parseInt(object.get("state").toString()); |
| | | } |
| | | List <Map<String, Object>> list1=new ArrayList<Map<String, Object>>();//æç»ç»æ |
| | | for(Delivery deliverys:deliveries){ |
| | | |
| | | Map<String, Object> map = new HashMap<>(); |
| | | List <Map<String, Object>> list=new ArrayList<Map<String, Object>>();//æç»ç»æ |
| | | List <Map<String, Object>> moneryList=new ArrayList<Map<String, Object>>();//æç»ç»æ |
| | | List<DeliveryDetail> deliveryDetailList=deliveryDetailMapper.getSelectDeliveryPrinting(deliverys.getDeliveryId(),type); |
| | | List<DeliveryDetail> deliveryDetailList; |
| | | if(state==1){ |
| | | deliveryDetailList=deliveryDetailMapper.getSelectDeliveryPrintingMoney(deliverys.getDeliveryId(),type); |
| | | }else if(state==2){ |
| | | deliveryDetailList=deliveryDetailMapper.getSelectDeliveryPrintingNoMoney(deliverys.getDeliveryId(),type); |
| | | }else{ |
| | | deliveryDetailList=deliveryDetailMapper.getSelectDeliveryPrinting(deliverys.getDeliveryId(),type); |
| | | } |
| | | String orderId=""; |
| | | double otherMoney=0.0; |
| | | for (DeliveryDetail detail : deliveryDetailList) { |
| | | orderId=detail.getOrderDetail().getOrderId(); |
| | | Map<String, Object> itemmap = new HashMap<>(); |
| | | |
| | | List<Map<String, Object>> deliveryDetailList2 = deliveryDetailMapper.getSelectDeliveryDetailPrinting(detail.getDeliveryId(), |
| | | List<Map<String, Object>> deliveryDetailList2; |
| | | if(state==3){ |
| | | deliveryDetailList2=deliveryDetailMapper.getSelectDeliveryPrintingMoneySpecifications(detail.getDeliveryId(), |
| | | detail.getOrderDetail().getProductId(), detail.getOrderDetail().getOrderId()); |
| | | }else if(state==4){ |
| | | deliveryDetailList2=deliveryDetailMapper.getSelectDeliveryPrintingNoMoneySpecifications(detail.getDeliveryId(), |
| | | detail.getOrderDetail().getProductId(), detail.getOrderDetail().getOrderId()); |
| | | }else{ |
| | | deliveryDetailList2 = deliveryDetailMapper.getSelectDeliveryDetailPrinting(detail.getDeliveryId(), |
| | | detail.getOrderDetail().getProductId(), detail.getOrderDetail().getOrderId()); |
| | | } |
| | | |
| | | for (Map<String, Object> stringObjectMap : deliveryDetailList2) { |
| | | if(stringObjectMap.get("other_columns")!=null){ |
| | |
| | | //å é¤è®¢åå·¥èºè¡¨ |
| | | // orderProcessDetailMapper.delete(new LambdaQueryWrapper<OrderProcessDetail>().eq(OrderProcessDetail::getOrderId, order.getOrderId())); |
| | | |
| | | orderDetailMapper.deleteOrderFile(order.getOrderId()); |
| | | |
| | | insertOtherDetail(order.getOrderId(),OrderDetails,orderOtherMoneyList); |
| | | } |
| | | |
| | |
| | | Product product = productMapper.selectById(OrderDetails.get(i).getProductId()); |
| | | |
| | | OrderDetails.get(i).setWeight(Double.valueOf(String.format("%.2f",product.getThickness()*OrderDetails.get(i).getWidth()*OrderDetails.get(i).getHeight()/1000000*2.5))); |
| | | if(OrderDetails.get(i).getBendRadius()!=null && OrderDetails.get(i).getBendRadius()!=0){ |
| | | /*if(OrderDetails.get(i).getBendRadius()!=null && OrderDetails.get(i).getBendRadius()!=0){ |
| | | //è·å弯é¢å¼§åº¦ |
| | | Double bendRadius = OrderDetails.get(i).getBendRadius(); |
| | | //è·å宽 |
| | |
| | | String archRiseS = String.format("%.1f",bendRadius-(bendRadius*Math.cos(width/2/bendRadius))); |
| | | Double archRise = Double.parseDouble(archRiseS); |
| | | OrderDetails.get(i).setArchRise(archRise); |
| | | } |
| | | }*/ |
| | | |
| | | Map<String,Object> otherColumns = JSON.parseObject(OrderDetails.get(i).getOtherColumns(), new TypeReference<Map<String, Object>>(){}); |
| | | int finalI = i; |
| | |
| | | OrderDetails.get(i).setOtherColumns("{}"); |
| | | } |
| | | |
| | | if(OrderDetails.get(i).getFileName()!=null&&!OrderDetails.get(i).getFileName().trim().isEmpty()){ |
| | | orderMapper.saveOrderFile(OrderDetails.get(i).getFileName(), OrderDetails.get(i).getFileData(),orderId,OrderDetails.get(i).getOrderNumber()); |
| | | } |
| | | |
| | | if(OrderDetails.get(i).getShape()==null){ |
| | | OrderDetails.get(i).setShape("1"); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | orderDetailMapper.insertBatch(OrderDetails); |
| | | //å¾å°çè¡¨ä¼ å
¥äº§åæ°æ® |
| | | orderGlassDetailMapper.insertOrderGlassDetail(orderId); |
| | | |
| | | //ä¿®æ¹æåæ±é« |
| | | List<OrderDetail> orderDetails = orderDetailMapper |
| | | .selectList(new LambdaQueryWrapper<OrderDetail>() |
| | | .eq(OrderDetail::getOrderId, orderId) |
| | | .isNotNull(OrderDetail::getBendRadius) |
| | | ); |
| | | |
| | | orderDetails.forEach(orderDetail -> { |
| | | //è·åæå°å¼§åº¦ |
| | | List<OrderGlassDetail> orderGlassDetails = orderGlassDetailMapper |
| | | .selectList(new LambdaQueryWrapper<OrderGlassDetail>() |
| | | .eq(OrderGlassDetail::getOrderId, orderId) |
| | | .eq(OrderGlassDetail::getOrderNumber, orderDetail.getOrderNumber()) |
| | | ); |
| | | |
| | | for(OrderGlassDetail orderGlassDetail:orderGlassDetails) { |
| | | //è·åå½å屿°ä¸ä¹å屿°çå度 |
| | | Double glassThickness = productMapper |
| | | .getGlassThickness(orderDetail.getProductId(), orderGlassDetail.getTechnologyNumber()); |
| | | //å
åå¾ |
| | | Double radius = orderDetail.getBendRadius() - glassThickness; |
| | | |
| | | |
| | | //å
çå
å¼§é¿ |
| | | Double innerArc = orderGlassDetails.get(0).getArc() |
| | | - orderGlassDetails.get(0).getArc() * glassThickness / orderDetail.getBendRadius(); |
| | | |
| | | //æ±é« |
| | | String archRiseS = String.format("%.1f", radius - radius * Math.cos(innerArc / 2 / radius)); |
| | | Double archRise = Double.parseDouble(archRiseS); |
| | | orderGlassDetailMapper.update(null, new LambdaUpdateWrapper<OrderGlassDetail>() |
| | | .set(OrderGlassDetail::getArchRise, archRise) |
| | | .eq(OrderGlassDetail::getId, orderGlassDetail.getId()) |
| | | ); |
| | | |
| | | // orderDetailMapper.update(null,new LambdaUpdateWrapper<OrderDetail>() |
| | | // .set(OrderDetail::getArchRise,archRise) |
| | | // .eq(OrderDetail::getId, orderDetail.getId()) |
| | | } |
| | | |
| | | }); |
| | | |
| | | |
| | | if(orderOtherMoneyList!=null){ |
| | | orderOtherMoneyList.forEach(orderOtherMoney ->{ |
| | | orderOtherMoney.setId(null); |
| | |
| | | public Map<String,Object> getOrderList(Integer pageNum, Integer pageSize, List<String> selectDate, Map<String,Object> config,Integer orderType) { |
| | | Integer offset = (pageNum-1)*pageSize; |
| | | String endDate = LocalDate.now().toString(); |
| | | String startDate = LocalDate.now().minusDays(15).toString(); |
| | | String startDate = LocalDate.now().minusDays(365).toString(); |
| | | if(selectDate !=null && selectDate.size()==2){ |
| | | if(!selectDate.get(0).isEmpty()){ |
| | | startDate = selectDate.get(0); |
| | |
| | | } |
| | | //å é¤è®¢å |
| | | public Integer deleteOrder(String id) { |
| | | orderDetailMapper.deleteOrderFile(id); |
| | | return orderMapper.delete( |
| | | new QueryWrapper<Order>().eq("order_id",id) |
| | | ); |
| | |
| | | Order order = orderMapper.selectOne(new QueryWrapper<Order>().eq("order_id",id)); |
| | | List<OrderDetail> orderDetails = orderDetailMapper.selectList(new QueryWrapper<OrderDetail>().eq("order_id",id)); |
| | | List<OrderOtherMoney> orderOtherMoneyList = orderOtherMoneyMapper.findById(id); |
| | | List<Map<String,String>> orderFileList = orderMapper.selectOrderFileList(id); |
| | | |
| | | |
| | | Map<String,Object> map = new HashMap<>(); |
| | | map.put("order",order); |
| | | map.put("orderDetails",orderDetails); |
| | | map.put("orderOtherMoneyList",orderOtherMoneyList); |
| | | map.put("orderFile",orderFileList); |
| | | return map; |
| | | } |
| | | //订åå®¡æ ¸ |
| | |
| | | } |
| | | |
| | | } |
| | | |
| | | public Object uploadDxf(Map<String,Object> object) { |
| | | String fileName = ""; |
| | | if (object.get("fileName") != null) { |
| | | fileName = object.get("fileName").toString(); |
| | | } |
| | | String fileData = ""; |
| | | if (object.get("fileData") != null) { |
| | | fileData = object.get("fileData").toString(); |
| | | } |
| | | byte[] dxfData = Base64.getDecoder().decode(fileData); |
| | | String orderId="NG25010101"; |
| | | Integer orderNumber=1; |
| | | orderMapper.saveOrderFile(fileName, fileData,orderId,orderNumber); |
| | | return true; |
| | | } |
| | | |
| | | public Map<String,Object> selectUploadDxf(Map<String,Object> object) { |
| | | String orderId = ""; |
| | | if (object.get("orderId") != null) { |
| | | orderId = object.get("orderId").toString(); |
| | | } |
| | | int orderNumber =0; |
| | | if (object.get("orderNumber") != null) { |
| | | orderNumber = Integer.parseInt(object.get("orderNumber").toString()); |
| | | } |
| | | Map<String,Object> map = new HashMap<>(); |
| | | map.put("data",orderMapper.selectOrderFile(orderId,orderNumber)); |
| | | return map; |
| | | } |
| | | |
| | | public boolean updateOrderFile(Map<String,Object> object) { |
| | | String orderId = ""; |
| | | if (object.get("orderId") != null) { |
| | | orderId = object.get("orderId").toString(); |
| | | } |
| | | int orderNumber =0; |
| | | if (object.get("orderNumber") != null) { |
| | | orderNumber = Integer.parseInt(object.get("orderNumber").toString()); |
| | | } |
| | | String dataBase64 = ""; |
| | | if (object.get("dataBase64") != null) { |
| | | dataBase64 = object.get("dataBase64").toString(); |
| | | } |
| | | Map<String,String> orderFile =orderMapper.selectOrderFile(orderId,orderNumber); |
| | | if(orderFile!=null){ |
| | | orderMapper.updateOrderFile("map.dxf", dataBase64,orderId,orderNumber); |
| | | }else{ |
| | | orderMapper.saveOrderFile("map.dxf", dataBase64,orderId,orderNumber); |
| | | } |
| | | return true; |
| | | } |
| | | } |
| New file |
| | |
| | | |
| | | |
| | | |
| | | server: |
| | | port: 8086 |
| | | |
| | | ip: localhost |
| | | port: 3309 |
| | | |
| | | #sa-token: |
| | | # timeout: 86400 |
| | | |
| | | |
| | | spring: |
| | | profiles: |
| | | active: prod |
| | | datasource: |
| | | dynamic: |
| | | primary: user_info #设置é»è®¤çæ°æ®æºæè
æ°æ®æºç»,é»è®¤å¼å³ä¸ºmaster |
| | | strict: false #è®¾ç½®ä¸¥æ ¼æ¨¡å¼,é»è®¤falseä¸å¯å¨. å¯å¨å卿ªå¹é
尿宿°æ®æºæ¶ååæåºå¼å¸¸,ä¸å¯å¨ä¼ä½¿ç¨é»è®¤æ°æ®æº. |
| | | datasource: |
| | | user_info: |
| | | url: jdbc:mysql://${ip}:${port}/erp_user_info?serverTimezone=GMT%2b8 |
| | | username: root |
| | | password: beibo.123/ |
| | | driver-class-name: com.mysql.cj.jdbc.Driver |
| | | sd: |
| | | url: jdbc:mysql://${ip}:${port}/sd?serverTimezone=GMT%2b8&allowMultiQueries=true |
| | | username: root |
| | | password: beibo.123/ |
| | | driver-class-name: com.mysql.cj.jdbc.Driver |
| | | mm: |
| | | url: jdbc:mysql://${ip}:${port}/mm?serverTimezone=GMT%2b8 |
| | | username: root |
| | | password: beibo.123/ |
| | | driver-class-name: com.mysql.cj.jdbc.Driver |
| | | pp: |
| | | url: jdbc:mysql://${ip}:${port}/pp?serverTimezone=GMT%2b8 |
| | | username: root |
| | | password: beibo.123/ |
| | | driver-class-name: com.mysql.cj.jdbc.Driver |
| | | log: |
| | | url: jdbc:mysql://${ip}:${port}/erp_log?serverTimezone=GMT%2b8 |
| | | username: root |
| | | password: beibo.123/ |
| | | driver-class-name: com.mysql.cj.jdbc.Driver |
| | | #mybatis-plus: |
| | | # configuration: |
| | | # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl |
| | |
| | | |
| | | |
| | | |
| | | server: |
| | | port: 8086 |
| | | |
| | |
| | | |
| | | |
| | | spring: |
| | | # profiles: |
| | | # active: prod |
| | | datasource: |
| | | dynamic: |
| | | primary: user_info #设置é»è®¤çæ°æ®æºæè
æ°æ®æºç»,é»è®¤å¼å³ä¸ºmaster |
| | |
| | | update mm.basic_warehouse_type set operate_type_name=#{operateTypeName},create_time=now() where id=#{id} |
| | | </update> |
| | | |
| | | <select id="getBasicWarehouseUser" > |
| | | select user_name from erp_user_info.user u where u.address regexp #{type}; |
| | | </select> |
| | | |
| | | |
| | | |
| | | |
| | |
| | | <result column="remark" property="remark"/> |
| | | <result column="update_time" property="updateTime"/> |
| | | <result column="end_time" property="endTime"/> |
| | | <result column="box_no" property="boxNo"/> |
| | | <result column="weight" property="weight"/> |
| | | |
| | | <result column="order_id" property="order.orderId"/> |
| | | <result column="project" property="order.project"/> |
| | | <result column="order_type" property="order.orderType"/> |
| | | <result column="customer_id" property="order.customerId"/> |
| | | <result column="customer_name" property="order.customerName"/> |
| | | <result column="batch" property="order.batch"/> |
| | | <result column="salesman" property="order.salesman"/> |
| | | |
| | | |
| | | <result column="order_number" property="orderDetail.orderNumber"/> |
| | |
| | | <result column="height" property="orderDetail.height"/> |
| | | <result column="product_name" property="orderDetail.productName"/> |
| | | <result column="product_id" property="orderDetail.productId"/> |
| | | <result column="building_number" property="orderDetail.buildingNumber"/> |
| | | |
| | | </resultMap> |
| | | <!--æ å°æåå
¥åº--> |
| | |
| | | <result column="area" property="order.area"/> |
| | | <result column="batch" property="order.batch"/> |
| | | <result column="order_quantity" property="order.quantity"/> |
| | | <result column="calculate_type" property="order.calculateType"/> |
| | | |
| | | <result column="building_number" property="orderDetail.buildingNumber"/> |
| | | <result column="width" property="orderDetail.width"/> |
| | |
| | | <result column="product_name" property="orderDetail.productName"/> |
| | | <result column="product_id" property="orderDetail.productId"/> |
| | | <result column="quantity" property="orderDetail.quantity"/> |
| | | |
| | | <result column="price" property="orderDetail.price"/> |
| | | <result column="areas" property="orderDetail.area"/> |
| | | <result column="gross_area" property="orderDetail.grossArea"/> |
| | | <result column="compute_area" property="orderDetail.computeArea"/> |
| | | <result column="compute_gross_area" property="orderDetail.computeGrossArea"/> |
| | | </resultMap> |
| | | |
| | | <!--æ å°æååºåº--> |
| | |
| | | <if test="remark != null and remark != ''"> |
| | | , remark= #{remark} |
| | | </if> |
| | | <if test="container != null and container != ''"> |
| | | , box_no= #{container} |
| | | </if> |
| | | where order_number=#{flowCard.orderNumber} and order_id=#{flowCard.order.orderId} |
| | | </update> |
| | | |
| | |
| | | storage_region, |
| | | `status`, |
| | | enter_storage_time, |
| | | box_no, |
| | | update_time, |
| | | end_time, |
| | | remark |
| | |
| | | #{flowCard.order.orderId} ,#{flowCard.orderNumber},#{flowCard.processId},#{flowCard.inventoryQuantity},ROUND(#{flowCard.orderDetail.width}*#{flowCard.orderDetail.height}/1000000,2), |
| | | ROUND(#{flowCard.orderDetail.width}*#{flowCard.orderDetail.height}*#{flowCard.inventoryQuantity}/1000000,2), |
| | | #{flowCard.inventoryQuantity},null,#{storageRegion}, |
| | | 0,now(),now(),null,#{remark} |
| | | 0,now(),#{container},now(),null,#{remark} |
| | | ) |
| | | </insert> |
| | | |
| | |
| | | |
| | | </select> |
| | | |
| | | <select id="getSelectWarehousingByProcessId" resultMap="selectFlowCard"> |
| | | select |
| | | fc.id, |
| | | o.order_id, |
| | | od.building_number, |
| | | od.product_id, |
| | | od.product_name, |
| | | od.width, |
| | | od.height, |
| | | o.creator, |
| | | o.project, |
| | | fc.order_number, |
| | | od.quantity, |
| | | fc.inventory_quantity-fc.received_quantity as inventory_quantity, |
| | | o.area, |
| | | fc.process_id, |
| | | fc.received_quantity, |
| | | o.batch, |
| | | o.calculate_type, |
| | | od.compute_area, |
| | | od.price, |
| | | od.area as areas, |
| | | od.gross_area, |
| | | od.compute_gross_area |
| | | from (select *,min(inventory_quantity) as min_inventory_quantity from pp.flow_card group by order_id,order_number,process_id) as fc |
| | | left join sd.order_detail od on fc.order_id=od.order_id and fc.order_number=od.order_number inner join sd.`order` o on |
| | | o.order_id=fc.order_id |
| | | where fc.received_quantity <![CDATA[<]]> fc.min_inventory_quantity and o.create_order>0 and |
| | | fc.order_id=#{order_id} and fc.order_number=#{order_number} and fc.process_id=#{process_id}; |
| | | |
| | | </select> |
| | | |
| | | |
| | | <select id="getSelectWarehousing" resultMap="selectFlowCard"> |
| | | select |
| | |
| | | o.area, |
| | | fc.process_id, |
| | | fc.received_quantity, |
| | | o.batch |
| | | o.batch, |
| | | o.calculate_type, |
| | | od.compute_area, |
| | | od.price, |
| | | od.area as areas, |
| | | od.gross_area, |
| | | od.compute_gross_area |
| | | from (select *,min(inventory_quantity) as min_inventory_quantity from pp.flow_card group by order_id,order_number,process_id) as fc |
| | | left join sd.order_detail od on fc.order_id=od.order_id and fc.order_number=od.order_number inner join sd.`order` o on |
| | | o.order_id=fc.order_id |
| | |
| | | o.order_id, |
| | | o.project, |
| | | o.order_type, |
| | | o.customer_id, |
| | | o.customer_name, |
| | | o.batch, |
| | | o.salesman, |
| | | od.product_name, |
| | | od.product_id, |
| | | od.width, |
| | | od.height, |
| | | od.building_number, |
| | | fgi.inventory, |
| | | fgi.quantity_available, |
| | | fgi.actual_signal_area, |
| | |
| | | fgi.update_time, |
| | | fgi.enter_storage_time, |
| | | fgi.end_time, |
| | | fgi.remark |
| | | fgi.remark, |
| | | fgi.box_no, |
| | | round(fgi.area*p.total_thickness*2.5/1000,5) as weight |
| | | from finished_goods_inventory fgi |
| | | left join sd.order_detail od on fgi.order_id = od.order_id and fgi.order_number = od.order_number |
| | | left join sd.`order` o on fgi.order_id = o.order_id |
| | | left join sd.product p on p.id=od.product_id |
| | | <where> |
| | | and fgi.status = 0 and fgi.quantity_available>0 and o.create_order>0 |
| | | <if test="finishedGoodsInventory.orderDetail.width != null and finishedGoodsInventory.orderDetail.width != ''"> |
| | |
| | | <if test="finishedGoodsInventory.orderDetail.productId != null and finishedGoodsInventory.orderDetail.productId != ''"> |
| | | and od.product_id regexp #{finishedGoodsInventory.orderDetail.productId} |
| | | </if> |
| | | <if test="finishedGoodsInventory.orderDetail.buildingNumber != null and finishedGoodsInventory.orderDetail.buildingNumber != ''"> |
| | | and od.building_number regexp #{finishedGoodsInventory.orderDetail.buildingNumber} |
| | | </if> |
| | | <if test="finishedGoodsInventory.order.orderId != null and finishedGoodsInventory.order.orderId != ''"> |
| | | and o.order_id regexp #{finishedGoodsInventory.order.orderId} |
| | | </if> |
| | |
| | | <if test="finishedGoodsInventory.order.orderType != null and finishedGoodsInventory.order.orderType != ''"> |
| | | and o.order_type regexp #{finishedGoodsInventory.order.orderType} |
| | | </if> |
| | | |
| | | <if test="finishedGoodsInventory.order.customerId != null and finishedGoodsInventory.order.customerId != ''"> |
| | | and o.customer_id regexp #{finishedGoodsInventory.order.customerId} |
| | | </if> |
| | | <if test="finishedGoodsInventory.order.customerName != null and finishedGoodsInventory.order.customerName != ''"> |
| | | and o.customer_name regexp #{finishedGoodsInventory.order.customerName} |
| | | </if> |
| | | <if test="finishedGoodsInventory.order.batch != null and finishedGoodsInventory.order.batch != ''"> |
| | | and o.batch regexp #{finishedGoodsInventory.order.batch} |
| | | </if> |
| | | <if test="finishedGoodsInventory.order.salesman != null and finishedGoodsInventory.order.salesman != ''"> |
| | | and o.salesman regexp #{finishedGoodsInventory.order.salesman} |
| | | </if> |
| | | |
| | | <if test="finishedGoodsInventory.orderDetail.height != null and finishedGoodsInventory.orderDetail.height != ''"> |
| | | and od.height regexp REGEXP_REPLACE(#{finishedGoodsInventory.orderDetail.height},'\\.0+$','') |
| | | </if> |
| | |
| | | </if> |
| | | <if test="finishedGoodsInventory.remark != null and finishedGoodsInventory.remark != ''"> |
| | | and fgi.remark regexp #{finishedGoodsInventory.remark} |
| | | </if> |
| | | <if test="finishedGoodsInventory.boxNo != null and finishedGoodsInventory.boxNo != ''"> |
| | | and fgi.box_no regexp #{finishedGoodsInventory.boxNo} |
| | | </if> |
| | | |
| | | </where> |
| | |
| | | <if test="finishedGoodsInventory.orderDetail.productId != null and finishedGoodsInventory.orderDetail.productId != ''"> |
| | | and od.product_id regexp #{finishedGoodsInventory.orderDetail.productId} |
| | | </if> |
| | | <if test="finishedGoodsInventory.orderDetail.buildingNumber != null and finishedGoodsInventory.orderDetail.buildingNumber != ''"> |
| | | and od.building_number regexp #{finishedGoodsInventory.orderDetail.buildingNumber} |
| | | </if> |
| | | <if test="finishedGoodsInventory.order.orderId != null and finishedGoodsInventory.order.orderId != ''"> |
| | | and o.order_id regexp #{finishedGoodsInventory.order.orderId} |
| | | </if> |
| | |
| | | <if test="finishedGoodsInventory.order.orderType != null and finishedGoodsInventory.order.orderType != ''"> |
| | | and o.order_type regexp #{finishedGoodsInventory.order.orderType} |
| | | </if> |
| | | |
| | | <if test="finishedGoodsInventory.order.customerId != null and finishedGoodsInventory.order.customerId != ''"> |
| | | and o.customer_id regexp #{finishedGoodsInventory.order.customerId} |
| | | </if> |
| | | <if test="finishedGoodsInventory.order.customerName != null and finishedGoodsInventory.order.customerName != ''"> |
| | | and o.customer_name regexp #{finishedGoodsInventory.order.customerName} |
| | | </if> |
| | | <if test="finishedGoodsInventory.order.batch != null and finishedGoodsInventory.order.batch != ''"> |
| | | and o.batch regexp #{finishedGoodsInventory.order.batch} |
| | | </if> |
| | | <if test="finishedGoodsInventory.order.salesman != null and finishedGoodsInventory.order.salesman != ''"> |
| | | and o.salesman regexp #{finishedGoodsInventory.order.salesman} |
| | | </if> |
| | | |
| | | <if test="finishedGoodsInventory.orderDetail.height != null and finishedGoodsInventory.orderDetail.height != ''"> |
| | | and od.height regexp REGEXP_REPLACE(#{finishedGoodsInventory.orderDetail.height},'\\.0+$','') |
| | | </if> |
| | |
| | | <if test="finishedGoodsInventory.remark != null and finishedGoodsInventory.remark != ''"> |
| | | and fgi.remark regexp #{finishedGoodsInventory.remark} |
| | | </if> |
| | | <if test="finishedGoodsInventory.boxNo != null and finishedGoodsInventory.boxNo != ''"> |
| | | and fgi.box_no regexp #{finishedGoodsInventory.boxNo} |
| | | </if> |
| | | |
| | | </where> |
| | | |
| | |
| | | <result column="remarks" property="remarks"/> |
| | | <result column="is_state" property="isState"/> |
| | | <result column="process_id" property="processId"/> |
| | | <result column="money" property="money"/> |
| | | <result column="area" property="area"/> |
| | | |
| | | <result column="width" property="orderDetail.width"/> |
| | | <result column="height" property="orderDetail.height"/> |
| | | <result column="product_id" property="orderDetail.productId"/> |
| | | <result column="product_name" property="orderDetail.productName"/> |
| | | <result column="price" property="orderDetail.price"/> |
| | | |
| | | <result column="project" property="order.project"/> |
| | | <result column="customer_name" property="order.customerName"/> |
| | | <result column="delivery_address" property="order.deliveryAddress"/> |
| | | <result column="project" property="order.project"/> |
| | | <result column="customer_name" property="order.customerName"/> |
| | | |
| | | </resultMap> |
| | | |
| | |
| | | fol.reviewed, |
| | | fol.reviewed_time, |
| | | fol.type, |
| | | fol.remarks |
| | | fol.remarks, |
| | | fol.area, |
| | | fol.money, |
| | | o.customer_name, |
| | | o.project, |
| | | od.price |
| | | from (select * |
| | | from mm.finished_operate_log aa where aa.operate_type = #{type} and aa.status!='å·²ä½åº') fol |
| | | left join sd.order_detail od on fol.order_id = od.order_id and fol.operation_number = od.order_number |
| | |
| | | <if test="finishedOperateLog.orderDetail.productName != null and finishedOperateLog.orderDetail.productName != ''"> |
| | | and od.product_name regexp #{finishedOperateLog.orderDetail.productName} |
| | | </if> |
| | | <if test="finishedOperateLog.orderDetail.price != null and finishedOperateLog.orderDetail.price != ''"> |
| | | and od.price regexp #{finishedOperateLog.orderDetail.price} |
| | | </if> |
| | | <if test="finishedOperateLog.orderDetail.width != null and finishedOperateLog.orderDetail.width != ''"> |
| | | and od.width regexp REGEXP_REPLACE(#{finishedOperateLog.orderDetail.width},'\\.0+$','') |
| | | </if> |
| | |
| | | and fol.type regexp #{finishedOperateLog.type} |
| | | </if> |
| | | <if test="finishedOperateLog.remarks != null and finishedOperateLog.remarks != ''"> |
| | | and fol.remarks regexp #{finishedOperateLog.remarksr} |
| | | and fol.remarks regexp #{finishedOperateLog.remarks} |
| | | </if> |
| | | <if test="finishedOperateLog.area != null and finishedOperateLog.area != ''"> |
| | | and fol.area regexp #{finishedOperateLog.area} |
| | | </if> |
| | | <if test="finishedOperateLog.money != null and finishedOperateLog.money != ''"> |
| | | and fol.money regexp #{finishedOperateLog.money} |
| | | </if> |
| | | <if test="finishedOperateLog.order !=null and (finishedOperateLog.order.customerName != null and finishedOperateLog.order.customerName != '')"> |
| | | and o.customer_name regexp #{finishedOperateLog.order.customerName} |
| | | </if> |
| | | <if test="finishedOperateLog.order !=null and (finishedOperateLog.order.project != null and finishedOperateLog.order.project != '')"> |
| | | and o.project regexp #{finishedOperateLog.order.project} |
| | | </if> |
| | | </where> |
| | | order by fol.operate_time desc |
| | |
| | | from (select * |
| | | from mm.finished_operate_log aa where aa.operate_type = #{type} and aa.status!='å·²ä½åº') fol |
| | | left join sd.order_detail od on fol.order_id = od.order_id and fol.operation_number = od.order_number |
| | | left join sd.`order` o on o.order_id=fol.order_id |
| | | <where> |
| | | date(fol.operate_time)>=#{startDate} and date(fol.operate_time) <= #{endDate} |
| | | <if test="finishedOperateLog.operationOrderNumber != null and finishedOperateLog.operationOrderNumber != ''"> |
| | |
| | | <if test="finishedOperateLog.orderDetail.productName != null and finishedOperateLog.orderDetail.productName != ''"> |
| | | and od.product_name regexp #{finishedOperateLog.orderDetail.productName} |
| | | </if> |
| | | <if test="finishedOperateLog.orderDetail.price != null and finishedOperateLog.orderDetail.price != ''"> |
| | | and od.price regexp #{finishedOperateLog.orderDetail.price} |
| | | </if> |
| | | <if test="finishedOperateLog.orderDetail.width != null and finishedOperateLog.orderDetail.width != ''"> |
| | | and od.width regexp REGEXP_REPLACE(#{finishedOperateLog.orderDetail.width},'\\.0+$','') |
| | | </if> |
| | |
| | | and fol.type regexp #{finishedOperateLog.type} |
| | | </if> |
| | | <if test="finishedOperateLog.remarks != null and finishedOperateLog.remarks != ''"> |
| | | and fol.remarks regexp #{finishedOperateLog.remarksr} |
| | | and fol.remarks regexp #{finishedOperateLog.remarks} |
| | | </if> |
| | | <if test="finishedOperateLog.area != null and finishedOperateLog.area != ''"> |
| | | and fol.area regexp #{finishedOperateLog.area} |
| | | </if> |
| | | <if test="finishedOperateLog.money != null and finishedOperateLog.money != ''"> |
| | | and fol.money regexp #{finishedOperateLog.money} |
| | | </if> |
| | | <if test="finishedOperateLog.order !=null and (finishedOperateLog.order.customerName != null and finishedOperateLog.order.customerName != '')"> |
| | | and o.customer_name regexp #{finishedOperateLog.order.customerName} |
| | | </if> |
| | | <if test="finishedOperateLog.order !=null and (finishedOperateLog.order.project != null and finishedOperateLog.order.project != '')"> |
| | | and o.project regexp #{finishedOperateLog.order.project} |
| | | </if> |
| | | </where> |
| | | order by fol.`status` desc |
| | |
| | | quantity, |
| | | operate_time, |
| | | status, |
| | | remarks |
| | | remarks, |
| | | money, |
| | | area |
| | | ) |
| | | values ( |
| | | #{oddNumber} ,#{flowCard.order.orderId},#{flowCard.processId},#{flowCard.orderNumber},"å
¥åº",#{userName},#{flowCard.inventoryQuantity},now(),"æªå®¡æ ¸",#{container} |
| | | #{oddNumber} ,#{flowCard.order.orderId},#{flowCard.processId},#{flowCard.orderNumber},"å
¥åº",#{userName}, |
| | | #{flowCard.inventoryQuantity},now(),"æªå®¡æ ¸",#{container},#{deliveryDetailMoney},#{deliveryDetailArea} |
| | | ) |
| | | </insert> |
| | | |
| | |
| | | and o.delivery_address regexp #{finishedOperateLog.order.deliveryAddress} |
| | | </if> |
| | | <if test="finishedOperateLog.remarks != null and finishedOperateLog.remarks != ''"> |
| | | and fol.remarks regexp #{finishedOperateLog.remarksr} |
| | | and fol.remarks regexp #{finishedOperateLog.remarks} |
| | | </if> |
| | | </where> |
| | | group by fol.remarks,od.order_id,fol.process_id |
| | | group by fol.remarks,od.order_id |
| | | -- ,fol.process_id |
| | | order by fol.operate_time desc |
| | | limit #{offset},#{pageSize}; |
| | | </select> |
| | |
| | | from (select * |
| | | from mm.finished_operate_log aa where aa.operate_type = 'å
¥åº' and aa.status!='å·²ä½åº') fol |
| | | left join sd.order_detail od on fol.order_id = od.order_id and fol.operation_number = od.order_number |
| | | left join sd.`order` o on o.order_id=fol.order_id |
| | | <where> |
| | | date(fol.operate_time)>=#{startDate} and date(fol.operate_time) <= #{endDate} |
| | | and (fol.remarks is not null and fol.remarks !="") and (fol.process_id !="" and fol.process_id is not null) |
| | |
| | | and o.delivery_address regexp #{finishedOperateLog.order.deliveryAddress} |
| | | </if> |
| | | <if test="finishedOperateLog.remarks != null and finishedOperateLog.remarks != ''"> |
| | | and fol.remarks regexp #{finishedOperateLog.remarksr} |
| | | and fol.remarks regexp #{finishedOperateLog.remarks} |
| | | </if> |
| | | </where> |
| | | group by fol.remarks,od.order_id,fol.process_id) as zu |
| | |
| | | order by fol.operate_time desc |
| | | </select> |
| | | |
| | | <select id="getPrimaryListLimts"> |
| | | |
| | | |
| | | |
| | | select kkk.*,rw.teams_groups_name as teams_groups_name2 from(select o.order_id, |
| | | o.customer_name, |
| | | o.project, |
| | | fol.remarks, |
| | | SUM(fol.quantity) as quantity, |
| | | ROUND( sum(od.width * od.height * fol.quantity) / 1000000, 2 ) as area, |
| | | ROUND( sum(od.width * od.height * fol.quantity*p.total_thickness*2.5) / 1000000, 2 ) as weight, |
| | | fol.process_id, |
| | | aaa.teams_groups_name, |
| | | aaa.previous_process, |
| | | date( aaa.reporting_work_time) as reporting_work_time |
| | | from (select * |
| | | from mm.finished_operate_log aa where aa.operate_type = 'å
¥åº' and aa.status!='å·²ä½åº') fol |
| | | left join sd.order_detail od on fol.order_id = od.order_id and fol.operation_number = od.order_number |
| | | left join sd.`order` o on o.order_id=fol.order_id |
| | | left join sd.product p on od.product_id=p.id |
| | | left join (select teams_groups_name,process_id,previous_process,reporting_work_time from pp.reporting_work where this_process='å
è£
' group by process_id) aaa on aaa.process_id=fol.process_id |
| | | |
| | | |
| | | |
| | | where |
| | | o.customer_name=#{customerName} and fol.remarks=#{remarks} and o.project=#{project} |
| | | and (fol.remarks is not null and fol.remarks !="") and (fol.process_id !="" and fol.process_id is not null) |
| | | |
| | | group by fol.remarks,o.customer_name,o.project |
| | | ) as kkk |
| | | left join pp.reporting_work rw on rw.process_id=kkk.process_id and rw.this_process=kkk.previous_process |
| | | group by kkk.remarks,kkk.customer_name,kkk.project |
| | | |
| | | </select> |
| | | |
| | | <select id="getDetailList"> |
| | | SELECT |
| | | od.building_number, |
| | |
| | | |
| | | </select> |
| | | |
| | | <select id="getDetailLists"> |
| | | SELECT |
| | | ifnull(od.building_number,ifnull(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')),'')) as building_number, |
| | | od.width, |
| | | od.height, |
| | | fol.quantity, |
| | | od.product_name, |
| | | od.product_id, |
| | | ROUND( od.width * od.height * fol.quantity / 1000000, 2 ) as area, |
| | | ROUND( od.width * od.height * fol.quantity / 1000000, 2 )*#{thickness}*2.5 as weight |
| | | FROM |
| | | ( SELECT * FROM mm.finished_operate_log aa WHERE aa.operate_type = 'å
¥åº' AND aa.STATUS != 'å·²ä½åº' ) fol |
| | | LEFT JOIN sd.order_detail od ON fol.order_id = od.order_id |
| | | AND fol.operation_number = od.order_number |
| | | LEFT JOIN sd.`order` o ON o.order_id = fol.order_id |
| | | WHERE |
| | | o.order_id=#{orderId} and fol.remarks=#{remarks} and od.product_id=#{productId} |
| | | ORDER BY |
| | | fol.operate_time DESC |
| | | |
| | | </select> |
| | | |
| | | <select id="getDetailList2"> |
| | | SELECT |
| | | od.product_id, |
| | | od.product_name, |
| | | pro.thickness |
| | | FROM |
| | | ( SELECT * FROM mm.finished_operate_log aa WHERE aa.operate_type = 'å
¥åº' AND aa.STATUS != 'å·²ä½åº' ) fol |
| | | LEFT JOIN sd.order_detail od ON fol.order_id = od.order_id |
| | | AND fol.operation_number = od.order_number |
| | | left join sd.product as pro |
| | | on pro.id = od.product_id |
| | | LEFT JOIN sd.`order` o ON o.order_id = fol.order_id |
| | | WHERE |
| | | o.order_id=#{orderId} and fol.remarks=#{remarks} |
| | | group by |
| | | od.product_id |
| | | |
| | | </select> |
| | | |
| | | <select id="getSelectStorageRecordDeliveryId" resultMap="selectFinishedGoodsInventory"> |
| | | select fol.id, |
| | | fol.operation_order_number, |
| | |
| | | |
| | | </resultMap> |
| | | |
| | | <resultMap id="selectMaterialOutboundLog" type="com.example.erp.entity.mm.MaterialLog" > |
| | | <id column="id" property="id"/> |
| | | <result column="operation_order_number" property="operationOrderNumber"/> |
| | | <result column="operate_type" property="operateType"/> |
| | | <result column="operation_number" property="operationNumber"/> |
| | | <result column="inventory_id" property="inventoryId"/> |
| | | <result column="material_code" property="materialCode"/> |
| | | <result column="material_name" property="materialName"/> |
| | | <result column="producer" property="producer"/> |
| | | <result column="unit" property="unit"/> |
| | | <result column="width" property="width"/> |
| | | <result column="height" property="height"/> |
| | | <result column="thickness" property="thickness"/> |
| | | <result column="quantity" property="quantity"/> |
| | | <result column="single_piece_area" property="singlePieceArea"/> |
| | | <result column="inventory_area" property="inventoryArea"/> |
| | | <result column="operator" property="operator"/> |
| | | <result column="remarks" property="remarks"/> |
| | | <result column="operate_time" property="operateTime"/> |
| | | <result column="use_count" property="useCount"/> |
| | | |
| | | <result column="order_id" property="materialOutbound.orderId"/> |
| | | <result column="project" property="materialOutbound.project"/> |
| | | <result column="batch" property="materialOutbound.batch"/> |
| | | </resultMap> |
| | | |
| | | |
| | | |
| | | <select id="getSelectMaterialInventoryDate"> |
| | |
| | | <if test="materialOutbound.reviewed != null and materialOutbound.reviewed != ''"> |
| | | and mo.reviewed regexp #{materialOutbound.reviewed} |
| | | </if> |
| | | <if test="materialOutbound.project != null and materialOutbound.project != ''"> |
| | | and mo.project regexp #{materialOutbound.project} |
| | | </if> |
| | | <if test="materialOutbound.batch != null and materialOutbound.batch != ''"> |
| | | and mo.batch regexp #{materialOutbound.batch} |
| | | </if> |
| | | </where> |
| | | order by mo.create_time desc |
| | | limit #{offset},#{pageSize}; |
| | |
| | | </if> |
| | | <if test="materialOutbound.reviewed != null and materialOutbound.reviewed != ''"> |
| | | and mo.reviewed regexp #{materialOutbound.reviewed} |
| | | </if> |
| | | <if test="materialOutbound.project != null and materialOutbound.project != ''"> |
| | | and mo.project regexp #{materialOutbound.project} |
| | | </if> |
| | | <if test="materialOutbound.batch != null and materialOutbound.batch != ''"> |
| | | and mo.batch regexp #{materialOutbound.batch} |
| | | </if> |
| | | </where> |
| | | </select> |
| | |
| | | |
| | | <insert id="insertMaterialOutbound" useGeneratedKeys="true" > |
| | | insert into mm.material_outbound(material_outbound_id,material_requisition_personnel,material_requisition_team,order_id,outbound_type, |
| | | warehouse_manager,material_requisition_date,reviewed_state,create_time) |
| | | warehouse_manager,material_requisition_date,reviewed_state,create_time,project,batch) |
| | | values ( |
| | | #{number} ,#{materialOutbound.materialRequisitionPersonnel},#{materialOutbound.materialRequisitionTeam}, |
| | | #{materialOutbound.orderId},#{materialOutbound.outboundType},#{materialOutbound.warehouseManager},#{materialOutbound.materialRequisitionDate}, |
| | | 0,now() |
| | | 0,now(),#{materialOutbound.project},#{materialOutbound.batch} |
| | | ) |
| | | </insert> |
| | | |
| | |
| | | order_id=#{materialOutbound.orderId}, |
| | | outbound_type=#{materialOutbound.outboundType}, |
| | | warehouse_manager=#{materialOutbound.warehouseManager}, |
| | | material_requisition_date=#{materialOutbound.materialRequisitionDate} |
| | | material_requisition_date=#{materialOutbound.materialRequisitionDate}, |
| | | project=#{materialOutbound.project}, |
| | | batch=#{materialOutbound.batch} |
| | | where material_outbound_id = #{number} |
| | | </insert> |
| | | |
| | |
| | | where mi.id = #{id} |
| | | </select> |
| | | |
| | | <select id="getMaterialLogReport" > |
| | | <select id="getMaterialLogReport" resultMap="selectMaterialOutboundLog"> |
| | | select * |
| | | from mm.material_log ml |
| | | from mm.material_log ml left join mm.material_outbound mo on mo.material_outbound_id=ml.operation_order_number |
| | | <where> |
| | | date(ml.operate_time)>=#{startDate} and date(ml.operate_time) <= #{endDate} and ml.operate_type=#{type} |
| | | <if test="materialLog.operateType != null and materialLog.operateType != ''"> |
| | |
| | | and ml.operator regexp #{materialLog.operator} |
| | | </if> |
| | | <if test="materialLog.remarks != null and materialLog.remarks != ''"> |
| | | and ml.remarks regexp #{materialLog.remarksr} |
| | | and ml.remarks regexp #{materialLog.remarks} |
| | | </if> |
| | | <if test="materialLog.projectNo != null and materialLog.projectNo != ''"> |
| | | and ml.project_no regexp #{materialLog.projectNo} |
| | | </if> |
| | | <if test="materialLog.materialOutbound!=null and (materialLog.materialOutbound.orderId != null and materialLog.materialOutbound.orderId != '')"> |
| | | and mo.order_id regexp #{materialLog.materialOutbound.orderId} |
| | | </if> |
| | | <if test=" materialLog.materialOutbound!=null and materialLog.materialOutbound.project != null and materialLog.materialOutbound.project != ''"> |
| | | and mo.project regexp #{materialLog.materialOutbound.project} |
| | | </if> |
| | | <if test=" materialLog.materialOutbound!=null and materialLog.materialOutbound.batch != null and materialLog.materialOutbound.batch != ''"> |
| | | and mo.batch regexp #{materialLog.materialOutbound.batch} |
| | | </if> |
| | | </where> |
| | | order by ml.id desc |
| | |
| | | <select id="getMaterialLogReportTotal"> |
| | | select CEILING(count(ml.id)/#{pageSize}) as 'pageTotal', |
| | | count(ml.id) as 'total' |
| | | from mm.material_log ml |
| | | from mm.material_log ml left join mm.material_outbound mo on mo.material_outbound_id=ml.operation_order_number |
| | | <where> |
| | | date(ml.operate_time)>=#{startDate} and date(ml.operate_time) <= #{endDate} and ml.operate_type=#{type} |
| | | <if test="materialLog.operateType != null and materialLog.operateType != ''"> |
| | |
| | | and ml.operator regexp #{materialLog.operator} |
| | | </if> |
| | | <if test="materialLog.remarks != null and materialLog.remarks != ''"> |
| | | and ml.remarks regexp #{materialLog.remarksr} |
| | | and ml.remarks regexp #{materialLog.remarks} |
| | | </if> |
| | | <if test="materialLog.projectNo != null and materialLog.projectNo != ''"> |
| | | and ml.project_no regexp #{materialLog.projectNo} |
| | | </if> |
| | | <if test="materialLog.materialOutbound!=null and (materialLog.materialOutbound.orderId != null and materialLog.materialOutbound.orderId != '')"> |
| | | and mo.order_id regexp #{materialLog.materialOutbound.orderId} |
| | | </if> |
| | | <if test=" materialLog.materialOutbound!=null and materialLog.materialOutbound.project != null and materialLog.materialOutbound.project != ''"> |
| | | and mo.project regexp #{materialLog.materialOutbound.project} |
| | | </if> |
| | | <if test=" materialLog.materialOutbound!=null and materialLog.materialOutbound.batch != null and materialLog.materialOutbound.batch != ''"> |
| | | and mo.batch regexp #{materialLog.materialOutbound.batch} |
| | | </if> |
| | | </where> |
| | | </select> |
| | |
| | | AND date( ml.operate_time )>= #{startDate} and date(ml.operate_time) <= #{endDate} |
| | | and ml.operate_type=#{type} |
| | | </select> |
| | | |
| | | |
| | | <select id="getSelectMaterialInventoryMes"> |
| | | select |
| | | mi.id, |
| | | mi.material_code AS materialCode, |
| | | mi.producer, |
| | | sum(mi.available_quantity) AS availableQuantity, |
| | | JSON_UNQUOTE(JSON_EXTRACT(ms.json, '$.width')) AS width, |
| | | JSON_UNQUOTE(JSON_EXTRACT(ms.json, '$.height')) AS height, |
| | | JSON_UNQUOTE(JSON_EXTRACT(ms.json, '$.thickness')) AS thickness, |
| | | JSON_UNQUOTE(JSON_EXTRACT(ms.json, '$.name')) AS name, |
| | | JSON_UNQUOTE(JSON_EXTRACT(ms.json, '$.model')) AS model, |
| | | JSON_UNQUOTE(JSON_EXTRACT(ms.json, '$.unit')) AS unit |
| | | from mm.material_inventory mi left join mm.material_store ms on mi.material_code=ms.id |
| | | where mi.available_quantity>0 |
| | | group by mi.material_code |
| | | order by mi.id desc |
| | | </select> |
| | | </mapper> |
| | |
| | | left join sd.basic_data as bd on bd.nickname='stepC' |
| | | where ogds.order_id = #{orderId} |
| | | and LOCATE(bd.basic_name, ogds.process) > 0 |
| | | GROUP BY order_id, order_number, ogds.group) as ogdss |
| | | GROUP BY order_id, order_number, ogds.group,bd.basic_name) as ogdss |
| | | on fc.order_id = ogdss.order_id and ogdss.order_number = fc.order_number |
| | | where fc.order_id = #{orderId} |
| | | GROUP BY fc.process_id, ogdss.technology_number |
| | |
| | | ogds.technology_number |
| | | left join sd.basic_data as bd on bd.nickname='stepD' |
| | | where ogds.order_id = #{orderId} |
| | | GROUP BY order_id, order_number) as ogdss |
| | | GROUP BY order_id, order_number,bd.basic_name) as ogdss |
| | | on fc.order_id = ogdss.order_id and ogdss.order_number = fc.order_number |
| | | where fc.order_id = #{orderId} |
| | | GROUP BY fc.process_id |
| | |
| | | where process is not null |
| | | and process != "" |
| | | GROUP BY order_id, process_id, technology_number, process |
| | | order by order_id, process_id, length(technology_number)) as result |
| | | order by order_id, process_id, length(technology_number),technology_number) as result |
| | | LEFT JOIN (SELECT * from flow_card GROUP BY process_id,technology_number) as fcc |
| | | on result.process_id = fcc.process_id and result.technology_number = fcc.technology_number |
| | | </select> |
| | |
| | | <select id="getPrimaryList"> |
| | | select o.customer_name, |
| | | o.project, |
| | | if(o.batch!="",CONCAT(o.project,'(',o.batch,')'),o.project) as projectBatch, |
| | | #{process} process, |
| | | od.edging_type, |
| | | #{glassChild} as glass_child, |
| | |
| | | <select id="getPrimaryLists"> |
| | | select o.customer_name, |
| | | o.project, |
| | | if(o.batch!="",CONCAT(o.project,'(',o.batch,')'),o.project) as projectBatch, |
| | | #{process} process, |
| | | od.edging_type, |
| | | #{glassChild} as glass_child, |
| | |
| | | fc.quantity, |
| | | round(ogd.total_area, 2) as total_area, |
| | | od.perimeter, |
| | | if(od.bend_radius!=null || od.bend_radius!='',od.bend_radius,if(od.shape=2,JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S04')),'')) as bend_radius, |
| | | if(od.bend_radius!=null || od.bend_radius!='',od.bend_radius,JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S04'))) as bend_radius, |
| | | concat(IFNULL(od.processing_note, ''), IFNULL(od.remarks, '')) as remarks, |
| | | od.other_columns, |
| | | round(ogd.child_width) as width, |
| | |
| | | where fc.process_id = #{processId} |
| | | and position(fc.technology_number in #{technologyNumber}) |
| | | group by fc.process_id, fc.order_number |
| | | order by IF(fcs.sort != NULL or fcs.sort != '', fcs.sort, fc.order_number) |
| | | <choose> |
| | | <!-- å½ landingSequence != 1 ä¸ flashback != 1 æ¶ï¼æ landing_sequence ååº --> |
| | | <when test="landingSequence != 1 and flashback != 1"> |
| | | ORDER BY landing_sequence,fc.id desc |
| | | </when> |
| | | <!-- landingSequence != 1 æ¶ï¼ä¼å
æ landing_sequence ååº --> |
| | | <when test="landingSequence != 1"> |
| | | ORDER BY landing_sequence DESC |
| | | </when> |
| | | <!-- flashback = 1 æ¶æ£åº --> |
| | | <when test="flashback == 1"> |
| | | ORDER BY |
| | | CASE |
| | | WHEN fcs.sort IS NOT NULL AND fcs.sort <> '' THEN fcs.sort |
| | | ELSE fc.order_number |
| | | END ASC |
| | | </when> |
| | | <!-- flashback != 1 æ¶ååº --> |
| | | <otherwise> |
| | | ORDER BY |
| | | CASE |
| | | WHEN fcs.sort IS NOT NULL AND fcs.sort <> '' THEN fcs.sort |
| | | ELSE fc.order_number |
| | | END DESC |
| | | </otherwise> |
| | | </choose> |
| | | </select> |
| | | |
| | | <select id="getDetailLists"> |
| | |
| | | fc.quantity, |
| | | round(ogd.total_area, 2) as total_area, |
| | | od.perimeter, |
| | | if(od.shape=2,JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S04')),od.bend_radius) as bend_radius, |
| | | if(od.bend_radius!=null || od.bend_radius!='',od.bend_radius,JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S04'))) as bend_radius, |
| | | concat(IFNULL(od.processing_note, ''), IFNULL(od.remarks, '')) as remarks, |
| | | od.other_columns, |
| | | round(ogd.child_width) as width, |
| | |
| | | ogd.glass_address, |
| | | ogd.child_width, |
| | | ogd.child_height, |
| | | fc.quantity, |
| | | sum(fc.quantity) as quantity, |
| | | ROUND(ogd.child_width * ogd.child_height * fc.quantity / 1000000, 2) as area, |
| | | ifnull(fcs.sort, '') as sort, |
| | | ogd.glass_child, |
| | | #{process} as process, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')) AS glassNumber, |
| | | if(od.shape=2,JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S04')),od.bend_radius) as bend_radius |
| | | if(od.bend_radius!=null || od.bend_radius!='',od.bend_radius,JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S04'))) as bend_radius |
| | | FROM flow_card AS fc |
| | | LEFT JOIN sd.order_glass_detail AS ogd ON fc.order_id = ogd.order_id |
| | | AND fc.order_number = ogd.order_number |
| | |
| | | od.processing_note as processingNote, |
| | | width, |
| | | height, |
| | | fc.quantity, |
| | | #{printQuantity} as quantity, |
| | | CONCAT( |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(width AS CHAR))), |
| | | ' X ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(height AS CHAR))), |
| | | ' = ',#{printQuantity} ) as size, |
| | | |
| | | CONCAT( |
| | | od.order_number,') ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(width AS CHAR))), |
| | | ' X ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(height AS CHAR))), |
| | | ' = ',#{printQuantity} ) as numberSize, |
| | | CONCAT( |
| | | od.order_number,')',' ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(width AS CHAR))), |
| | | ' X ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(height AS CHAR)))) as numberSizeQuantity, |
| | | od.order_number as orderNumber, |
| | | fc.technology_number as technologyNumber, |
| | | od.building_number as buildingNumber, |
| | |
| | | c.customer_abbreviation as customerAbbreviation, |
| | | p.product_abbreviation as productAbbreviation, |
| | | fc.process_id as processId, |
| | | SUBSTRING(fc.process_id,12 ) as processIdAD ,/*-æµç¨å¡ç®å-*/ |
| | | o.create_time as createTime, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')) AS glassNumber, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S02')) AS figureNumber, |
| | |
| | | od.other_columns, |
| | | ogd.glass_child as glassChild, |
| | | ogd.glass_address as glassAddress, |
| | | JSON_UNQUOTE(JSON_EXTRACT(pd.separation, '$.color')) AS color |
| | | JSON_UNQUOTE(JSON_EXTRACT(pd.separation, '$.color')) AS color, |
| | | 'ææ¬' as custom1, |
| | | 'ææ¬' as custom2, |
| | | 'ææ¬' as custom3, |
| | | 'ææ¬' as custom4, |
| | | 'ææ¬' as custom5 |
| | | from sd.order as o |
| | | left join sd.order_detail as od on o.order_id = od.order_id |
| | | left join flow_card as fc on o.order_id = fc.order_id and |
| | |
| | | c.customer_abbreviation as customerAbbreviation, |
| | | p.product_abbreviation as productAbbreviation, |
| | | fc.process_id as processId, |
| | | SUBSTRING(fc.process_id,12 ) as processIdAD ,/*-æµç¨å¡ç®å-*/ |
| | | o.create_time as createTime, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')) AS glassNumber, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S02')) AS figureNumber, |
| | |
| | | fc.process_id, |
| | | o.customer_name, |
| | | o.project, |
| | | o.batch, |
| | | fc.order_number, |
| | | ogd.technology_number, |
| | | ogd.glass_address, |
| | |
| | | c.customer_abbreviation as customerAbbreviation, |
| | | p.product_abbreviation as productAbbreviation, |
| | | fc.process_id as processId, |
| | | SUBSTRING(fc.process_id,12 ) as processIdAD ,/*-æµç¨å¡ç®å-*/ |
| | | o.create_time as createTime, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')) AS glassNumber, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S02')) AS figureNumber, |
| | |
| | | ' X ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(height AS CHAR))), |
| | | ' = ',pl.patch_num ) as size, |
| | | |
| | | CONCAT( |
| | | od.order_number,') ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(width AS CHAR))), |
| | | ' X ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(height AS CHAR))), |
| | | ' = ',pl.patch_num ) as numberSize |
| | | ' = ',pl.patch_num ) as numberSize, |
| | | CONCAT( |
| | | od.order_number,')',' ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(width AS CHAR))), |
| | | ' X ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(height AS CHAR)))) as numberSizeQuantity, |
| | | 'ææ¬' as custom1, |
| | | 'ææ¬' as custom2, |
| | | 'ææ¬' as custom3, |
| | | 'ææ¬' as custom4, |
| | | 'ææ¬' as custom5 |
| | | from sd.order as o |
| | | left join sd.order_detail as od on o.order_id = od.order_id |
| | | left join flow_card as fc on o.order_id = fc.order_id and |
| | |
| | | <select id="getPrimaryListMerge"> |
| | | select o.customer_name, |
| | | o.project, |
| | | if(o.batch!="",CONCAT(o.project,'(',o.batch,')'),o.project) as projectBatch, |
| | | ogd.process, |
| | | od.edging_type, |
| | | ogdc.concatenated_glass_child as glass_child, |
| | |
| | | pl.order_sort = fc.order_number and |
| | | pl.technology_number = fc.technology_number |
| | | where date(pl.create_time)>=#{selectTime1} and date(pl.create_time) <= #{selectTime2} |
| | | GROUP BY fc.process_id,fc.order_number, ogd.technology_number, pl.reporting_work_id |
| | | GROUP BY fc.process_id,fc.order_number, ogd.technology_number, pl.reporting_work_id,pl.rework_type, |
| | | pl.rework_reason |
| | | order by pl.id desc, fc.process_id, ogd.technology_number |
| | | </select> |
| | | |
| | |
| | | fc.quantity, |
| | | round(ogd.total_area, 2) as total_area, |
| | | od.perimeter, |
| | | if(od.bend_radius!=null || od.bend_radius!='',od.bend_radius,if(od.shape=2,JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S04')),'')) as bend_radius, |
| | | if(od.bend_radius!=null || od.bend_radius!='',od.bend_radius,JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S04'))) as bend_radius, |
| | | concat(IFNULL(od.processing_note, ''), IFNULL(od.remarks, '')) as remarks, |
| | | od.other_columns, |
| | | round(ogd.child_width) as width, |
| | |
| | | where fc.process_id = #{processId} |
| | | and position(fc.technology_number in #{technologyNumber}) |
| | | group by fc.process_id, fc.order_number, fc.technology_number |
| | | order by IF(fcs.sort != NULL or fcs.sort != '', fcs.sort, fc.order_number) |
| | | <choose> |
| | | <when test="landingSequence != 1 and flashback != 1"> |
| | | ORDER BY landing_sequence,fc.id desc |
| | | </when> |
| | | <!-- landingSequence != 1 æ¶ï¼ä¼å
æ landing_sequence ååº --> |
| | | <when test="landingSequence != 1"> |
| | | ORDER BY landing_sequence DESC |
| | | </when> |
| | | <!-- flashback = 1 æ¶æ£åº --> |
| | | <when test="flashback == 1"> |
| | | ORDER BY |
| | | CASE |
| | | WHEN fcs.sort IS NOT NULL AND fcs.sort <> '' THEN fcs.sort |
| | | ELSE fc.order_number |
| | | END ASC |
| | | </when> |
| | | <!-- flashback != 1 æ¶ååº --> |
| | | <otherwise> |
| | | ORDER BY |
| | | CASE |
| | | WHEN fcs.sort IS NOT NULL AND fcs.sort <> '' THEN fcs.sort |
| | | ELSE fc.order_number |
| | | END DESC |
| | | </otherwise> |
| | | </choose> |
| | | </select> |
| | | |
| | | <select id="getDetailListMerge"> |
| | |
| | | sum(fc.quantity) as quantity, |
| | | round(ogd.total_area, 2) as total_area, |
| | | od.perimeter, |
| | | if(od.bend_radius!=null || od.bend_radius!='',od.bend_radius,if(od.shape=2,JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S04')),'')) as bend_radius, |
| | | if(od.bend_radius!=null || od.bend_radius!='',od.bend_radius,JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S04'))) as bend_radius, |
| | | concat(IFNULL(od.processing_note, ''), IFNULL(od.remarks, '')) as remarks, |
| | | od.other_columns, |
| | | round(ogd.child_width) as width, |
| | |
| | | and fcs.process = #{process} |
| | | where fc.process_id = #{processId} and fc.`merge`=1 |
| | | group by fc.process_id, fc.order_number |
| | | order by IF(fcs.sort != NULL or fcs.sort != '', fcs.sort, fc.order_number) |
| | | <choose> |
| | | <when test="landingSequence != 1 and flashback != 1"> |
| | | ORDER BY landing_sequence,fc.id desc |
| | | </when> |
| | | <!-- landingSequence != 1 æ¶ï¼ä¼å
æ landing_sequence ååº --> |
| | | <when test="landingSequence != 1"> |
| | | ORDER BY landing_sequence DESC |
| | | </when> |
| | | <!-- flashback = 1 æ¶æ£åº --> |
| | | <when test="flashback == 1"> |
| | | ORDER BY |
| | | CASE |
| | | WHEN fcs.sort IS NOT NULL AND fcs.sort <> '' THEN fcs.sort |
| | | ELSE fc.order_number |
| | | END ASC |
| | | </when> |
| | | <!-- flashback != 1 æ¶ååº --> |
| | | <otherwise> |
| | | ORDER BY |
| | | CASE |
| | | WHEN fcs.sort IS NOT NULL AND fcs.sort <> '' THEN fcs.sort |
| | | ELSE fc.order_number |
| | | END DESC |
| | | </otherwise> |
| | | </choose> |
| | | </select> |
| | | |
| | | <select id="getDetailListLikes"> |
| | |
| | | count(*) as quantity, |
| | | round(ogd.child_width*ogd.child_height*count(*)/1000000, 2) as total_area, |
| | | round((ogd.child_width+ogd.child_height)*2*count(*)/1000, 2) as perimeter, |
| | | if(od.shape=2,JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S04')),od.bend_radius) as bend_radius, |
| | | if(od.bend_radius!=null || od.bend_radius!='',od.bend_radius,JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S04'))) as bend_radius, |
| | | concat(IFNULL(od.processing_note, ''), IFNULL(od.remarks, '')) as remarks, |
| | | od.other_columns, |
| | | round(ogd.child_width) as width, |
| | |
| | | sum(pl.patch_num) as quantity, |
| | | round(ogd.total_area, 2) as total_area, |
| | | od.perimeter, |
| | | if(od.bend_radius!=null || od.bend_radius!='',od.bend_radius,if(od.shape=2,JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S04')),'')) as bend_radius, |
| | | if(od.bend_radius!=null || od.bend_radius!='',od.bend_radius,JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S04'))) as bend_radius, |
| | | concat(IFNULL(od.processing_note, ''), IFNULL(od.remarks, '')) as remarks, |
| | | od.other_columns, |
| | | round(ogd.child_width) as width, |
| | |
| | | <select id="getPrimaryListRefund"> |
| | | select o.customer_name, |
| | | o.project, |
| | | if(o.batch!="",CONCAT(o.project,'(',o.batch,')'),o.project) as projectBatch, |
| | | ogd.process, |
| | | od.edging_type, |
| | | ogd.glass_child, |
| | |
| | | <select id="getPrimaryListRework"> |
| | | select o.customer_name, |
| | | o.project, |
| | | if(o.batch!="",CONCAT(o.project,'(',o.batch,')'),o.project) as projectBatch, |
| | | ogd.process, |
| | | od.edging_type, |
| | | ogd.glass_child, |
| | |
| | | (pl.rework_num) as quantity, |
| | | round(ogd.total_area, 2) as total_area, |
| | | od.perimeter, |
| | | if(od.shape=2,JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S04')),od.bend_radius) as bend_radius, |
| | | if(od.bend_radius!=null || od.bend_radius!='',od.bend_radius,JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S04'))) as bend_radius, |
| | | concat(od.processing_note, od.remarks) as remarks, |
| | | od.other_columns, |
| | | round(ogd.child_width) as width, |
| | |
| | | contacts, |
| | | delivery_address as deliveryAddress, |
| | | od.processing_note as processingNote, |
| | | round(ogd.child_width) as width, |
| | | round(ogd.child_height) as height, |
| | | ogd.child_width as width, |
| | | ogd.child_height as height, |
| | | fc.quantity, |
| | | CONCAT(round(ogd.child_width) , ' X ', round(ogd.child_height) ,' = ',fc.quantity ) as size, |
| | | CONCAT(ogd.child_width , ' X ', ogd.child_height ,' = ',fc.quantity ) as size, |
| | | od.order_number as orderNumber, |
| | | fc.technology_number as technologyNumber, |
| | | od.building_number as buildingNumber, |
| | |
| | | c.customer_abbreviation as customerAbbreviation, |
| | | p.product_abbreviation as productAbbreviation, |
| | | CONCAT(fc.process_id, '/', fc.technology_number) as processId, |
| | | SUBSTRING(fc.process_id,12 ) as processIdAD ,/*-æµç¨å¡ç®å-*/ |
| | | o.create_time as createTime, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')) AS glassNumber, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S02')) AS figureNumber, |
| | |
| | | od.bend_radius as bendRadius, |
| | | ogd.glass_child as glassChild, |
| | | ogd.glass_address as glassAddress, |
| | | JSON_UNQUOTE(JSON_EXTRACT(pd.separation, '$.color')) AS color |
| | | JSON_UNQUOTE(JSON_EXTRACT(pd.separation, '$.color')) AS color, |
| | | CONCAT( |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(ogd.child_width AS CHAR))), |
| | | ' X ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(ogd.child_height AS CHAR))), |
| | | ' = ',fc.quantity ) as size, |
| | | CONCAT( |
| | | od.order_number,') ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(ogd.child_width AS CHAR))), |
| | | ' X ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(ogd.child_height AS CHAR))), |
| | | ' = ',fc.quantity ) as numberSize, |
| | | CONCAT( |
| | | od.order_number,')',' ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(ogd.child_width AS CHAR))), |
| | | ' X ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(ogd.child_height AS CHAR)))) as numberSizeQuantity, |
| | | 'ææ¬' as custom1, |
| | | 'ææ¬' as custom2, |
| | | 'ææ¬' as custom3, |
| | | 'ææ¬' as custom4, |
| | | 'ææ¬' as custom5 |
| | | from sd.order as o |
| | | left join sd.order_detail as od on o.order_id = od.order_id |
| | | left join flow_card as fc on o.order_id = fc.order_id and |
| | |
| | | fcs.technology_number = fc.technology_number |
| | | and fcs.process = #{process} |
| | | where fc.process_id = #{processId} |
| | | and fc.order_number = #{orderNumber} |
| | | and position(fc.technology_number in #{technologyNumber}) |
| | | group by fc.process_id,od.order_number, ogd.technology_number, ogd.child_width, ogd.child_height |
| | | order by IF(fcs.sort != NULL or fcs.sort != '', fcs.sort, fc.order_number) |
| | |
| | | contacts, |
| | | o.delivery_address as deliveryAddress, |
| | | od.processing_note as processingNote, |
| | | round(ogd.child_width) as width, |
| | | round(ogd.child_height) as height, |
| | | ogd.child_width as width, |
| | | ogd.child_height as height, |
| | | pl.patch_num as quantity, |
| | | pl.order_sort as orderNumber, |
| | | pl.technology_number as technologyNumber, |
| | |
| | | c.customer_abbreviation as customerAbbreviation, |
| | | p.product_abbreviation as productAbbreviation, |
| | | CONCAT(fc.process_id, '/', fc.technology_number) as processId, |
| | | SUBSTRING(fc.process_id,12 ) as processIdAD ,/*-æµç¨å¡ç®å-*/ |
| | | o.create_time as createTime, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')) AS glassNumber, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S02')) AS figureNumber, |
| | |
| | | ' X ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(ogd.child_height AS CHAR))), |
| | | ' = ',pl.patch_num ) as size, |
| | | |
| | | CONCAT( |
| | | od.order_number,') ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(ogd.child_width AS CHAR))), |
| | | ' X ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(ogd.child_height AS CHAR))), |
| | | ' = ',pl.patch_num ) as numberSize |
| | | ' = ',pl.patch_num ) as numberSize, |
| | | CONCAT( |
| | | od.order_number,')',' ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(ogd.child_width AS CHAR))), |
| | | ' X ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(ogd.child_height AS CHAR)))) as numberSizeQuantity, |
| | | 'ææ¬' as custom1, |
| | | 'ææ¬' as custom2, |
| | | 'ææ¬' as custom3, |
| | | 'ææ¬' as custom4, |
| | | 'ææ¬' as custom5 |
| | | from sd.order as o |
| | | left join sd.order_detail as od on o.order_id = od.order_id |
| | | left join flow_card as fc on o.order_id = fc.order_id and |
| | |
| | | |
| | | <select id="getPrimaryListLimt"> |
| | | select o.customer_name, |
| | | if(o.batch!="",CONCAT(o.project,'(',o.batch,')'),o.project) as projectBatch, |
| | | o.project, |
| | | #{process} process, |
| | | od.edging_type, |
| | |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')) AS glassNumber, |
| | | od.order_number, |
| | | ogd.child_width as width, |
| | | ogd.child_height as height |
| | | ogd.child_height as height, |
| | | ifnull(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')),'') AS glassNumber, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')) AS S01, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S02')) AS S02, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S03')) AS S03, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S04')) AS S04, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S05')) AS S05 |
| | | from flow_card as fc |
| | | left join sd.order_glass_detail as ogd |
| | | on ogd.order_id = fc.order_id and ogd.order_number = fc.order_number and |
| | |
| | | ' X ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(height AS CHAR))), |
| | | ' = ',#{printQuantity} ) as numberSize, |
| | | CONCAT( |
| | | od.order_number,')',' ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(width AS CHAR))), |
| | | ' X ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(height AS CHAR)))) as numberSizeQuantity, |
| | | od.order_number as orderNumber, |
| | | fc.technology_number as technologyNumber, |
| | | od.building_number as buildingNumber, |
| | |
| | | c.customer_abbreviation as customerAbbreviation, |
| | | p.product_abbreviation as productAbbreviation, |
| | | fc.process_id as processId, |
| | | SUBSTRING(fc.process_id,12 ) as processIdAD ,/*-æµç¨å¡ç®å-*/ |
| | | o.create_time as createTime, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')) AS glassNumber, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S02')) AS figureNumber, |
| | |
| | | c.customer_abbreviation as customerAbbreviation, |
| | | p.product_abbreviation as productAbbreviation, |
| | | fc.process_id as processId, |
| | | SUBSTRING(fc.process_id,12 ) as processIdAD ,/*-æµç¨å¡ç®å-*/ |
| | | o.create_time as createTime, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')) AS glassNumber, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S02')) AS figureNumber, |
| | |
| | | c.customer_abbreviation as customerAbbreviation, |
| | | p.product_abbreviation as productAbbreviation, |
| | | fc.process_id as processId, |
| | | SUBSTRING(fc.process_id,12 ) as processIdAD ,/*-æµç¨å¡ç®å-*/ |
| | | o.create_time as createTime, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')) AS glassNumber, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S02')) AS figureNumber, |
| | |
| | | c.customer_abbreviation as customerAbbreviation, |
| | | p.product_abbreviation as productAbbreviation, |
| | | fc.process_id as processId, |
| | | SUBSTRING(fc.process_id,12 ) as processIdAD ,/*-æµç¨å¡ç®å-*/ |
| | | o.create_time as createTime, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')) AS glassNumber, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S02')) AS figureNumber, |
| | |
| | | ' X ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(height AS CHAR))), |
| | | ' = ',#{printQuantity} ) as numberSize, |
| | | CONCAT( |
| | | od.order_number,')',' ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(width AS CHAR))), |
| | | ' X ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(height AS CHAR)))) as numberSizeQuantity, |
| | | od.order_number as orderNumber, |
| | | ogd.technology_number as technologyNumber, |
| | | od.building_number as buildingNumber, |
| | |
| | | c.customer_abbreviation as customerAbbreviation, |
| | | p.product_abbreviation as productAbbreviation, |
| | | '' as processId, |
| | | SUBSTRING(fc.process_id,12 ) as processIdAD ,/*-æµç¨å¡ç®å-*/ |
| | | o.create_time as createTime, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')) AS glassNumber, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S02')) AS figureNumber, |
| | |
| | | <select id="getProcessNameList"> |
| | | SELECT id,basic_name,IFNULL(nickname,"") as nickname FROM sd.`basic_data` where basic_category='process' |
| | | </select> |
| | | |
| | | <select id="exportDateProcessMp"> |
| | | select |
| | | a.order_Id, |
| | | a.process_Id, |
| | | c.product_id, |
| | | c.product_name, |
| | | b.project, |
| | | sum(a.quantity) as quantity, |
| | | sum(a.quantity) * c.area as compute_gross_area, |
| | | a.founder, |
| | | c.processing_note, |
| | | b.customer_name, |
| | | layout_status as layout_status, |
| | | a.merge, |
| | | a.rack, |
| | | b.batch |
| | | from (select id,order_id,process_id,order_number, quantity,founder,max(layout_status) as layout_status,create_time,max(merge) as merge,rack from flow_card |
| | | group by process_Id,order_number) as a |
| | | left join sd.`order` as b on a.order_Id=b.order_id |
| | | left join sd.order_detail as c on a.order_Id=c.order_id and a.order_Number=c.order_number |
| | | where date(a.create_time) >= #{date[0]} |
| | | and date(a.create_time) <= #{date[1]} |
| | | and b.create_order>0 |
| | | group by a.process_Id |
| | | ORDER BY a.id desc |
| | | </select> |
| | | |
| | | <select id="getSumQuantity"> |
| | | select quantity from sd.`order` where order_id=#{orderId} |
| | | </select> |
| | | |
| | | <select id="getDetailCompoundList"> |
| | | select fc.order_number, |
| | | concat(IF(ROUND(ogd.child_width, 1) = FLOOR(ogd.child_width), FLOOR(ogd.child_width), ROUND(ogd.child_width, 1)), "*", IF(ROUND(child_height, 1) = FLOOR(child_height), FLOOR(child_height), ROUND(child_height, 1))) as child_width, |
| | | SUM(fc.quantity) as quantity, |
| | | round(SUM(ogd.total_area), 2) as total_area, |
| | | SUM(od.perimeter) as perimeter, |
| | | if(od.bend_radius!=null || od.bend_radius!='',od.bend_radius,JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S04'))) as bend_radius, |
| | | concat(IFNULL(od.processing_note, ''), IFNULL(od.remarks, '')) as remarks, |
| | | od.other_columns, |
| | | round(ogd.child_width) as width, |
| | | round(ogd.child_height) as height, |
| | | pd.separation, |
| | | #{compound} as technology_number, |
| | | IFNULL(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S02')),'') as mapNumber, |
| | | od.building_number |
| | | from flow_card as fc |
| | | left join sd.order_glass_detail as ogd |
| | | on fc.order_id = ogd.order_id and fc.order_number = ogd.order_number and |
| | | fc.technology_number = ogd.technology_number |
| | | left join sd.order_detail as od on od.order_id = fc.order_id and od.order_number = fc.order_number |
| | | left join sd.product_detail as pd |
| | | on pd.prod_id = od.product_id and pd.glass_sort = ogd.technology_number |
| | | left join flow_card_sort as fcs |
| | | on fcs.process_id = fc.process_id and fcs.order_number = fc.order_number and |
| | | fcs.technology_number = fc.technology_number |
| | | and fcs.process = #{process} |
| | | where fc.process_id = #{processId} |
| | | and position(fc.technology_number in #{compound}) |
| | | group by fc.process_id, fc.order_number |
| | | <choose> |
| | | <when test="landingSequence != 1 and flashback != 1"> |
| | | ORDER BY landing_sequence,fc.id desc |
| | | </when> |
| | | <!-- landingSequence != 1 æ¶ï¼ä¼å
æ landing_sequence ååº --> |
| | | <when test="landingSequence != 1"> |
| | | ORDER BY landing_sequence DESC |
| | | </when> |
| | | <!-- flashback = 1 æ¶æ£åº --> |
| | | <when test="flashback == 1"> |
| | | ORDER BY |
| | | CASE |
| | | WHEN fcs.sort IS NOT NULL AND fcs.sort <> '' THEN fcs.sort |
| | | ELSE fc.order_number |
| | | END ASC |
| | | </when> |
| | | <!-- flashback != 1 æ¶ååº --> |
| | | <otherwise> |
| | | ORDER BY |
| | | CASE |
| | | WHEN fcs.sort IS NOT NULL AND fcs.sort <> '' THEN fcs.sort |
| | | ELSE fc.order_number |
| | | END DESC |
| | | </otherwise> |
| | | </choose> |
| | | </select> |
| | | |
| | | <select id="getDetailListLikeCompound"> |
| | | select fc.order_number, |
| | | concat(IF(ROUND(ogd.child_width, 1) = FLOOR(ogd.child_width), FLOOR(ogd.child_width), ROUND(ogd.child_width, 1)), "*", IF(ROUND(child_height, 1) = FLOOR(child_height), FLOOR(child_height), ROUND(child_height, 1))) as child_width, |
| | | sum(fc.quantity) as quantity, |
| | | round(sum(ogd.total_area), 2) as total_area, |
| | | sum(od.perimeter) as perimeter, |
| | | if(od.bend_radius!=null || od.bend_radius!='',od.bend_radius,if(od.shape=2,JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S04')),'')) as bend_radius, |
| | | concat(IFNULL(od.processing_note, ''), IFNULL(od.remarks, '')) as remarks, |
| | | od.other_columns, |
| | | round(ogd.child_width) as width, |
| | | round(ogd.child_height) as height, |
| | | pd.separation, |
| | | #{compound} as technology_number, |
| | | IFNULL(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S02')),'') as mapNumber, |
| | | od.building_number |
| | | from flow_card as fc |
| | | left join sd.order_glass_detail as ogd |
| | | on fc.order_id = ogd.order_id and fc.order_number = ogd.order_number and |
| | | fc.technology_number = ogd.technology_number |
| | | left join sd.order_detail as od on od.order_id = fc.order_id and od.order_number = fc.order_number |
| | | left join sd.product_detail as pd |
| | | on pd.prod_id = od.product_id and pd.glass_sort = ogd.technology_number |
| | | left join flow_card_sort as fcs |
| | | on fcs.process_id = fc.process_id and fcs.order_number = fc.order_number and |
| | | fcs.technology_number = fc.technology_number |
| | | and fcs.process = #{process} |
| | | where fc.process_id = #{processId} |
| | | and position(fc.technology_number in #{compound}) |
| | | group by fc.process_id, fc.order_number |
| | | <choose> |
| | | <when test="landingSequence != 1 and flashback != 1"> |
| | | ORDER BY landing_sequence,fc.id desc |
| | | </when> |
| | | <!-- landingSequence != 1 æ¶ï¼ä¼å
æ landing_sequence ååº --> |
| | | <when test="landingSequence != 1"> |
| | | ORDER BY landing_sequence DESC |
| | | </when> |
| | | <!-- flashback = 1 æ¶æ£åº --> |
| | | <when test="flashback == 1"> |
| | | ORDER BY |
| | | CASE |
| | | WHEN fcs.sort IS NOT NULL AND fcs.sort <> '' THEN fcs.sort |
| | | ELSE fc.order_number |
| | | END ASC |
| | | </when> |
| | | <!-- flashback != 1 æ¶ååº --> |
| | | <otherwise> |
| | | ORDER BY |
| | | CASE |
| | | WHEN fcs.sort IS NOT NULL AND fcs.sort <> '' THEN fcs.sort |
| | | ELSE fc.order_number |
| | | END DESC |
| | | </otherwise> |
| | | </choose> |
| | | </select> |
| | | |
| | | <select id="getPrintCustomDataSemiTj"> |
| | | select o.order_id as orderId, |
| | | project, |
| | | customer_id as customerId, |
| | | o.customer_name as customerName, |
| | | order_type as orderType, |
| | | order_classify as orderClassify, |
| | | batch, |
| | | o.icon, |
| | | pack_type as packType, |
| | | delivery_date as deliveryDate, |
| | | al_type as alType, |
| | | money, |
| | | contract_id as contractId, |
| | | customer_batch customerBatch, |
| | | contacts, |
| | | delivery_address as deliveryAddress, |
| | | od.processing_note as processingNote, |
| | | ogd.child_width as width, |
| | | ogd.child_height as height, |
| | | fc.quantity, |
| | | CONCAT(ogd.child_width , ' X ', ogd.child_height ,' = ',fc.quantity ) as size, |
| | | od.order_number as orderNumber, |
| | | fc.technology_number as technologyNumber, |
| | | od.building_number as buildingNumber, |
| | | od.product_name as productName, |
| | | od.edging_type as edgingType, |
| | | od.remarks, |
| | | c.customer_abbreviation as customerAbbreviation, |
| | | p.product_abbreviation as productAbbreviation, |
| | | CONCAT(fc.process_id, '/', fc.technology_number) as processId, |
| | | SUBSTRING(fc.process_id,12 ) as processIdAD ,/*-æµç¨å¡ç®å-*/ |
| | | o.create_time as createTime, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')) AS glassNumber, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S02')) AS figureNumber, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S03')) AS colourCeramicGlaze, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S04')) AS remarks1, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S05')) AS remarks2, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S06')) AS remarks3, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S07')) AS remarks4, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S08')) AS remarks5, |
| | | p.remarks as filmNumber, |
| | | od.bend_radius as bendRadius, |
| | | ogd.glass_child as glassChild, |
| | | ogd.glass_address as glassAddress, |
| | | JSON_UNQUOTE(JSON_EXTRACT(pd.separation, '$.color')) AS color, |
| | | CONCAT( |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(width AS CHAR))), |
| | | ' X ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(height AS CHAR))), |
| | | ' = ',fc.quantity ) as size, |
| | | CONCAT( |
| | | od.order_number,') ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(ogd.child_width AS CHAR))), |
| | | ' X ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(ogd.child_height AS CHAR))), |
| | | ' = ',fc.quantity ) as numberSize, |
| | | CONCAT( |
| | | od.order_number,')',' ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(ogd.child_width AS CHAR))), |
| | | ' X ', |
| | | TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM CAST(ogd.child_height AS CHAR)))) as numberSizeQuantity, |
| | | 'ææ¬' as custom1, |
| | | 'ææ¬' as custom2, |
| | | 'ææ¬' as custom3, |
| | | 'ææ¬' as custom4, |
| | | 'ææ¬' as custom5 |
| | | from sd.order as o |
| | | left join sd.order_detail as od on o.order_id = od.order_id |
| | | left join flow_card as fc on o.order_id = fc.order_id and |
| | | od.order_number = fc.order_number |
| | | left join sd.product as p on p.id = od.product_id |
| | | left join sd.customer as c on c.id = o.customer_id |
| | | left join sd.product_detail as pd on pd.prod_id = p.id and pd.sort_num = od.order_number |
| | | left join sd.order_glass_detail ogd |
| | | on ogd.order_id = o.order_id and ogd.order_number = od.order_number and |
| | | ogd.technology_number = fc.technology_number |
| | | left join flow_card_sort as fcs |
| | | on fcs.process_id = fc.process_id and fcs.order_number = fc.order_number and |
| | | fcs.technology_number = fc.technology_number |
| | | and fcs.process = #{process} |
| | | where fc.process_id = #{processId} |
| | | and position(fc.technology_number in #{technologyNumber}) |
| | | group by fc.process_id,od.order_number, ogd.technology_number, ogd.child_width, ogd.child_height |
| | | order by IF(fcs.sort != NULL or fcs.sort != '', fcs.sort, fc.order_number) |
| | | </select> |
| | | |
| | | <select id="getLayoutStatus"> |
| | | select max(layout_status) from flow_card where process_id= #{processId} |
| | | </select> |
| | | |
| | | <select id="selectSortingCardMp"> |
| | | select od.order_number, |
| | | od.order_number AS 'orderNumber', |
| | | od.width, |
| | | od.height, |
| | | od.shape, |
| | | od.quantity, |
| | | od.compute_gross_area, |
| | | p.total_thickness, |
| | | ROUND(od.quantity-IFNULL(sum(fc.quantity)/fc.layers_number,0)) as baiscQuantity, |
| | | od.compute_gross_area as 'computeGrossArea', |
| | | p.total_thickness AS 'totalThickness', |
| | | ifnull(p.thickness,'') as thickness, |
| | | od.weight, |
| | | od.remarks, |
| | | od.processing_note, |
| | | ifnull(od.bend_radius,'') as bend_radius, |
| | | ods.S01, |
| | | ods.S02, |
| | | ods.S03, |
| | | ods.S04, |
| | | ods.S05, |
| | | od.building_number |
| | | from sd.order_detail as od |
| | | left join sd.order_glass_detail as ogd |
| | | on od.order_id = ogd.order_id and od.order_number = ogd.order_number |
| | | left join sd.product as p on od.product_id = p.id |
| | | left join (SELECT order_id, |
| | | order_number, |
| | | JSON_UNQUOTE(JSON_EXTRACT(other_columns, '$.S01')) AS S01, |
| | | JSON_UNQUOTE(JSON_EXTRACT(other_columns, '$.S02')) AS S02, |
| | | JSON_UNQUOTE(JSON_EXTRACT(other_columns, '$.S03')) AS S03, |
| | | JSON_UNQUOTE(JSON_EXTRACT(other_columns, '$.S04')) AS S04, |
| | | JSON_UNQUOTE(JSON_EXTRACT(other_columns, '$.S05')) AS S05 |
| | | FROM sd.order_detail |
| | | WHERE order_id = #{orderId}) as ods |
| | | on ods.order_id = od.order_id and ods.order_number = od.order_number |
| | | left join flow_card as fc on fc.order_id = od.order_id and fc.order_number = od.order_number |
| | | and fc.technology_number=ogd.technology_number |
| | | where od.order_id = #{orderId} |
| | | and ogd.production_id = #{productionId} |
| | | and ogd.splitting_status = 0 |
| | | GROUP BY od.order_number |
| | | <if test="optionVal == 0 and flashback == 1"> |
| | | ORDER BY od.width ASC, od.height ASC |
| | | </if> |
| | | <if test="optionVal == 0 and flashback == 0"> |
| | | ORDER BY od.width DESC, od.height DESC |
| | | </if> |
| | | <if test="optionVal == 1 and flashback == 1"> |
| | | ORDER BY od.height ASC, od.width ASC |
| | | </if> |
| | | <if test="optionVal == 1 and flashback == 0"> |
| | | ORDER BY od.height DESC, od.width DESC |
| | | </if> |
| | | </select> |
| | | </mapper> |
| | |
| | | æ°é as quantity, |
| | | å½¢ç¶ as shape, |
| | | é¡¹ç® as project, |
| | | åçåç§° as glass_child, |
| | | 产ååç§° as glass_child, |
| | | é¢ç§¯ as area, |
| | | GlassType as glassType, |
| | | patch_state |
| | |
| | | æ°é as quantity, |
| | | å½¢ç¶ as shape, |
| | | é¡¹ç® as project, |
| | | åçåç§° as glass_child, |
| | | 产ååç§° as glass_child, |
| | | é¢ç§¯ as area, |
| | | GlassType as glassType, |
| | | patch_state |
| | |
| | | æ°é as quantity, |
| | | å½¢ç¶ as shape, |
| | | é¡¹ç® as project, |
| | | åçåç§° as glass_child, |
| | | 产ååç§° as glass_child, |
| | | é¢ç§¯ as area, |
| | | GlassType as glassType, |
| | | patch_state |
| | |
| | | p.remark, |
| | | a.name, |
| | | p.create_time, |
| | | p.update_time |
| | | p.update_time, |
| | | p.optimize_state |
| | | FROM |
| | | ( |
| | | pp.optimize_project p |
| | |
| | | æ°é as quantity, |
| | | å½¢ç¶ as shape, |
| | | é¡¹ç® as project, |
| | | åçåç§° as glass_child, |
| | | 产ååç§° as glass_child, |
| | | é¢ç§¯ as area, |
| | | GlassType as glassType, |
| | | patch_state |
| | |
| | | fc.layer, |
| | | fc.order_number |
| | | </select> |
| | | <select id="getProjectByProjectNoSv" resultType="java.util.Map"> |
| | | SELECT |
| | | p.id, |
| | | p.project_no as projectNumber, |
| | | p.project_name, |
| | | p.glass_type, |
| | | p.glass_thickness, |
| | | p.type, |
| | | p.state, |
| | | p.glass_total as quantity, |
| | | p.glass_total_area, |
| | | p.process_qty, |
| | | p.process_cards, |
| | | p.remark, |
| | | a.name, |
| | | p.create_time, |
| | | p.update_time, |
| | | p.optimize_state |
| | | FROM |
| | | ( |
| | | pp.optimize_project p |
| | | LEFT JOIN pp.optimize_admin a ON (( |
| | | p.creater = a.Id |
| | | ))) |
| | | WHERE |
| | | ( p.state = 1 ) and p.tempering_state=0 and optimize_state=0 and p.project_no = #{projectNo} |
| | | ORDER BY |
| | | p.create_time DESC, |
| | | p.project_no |
| | | |
| | | </select> |
| | | |
| | | <delete id="deleteOptimizeDetailThirdParty"> |
| | | delete from pp.other_flow_card |
| | |
| | | <result column="area" property="area"/> |
| | | <result column="breakage_quantity" property="breakageQuantity"/> |
| | | <result column="project" property="project"/> |
| | | <result column="batch" property="batch"/> |
| | | <result column="process_id" property="processId"/> |
| | | <result column="order_number" property="orderNumber"/> |
| | | <result column="technology_number" property="technologyNumber"/> |
| | |
| | | <result column="examine_time" property="examineTime"/> |
| | | <result column="workProcessName" property="workProcessName"/> |
| | | <result column="device_name" property="deviceName"/> |
| | | <result column="order_type" property="orderType"/> |
| | | </resultMap> |
| | | |
| | | <resultMap id="scheduleProductionScheduleMap" type="com.example.erp.dto.pp.ScheduleProductionScheduleDTO"> |
| | |
| | | b.glass_child, |
| | | d.order_type, |
| | | concat(c.process_id, '/', c.technology_number) as process_id, |
| | | c.order_id, |
| | | c.order_number, |
| | | c.technology_number, |
| | | c.quantity, |
| | | b.child_width, |
| | | b.child_height, |
| | | if(c.technology_number=1,c.quantity,0) as quantity, |
| | | # c.quantity, |
| | | c.quantity as thisQuantity,/*ç¨äºå¤ææ¯å¦æ¹åé¢è²*/ |
| | | e.reportWorkQuantity, |
| | | e.reportWorkQuantityShow, |
| | | e.reportWorkQuantityCount, |
| | | e.reportWorkTime, |
| | | e.broken_num, |
| | | c.quantity*a.area as gross_area, |
| | | ifnull(f.inventory, 0) as inventory, |
| | | round(ifnull(f.inventory, 0) * a.area, 2) as inventoryArea, |
| | | ifnull(dd.quantity, 0) as shippedQuantity, |
| | | ifnull(JSON_UNQUOTE(JSON_EXTRACT(a.other_columns, '$.S01')),'') AS glassNumber |
| | | from flow_card as c |
| | | c.quantity as glassQuantity, |
| | | |
| | | # c.quantity*a.area as gross_area, |
| | | # ifnull(f.inventory, 0) as inventory, |
| | | # round(ifnull(f.inventory, 0) * a.area, 2) as inventoryArea, |
| | | # ifnull(dd.quantity, 0) as shippedQuantity, |
| | | |
| | | if(c.technology_number=1,c.quantity*a.area,0) as gross_area, |
| | | if(c.technology_number=1,ifnull(f.inventory, 0) ,0) as inventory, |
| | | if(c.technology_number=1,round(ifnull(f.inventory, 0) * a.area, 2),0) as inventoryArea, |
| | | if(c.technology_number=1,ifnull(dd.quantity, 0) ,0) as shippedQuantity, |
| | | |
| | | |
| | | ifnull(JSON_UNQUOTE(JSON_EXTRACT(a.other_columns, '$.S01')),'') AS glassNumber, |
| | | b.`group` |
| | | |
| | | from pp.flow_card as c |
| | | left join |
| | | sd.order_detail as a |
| | | on c.order_id = a.order_id |
| | |
| | | technology_number, |
| | | sum(a.broken_num) as broken_num, |
| | | concat('{', |
| | | GROUP_CONCAT(concat("\"", process, "\":\"", reporting_work_num, "\"")), |
| | | GROUP_CONCAT(concat("\"", process, "\":\"", if(technology_number!=1 and (bd.nickname='stepD' || bd.nickname='stepB' ) ,0,reporting_work_num), "\"")), |
| | | '}' |
| | | ) as reportWorkQuantity, |
| | | concat('{', |
| | | GROUP_CONCAT(concat("\"", process, "\":\"", if(technology_number!=1 and (bd.nickname='stepD' || bd.nickname='stepB' ) ,0,reporting_work_num), "\"")), |
| | | '}' |
| | | ) as reportWorkQuantityShow, |
| | | concat('{', |
| | | GROUP_CONCAT(concat("\"", process, "\":\"", reporting_work_num_count, "\"")), |
| | | '}' |
| | |
| | | '}' |
| | | ) as reportWorkTime |
| | | FROM sd.order_process_detail as a |
| | | left join (SELECT DISTINCT basic_name,nickname from sd.basic_data as bd where bd.basic_category = 'process') as bd |
| | | on a.process = bd.basic_name |
| | | where a.order_id = #{orderId} |
| | | GROUP BY process_id, a.order_number, a.technology_number) as e |
| | | GROUP BY process_id, a.order_number, a.technology_number |
| | | |
| | | |
| | | ) as e |
| | | on e.process_id = c.process_id |
| | | and e.technology_number = c.technology_number |
| | | and e.order_number = c.order_number |
| | |
| | | SELECT |
| | | o.order_id, |
| | | o.project, |
| | | o.batch, |
| | | rw.process_id, |
| | | dd.order_number, |
| | | dd.technology_number, |
| | |
| | | rw.reporting_work_time >= #{selectTime1} |
| | | AND rw.reporting_work_time < #{selectTime2} |
| | | |
| | | AND dd.available = 0 |
| | | AND dd.available = 0 and rw.reviewed_state>=0 |
| | | <if test="damageReportDTO.orderId != null and damageReportDTO.orderId != ''"> |
| | | and o.order_id regexp #{damageReportDTO.orderId} |
| | | </if> |
| | |
| | | fc.quantity, |
| | | round(ogd.child_width * ogd.child_height * fc.quantity / 1000000, 2) as area, |
| | | if(od.shape='' || ISNULL(od.shape),'æ®å½¢',if(od.shape = 1, 'æ®å½¢', if(od.shape = 2, 'å¼å½¢', ''))) as shape, |
| | | od.remarks |
| | | FROM sd.ORDER AS o |
| | | LEFT JOIN sd.order_detail AS od ON od.order_id = od.order_id |
| | | LEFT JOIN sd.order_glass_detail AS ogd ON o.order_id = ogd.order_id |
| | | AND ogd.order_number = od.order_number |
| | | LEFT JOIN flow_card AS fc ON fc.order_id = ogd.order_id |
| | | AND fc.order_number = od.order_number |
| | | AND fc.technology_number = ogd.technology_number |
| | | od.remarks, |
| | | ifnull(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')),'') AS glassNumber, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')) AS S01, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S02')) AS S02, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S03')) AS S03, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S04')) AS S04, |
| | | JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S05')) AS S05 |
| | | FROM |
| | | flow_card as fc left join sd.order_glass_detail as ogd on ogd.order_id=fc.order_id and ogd.order_number=ogd.order_number and ogd.technology_number=fc.technology_number |
| | | left join sd.order_detail as od on od.order_id=fc.order_id and od.order_number=fc.order_number |
| | | left join sd.`order` as o on o.order_id=fc.order_id |
| | | WHERE fc.order_id = #{orderId} |
| | | GROUP BY fc.id |
| | | order by fc.order_number,fc.technology_number |
| | | </select> |
| | | |
| | | <select id="qualityReportMp"> |
| | |
| | | left join sd.`order` as o on o.order_id = a.order_id |
| | | where o.create_time >= #{selectTime1} |
| | | AND o.create_time < #{selectTime2} |
| | | and position(#{orderId} in o.order_id) |
| | | GROUP BY process_id, a.technology_number) as e |
| | | on e.process_id = c.process_id |
| | | and e.technology_number = c.technology_number |
| | | left join sd.delivery_detail as dd on dd.order_id = a.order_id and dd.order_number = a.order_number |
| | | where d.create_time >= #{selectTime1} |
| | | AND d.create_time < #{selectTime2} |
| | | and position(#{orderId} in a.order_id) |
| | | and d.create_order>0 |
| | | and reportWorkQuantity is not null |
| | | GROUP BY a.order_id |
| | |
| | | <select id="exportDamageReportMp"> |
| | | SELECT o.order_id, |
| | | o.project, |
| | | o.batch, |
| | | rw.process_id, |
| | | dd.order_number, |
| | | dd.technology_number, |
| | |
| | | dd.breakage_quantity, |
| | | round(ogd.child_width * ogd.child_height * dd.breakage_quantity / 1000000, 2) as area, |
| | | IFNULL(dd.responsible_personnel, '') as personnel, |
| | | ogd.glass_child |
| | | ogd.glass_child, |
| | | ogd.child_width, |
| | | ogd.child_height |
| | | FROM sd.ORDER AS o |
| | | LEFT JOIN sd.order_glass_detail AS ogd ON ogd.order_id = o.order_id |
| | | LEFT JOIN reporting_work AS rw ON rw.order_id = o.order_id |
| | |
| | | AND dd.technology_number = ogd.technology_number |
| | | WHERE rw.reporting_work_time >= #{dates[0]} |
| | | and rw.reporting_work_time <= #{dates[1]} |
| | | AND dd.available = 0 |
| | | AND dd.available = 0 and rw.reviewed_state>=0 |
| | | GROUP BY dd.id |
| | | </select> |
| | | |
| | |
| | | </select> |
| | | |
| | | <select id="exportWorkInProgressMp"> |
| | | select #{process} as thisProcess, |
| | | select if(#{process}='',odpd.process,#{process}) as thisProcess, |
| | | fc.process_id, |
| | | o.customer_name, |
| | | o.project, |
| | |
| | | odpd.broken_num) / 1000000, 2) as stockArea, |
| | | od.product_name, |
| | | od.bend_radius, |
| | | ifnull(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')),'') AS glassNumber, |
| | | rws.teams_groups_name |
| | | ifnull(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')),'') AS glassNumber |
| | | |
| | | from sd.order_detail AS od |
| | | LEFT JOIN sd.order_glass_detail AS ogd |
| | |
| | | LEFT JOIN |
| | | reporting_work as rwk |
| | | on rw.reporting_work_id = rwk.reporting_work_id |
| | | where rwk.this_process = #{process} |
| | | where position(#{process} in rwk.this_process) |
| | | and rw.review_status >= 0 |
| | | GROUP BY rw.process_id, rw.order_sort, rw.technology_number) as c |
| | | on c.process_id = fc.process_id |
| | |
| | | and c.technology_number = fc.technology_number |
| | | left join sd.`order` as o |
| | | on o.order_id = od.order_id |
| | | left join |
| | | ( |
| | | select a.process_id,a.teams_groups_name,a.next_process,b.technology_number,b.order_number |
| | | from reporting_work as a |
| | | left join reporting_work_detail as b on a.reporting_work_id=b.reporting_work_id |
| | | GROUP BY a.process_id,a.teams_groups_name,a.next_process,b.order_number,b.technology_number |
| | | ) as rws on rws.process_id=fc.process_id and rws.order_number=fc.order_number |
| | | and rws.technology_number=fc.technology_number and rws.next_process=#{process} |
| | | where o.create_order>0 |
| | | and odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count - |
| | | odpd.broken_num != 0 |
| | | and odpd.process = #{process} |
| | | odpd.broken_num != 0 and odpd.process!=SUBSTRING_INDEX(ogd.process, '->', 1) |
| | | and position(#{process} in odpd.process) |
| | | and position(ifnull(#{inputVal}, '') in od.order_id) |
| | | and position(ifnull(#{project}, '') in o.project) |
| | | |
| | | group by fc.process_id, fc.order_number, fc.technology_number |
| | | group by fc.process_id, fc.order_number, fc.technology_number,odpd.process |
| | | order by fc.process_id, fc.order_number, fc.technology_number |
| | | </select> |
| | | |
| | |
| | | rw.reviewed, |
| | | rw.examine_time, |
| | | rw.device_name, |
| | | o.order_type, |
| | | -- GROUP_CONCAT(ogd.glass_child SEPARATOR '+') as workProcessName |
| | | CASE |
| | | WHEN LOCATE('step',#{laminating})>0 THEN GROUP_CONCAT(ogd.glass_child SEPARATOR '+') |
| | | ELSE MAX( ogd.glass_child ) |
| | | END AS workProcessName |
| | | END AS workProcessName, |
| | | o.batch |
| | | FROM |
| | | reporting_work as rw left join reporting_work_detail as rwd on rwd.reporting_work_id=rw.reporting_work_id |
| | | left join flow_card as fc on fc.order_id=rw.order_id and fc.process_id=rw.process_id and fc.order_number=rwd.order_number and fc.technology_number=rwd.technology_number |
| | |
| | | rw.reviewed, |
| | | rw.examine_time, |
| | | rw.device_name, |
| | | -- GROUP_CONCAT(ogd.glass_child SEPARATOR '+') as workProcessName |
| | | CASE |
| | | WHEN LOCATE('step',#{laminating})>0 THEN GROUP_CONCAT(ogd.glass_child SEPARATOR '+') |
| | | ELSE MAX( ogd.glass_child ) |
| | | END AS workProcessName |
| | | END AS workProcessName, |
| | | o.batch |
| | | FROM |
| | | reporting_work as rw left join reporting_work_detail as rwd on rwd.reporting_work_id=rw.reporting_work_id |
| | | left join flow_card as fc on fc.order_id=rw.order_id and fc.process_id=rw.process_id and fc.order_number=rwd.order_number and fc.technology_number=rwd.technology_number |
| | | left join sd.order_glass_detail as ogd on ogd.order_id=fc.order_id and ogd.order_number=fc.order_number and ogd.technology_number=fc.technology_number |
| | | left join sd.order_detail as od on od.order_id=ogd.order_id and od.order_number=ogd.order_number |
| | | left join sd.`order` as o on o.order_id=od.order_id |
| | | where o.create_order>0 and rw.reviewed_state>=0 and rwd.completed_quantity>0 |
| | | and date(rw.reporting_work_time) >= #{date[0]} |
| | | and date(rw.reporting_work_time) <= #{date[1]} |
| | | where o.create_order>0 and rw.reviewed_state>=0 and rwd.completed_quantity>0 and |
| | | rw.reporting_work_time >= #{date[0]} |
| | | AND rw.reporting_work_time < #{date[1]} |
| | | and position(#{process} in rw.this_process) |
| | | <choose> |
| | | <when test="laminating == ''"> |
| | |
| | | </select> |
| | | |
| | | <select id="workInProgressOrderFootSum"> |
| | | SELECT |
| | | SUM(od.quantity) AS quantity, |
| | | SUM(odpds.reporting_work_num_count + IFNULL(c.patchNumSum, 0) - odpd.reporting_work_num_count - odpd.broken_num) AS stockNum, |
| | | SUM(ROUND(ogd.child_width * ogd.child_height * |
| | | (odpds.reporting_work_num_count + IFNULL(c.patchNumSum, 0) - odpd.reporting_work_num_count - odpd.broken_num) / 1000000, 2)) AS stockArea, |
| | | CEILING(count(fc.id)/#{pageSize}) as 'pageTotal', |
| | | count(distinct fc.id) as 'total' |
| | | FROM sd.order_detail AS od |
| | | SELECT SUM(aa.quantity) AS quantity, |
| | | sum(aa.stockNum) AS stockNum, |
| | | SUM(aa.stockArea) AS stockArea, |
| | | count(* ) AS 'total', |
| | | CEILING( count(* )/#{pageSize} ) AS 'pageTotal' |
| | | from |
| | | ( |
| | | SELECT (od.quantity) AS quantity, |
| | | d.numCounts + d.patchNumSum - d.numCount -d.broken_num as stockNum, |
| | | ROUND(ogd.child_width * ogd.child_height * |
| | | (d.numCounts + d.patchNumSum - d.numCount - |
| | | d.broken_num) / 1000000, 2) as stockArea |
| | | FROM |
| | | sd.order_detail AS od |
| | | LEFT JOIN sd.order_glass_detail AS ogd |
| | | ON od.order_id = ogd.order_id |
| | | AND od.order_number = ogd.order_number |
| | | LEFT JOIN flow_card AS fc |
| | | LEFT JOIN pp.flow_card AS fc |
| | | ON fc.order_id = ogd.order_id |
| | | AND fc.production_id = ogd.production_id |
| | | and fc.production_id = ogd.production_id |
| | | AND fc.order_number = ogd.order_number |
| | | AND fc.technology_number = ogd.technology_number |
| | | LEFT JOIN sd.order_process_detail AS odpd |
| | | ON odpd.order_id = fc.order_id |
| | | AND odpd.order_number = fc.order_number |
| | | AND odpd.technology_number = fc.technology_number |
| | | AND odpd.process_id = fc.process_id |
| | | LEFT JOIN sd.order_process_detail AS odpds |
| | | ON odpds.id = odpd.id - 1 |
| | | left join ( |
| | | SELECT |
| | | odpd.process, |
| | | odpd.process_id, |
| | | odpd.order_number, |
| | | odpd.technology_number, |
| | | odpds.reporting_work_num_count as numCounts, |
| | | ifnull( c.patchNumSum, 0 ) as patchNumSum, |
| | | odpd.reporting_work_num_count as numCount, |
| | | odpd.broken_num |
| | | FROM |
| | | sd.order_process_detail AS odpd |
| | | LEFT JOIN sd.order_process_detail AS odpds ON odpds.id = odpd.id - 1 |
| | | LEFT JOIN ( |
| | | SELECT |
| | | SUM(rw.rework_num) AS patchNumSum, |
| | | sum( rw.rework_num ) AS 'patchNumSum', |
| | | rw.process_id, |
| | | rw.order_sort, |
| | | rw.technology_number, |
| | | rwk.this_process |
| | | FROM rework AS rw |
| | | LEFT JOIN reporting_work AS rwk |
| | | ON rw.reporting_work_id = rwk.reporting_work_id |
| | | WHERE rwk.this_process = #{selectProcesses} |
| | | FROM |
| | | pp.rework AS rw |
| | | LEFT JOIN pp.reporting_work AS rwk ON rw.reporting_work_id = rwk.reporting_work_id |
| | | WHERE |
| | | position( #{selectProcesses} IN rwk.this_process ) |
| | | AND rw.review_status >= 0 |
| | | GROUP BY rw.process_id, rw.order_sort, rw.technology_number |
| | | ) AS c |
| | | ON c.process_id = fc.process_id |
| | | AND c.order_sort = fc.order_number |
| | | AND c.technology_number = fc.technology_number |
| | | LEFT JOIN sd.`order` AS o |
| | | ON o.order_id = od.order_id |
| | | LEFT JOIN ( |
| | | SELECT |
| | | a.process_id, |
| | | a.teams_groups_name, |
| | | a.next_process, |
| | | b.technology_number, |
| | | b.order_number |
| | | FROM reporting_work AS a |
| | | LEFT JOIN reporting_work_detail AS b |
| | | ON a.reporting_work_id = b.reporting_work_id |
| | | GROUP BY a.process_id, a.teams_groups_name, a.next_process, b.order_number, b.technology_number |
| | | ) AS rws |
| | | ON rws.process_id = fc.process_id |
| | | AND rws.order_number = fc.order_number |
| | | AND rws.technology_number = fc.technology_number |
| | | AND rws.next_process = #{selectProcesses} |
| | | WHERE o.create_order > 0 |
| | | AND odpds.reporting_work_num_count + IFNULL(c.patchNumSum, 0) - odpd.reporting_work_num_count - odpd.broken_num != 0 |
| | | and odpd.process = #{selectProcesses} |
| | | GROUP BY |
| | | rw.process_id, |
| | | rw.order_sort, |
| | | rw.technology_number |
| | | ) AS c ON c.process_id = odpd.process_id |
| | | AND c.order_sort = odpd.order_number |
| | | AND c.technology_number = odpd.technology_number |
| | | WHERE |
| | | position(#{selectProcesses} IN odpd.process ) and odpds.reporting_work_num_count is not null |
| | | GROUP BY |
| | | odpd.process_id, |
| | | odpd.order_number, |
| | | odpd.technology_number, |
| | | odpd.process |
| | | |
| | | ) as d |
| | | on d.process_id=fc.process_id and d.order_number=fc.order_number and d.technology_number=fc.technology_number |
| | | and position(#{selectProcesses} in d.process) |
| | | left join sd.`order` as o on o.order_id=od.order_id |
| | | where o.create_order>0 |
| | | and d.numCounts +d.patchNumSum - d.numCount - d.broken_num != 0 |
| | | and d.process!=SUBSTRING_INDEX(ogd.process, '->', 1) |
| | | and position(#{selectProcesses} in d.process) |
| | | and position(#{orderId} in od.order_id) |
| | | and position(#{inputProject} in o.project) |
| | | <if test="workInProgressDTO.customerName != null and workInProgressDTO.customerName != ''"> |
| | |
| | | <if test="workInProgressDTO.processId != null and workInProgressDTO.processId != ''"> |
| | | and fc.process_id regexp #{workInProgressDTO.processId} |
| | | </if> |
| | | <if test="workInProgressDTO.orderNumber != null and workInProgressDTO.orderNumber != ''"> |
| | | and ogd.order_number regexp #{workInProgressDTO.orderNumber} |
| | | </if> |
| | | <if test="workInProgressDTO.technologyNumber != null and workInProgressDTO.technologyNumber != ''"> |
| | | and ogd.technology_number regexp #{workInProgressDTO.technologyNumber} |
| | | </if> |
| | | <if test="workInProgressDTO.glassNumber != null and workInProgressDTO.glassNumber != ''"> |
| | | and ifnull(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')),'') regexp #{workInProgressDTO.glassNumber} |
| | | </if> |
| | | |
| | | group by fc.process_id, fc.order_number, fc.technology_number,d.process |
| | | ) as aa |
| | | |
| | | </select> |
| | | |
| | | <select id="processToBeCompletedFootSum"> |
| | |
| | | and odpd.process = #{selectProcesses} |
| | | and o.create_time >= #{selectTime1} |
| | | AND o.create_time < #{selectTime2} |
| | | AND POSITION('' IN od.order_id) |
| | | AND POSITION('' IN o.project) |
| | | and position(#{orderId} in od.order_id) |
| | | and position(#{inputProject} in o.project) |
| | | AND fc.quantity - odpd.reporting_work_num > 0; |
| | | |
| | | </select> |
| | |
| | | WHERE |
| | | rw.reporting_work_time >= #{selectTime1} |
| | | AND rw.reporting_work_time < #{selectTime2} |
| | | AND dd.available = 0 |
| | | AND dd.available = 0 and rw.reviewed_state>=0 |
| | | <if test="damageReportDTO.orderId != null and damageReportDTO.orderId != ''"> |
| | | and o.order_id regexp #{damageReportDTO.orderId} |
| | | </if> |
| | |
| | | <select id="getLaminating"> |
| | | select IFNULL(nickname,'') from sd.basic_data where basic_category='process' and basic_name=#{selectProcesses} |
| | | </select> |
| | | |
| | | <select id="workInProgressMpdataList1" resultMap="workInProgressMap"> |
| | | select d.process as thisProcess, |
| | | fc.process_id, |
| | | o.customer_name, |
| | | o.project, |
| | | o.order_id, |
| | | o.batch, |
| | | od.shape, |
| | | if(od.shape=2,JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S04')),od.bend_radius) as bend_radius, |
| | | ogd.order_number, |
| | | ogd.technology_number, |
| | | ogd.process, |
| | | od.quantity, |
| | | ogd.child_width, |
| | | ogd.child_height, |
| | | d.numCounts + d.patchNumSum - d.numCount -d.broken_num as stockNum, |
| | | ROUND(ogd.child_width * ogd.child_height * |
| | | (d.numCounts + d.patchNumSum - d.numCount - |
| | | d.broken_num) / 1000000, 2) as stockArea, |
| | | od.product_name, |
| | | od.bend_radius, |
| | | ifnull(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')),'') AS glassNumber |
| | | from sd.order_detail AS od |
| | | LEFT JOIN sd.order_glass_detail AS ogd |
| | | ON od.order_id = ogd.order_id |
| | | AND od.order_number = ogd.order_number |
| | | LEFT JOIN pp.flow_card AS fc |
| | | ON fc.order_id = ogd.order_id |
| | | and fc.production_id = ogd.production_id |
| | | AND fc.order_number = ogd.order_number |
| | | AND fc.technology_number = ogd.technology_number |
| | | left join ( |
| | | SELECT |
| | | odpd.process, |
| | | odpd.process_id, |
| | | odpd.order_number, |
| | | odpd.technology_number, |
| | | odpds.reporting_work_num_count as numCounts, |
| | | ifnull( c.patchNumSum, 0 ) as patchNumSum, |
| | | odpd.reporting_work_num_count as numCount, |
| | | odpd.broken_num |
| | | FROM |
| | | sd.order_process_detail AS odpd |
| | | LEFT JOIN sd.order_process_detail AS odpds ON odpds.id = odpd.id - 1 |
| | | LEFT JOIN ( |
| | | SELECT |
| | | sum( rw.rework_num ) AS 'patchNumSum', |
| | | rw.process_id, |
| | | rw.order_sort, |
| | | rw.technology_number, |
| | | rwk.this_process |
| | | FROM |
| | | pp.rework AS rw |
| | | LEFT JOIN pp.reporting_work AS rwk ON rw.reporting_work_id = rwk.reporting_work_id |
| | | WHERE |
| | | position( #{selectProcesses} IN rwk.this_process ) |
| | | AND rw.review_status >= 0 |
| | | GROUP BY |
| | | rw.process_id, |
| | | rw.order_sort, |
| | | rw.technology_number |
| | | ) AS c ON c.process_id = odpd.process_id |
| | | AND c.order_sort = odpd.order_number |
| | | AND c.technology_number = odpd.technology_number |
| | | WHERE |
| | | position(#{selectProcesses} IN odpd.process ) and odpds.reporting_work_num_count is not null |
| | | GROUP BY |
| | | odpd.process_id, |
| | | odpd.order_number, |
| | | odpd.technology_number, |
| | | odpd.process |
| | | |
| | | ) as d |
| | | on d.process_id=fc.process_id and d.order_number=fc.order_number and d.technology_number=fc.technology_number |
| | | left join sd.`order` as o on o.order_id=od.order_id |
| | | LEFT JOIN sd.basic_data AS bd ON bd.basic_name = d.process |
| | | where o.create_order>0 |
| | | and d.numCounts +d.patchNumSum - d.numCount - d.broken_num != 0 |
| | | and d.process!=SUBSTRING_INDEX(ogd.process, '->', 1) |
| | | and position(#{orderId} in od.order_id) |
| | | and position(#{inputProject} in o.project) |
| | | <if test="workInProgressDTO.thisProcess != null and workInProgressDTO.thisProcess != ''"> |
| | | and d.process regexp #{workInProgressDTO.thisProcess} |
| | | </if> |
| | | <if test="workInProgressDTO.customerName != null and workInProgressDTO.customerName != ''"> |
| | | and o.customer_name regexp #{workInProgressDTO.customerName} |
| | | </if> |
| | | <if test="workInProgressDTO.project != null and workInProgressDTO.project != ''"> |
| | | and o.project regexp #{workInProgressDTO.project} |
| | | </if> |
| | | <if test="workInProgressDTO.orderId != null and workInProgressDTO.orderId != ''"> |
| | | and o.order_id regexp #{workInProgressDTO.orderId} |
| | | </if> |
| | | <if test="workInProgressDTO.batch != null and workInProgressDTO.batch != ''"> |
| | | and o.batch regexp #{workInProgressDTO.batch} |
| | | </if> |
| | | <if test="workInProgressDTO.processId != null and workInProgressDTO.processId != ''"> |
| | | and fc.process_id regexp #{workInProgressDTO.processId} |
| | | </if> |
| | | <if test="workInProgressDTO.orderNumber != null and workInProgressDTO.orderNumber != ''"> |
| | | and ogd.order_number regexp #{workInProgressDTO.orderNumber} |
| | | </if> |
| | | <if test="workInProgressDTO.technologyNumber != null and workInProgressDTO.technologyNumber != ''"> |
| | | and ogd.technology_number regexp #{workInProgressDTO.technologyNumber} |
| | | </if> |
| | | <if test="workInProgressDTO.glassNumber != null and workInProgressDTO.glassNumber != ''"> |
| | | and ifnull(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')),'') regexp #{workInProgressDTO.glassNumber} |
| | | </if> |
| | | <choose> |
| | | <when test="laminating != null and laminating == 'stepC'"> |
| | | GROUP BY fc.process_id, fc.order_number, ogd.`group`, d.process |
| | | </when> |
| | | <when test="laminating != null and laminating == 'stepD'"> |
| | | GROUP BY fc.process_id, fc.order_number, d.process |
| | | </when> |
| | | <when test="laminating != null and laminating == 'stepB'"> |
| | | GROUP BY fc.process_id, fc.order_number, d.process |
| | | </when> |
| | | <otherwise> |
| | | GROUP BY fc.process_id, fc.order_number, fc.technology_number, d.process |
| | | </otherwise> |
| | | </choose> |
| | | order by d.process,fc.process_id, fc.order_number, fc.technology_number |
| | | limit #{offset},#{pageSize}; |
| | | </select> |
| | | |
| | | <select id="workInProgressMpdataList2" resultMap="workInProgressMap"> |
| | | select |
| | | a.process_id,a.teams_groups_name,a.next_process,b.technology_number,b.order_number |
| | | from pp.reporting_work as a |
| | | left join pp.reporting_work_detail as b on a.reporting_work_id=b.reporting_work_id |
| | | where position(#{selectProcesses} in a.next_process) and a.next_process!='åå²' |
| | | GROUP BY a.reporting_work_id |
| | | </select> |
| | | |
| | | <select id="workInProgressOrderMpList1" resultMap="workInProgressMap"> |
| | | select if(#{selectProcesses}='',odpd.process,#{selectProcesses}) as thisProcess, |
| | | o.customer_name, |
| | | o.project, |
| | | o.order_id, |
| | | o.batch, |
| | | od.shape, |
| | | sum(od.quantity) as quantity, |
| | | sum(odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count - |
| | | odpd.broken_num) as stockNum, |
| | | sum(ROUND(ogd.child_width * ogd.child_height * |
| | | (odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count - |
| | | odpd.broken_num) / 1000000, 2)) as stockArea, |
| | | od.product_name |
| | | |
| | | from sd.order_detail AS od |
| | | LEFT JOIN sd.order_glass_detail AS ogd |
| | | ON od.order_id = ogd.order_id |
| | | AND od.order_number = ogd.order_number |
| | | LEFT JOIN flow_card AS fc |
| | | ON fc.order_id = ogd.order_id |
| | | and fc.production_id = ogd.production_id |
| | | AND fc.order_number = ogd.order_number |
| | | AND fc.technology_number = ogd.technology_number |
| | | left join sd.order_process_detail as odpd |
| | | ON odpd.order_id = fc.order_id |
| | | AND odpd.order_number = fc.order_number |
| | | AND odpd.technology_number = fc.technology_number |
| | | and odpd.process_id = fc.process_id |
| | | left join sd.order_process_detail as odpds |
| | | ON odpds.id = odpd.id - 1 |
| | | left join |
| | | (SELECT sum(rw.rework_num) as 'patchNumSum', |
| | | rw.process_id, |
| | | rw.order_sort, |
| | | rw.technology_number, |
| | | rwk.this_process |
| | | from rework as rw |
| | | LEFT JOIN |
| | | reporting_work as rwk |
| | | on rw.reporting_work_id = rwk.reporting_work_id |
| | | where position(#{selectProcesses} in rwk.this_process) |
| | | and rw.review_status >= 0 |
| | | GROUP BY rw.process_id, rw.order_sort, rw.technology_number) as c |
| | | on c.process_id = fc.process_id |
| | | and c.order_sort = fc.order_number |
| | | and c.technology_number = fc.technology_number |
| | | left join sd.`order` as o |
| | | on o.order_id = od.order_id |
| | | where o.create_order>0 |
| | | and odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count - |
| | | odpd.broken_num != 0 and odpd.process!=SUBSTRING_INDEX(ogd.process, '->', 1) |
| | | and position(#{selectProcesses} in odpd.process) |
| | | and position(#{orderId} in od.order_id) |
| | | and position(#{inputProject} in o.project) |
| | | <if test="workInProgressDTO.customerName != null and workInProgressDTO.customerName != ''"> |
| | | and o.customer_name regexp #{workInProgressDTO.customerName} |
| | | </if> |
| | | <if test="workInProgressDTO.project != null and workInProgressDTO.project != ''"> |
| | | and o.project regexp #{workInProgressDTO.project} |
| | | </if> |
| | | <if test="workInProgressDTO.orderId != null and workInProgressDTO.orderId != ''"> |
| | | and o.order_id regexp #{workInProgressDTO.orderId} |
| | | </if> |
| | | <if test="workInProgressDTO.batch != null and workInProgressDTO.batch != ''"> |
| | | and o.batch regexp #{workInProgressDTO.batch} |
| | | </if> |
| | | group by o.order_id |
| | | order by o.order_id |
| | | limit #{offset},#{pageSize}; |
| | | </select> |
| | | |
| | | <select id="workInProgressProcessMpList1" resultMap="workInProgressMap"> |
| | | select if(#{selectProcesses}='',odpd.process,#{selectProcesses}) as thisProcess, |
| | | o.customer_name, |
| | | o.project, |
| | | o.order_id, |
| | | fc.process_id, |
| | | o.batch, |
| | | od.shape, |
| | | sum(od.quantity) as quantity, |
| | | sum(odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count - |
| | | odpd.broken_num) as stockNum, |
| | | sum(ROUND(ogd.child_width * ogd.child_height * |
| | | (odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count - |
| | | odpd.broken_num) / 1000000, 2)) as stockArea, |
| | | od.product_name |
| | | |
| | | from sd.order_detail AS od |
| | | LEFT JOIN sd.order_glass_detail AS ogd |
| | | ON od.order_id = ogd.order_id |
| | | AND od.order_number = ogd.order_number |
| | | LEFT JOIN flow_card AS fc |
| | | ON fc.order_id = ogd.order_id |
| | | and fc.production_id = ogd.production_id |
| | | AND fc.order_number = ogd.order_number |
| | | AND fc.technology_number = ogd.technology_number |
| | | left join sd.order_process_detail as odpd |
| | | ON odpd.order_id = fc.order_id |
| | | AND odpd.order_number = fc.order_number |
| | | AND odpd.technology_number = fc.technology_number |
| | | and odpd.process_id = fc.process_id |
| | | left join sd.order_process_detail as odpds |
| | | ON odpds.id = odpd.id - 1 |
| | | left join |
| | | (SELECT sum(rw.rework_num) as 'patchNumSum', |
| | | rw.process_id, |
| | | rw.order_sort, |
| | | rw.technology_number, |
| | | rwk.this_process |
| | | from rework as rw |
| | | LEFT JOIN |
| | | reporting_work as rwk |
| | | on rw.reporting_work_id = rwk.reporting_work_id |
| | | where position(#{selectProcesses} in rwk.this_process) |
| | | and rw.review_status >= 0 |
| | | GROUP BY rw.process_id, rw.order_sort, rw.technology_number) as c |
| | | on c.process_id = fc.process_id |
| | | and c.order_sort = fc.order_number |
| | | and c.technology_number = fc.technology_number |
| | | left join sd.`order` as o |
| | | on o.order_id = od.order_id |
| | | where o.create_order>0 |
| | | and odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count - |
| | | odpd.broken_num != 0 and odpd.process!=SUBSTRING_INDEX(ogd.process, '->', 1) |
| | | and position(#{selectProcesses} in odpd.process) |
| | | and position(#{orderId} in od.order_id) |
| | | and position(#{inputProject} in o.project) |
| | | <if test="workInProgressDTO.customerName != null and workInProgressDTO.customerName != ''"> |
| | | and o.customer_name regexp #{workInProgressDTO.customerName} |
| | | </if> |
| | | <if test="workInProgressDTO.project != null and workInProgressDTO.project != ''"> |
| | | and o.project regexp #{workInProgressDTO.project} |
| | | </if> |
| | | <if test="workInProgressDTO.orderId != null and workInProgressDTO.orderId != ''"> |
| | | and o.order_id regexp #{workInProgressDTO.orderId} |
| | | </if> |
| | | <if test="workInProgressDTO.batch != null and workInProgressDTO.batch != ''"> |
| | | and o.batch regexp #{workInProgressDTO.batch} |
| | | </if> |
| | | <if test="workInProgressDTO.processId != null and workInProgressDTO.processId != ''"> |
| | | and fc.process_id regexp #{workInProgressDTO.processId} |
| | | </if> |
| | | group by o.order_id, fc.process_id |
| | | order by o.order_id, fc.process_id |
| | | limit #{offset},#{pageSize}; |
| | | </select> |
| | | |
| | | <select id="exportWorkInProgressMpdataList2"> |
| | | select |
| | | a.process_id,a.teams_groups_name,a.next_process,b.technology_number,b.order_number |
| | | from pp.reporting_work as a |
| | | left join pp.reporting_work_detail as b on a.reporting_work_id=b.reporting_work_id |
| | | where position(#{process} in a.next_process) and a.next_process!='åå²' |
| | | GROUP BY a.reporting_work_id |
| | | </select> |
| | | |
| | | <select id="workInProgressCombinationMpdataList2"> |
| | | select |
| | | a.process_id,a.teams_groups_name,a.next_process,b.technology_number,b.order_number |
| | | from pp.reporting_work as a |
| | | left join pp.reporting_work_detail as b on a.reporting_work_id=b.reporting_work_id |
| | | where position(#{selectProcesses} in a.next_process) and a.next_process!='åå²' |
| | | GROUP BY a.reporting_work_id |
| | | </select> |
| | | |
| | | <select id="workInProgressCombinationMpdataList1"> |
| | | select if(#{selectProcesses}='',d.process,#{selectProcesses}) as thisProcess, |
| | | o.project, |
| | | SUM(d.numCounts + d.patchNumSum - d.numCount -d.broken_num) as stockNum, |
| | | SUM(ROUND(ogd.child_width * ogd.child_height * |
| | | (d.numCounts + d.patchNumSum - d.numCount - |
| | | d.broken_num) / 1000000, 2)) as stockArea |
| | | from sd.order_detail AS od |
| | | LEFT JOIN sd.order_glass_detail AS ogd |
| | | ON od.order_id = ogd.order_id |
| | | AND od.order_number = ogd.order_number |
| | | LEFT JOIN pp.flow_card AS fc |
| | | ON fc.order_id = ogd.order_id |
| | | and fc.production_id = ogd.production_id |
| | | AND fc.order_number = ogd.order_number |
| | | AND fc.technology_number = ogd.technology_number |
| | | left join ( |
| | | SELECT |
| | | odpd.process, |
| | | odpd.process_id, |
| | | odpd.order_number, |
| | | odpd.technology_number, |
| | | odpds.reporting_work_num_count as numCounts, |
| | | ifnull( c.patchNumSum, 0 ) as patchNumSum, |
| | | odpd.reporting_work_num_count as numCount, |
| | | odpd.broken_num |
| | | FROM |
| | | sd.order_process_detail AS odpd |
| | | LEFT JOIN sd.order_process_detail AS odpds ON odpds.id = odpd.id - 1 |
| | | LEFT JOIN ( |
| | | SELECT |
| | | sum( rw.rework_num ) AS 'patchNumSum', |
| | | rw.process_id, |
| | | rw.order_sort, |
| | | rw.technology_number, |
| | | rwk.this_process |
| | | FROM |
| | | pp.rework AS rw |
| | | LEFT JOIN pp.reporting_work AS rwk ON rw.reporting_work_id = rwk.reporting_work_id |
| | | WHERE |
| | | position( #{selectProcesses} IN rwk.this_process ) |
| | | AND rw.review_status >= 0 |
| | | GROUP BY |
| | | rw.process_id, |
| | | rw.order_sort, |
| | | rw.technology_number |
| | | ) AS c ON c.process_id = odpd.process_id |
| | | AND c.order_sort = odpd.order_number |
| | | AND c.technology_number = odpd.technology_number |
| | | WHERE |
| | | position(#{selectProcesses} IN odpd.process ) and odpds.reporting_work_num_count is not null |
| | | GROUP BY |
| | | odpd.process_id, |
| | | odpd.order_number, |
| | | odpd.technology_number, |
| | | odpd.process |
| | | |
| | | ) as d |
| | | on d.process_id=fc.process_id and d.order_number=fc.order_number and d.technology_number=fc.technology_number |
| | | and position(#{selectProcesses} in d.process) |
| | | left join sd.`order` as o on o.order_id=od.order_id |
| | | where o.create_order>0 |
| | | and d.numCounts +d.patchNumSum - d.numCount - d.broken_num != 0 |
| | | and d.process!=SUBSTRING_INDEX(ogd.process, '->', 1) |
| | | and position(#{selectProcesses} in d.process) |
| | | |
| | | <if test="workInProgressDTO.project != null and workInProgressDTO.project != ''"> |
| | | and o.project regexp #{workInProgressDTO.project} |
| | | </if> |
| | | |
| | | group by d.process |
| | | order by d.process |
| | | limit #{offset},#{pageSize}; |
| | | </select> |
| | | |
| | | <select id="workInProgressCombinationOrderFootSum"> |
| | | SELECT SUM(aa.quantity) AS quantity, |
| | | sum(aa.stockNum) AS stockNum, |
| | | SUM(aa.stockArea) AS stockArea, |
| | | count(* ) AS 'total', |
| | | CEILING( count(* )/#{pageSize} ) AS 'pageTotal' |
| | | from |
| | | ( |
| | | SELECT (od.quantity) AS quantity, |
| | | d.numCounts + d.patchNumSum - d.numCount -d.broken_num as stockNum, |
| | | ROUND(ogd.child_width * ogd.child_height * |
| | | (d.numCounts + d.patchNumSum - d.numCount - |
| | | d.broken_num) / 1000000, 2) as stockArea |
| | | FROM |
| | | sd.order_detail AS od |
| | | LEFT JOIN sd.order_glass_detail AS ogd |
| | | ON od.order_id = ogd.order_id |
| | | AND od.order_number = ogd.order_number |
| | | LEFT JOIN pp.flow_card AS fc |
| | | ON fc.order_id = ogd.order_id |
| | | and fc.production_id = ogd.production_id |
| | | AND fc.order_number = ogd.order_number |
| | | AND fc.technology_number = ogd.technology_number |
| | | left join ( |
| | | SELECT |
| | | odpd.process, |
| | | odpd.process_id, |
| | | odpd.order_number, |
| | | odpd.technology_number, |
| | | odpds.reporting_work_num_count as numCounts, |
| | | ifnull( c.patchNumSum, 0 ) as patchNumSum, |
| | | odpd.reporting_work_num_count as numCount, |
| | | odpd.broken_num |
| | | FROM |
| | | sd.order_process_detail AS odpd |
| | | LEFT JOIN sd.order_process_detail AS odpds ON odpds.id = odpd.id - 1 |
| | | LEFT JOIN ( |
| | | SELECT |
| | | sum( rw.rework_num ) AS 'patchNumSum', |
| | | rw.process_id, |
| | | rw.order_sort, |
| | | rw.technology_number, |
| | | rwk.this_process |
| | | FROM |
| | | pp.rework AS rw |
| | | LEFT JOIN pp.reporting_work AS rwk ON rw.reporting_work_id = rwk.reporting_work_id |
| | | WHERE |
| | | position( #{selectProcesses} IN rwk.this_process ) |
| | | AND rw.review_status >= 0 |
| | | GROUP BY |
| | | rw.process_id, |
| | | rw.order_sort, |
| | | rw.technology_number |
| | | ) AS c ON c.process_id = odpd.process_id |
| | | AND c.order_sort = odpd.order_number |
| | | AND c.technology_number = odpd.technology_number |
| | | WHERE |
| | | position(#{selectProcesses} IN odpd.process ) and odpds.reporting_work_num_count is not null |
| | | GROUP BY |
| | | odpd.process_id, |
| | | odpd.order_number, |
| | | odpd.technology_number, |
| | | odpd.process |
| | | |
| | | ) as d |
| | | on d.process_id=fc.process_id and d.order_number=fc.order_number and d.technology_number=fc.technology_number |
| | | and position(#{selectProcesses} in d.process) |
| | | left join sd.`order` as o on o.order_id=od.order_id |
| | | where o.create_order>0 |
| | | and d.numCounts +d.patchNumSum - d.numCount - d.broken_num != 0 |
| | | and d.process!=SUBSTRING_INDEX(ogd.process, '->', 1) |
| | | and position(#{selectProcesses} in d.process) |
| | | |
| | | <if test="workInProgressDTO.project != null and workInProgressDTO.project != ''"> |
| | | and o.project regexp #{workInProgressDTO.project} |
| | | </if> |
| | | group by d.process |
| | | ) as aa |
| | | </select> |
| | | |
| | | <select id="selectProcess"> |
| | | SELECT basic_name |
| | | FROM sd.basic_data as bd |
| | | where bd.basic_category = 'process' |
| | | and bd.basic_type = 'product' |
| | | and basic_name!='åå²' |
| | | </select> |
| | | |
| | | <select id="getWorkInProgressCombination"> |
| | | select |
| | | #{process} as thisProcess, |
| | | if(#{optionVal} = 1,'',h.project) as project, |
| | | SUM(h.quantity) as stockNum, |
| | | SUM(h.glassArea) as stockArea, |
| | | if(#{optionVal} = 1,'',h.childName) as glassName |
| | | |
| | | from ( |
| | | |
| | | SELECT g.* |
| | | ,GROUP_CONCAT(g.glass_child SEPARATOR '+') as childName |
| | | from( SELECT f.*, |
| | | e.reporting_work_num_count+f.patchNumSum-f.reporting_work_num_count-f.broken_num as quantity, |
| | | (e.reporting_work_num_count+f.patchNumSum-f.reporting_work_num_count-f.broken_num)*f.area as glassArea |
| | | from (SELECT a.order_id, |
| | | if(a.batch!="",CONCAT(a.project,'(',a.batch,')'),a.project) as project, |
| | | C.product_id, |
| | | b.order_number, |
| | | b.process_id, |
| | | b.technology_number, |
| | | b.reporting_work_num_count, |
| | | d.`group` , |
| | | b.broken_num, |
| | | b.id, |
| | | c.area, |
| | | d.glass_child, |
| | | ifnull(cb.patchNumSum,0) as patchNumSum |
| | | |
| | | FROM sd.`order` as a |
| | | LEFT JOIN sd.order_process_detail as b |
| | | on b.process = #{process} and a.order_id =b.order_id |
| | | LEFT JOIN sd.order_detail as c |
| | | on a.order_id = c.order_id and b.order_number =c.order_number |
| | | left join sd.order_glass_detail as d |
| | | on d.order_id =a.order_id and d.order_number = b.order_number and d.technology_number = b.technology_number |
| | | LEFT JOIN ( |
| | | SELECT |
| | | IFNULL(sum( rw.rework_num ),0) AS 'patchNumSum', |
| | | rw.process_id, |
| | | rw.order_sort, |
| | | rw.technology_number, |
| | | rwk.this_process |
| | | FROM |
| | | pp.rework AS rw |
| | | LEFT JOIN pp.reporting_work AS rwk ON rw.reporting_work_id = rwk.reporting_work_id |
| | | WHERE |
| | | position( #{process} IN rwk.this_process ) |
| | | AND rw.review_status >= 0 |
| | | GROUP BY |
| | | rw.process_id, |
| | | rw.order_sort, |
| | | rw.technology_number |
| | | ) AS cb ON cb.process_id = b.process_id |
| | | AND cb.order_sort = b.order_number |
| | | AND cb.technology_number = b.technology_number |
| | | where a.processing_card>0 |
| | | and a.warehousing!=2 |
| | | and (c.quantity-b.reporting_work_num_count)>0 |
| | | GROUP BY b.process_id, b.order_number, |
| | | b.technology_number) as f |
| | | LEFT JOIN sd.order_process_detail as e |
| | | on e.id=(f.id-1) and e.process_id = f.process_id and e.order_number = f.order_number and e.technology_number =f.technology_number |
| | | where |
| | | e.id is not null |
| | | and (e.reporting_work_num_count+f.patchNumSum-f.reporting_work_num_count-f.broken_num)>0 group by f.process_id, f.order_number, |
| | | f.technology_number) as g |
| | | <choose> |
| | | <when test="laminating == 'stepC' and process == 'é¢å'"> |
| | | GROUP BY g.process_id, g.order_number, g.technology_number |
| | | </when> |
| | | <when test="laminating == 'stepC'"> |
| | | GROUP BY g.process_id, g.order_number, g.`group` |
| | | </when> |
| | | <when test="laminating == 'stepD'"> |
| | | GROUP BY g.process_id, g.order_number |
| | | </when> |
| | | <otherwise> |
| | | GROUP BY g.process_id, g.order_number, g.technology_number |
| | | </otherwise> |
| | | </choose> |
| | | |
| | | |
| | | ) as h |
| | | <choose> |
| | | <when test="optionVal == 1"> |
| | | GROUP BY thisProcess |
| | | </when> |
| | | <otherwise> |
| | | GROUP BY h.project,h.childName |
| | | </otherwise> |
| | | </choose> |
| | | |
| | | </select> |
| | | |
| | | <select id="getWorkInProgressCombinationFootSum"> |
| | | select |
| | | SUM(h.quantity) as stockNum, |
| | | SUM(h.glassArea) as stockArea |
| | | from ( |
| | | SELECT g.* |
| | | ,GROUP_CONCAT(g.glass_child SEPARATOR '+') as childName |
| | | from( SELECT f.*, |
| | | e.reporting_work_num_count+f.patchNumSum-f.reporting_work_num_count-f.broken_num as quantity, |
| | | (e.reporting_work_num_count+f.patchNumSum-f.reporting_work_num_count-f.broken_num)*f.area as glassArea |
| | | from (SELECT a.order_id, |
| | | a.project, |
| | | C.product_id, |
| | | b.order_number, |
| | | b.process_id, |
| | | b.technology_number, |
| | | b.reporting_work_num_count, |
| | | d.`group` , |
| | | b.broken_num, |
| | | b.id, |
| | | c.area, |
| | | d.glass_child, |
| | | ifnull(cb.patchNumSum,0) as patchNumSum |
| | | |
| | | FROM sd.`order` as a |
| | | LEFT JOIN sd.order_process_detail as b |
| | | on b.process = #{process} and a.order_id =b.order_id |
| | | LEFT JOIN sd.order_detail as c |
| | | on a.order_id = c.order_id and b.order_number =c.order_number |
| | | left join sd.order_glass_detail as d |
| | | on d.order_id =a.order_id and d.order_number = b.order_number and d.technology_number = b.technology_number |
| | | LEFT JOIN ( |
| | | SELECT |
| | | IFNULL(sum( rw.rework_num ),0) AS 'patchNumSum', |
| | | rw.process_id, |
| | | rw.order_sort, |
| | | rw.technology_number, |
| | | rwk.this_process |
| | | FROM |
| | | pp.rework AS rw |
| | | LEFT JOIN pp.reporting_work AS rwk ON rw.reporting_work_id = rwk.reporting_work_id |
| | | WHERE |
| | | position( #{process} IN rwk.this_process ) |
| | | AND rw.review_status >= 0 |
| | | GROUP BY |
| | | rw.process_id, |
| | | rw.order_sort, |
| | | rw.technology_number |
| | | ) AS cb ON cb.process_id = b.process_id |
| | | AND cb.order_sort = b.order_number |
| | | AND cb.technology_number = b.technology_number |
| | | where a.processing_card>0 |
| | | and a.warehousing!=2 |
| | | and (c.quantity-b.reporting_work_num_count)>0 |
| | | GROUP BY b.process_id, b.order_number, |
| | | b.technology_number) as f |
| | | LEFT JOIN sd.order_process_detail as e |
| | | on e.id=(f.id-1) and e.process_id = f.process_id and e.order_number = f.order_number and e.technology_number =f.technology_number |
| | | where |
| | | e.id is not null |
| | | and e.reporting_work_num_count-f.reporting_work_num_count>0 group by f.process_id, f.order_number, |
| | | f.technology_number) as g |
| | | <choose> |
| | | <when test="laminating == 'stepC' and process == 'é¢å'"> |
| | | GROUP BY g.process_id, g.order_number, g.technology_number |
| | | </when> |
| | | <when test="laminating == 'stepC'"> |
| | | GROUP BY g.process_id, g.order_number, g.`group` |
| | | </when> |
| | | <when test="laminating == 'stepD'"> |
| | | GROUP BY g.process_id, g.order_number |
| | | </when> |
| | | <otherwise> |
| | | GROUP BY g.process_id, g.order_number, g.technology_number |
| | | </otherwise> |
| | | </choose> |
| | | |
| | | |
| | | ) as h |
| | | |
| | | </select> |
| | | |
| | | <select id="exportWorkInProgressCombination"> |
| | | select |
| | | #{process} as thisProcess, |
| | | if(#{inputVal} = 1,'',h.project) as project, |
| | | SUM(h.quantity) as stockNum, |
| | | SUM(h.glassArea) as stockArea, |
| | | if(#{inputVal} = 1,'',h.childName) as glassName |
| | | |
| | | from ( |
| | | |
| | | SELECT g.* |
| | | ,GROUP_CONCAT(g.glass_child SEPARATOR '+') as childName |
| | | from( SELECT f.*, |
| | | e.reporting_work_num_count+f.patchNumSum-f.reporting_work_num_count-f.broken_num as quantity, |
| | | (e.reporting_work_num_count+f.patchNumSum-f.reporting_work_num_count-f.broken_num)*f.area as glassArea |
| | | from (SELECT a.order_id, |
| | | a.project, |
| | | C.product_id, |
| | | b.order_number, |
| | | b.process_id, |
| | | b.technology_number, |
| | | b.reporting_work_num_count, |
| | | d.`group` , |
| | | b.broken_num, |
| | | b.id, |
| | | c.area, |
| | | d.glass_child, |
| | | ifnull(cb.patchNumSum,0) as patchNumSum |
| | | |
| | | FROM sd.`order` as a |
| | | LEFT JOIN sd.order_process_detail as b |
| | | on b.process = #{process} and a.order_id =b.order_id |
| | | LEFT JOIN sd.order_detail as c |
| | | on a.order_id = c.order_id and b.order_number =c.order_number |
| | | left join sd.order_glass_detail as d |
| | | on d.order_id =a.order_id and d.order_number = b.order_number and d.technology_number = b.technology_number |
| | | LEFT JOIN ( |
| | | SELECT |
| | | IFNULL(sum( rw.rework_num ),0) AS 'patchNumSum', |
| | | rw.process_id, |
| | | rw.order_sort, |
| | | rw.technology_number, |
| | | rwk.this_process |
| | | FROM |
| | | pp.rework AS rw |
| | | LEFT JOIN pp.reporting_work AS rwk ON rw.reporting_work_id = rwk.reporting_work_id |
| | | WHERE |
| | | position( #{process} IN rwk.this_process ) |
| | | AND rw.review_status >= 0 |
| | | GROUP BY |
| | | rw.process_id, |
| | | rw.order_sort, |
| | | rw.technology_number |
| | | ) AS cb ON cb.process_id = b.process_id |
| | | AND cb.order_sort = b.order_number |
| | | AND cb.technology_number = b.technology_number |
| | | where a.processing_card>0 |
| | | and a.warehousing!=2 |
| | | and (c.quantity-b.reporting_work_num_count)>0 |
| | | GROUP BY b.process_id, b.order_number, |
| | | b.technology_number) as f |
| | | LEFT JOIN sd.order_process_detail as e |
| | | on e.id=(f.id-1) and e.process_id = f.process_id and e.order_number = f.order_number and e.technology_number =f.technology_number |
| | | where |
| | | e.id is not null |
| | | and (e.reporting_work_num_count+f.patchNumSum-f.reporting_work_num_count-f.broken_num)>0 ) as g |
| | | <choose> |
| | | <when test="laminating == 'stepC' and process == 'é¢å'"> |
| | | GROUP BY g.process_id, g.order_number, g.technology_number |
| | | </when> |
| | | <when test="laminating == 'stepC'"> |
| | | GROUP BY g.process_id, g.order_number, g.`group` |
| | | </when> |
| | | <when test="laminating == 'stepD'"> |
| | | GROUP BY g.process_id, g.order_number |
| | | </when> |
| | | <otherwise> |
| | | GROUP BY g.process_id, g.order_number, g.technology_number |
| | | </otherwise> |
| | | </choose> |
| | | |
| | | |
| | | ) as h |
| | | <choose> |
| | | <when test="inputVal == 1"> |
| | | GROUP BY thisProcess |
| | | </when> |
| | | <otherwise> |
| | | GROUP BY h.project,h.childName |
| | | </otherwise> |
| | | </choose> |
| | | </select> |
| | | </mapper> |
| | |
| | | </select> |
| | | |
| | | <select id="SelectWorkBasicTeamsMp"> |
| | | SELECT bdp.id,bdp.basic_type,bdp.basic_name, bd.basic_name as basic_category FROM sd.basic_data as bd left join `basic_data_produce` as bdp |
| | | on bd.id=bdp.basic_category |
| | | where bd.basic_category="process" and bdp.basic_type="teamsgroups" and bd.basic_name = #{process} |
| | | select id,login_name,user_name,address from erp_user_info.`user` WHERE address=#{process} |
| | | </select> |
| | | |
| | | <!-- æ¥è¯¢æµç¨å¡å·¥èºæµç¨--> |
| | |
| | | |
| | | <select id="historyTeamsMp"> |
| | | SELECT |
| | | bdp.id, |
| | | bdp.basic_type, |
| | | bd.id, |
| | | bd.basic_type, |
| | | rw.teams as basic_name, |
| | | bd.basic_name,bd.id AS basic_category, |
| | | rw.process |
| | | FROM |
| | | sd.basic_data AS bd |
| | | LEFT JOIN `basic_data_produce` AS bdp |
| | | ON bd.id = bdp.basic_category |
| | | right join ( |
| | | select distinct process,teams from |
| | | ( select distinct rw.this_process as process,rw.teams_groups_name as teams |
| | |
| | | ) as t |
| | | ) as rw |
| | | on rw.process=bd.basic_name |
| | | WHERE |
| | | bdp.basic_type = 'teamsgroups' |
| | | GROUP BY rw.process,rw.teams |
| | | </select> |
| | | |
| | |
| | | bd.basic_name AS basic_category |
| | | FROM |
| | | sd.basic_data AS bd |
| | | LEFT JOIN `basic_data_produce` AS bdp ON bd.id = bdp.basic_category |
| | | |
| | | WHERE |
| | | bd.basic_category = 'process' |
| | | AND bdp.basic_type = 'teamsgroups' |
| | | AND POSITION(bd.basic_name in CONCAT(#{historyProcess},#{process})) |
| | | </select> |
| | | |
| | |
| | | -ifnull(g.completed_quantity,0)) |
| | | > |
| | | a.completed_quantity, |
| | | 0, |
| | | a.completed_quantity, |
| | | (f.completed_quantity |
| | | -ifnull(g.completed_quantity,0)) |
| | | ) as minQuantity -- ä¿®æ¹æå°æ° |
| | |
| | | GROUP BY c.order_number,c.technology_number |
| | | </select> |
| | | <select id="selectReportingWorkMp" resultMap="reportingWorkMap"> |
| | | SELECT a.*, |
| | | round(ogd.child_width*ogd.child_height * a.this_completed_quantity/1000000,2) as completedArea, |
| | | round(ogd.child_width*ogd.child_height * a.this_worn_quantity/1000000,2) as wornArea |
| | | from (select rw.reporting_work_id, |
| | | select rw.reporting_work_id, |
| | | (rw.reporting_work_time) as reporting_work_time, |
| | | o.order_id, |
| | | CONCAT(rw.process_id,'/',GROUP_CONCAT(distinct rwd.technology_number SEPARATOR '')) as process_id, |
| | | CONCAT(rw.process_id,'/',rwd.goup) as process_id, |
| | | o.project, |
| | | o.batch, |
| | | rw.this_process, |
| | |
| | | rw.reviewed_state, |
| | | rw.notes, |
| | | rw.reviewed, |
| | | rwd.order_number, |
| | | rwd.technology_number |
| | | round(rwd.completedArea/LENGTH(rwd.goup),2) as completedArea, |
| | | rwd.wornArea |
| | | # (IF(rw.reviewed_state = 0, 'æªå®¡æ ¸', IF(rw.reviewed_state = 1, 'å®¡æ ¸éè¿', 'å®¡æ ¸ä¸éè¿'))) as reviewed_state |
| | | from |
| | | reporting_work as rw left join reporting_work_detail as rwd on rw.reporting_work_id=rwd.reporting_work_id |
| | | reporting_work as rw |
| | | left join ( |
| | | SELECT cc.reporting_work_id,cc.goup,round(sum(cc.completedArea),2) as completedArea ,round(sum(cc.wornArea),2) as wornArea from (SELECT rwds.reporting_work_id, GROUP_CONCAT(distinct rwds.technology_number SEPARATOR '') as goup, |
| | | sum(rwds.child_width*rwds.child_height*completed_quantity/1000000)as completedArea, |
| | | sum(rwds.child_width*rwds.child_height*rwds.breakage_quantity/1000000) as wornArea from reporting_work_detail as rwds GROUP BY rwds.reporting_work_id,order_number ) as cc GROUP BY cc.reporting_work_id)as rwd on rw.reporting_work_id=rwd.reporting_work_id |
| | | |
| | | left join sd.`order` as o on o.order_id=rw.order_id |
| | | where rw.reviewed_state != 2 |
| | |
| | | </if> |
| | | GROUP BY rw.reporting_work_id |
| | | ORDER BY rw.reporting_work_id desc |
| | | limit #{offset},#{pageSize} ) as a |
| | | left join sd.order_glass_detail as ogd on ogd.order_id=a.order_id and ogd.order_number=a.order_number and ogd.technology_number=a.technology_number |
| | | GROUP BY a.reporting_work_id |
| | | limit #{offset},#{pageSize} |
| | | </select> |
| | | |
| | | <select id="getPageTotal"> |
| | |
| | | |
| | | <select id="getFootSum"> |
| | | SELECT |
| | | SUM(rwd.completed_quantity) AS thisCompletedQuantity, |
| | | ROUND(SUM(rwd.child_width * rwd.child_height * rwd.completed_quantity / 1000000), 2) AS completedArea, |
| | | SUM(rwd.breakage_quantity) AS thisWornQuantity, |
| | | ROUND(SUM(rwd.child_width * rwd.child_height * rwd.breakage_quantity / 1000000), 2) AS wornArea, |
| | | SUM(rw.this_completed_quantity) AS thisCompletedQuantity, |
| | | ROUND(SUM(rwd.completedArea/length(goup)), 2) AS completedArea, |
| | | SUM(rw.this_worn_quantity) AS thisWornQuantity, |
| | | ROUND(SUM(rwd.wornArea), 2) AS wornArea, |
| | | CEILING(count(rw.reporting_work_id)/#{pageSize}) as 'pageTotal', |
| | | count(distinct rw.reporting_work_id) as 'total' |
| | | FROM reporting_work AS rw |
| | | LEFT JOIN reporting_work_detail AS rwd ON rw.reporting_work_id = rwd.reporting_work_id |
| | | LEFT JOIN |
| | | (SELECT cc.reporting_work_id,cc.goup,round(sum(cc.completedArea),2) as completedArea ,round(sum(cc.wornArea),2) as wornArea from (SELECT rwds.reporting_work_id, GROUP_CONCAT(distinct rwds.technology_number SEPARATOR '') as goup, |
| | | sum(rwds.child_width*rwds.child_height*completed_quantity/1000000)as completedArea, |
| | | sum(rwds.child_width*rwds.child_height*rwds.breakage_quantity/1000000) as wornArea from reporting_work_detail as rwds GROUP BY rwds.reporting_work_id,order_number ) as cc GROUP BY cc.reporting_work_id) |
| | | AS rwd |
| | | ON rw.reporting_work_id = rwd.reporting_work_id |
| | | /*LEFT JOIN sd.order_glass_detail AS ogd ON ogd.order_id = rw.order_id |
| | | AND ogd.order_number = rwd.order_number |
| | | AND ogd.technology_number = rwd.technology_number*/ |
| | |
| | | <update id="updateReworkDdMp"> |
| | | update pp.damage_details set patch_status=0,quantity=quantity-#{reworkNum} |
| | | where reporting_work_id=#{reportingWorkId} and order_number=#{orderSort} and technology_number=#{technologyNumber} |
| | | and breakage_type=#{reworkType} and breakage_reason=#{reworkReason} |
| | | </update> |
| | | |
| | | <update id="updateReworkBgMp"> |
| | |
| | | <!DOCTYPE mapper |
| | | PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.example.erp.mapper.sd.BasicDateMapper"> |
| | | <mapper namespace="com.example.erp.mapper.sd.BasicDataMapper"> |
| | | <select id="getOrderBasicData"> |
| | | select |
| | | id,basic_type,if(basic_category='icon',null,nickname) as 'nickname',basic_name,basic_category,create_time,update_time |
| | |
| | | <result column="quantity_available" property="finishedGoodsInventory.quantityAvailable"/> |
| | | <result column="storage_region" property="finishedGoodsInventory.storageRegion"/> |
| | | <result column="actual_signal_area" property="finishedGoodsInventory.actualSignalArea"/> |
| | | <result column="box_no" property="finishedGoodsInventory.boxNo"/> |
| | | |
| | | |
| | | </resultMap> |
| | |
| | | <result column="delivery_number" property="deliveryNumber"/> |
| | | <result column="quantity" property="quantity"/> |
| | | <result column="area" property="area"/> |
| | | <result column="price" property="price"/> |
| | | <result column="money" property="money"/> |
| | | <result column="delivery_detail_remakes" property="deliveryDetailRemakes"/> |
| | | <result column="delivery_detail_state" property="deliveryDetailState"/> |
| | |
| | | <result column="product_id" property="orderDetail.productId"/> |
| | | <result column="product_name" property="orderDetail.productName"/> |
| | | <result column="order_id" property="orderDetail.orderId"/> |
| | | <result column="width" property="orderDetail.edgingType"/> |
| | | <result column="height" property="orderDetail.shape"/> |
| | | |
| | | <result column="contract_id" property="order.contractId"/> |
| | | |
| | |
| | | |
| | | <insert id="insertDeliveryDetail" useGeneratedKeys="true" > |
| | | insert into sd.delivery_detail (delivery_id,delivery_number,order_number, |
| | | area,order_id,quantity,money,delivery_detail_remakes,delivery_detail_state,other_columns,create_time,price,other_money) |
| | | area,order_id,quantity,money,delivery_detail_remakes,delivery_detail_state,other_columns,create_time,price,other_money,box_no) |
| | | values ( |
| | | #{number} ,#{deliveryNumber},#{orderDetail.orderNumber},#{deliveryDetailArea}, |
| | | #{orderDetail.orderId},#{orderDetail.deliveryDetail.quantity}, |
| | | #{deliveryDetailMoney},'',1,#{orderDetail.otherColumns},now(),#{orderDetail.price},#{otherMoneys} |
| | | #{deliveryDetailMoney},'',1,#{orderDetail.otherColumns},now(),#{orderDetail.price},#{otherMoneys},#{orderDetail.finishedGoodsInventory.boxNo} |
| | | ) |
| | | </insert> |
| | | |
| | |
| | | od.height, |
| | | od.shape, |
| | | fgi.actual_signal_area, |
| | | dd.box_no, |
| | | od.area, |
| | | dd.area as gross_area, |
| | | od.compute_area, |
| | |
| | | </if> |
| | | <if test="orderDetail.finishedGoodsInventory.storageRegion != null and orderDetail.finishedGoodsInventory.storageRegion != ''"> |
| | | and fgi.storage_region regexp #{orderDetail.finishedGoodsInventory.storageRegion} |
| | | </if> |
| | | <if test="orderDetail.deliveryDetail.boxNo != null and orderDetail.deliveryDetail.boxNo != ''"> |
| | | and dd.box_no regexp #{orderDetail.deliveryDetail.boxNo} |
| | | </if> |
| | | <if test="orderDetail.deliveryDetail.money != null and orderDetail.deliveryDetail.money != ''"> |
| | | and dd.money regexp REGEXP_REPLACE(#{orderDetail.deliveryDetail.money},'\\.0+$','') |
| | |
| | | <if test="orderDetail.finishedGoodsInventory.storageRegion != null and orderDetail.finishedGoodsInventory.storageRegion != ''"> |
| | | and fgi.storage_region regexp #{orderDetail.finishedGoodsInventory.storageRegion} |
| | | </if> |
| | | <if test="orderDetail.deliveryDetail.boxNo != null and orderDetail.deliveryDetail.boxNo != ''"> |
| | | and dd.box_no regexp #{orderDetail.deliveryDetail.boxNo} |
| | | </if> |
| | | <if test="orderDetail.deliveryDetail.money != null and orderDetail.deliveryDetail.money != ''"> |
| | | and dd.money regexp REGEXP_REPLACE(#{orderDetail.deliveryDetail.money},'\\.0+$','') |
| | | </if> |
| | |
| | | od.height, |
| | | od.shape, |
| | | fgi.actual_signal_area, |
| | | fgi.box_no, |
| | | od.area, |
| | | od.gross_area, |
| | | od.compute_area, |
| | |
| | | </if> |
| | | <if test="orderDetail.finishedGoodsInventory.storageRegion != null and orderDetail.finishedGoodsInventory.storageRegion != ''"> |
| | | and fgi.storage_region regexp #{orderDetail.finishedGoodsInventory.storageRegion} |
| | | </if> |
| | | <if test="orderDetail.finishedGoodsInventory.boxNo != null and orderDetail.finishedGoodsInventory.boxNo != ''"> |
| | | and fgi.box_no regexp #{orderDetail.finishedGoodsInventory.boxNo} |
| | | </if> |
| | | <if test="orderDetail.width != null and orderDetail.width != ''"> |
| | | and od.width regexp REGEXP_REPLACE(#{orderDetail.width},'\\.0+$','') |
| | |
| | | </if> |
| | | <if test="orderDetail.finishedGoodsInventory.storageRegion != null and orderDetail.finishedGoodsInventory.storageRegion != ''"> |
| | | and fgi.storage_region regexp #{orderDetail.finishedGoodsInventory.storageRegion} |
| | | </if> |
| | | <if test="orderDetail.finishedGoodsInventory.boxNo != null and orderDetail.finishedGoodsInventory.boxNo != ''"> |
| | | and fgi.box_no regexp #{orderDetail.finishedGoodsInventory.boxNo} |
| | | </if> |
| | | <if test="orderDetail.width != null and orderDetail.width != ''"> |
| | | and od.width regexp REGEXP_REPLACE(#{orderDetail.width},'\\.0+$','') |
| | |
| | | </select> |
| | | |
| | | <select id="getSelectDeliveryPrinting" resultMap="selectDeliveryDetailOrderDetail" > |
| | | select dd.delivery_id,od.order_id,od.product_id,IF(#{type}='product_abbreviation',pt.remarks,od.product_name) as product_name,sum(dd.area) as area, |
| | | select dd.delivery_id,od.order_id,od.product_id,IF(#{type}='product_abbreviation',pt.remarks,od.product_name) as product_name,dd.price,sum(dd.area) as area, |
| | | sum(dd.money) as money,sum(dd.quantity) as quantity,o.contract_id from |
| | | delivery_detail dd left join order_detail od on dd.order_id=od.order_id and dd.order_number=od.order_number |
| | | left join product pt on pt.id=od.product_id |
| | |
| | | where dd.delivery_id like concat('%',#{deliveryId},'%') |
| | | |
| | | group by od.order_id,od.product_name,od.product_id |
| | | </select> |
| | | |
| | | <select id="getSelectDeliveryPrintingMoney" resultMap="selectDeliveryDetailOrderDetail" > |
| | | select dd.delivery_id, |
| | | od.order_id, |
| | | IF(#{type} = 'product_abbreviation', pt.remarks, od.product_name) as product_name, |
| | | dd.price, |
| | | sum(dd.area) as area, |
| | | sum(dd.money) as money, |
| | | sum(dd.quantity) as quantity, |
| | | o.contract_id, |
| | | od.width, |
| | | od.height |
| | | from delivery_detail dd |
| | | left join (select product_name, |
| | | order_id, |
| | | product_id, |
| | | order_number, |
| | | CASE |
| | | WHEN height < 4000 AND height >= 3660 and height>width THEN |
| | | '3660<H<4000' |
| | | WHEN height < 5000 AND height >= 4000 and height>width THEN |
| | | '4000<H<5000' |
| | | WHEN height < 6000 AND height >= 5000 and height>width THEN |
| | | '5000<H<6000' |
| | | WHEN height < 7000 AND height >= 6000 and height>width THEN |
| | | '6000<H<7000' |
| | | WHEN height < 8000 AND height >= 7000 and height>width THEN |
| | | '7000<H<8000' |
| | | WHEN height < 9000 AND height >= 8000 and height>width THEN |
| | | '8000<H<9000' |
| | | WHEN height < 10000 AND height >= 9000 and height>width THEN |
| | | '9000<H<10000' |
| | | WHEN height < 11000 AND height >= 10000 and height>width THEN |
| | | '10000<H<11000' |
| | | WHEN height < 12000 AND height >= 11000 and height>width THEN |
| | | '11000<H<12000' |
| | | ELSE |
| | | '' |
| | | END height, |
| | | CASE |
| | | |
| | | WHEN width < 4000 AND width >= 3660 and width>height THEN |
| | | '3660<H<4000' |
| | | WHEN width < 5000 AND width >= 4000 and width>height THEN |
| | | '4000<H<5000' |
| | | WHEN width < 6000 AND width >= 5000 and width>height THEN |
| | | '5000<H<6000' |
| | | WHEN width < 7000 AND width >= 6000 and width>height THEN |
| | | '6000<H<7000' |
| | | WHEN width < 8000 AND width >= 7000 and width>height THEN |
| | | '7000<H<8000' |
| | | WHEN width < 9000 AND width >= 8000 and width>height THEN |
| | | '8000<H<9000' |
| | | WHEN width < 10000 AND width >= 9000 and width>height THEN |
| | | '9000<H<10000' |
| | | WHEN width < 11000 AND width >= 10000 and width>height THEN |
| | | '10000<H<11000' |
| | | WHEN width < 12000 AND width >= 11000 and width>height THEN |
| | | '11000<H<12000' |
| | | ELSE |
| | | '' |
| | | END width |
| | | from order_detail) as od on dd.order_id = od.order_id and dd.order_number = od.order_number |
| | | left join product pt on pt.id = od.product_id |
| | | left join sd.`order` o on o.order_id = dd.order_id |
| | | |
| | | |
| | | where dd.delivery_id like concat('%', #{deliveryId}, '%') |
| | | |
| | | group by od.order_id, od.product_name,od.width,od.height, dd.price |
| | | </select> |
| | | |
| | | <select id="getSelectDeliveryPrintingNoMoney" resultMap="selectDeliveryDetailOrderDetail" > |
| | | select dd.delivery_id, |
| | | od.order_id, |
| | | IF(#{type} = 'product_abbreviation', pt.remarks, od.product_name) as product_name, |
| | | sum(dd.area) as area, |
| | | sum(dd.quantity) as quantity, |
| | | o.contract_id, |
| | | od.width, |
| | | od.height |
| | | from delivery_detail dd |
| | | left join (select product_name, |
| | | order_id, |
| | | product_id, |
| | | order_number, |
| | | CASE |
| | | WHEN height < 4000 AND height >= 3660 and height>width THEN |
| | | '3660<H<4000' |
| | | WHEN height < 5000 AND height >= 4000 and height>width THEN |
| | | '4000<H<5000' |
| | | WHEN height < 6000 AND height >= 5000 and height>width THEN |
| | | '5000<H<6000' |
| | | WHEN height < 7000 AND height >= 6000 and height>width THEN |
| | | '6000<H<7000' |
| | | WHEN height < 8000 AND height >= 7000 and height>width THEN |
| | | '7000<H<8000' |
| | | WHEN height < 9000 AND height >= 8000 and height>width THEN |
| | | '8000<H<9000' |
| | | WHEN height < 10000 AND height >= 9000 and height>width THEN |
| | | '9000<H<10000' |
| | | WHEN height < 11000 AND height >= 10000 and height>width THEN |
| | | '10000<H<11000' |
| | | WHEN height < 12000 AND height >= 11000 and height>width THEN |
| | | '11000<H<12000' |
| | | ELSE |
| | | '' |
| | | END height, |
| | | CASE |
| | | |
| | | WHEN width < 4000 AND width >= 3660 and width>height THEN |
| | | '3660<H<4000' |
| | | WHEN width < 5000 AND width >= 4000 and width>height THEN |
| | | '4000<H<5000' |
| | | WHEN width < 6000 AND width >= 5000 and width>height THEN |
| | | '5000<H<6000' |
| | | WHEN width < 7000 AND width >= 6000 and width>height THEN |
| | | '6000<H<7000' |
| | | WHEN width < 8000 AND width >= 7000 and width>height THEN |
| | | '7000<H<8000' |
| | | WHEN width < 9000 AND width >= 8000 and width>height THEN |
| | | '8000<H<9000' |
| | | WHEN width < 10000 AND width >= 9000 and width>height THEN |
| | | '9000<H<10000' |
| | | WHEN width < 11000 AND width >= 10000 and width>height THEN |
| | | '10000<H<11000' |
| | | WHEN width < 12000 AND width >= 11000 and width>height THEN |
| | | '11000<H<12000' |
| | | ELSE |
| | | '' |
| | | END width |
| | | from order_detail) as od on dd.order_id = od.order_id and dd.order_number = od.order_number |
| | | left join product pt on pt.id = od.product_id |
| | | left join sd.`order` o on o.order_id = dd.order_id |
| | | |
| | | |
| | | where dd.delivery_id like concat('%', #{deliveryId}, '%') |
| | | |
| | | group by od.order_id, od.product_name, width, height |
| | | </select> |
| | | |
| | | |
| | | <select id="getSelectDeliveryPrintingMoneySpecifications" > |
| | | select od.order_id, |
| | | od.width, |
| | | od.height, |
| | | od.product_name, |
| | | sum(dd.area) as area, |
| | | sum(dd.money) as money, |
| | | sum(dd.quantity) as quantity, |
| | | dd.price |
| | | from delivery_detail dd |
| | | left join order_detail od on dd.order_id = od.order_id and dd.order_number = od.order_number |
| | | left join product p on od.product_id = p.id |
| | | where delivery_id = #{deliveryId} |
| | | and od.order_id = #{orderId} |
| | | and od.product_id = #{productId} |
| | | group by od.width,od.height, dd.price |
| | | </select> |
| | | |
| | | <select id="getSelectDeliveryPrintingNoMoneySpecifications" > |
| | | select od.order_id, |
| | | od.width, |
| | | od.height, |
| | | od.product_name, |
| | | sum(dd.area) as area, |
| | | sum(dd.quantity) as quantity |
| | | from delivery_detail dd |
| | | left join order_detail od on dd.order_id = od.order_id and dd.order_number = od.order_number |
| | | left join product p on od.product_id = p.id |
| | | where delivery_id = #{deliveryId} |
| | | and od.order_id = #{orderId} |
| | | and od.product_id = #{productId} |
| | | group by od.width,od.height |
| | | </select> |
| | | |
| | | <select id="getSelectOrderPrinting" > |
| | |
| | | dd.area, |
| | | ifnull(od.processing_note,"") as processingNote, |
| | | ifnull(od.building_number,"") as buildingNumber, |
| | | dd.box_no, |
| | | dd.price, |
| | | od.other_columns, |
| | | od.remarks |
| | |
| | | update sd.delivery set payment_terms=#{delivery.paymentTerms}, |
| | | delivery_date=#{delivery.deliveryDate}, |
| | | pay_method=#{delivery.payMethod}, |
| | | pay_date=#{delivery.payDate},contacts=#{delivery.creator},contact_number=#{delivery.contactNumber}, |
| | | pay_date=#{delivery.payDate},contacts=#{delivery.contacts},contact_number=#{delivery.contactNumber}, |
| | | delivery_address=#{delivery.deliveryAddress}, |
| | | freight=#{delivery.freightPrice}*#{delivery.freightQuantity}, |
| | | freight_price=#{delivery.freightPrice}, |
| | |
| | | select |
| | | d.order_id,d.quantity,round(d.money,0) as money ,d.area,d.project, |
| | | d.customer_id,d.customer_name,d.creator,d.salesman,d.salesman_id, |
| | | d.processing_note,d.contract_id |
| | | d.processing_note,d.contract_id,d.delivery_date |
| | | from sd.`order` d |
| | | <where> |
| | | <if test="orderDetail.orderId != null and orderDetail.orderId != ''"> |
| | |
| | | weight, |
| | | perimeter, |
| | | monolithic_perimeter, |
| | | other_columns |
| | | other_columns, |
| | | file_name |
| | | ) |
| | | values |
| | | <foreach collection ="orderDetails" item="orderDetail" separator =","> |
| | |
| | | #{orderDetail.weight}, |
| | | #{orderDetail.perimeter}, |
| | | #{orderDetail.monolithicPerimeter}, |
| | | #{orderDetail.otherColumns} |
| | | #{orderDetail.otherColumns}, |
| | | #{orderDetail.fileName} |
| | | ) |
| | | </foreach> |
| | | </insert> |
| | |
| | | group by od.product_id,pd.detail |
| | | </select> |
| | | |
| | | |
| | | <delete id="deleteOrderFile" > |
| | | delete from sd.order_file where order_id = #{orderId} |
| | | </delete> |
| | | |
| | | |
| | | |
| | |
| | | <result column="child_width" property="childWidth"/> |
| | | <result column="child_height" property="childHeight"/> |
| | | <result column="arc" property="arc"/> |
| | | <result column="arch_rise" property="archRise"/> |
| | | <result column="icon" property="icon"/> |
| | | <result column="process" property="process"/> |
| | | <result column="area" property="area"/> |
| | |
| | | a.child_width, |
| | | a.child_height,a.arc, |
| | | a.icon, |
| | | a.arch_rise, |
| | | a.area, |
| | | b.quantity, |
| | | a.process, |
| | |
| | | a.total_area = #{item.area}*b.quantity, |
| | | a.icon = #{item.icon}, |
| | | a.process = #{item.process}, |
| | | a.arc = #{item.arc} |
| | | a.arc = #{item.arc}, |
| | | a.arch_rise = #{item.archRise} |
| | | where |
| | | a.order_id = b.order_id |
| | | and a.order_id = #{item.orderId} |
| | |
| | | |
| | | </select> |
| | | |
| | | <select id="getMaxIdByGroup" > |
| | | select max(id) from sd.order_glass_detail as a |
| | | where a.order_id = #{orderId} |
| | | and a.order_number = #{orderNumber} |
| | | and a.`group` = #{group} |
| | | |
| | | </select> |
| | | |
| | | |
| | | <select id="getMinTechnologyNumberByGroup" > |
| | | select min(technology_number) from sd.order_glass_detail as a |
| | | where a.order_id = #{orderId} |
| | | and a.order_number = #{orderNumber} |
| | | and a.`group` = #{group} |
| | | |
| | | </select> |
| | | |
| | | <select id="getMaxTechnologyNumberByGroup" > |
| | | select max(technology_number) from sd.order_glass_detail as a |
| | | where a.order_id = #{orderId} |
| | | and a.order_number = #{orderNumber} |
| | | and a.`group` = #{group} |
| | | |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | sd.`order` as o |
| | | left join mm.finished_goods_inventory as fgi |
| | | on o.order_id = fgi.order_id |
| | | where date(o.create_time)>=#{startDate} and date(o.create_time) <= #{endDate} |
| | | where date(o.create_time) between #{startDate} and #{endDate} |
| | | |
| | | <if test="orderType!= null and orderType != ''"> |
| | | and o.create_order = #{orderType} |
| | |
| | | and a.layout_id = #{layoutId} |
| | | and a.sort = #{sort} |
| | | </select> |
| | | |
| | | |
| | | <insert id="saveOrderFile"> |
| | | insert into sd.order_file (order_id,order_number,file_name,file_data,create_time) values(#{orderId},#{orderNumber},#{fileName},#{dxfData},now()) |
| | | </insert> |
| | | |
| | | <select id="selectOrderFile"> |
| | | select * from sd.order_file |
| | | where order_id = #{orderId} and order_number = #{orderNumber} |
| | | |
| | | </select> |
| | | |
| | | <select id="selectOrderFileList"> |
| | | select * from sd.order_file |
| | | where order_id = #{orderId} |
| | | |
| | | </select> |
| | | |
| | | <update id="updateOrderFile"> |
| | | update sd.order_file set file_name=#{fileName},file_data=#{dxfData},create_time=now() where order_id=#{orderId} and order_number=#{orderNumber} |
| | | </update> |
| | | </mapper> |
| | |
| | | from order_process_detail as a |
| | | left join `order` as b on a.order_id=b.order_id |
| | | where b.create_time BETWEEN #{selectTime1} and #{selectTime2} |
| | | and position(#{orderId} in b.order_id) |
| | | group by process |
| | | |
| | | </select> |
| | |
| | | left join sd.`order` o2 on c.order_id = o2.order_id, |
| | | (SELECT @i:=-1) as d |
| | | where o2.create_time BETWEEN #{selectTime1} and #{selectTime2} |
| | | and position(#{orderId} in o2.order_id) |
| | | GROUP BY order_number |
| | | ) as b |
| | | on b.order_number = a.order_number |
| | | left join sd.`order` o on a.order_id = o.order_id |
| | | where o.create_time BETWEEN #{selectTime1} and #{selectTime2} |
| | | where o.create_time BETWEEN #{selectTime1} and #{selectTime2} and position(#{orderId} in o.order_id) |
| | | group by a.order_number |
| | | </select> |
| | | |
| | |
| | | select a.process from sd.order_process_detail as a, |
| | | (select id,process from sd.order_process_detail |
| | | where process_id=#{processId} |
| | | and technology_number=#{technologyNumber} |
| | | and position(technology_number in #{technologyNumber}) |
| | | and order_number=#{orderNumber} |
| | | and process=#{thisProcess} |
| | | group by process) as b |
| | | where a.id = b.id + 1 |
| | | and a.process_id=#{processId} |
| | | and a.technology_number=#{technologyNumber} |
| | | and a.order_number=#{orderNumber} |
| | | and position(a.technology_number in #{technologyNumber}) |
| | | |
| | | </select> |
| | | |
| | |
| | | ) |
| | | </foreach> |
| | | </insert> |
| | | |
| | | <select id="getGlassNameByGroup"> |
| | | SELECT GROUP_CONCAT(detail SEPARATOR '+') |
| | | from sd.product_detail |
| | | where prod_id = #{productId} |
| | | and glass_sort >= #{minTechnologyNumberByGroup} |
| | | and glass_sort >= #{minTechnologyNumberByGroup} |
| | | </select> |
| | | </mapper> |
| | |
| | | <update id="updateProductStateById"> |
| | | update product set state = #{state} where id = #{id} |
| | | </update> |
| | | |
| | | <select id="getGlassThickness"> |
| | | select sum(REPLACE(JSON_UNQUOTE(JSON_EXTRACT(separation, '$.thickness')),'mm','')) |
| | | from product_detail as a |
| | | where a.prod_id = #{productId} |
| | | and a.id <= (select b.id |
| | | from product_detail as b |
| | | where b.prod_id = #{productId} and b.glass_sort = #{technologyNumber}) |
| | | |
| | | </select> |
| | | </mapper> |
| File was renamed from north-glass-erp/src/test/java/com/example/erp/service/sd/BasicDateServiceTest.java |
| | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.boot.test.context.SpringBootTest; |
| | | |
| | | import static org.junit.jupiter.api.Assertions.*; |
| | | @SpringBootTest |
| | | class BasicDateServiceTest { |
| | | class BasicDataServiceTest { |
| | | @Autowired |
| | | private BasicDateService basicDateService; |
| | | private BasicDataService basicDataService; |
| | | @Test |
| | | void getOrderBasicData() { |
| | | basicDateService.getOrderBasicData(); |
| | | basicDataService.getOrderBasicData(); |
| | | } |
| | | } |