Merge pull request 'zjl' (#23) from zjl into master
All checks were successful
continuous-integration/drone/push Build is passing

Reviewed-on: #23
This commit is contained in:
朱菊兰 2023-06-16 16:25:06 +08:00
commit dc4e1fd389
54 changed files with 972 additions and 927 deletions

1
dist/css/1076.287b70f6.css vendored Normal file
View File

@ -0,0 +1 @@
.main-box[data-v-14745c10]{width:100%;padding:0 6px 0 16px}.main-box .left-box[data-v-14745c10]{padding-top:16px;border-radius:8px;background-color:#fff}.main-box .right-bottom[data-v-14745c10],.main-box .top-left[data-v-14745c10],.main-box .top-right[data-v-14745c10]{padding:16px 10px 0;border-radius:8px;background-color:#fff}.main-box .left-box[data-v-14745c10]{overflow-y:auto;height:calc(100vh - 204px)}.main-box .right-bottom[data-v-14745c10],.main-box .top-left[data-v-14745c10],.main-box .top-right[data-v-14745c10]{height:calc(50vh - 107px)}.main-box .top-left .title[data-v-14745c10],.main-box .top-right .title[data-v-14745c10]{display:inline-block;margin-right:8px;margin-bottom:22px}.main-box .top-left .title[data-v-14745c10]:before,.main-box .top-right .title[data-v-14745c10]:before{content:"";display:inline-block;width:4px;height:16px;background:#0b58ff;border-radius:1px;margin-right:8px;vertical-align:middle}.main-box .top-left .icon-style[data-v-14745c10],.main-box .top-right .icon-style[data-v-14745c10]{font-size:14px;margin-left:18px;cursor:pointer}.main-box .right-bottom[data-v-14745c10]{margin-top:10px}

1
dist/css/1653.72b2e894.css vendored Normal file
View File

@ -0,0 +1 @@
.main-box[data-v-afb2cca2]{width:100%;padding:8px 6px 0 16px}.main-box .left-box[data-v-afb2cca2],.main-box .right-box[data-v-afb2cca2]{border-radius:8px;background-color:#fff;height:calc(100vh - 148px)}.main-box .left-box[data-v-afb2cca2]{padding:16px 10px 0;overflow-y:auto}.main-box .right-box[data-v-afb2cca2]{padding:16px}

1
dist/css/1965.1dc83e33.css vendored Normal file
View File

@ -0,0 +1 @@
.glassWasteReport .el-table{display:flex;flex-direction:column}.glassWasteReport .el-table__body-wrapper{order:1}.glassWasteReport .el-table__fixed-body-wrapper{top:116px!important}.glassWasteReport .el-table__fixed-footer-wrapper{z-index:0;top:81px!important}.wasteMachineReport .el-table thead.is-group tr:first-of-type th:first-of-type{border-bottom:none}.wasteMachineReport .el-table thead.is-group tr:first-of-type th:first-of-type div.cell{text-align:right}.wasteMachineReport .el-table th.el-table__cell{height:28px}.wasteMachineReport .el-table thead.is-group tr:first-of-type th:first-of-type:before{content:"";position:absolute;height:35px;top:0;left:60px;background-color:#ebeef5;transform:rotate(-35deg);transform-origin:top;width:1px}.wasteMachineReport .el-table thead.is-group tr:last-of-type th:first-of-type:before{content:"";position:absolute;height:35px;top:0;left:80px;background-color:#ebeef5;transform:rotate(-35deg);transform-origin:top;width:1px}.wasteLocationReport .el-table thead.is-group tr:first-of-type th:first-of-type{border-bottom:none}.wasteLocationReport .el-table thead.is-group tr:first-of-type th:first-of-type div.cell{text-align:right}.wasteLocationReport .el-table th.el-table__cell{height:28px}.wasteLocationReport .el-table thead.is-group tr:first-of-type th:first-of-type:before{content:"";position:absolute;height:35px;top:0;left:48px;background-color:#ebeef5;transform:rotate(-35deg);transform-origin:top;width:1px}.wasteLocationReport .el-table thead.is-group tr:last-of-type th:first-of-type:before{content:"";position:absolute;height:35px;top:0;left:68px;background-color:#ebeef5;transform:rotate(-35deg);transform-origin:top;width:1px}.glassDefectReport .baseMsg{font-size:14px;height:40px;line-height:40px;display:flex;border:1px solid #e8e8e8;border-radius:4px;margin-bottom:20px}.glassDefectReport .baseMsg li{width:25%;text-align:center;padding:0 10px;border-right:1px solid #e8e8e8;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.glassDefectReport .baseMsg li span{font-weight:600}.glassDefectReport .el-table thead.is-group tr:first-of-type th:first-of-type{border-bottom:none}.glassDefectReport .el-table thead.is-group tr:first-of-type th:first-of-type div.cell{text-align:right}.glassDefectReport .el-table th.el-table__cell{height:28px}.glassDefectReport .el-table thead.is-group tr:first-of-type th:first-of-type:before{content:"";position:absolute;height:35px;top:0;left:48px;background-color:#ebeef5;transform:rotate(-35deg);transform-origin:top;width:1px}.glassDefectReport .el-table thead.is-group tr:last-of-type th:first-of-type:before{content:"";position:absolute;height:35px;top:0;left:68px;background-color:#ebeef5;transform:rotate(-35deg);transform-origin:top;width:1px}.finalInspectionData[data-v-4f3b2616]{width:100%}.finalInspectionData .box-top[data-v-4f3b2616]{width:100%;padding:8px 16px 0}.finalInspectionData .box-top .search-box[data-v-4f3b2616]{height:62px;padding:10px 16px;box-sizing:border-box;border-radius:8px;background-color:#fff}.finalInspectionData .box[data-v-4f3b2616]{width:100%;padding:8px 8px 0 16px}.finalInspectionData .box .left-box[data-v-4f3b2616],.finalInspectionData .box .right-box[data-v-4f3b2616]{height:calc(100vh - 220px);padding:16px;border-radius:8px;background-color:#fff}.finalInspectionData .box .left-box .table-box[data-v-4f3b2616],.finalInspectionData .box .right-box .table-box[data-v-4f3b2616]{margin-top:16px;height:calc(100vh - 290px);overflow:auto}.finalInspectionData .box .left-box .table-button[data-v-4f3b2616]{display:inline-block;height:30px;width:100%;text-align:center;padding-top:4px;margin-bottom:16px;font-size:14px;color:#0b58ff;border-radius:4px;border:1px dotted #0b58ff;cursor:pointer}.finalInspectionData .box .right-box .title[data-v-4f3b2616]:before{content:"";display:inline-block;width:4px;height:16px;background:#0b58ff;border-radius:1px;margin-right:8px;vertical-align:middle}

View File

@ -1 +0,0 @@
.main-box[data-v-7a447aa0]{width:100%;padding:0 6px 0 16px}.main-box .left-box[data-v-7a447aa0]{padding-top:16px;border-radius:8px;background-color:#fff}.main-box .right-bottom[data-v-7a447aa0],.main-box .top-left[data-v-7a447aa0],.main-box .top-right[data-v-7a447aa0]{padding:16px 10px 0;border-radius:8px;background-color:#fff}.main-box .left-box[data-v-7a447aa0]{overflow-y:auto;height:calc(100vh - 204px)}.main-box .right-bottom[data-v-7a447aa0],.main-box .top-left[data-v-7a447aa0],.main-box .top-right[data-v-7a447aa0]{height:calc(50vh - 107px)}.main-box .top-left .title[data-v-7a447aa0],.main-box .top-right .title[data-v-7a447aa0]{display:inline-block;margin-right:8px;margin-bottom:22px}.main-box .top-left .title[data-v-7a447aa0]:before,.main-box .top-right .title[data-v-7a447aa0]:before{content:"";display:inline-block;width:4px;height:16px;background:#0b58ff;border-radius:1px;margin-right:8px;vertical-align:middle}.main-box .top-left .icon-style[data-v-7a447aa0],.main-box .top-right .icon-style[data-v-7a447aa0]{font-size:14px;margin-left:18px;cursor:pointer}.main-box .right-bottom[data-v-7a447aa0]{margin-top:10px}

1
dist/css/3518.19eda3d0.css vendored Normal file
View File

@ -0,0 +1 @@
.root-box[data-v-690601c2]{height:calc(29.2vh - 45.552px);width:calc(100vw - 280px);position:relative}.root-box .canvas[data-v-690601c2]{position:absolute}.bottom-box[data-v-49c7aca2],.top-box[data-v-49c7aca2]{background-color:#fff;margin:8px 16px 0!important;border-radius:4px}.top-box[data-v-49c7aca2]{height:calc(32vh - 49.92px)}.bottom-box[data-v-49c7aca2]{height:calc(68vh - 106.08px);padding:0 16px 16px}.bottom-box .area .title[data-v-49c7aca2]{display:inline-block;font-size:14px;color:#000;margin:14px 0}.bottom-box .area .title[data-v-49c7aca2]:before{content:"";display:inline-block;width:4px;height:16px;background:#0b58ff;border-radius:1px;margin-right:8px;vertical-align:middle}

1
dist/css/3712.047b69e1.css vendored Normal file
View File

@ -0,0 +1 @@
.detail-box .column-box .box .tip-value[data-v-63ceee10]{display:block}.detail-box .column-box .box .tip[data-v-63ceee10]{display:inline-block;background-color:#cae2ff;border-radius:2px;color:#288aff;padding:4px}.detail-box .border-right[data-v-63ceee10]{border-right:1px solid #e8e8e8}.statistics[data-v-3a8e1127]{padding:0 24px}.statistics .title[data-v-3a8e1127]{display:inline-block;margin:24px 0 16px 0}.statistics .title[data-v-3a8e1127]:before{content:"";display:inline-block;width:4px;height:16px;background:#0b58ff;border-radius:1px;margin-right:8px;vertical-align:middle}.main-box[data-v-946347de]{margin-top:8px}.main-box .top-box[data-v-946347de]{width:100%}.main-box .top-box .top-left[data-v-946347de],.main-box .top-box .top-right[data-v-946347de]{height:calc(49vh - 76.44px);background-color:#fff;border-radius:8px}.main-box .top-box .top-left .titleStyle[data-v-946347de]{font-weight:600;color:rgba(0,0,0,.9);vertical-align:top}.main-box .top-box .top-left .line-order-msg[data-v-946347de]{display:flex}.main-box .top-box .top-left .line-order-msg li .title[data-v-946347de]{display:inline-block}.main-box .top-box .top-left .line-order-msg li .title[data-v-946347de]:before{content:"";display:inline-block;width:4px;height:16px;background:#0b58ff;border-radius:1px;margin-right:8px;vertical-align:middle}.main-box .top-box .top-left .line-order-msg li .num-box[data-v-946347de]{border-right:1px solid #ccc}.main-box .top-box .top-left .line-order-msg li .plan_num[data-v-946347de],.main-box .top-box .top-left .line-order-msg li .product_num[data-v-946347de]{width:100%;border-radius:8px}.main-box .top-box .top-left .line-order-msg li .plan_num .num[data-v-946347de],.main-box .top-box .top-left .line-order-msg li .product_num .num[data-v-946347de]{color:rgba(0,0,0,.85);margin-bottom:6px}.main-box .top-box .top-left .line-order-msg li .plan_num .words[data-v-946347de],.main-box .top-box .top-left .line-order-msg li .product_num .words[data-v-946347de]{font-size:14px;color:rgba(0,0,0,.45)}.main-box .top-box .top-left .line-order-msg li .plan_num[data-v-946347de]{background:#fff8e8}.main-box .top-box .top-left .line-order-msg li .product_num[data-v-946347de]{background:#e3ffeb}.main-box .bottom-box[data-v-946347de]{height:calc(51vh - 79.56px);background-color:#fff;border-radius:8px;margin:8px 8px 0 0}

View File

@ -1 +0,0 @@
.finalInspectionData[data-v-6bd3173e]{width:100%}.finalInspectionData .box-top[data-v-6bd3173e]{width:100%;padding:8px 16px 0}.finalInspectionData .box-top .search-box[data-v-6bd3173e]{height:62px;padding:10px 16px;box-sizing:border-box;border-radius:8px;background-color:#fff}.finalInspectionData .box[data-v-6bd3173e]{width:100%;padding:8px 8px 0 16px}.finalInspectionData .box .left-box[data-v-6bd3173e],.finalInspectionData .box .right-box[data-v-6bd3173e]{height:calc(100vh - 220px);padding:16px;border-radius:8px;background-color:#fff}.finalInspectionData .box .left-box .table-box[data-v-6bd3173e],.finalInspectionData .box .right-box .table-box[data-v-6bd3173e]{margin-top:16px;height:calc(100vh - 290px);overflow:auto}.finalInspectionData .box .left-box .table-button[data-v-6bd3173e]{display:inline-block;height:30px;width:100%;text-align:center;padding-top:4px;margin-bottom:16px;font-size:14px;color:#0b58ff;border-radius:4px;border:1px dotted #0b58ff;cursor:pointer}.finalInspectionData .box .right-box .title[data-v-6bd3173e]:before{content:"";display:inline-block;width:4px;height:16px;background:#0b58ff;border-radius:1px;margin-right:8px;vertical-align:middle}

View File

@ -1 +0,0 @@
.detail-box .column-box .box .tip-value[data-v-c54b9290]{display:block}.detail-box .column-box .box .tip[data-v-c54b9290]{display:inline-block;background-color:#cae2ff;border-radius:2px;color:#288aff;padding:4px}.detail-box .border-right[data-v-c54b9290]{border-right:1px solid #e8e8e8}.statistics[data-v-3a8e1127]{padding:0 24px}.statistics .title[data-v-3a8e1127]{display:inline-block;margin:24px 0 16px 0}.statistics .title[data-v-3a8e1127]:before{content:"";display:inline-block;width:4px;height:16px;background:#0b58ff;border-radius:1px;margin-right:8px;vertical-align:middle}.main-box[data-v-8efea692]{margin-top:8px}.main-box .top-box[data-v-8efea692]{width:100%}.main-box .top-box .top-left[data-v-8efea692],.main-box .top-box .top-right[data-v-8efea692]{height:calc(49vh - 76.44px);background-color:#fff;border-radius:8px}.main-box .top-box .top-left .titleStyle[data-v-8efea692]{font-weight:600;color:rgba(0,0,0,.9);vertical-align:top}.main-box .top-box .top-left .line-order-msg[data-v-8efea692]{display:flex}.main-box .top-box .top-left .line-order-msg li .title[data-v-8efea692]{display:inline-block}.main-box .top-box .top-left .line-order-msg li .title[data-v-8efea692]:before{content:"";display:inline-block;width:4px;height:16px;background:#0b58ff;border-radius:1px;margin-right:8px;vertical-align:middle}.main-box .top-box .top-left .line-order-msg li .num-box[data-v-8efea692]{border-right:1px solid #ccc}.main-box .top-box .top-left .line-order-msg li .plan_num[data-v-8efea692],.main-box .top-box .top-left .line-order-msg li .product_num[data-v-8efea692]{width:100%;border-radius:8px}.main-box .top-box .top-left .line-order-msg li .plan_num .num[data-v-8efea692],.main-box .top-box .top-left .line-order-msg li .product_num .num[data-v-8efea692]{color:rgba(0,0,0,.85);margin-bottom:6px}.main-box .top-box .top-left .line-order-msg li .plan_num .words[data-v-8efea692],.main-box .top-box .top-left .line-order-msg li .product_num .words[data-v-8efea692]{font-size:14px;color:rgba(0,0,0,.45)}.main-box .top-box .top-left .line-order-msg li .plan_num[data-v-8efea692]{background:#fff8e8}.main-box .top-box .top-left .line-order-msg li .product_num[data-v-8efea692]{background:#e3ffeb}.main-box .bottom-box[data-v-8efea692]{height:calc(51vh - 79.56px);background-color:#fff;border-radius:8px;margin:8px 8px 0 0}

View File

@ -1 +0,0 @@
.main-box[data-v-97276a96]{width:100%;padding:8px 6px 0 16px}.main-box .left-box[data-v-97276a96],.main-box .right-box[data-v-97276a96]{border-radius:8px;background-color:#fff;height:calc(100vh - 148px)}.main-box .left-box[data-v-97276a96]{padding:16px 10px 0;overflow-y:auto}.main-box .right-box[data-v-97276a96]{padding:16px}

View File

@ -1 +1 @@
.home_module_title[data-v-632946fd]{padding:16px 16px 0}.home_module_title .iconStyle[data-v-632946fd]{margin-right:8px}.home_module_title .titleStyle[data-v-632946fd]{font-weight:600;color:rgba(0,0,0,.9);vertical-align:top}.capacity_box[data-v-7b29d162],.material_box[data-v-01601021]{padding:12px 23px 0}.device_alarm[data-v-8c9c62bc]{display:flex;flex-flow:row wrap}.device_alarm .alarm_item[data-v-8c9c62bc]{width:20%;border-right:1px solid #ccc;border-bottom:1px solid #ccc}.device_alarm .alarm_item .alarm_tip[data-v-8c9c62bc]{color:#000}.device_alarm .alarm_item .alarm_tip .alarm_num[data-v-8c9c62bc]{display:inline-block;color:#fff;margin-left:4px;padding:1px 4px;border-radius:4px}.device_alarm .alarm_item .alarm_tip .class_red[data-v-8c9c62bc]{background:#f55;box-shadow:0 2px 5px 0 hsla(0,97%,71%,.6)}.device_alarm .alarm_item .alarm_tip .class_green[data-v-8c9c62bc]{background:#50d277;box-shadow:0 2px 5px 0 rgba(80,210,119,.6)}.device_alarm .alarm_item .icon-style[data-v-8c9c62bc]{margin:8px 5px 0 0;vertical-align:middle}.device_alarm .alarm_item .alarm_yellow[data-v-8c9c62bc]{color:#ffb750}.device_alarm .alarm_item .alarm_grey[data-v-8c9c62bc]{color:#aaa}.device_alarm .alarm_item .alarm_green[data-v-8c9c62bc]{color:#50d277}.device_alarm .alarm_item .sub_name[data-v-8c9c62bc]{vertical-align:middle;color:#000;opacity:.55}.device_alarm .alarm_item .special_item[data-v-8c9c62bc]{position:relative}.device_alarm .alarm_item .model_style[data-v-8c9c62bc]{display:none;color:#454545;padding:2px;background:#f2f4f9;border-radius:2px;vertical-align:middle}.device_alarm .alarm_item .model_style .separate_color[data-v-8c9c62bc]{color:#dcdfe6}.device_alarm .alarm_item .model_style2[data-v-8c9c62bc]{position:absolute;top:5px;line-height:10px}.device_alarm .alarm_item .model_style2 p[data-v-8c9c62bc]:after{content:"";display:inline-block;height:1px;width:100%;position:relative;top:-3px;background-color:#dcdfe6;margin-left:2px}.device_alarm .alarm_item:hover .model_style[data-v-8c9c62bc]{display:inline-block}.device_alarm[data-v-8c9c62bc] :nth-child(10),.device_alarm[data-v-8c9c62bc] :nth-child(15),.device_alarm[data-v-8c9c62bc] :nth-child(5){border-right:0}.device_alarm[data-v-8c9c62bc] :nth-child(16),.device_alarm[data-v-8c9c62bc] :nth-child(17),.device_alarm[data-v-8c9c62bc] :nth-child(18),.device_alarm[data-v-8c9c62bc] :nth-child(19){border-bottom:0}.device_alarm[data-v-8c9c62bc] :last-child{border-right:0;border-bottom:0}.home_progress .el-progress-bar__inner{background:linear-gradient(270deg,#4bc4ff,#0b58ff)}.product_area[data-v-37f51472]{display:flex}.product_area .box_left[data-v-37f51472],.product_area .box_right[data-v-37f51472]{width:50%;height:calc(50vh - 154px)}.product_area .box_left .title[data-v-37f51472],.product_area .box_right .title[data-v-37f51472]{color:#000}.product_area .box_left .title[data-v-37f51472] :first-child,.product_area .box_right .title[data-v-37f51472] :first-child{margin-right:24px}.product_area .box_left .title[data-v-37f51472]:before,.product_area .box_right .title[data-v-37f51472]:before{content:"";display:inline-block;width:4px;height:16px;background:#0b58ff;border-radius:1px;margin-right:8px;vertical-align:middle}.product_area .box_left[data-v-37f51472]{border-right:1px solid #dcdfe6;padding-right:18px}.product_area .box_left .plan_num[data-v-37f51472],.product_area .box_left .product_num[data-v-37f51472]{width:100%;border-radius:8px}.product_area .box_left .plan_num .num[data-v-37f51472],.product_area .box_left .product_num .num[data-v-37f51472]{color:rgba(0,0,0,.85)}.product_area .box_left .plan_num .words[data-v-37f51472],.product_area .box_left .product_num .words[data-v-37f51472]{font-size:14px;color:rgba(0,0,0,.45)}.product_area .box_left .plan_num[data-v-37f51472]{background:#fff8e8}.product_area .box_left .product_num[data-v-37f51472]{background:#e3ffeb}.product_area .progress_box[data-v-37f51472]{color:#000}.product_area .progress_box .blue_color[data-v-37f51472]{color:#0d5bff;float:right;margin-bottom:8px}.home-container .title-bar[data-v-30952e46]{height:52px;background-color:#fff}.home-container .title-bar .tip[data-v-30952e46]{font-size:18px;font-weight:600;color:#000;display:inline-block;margin:10px 20px 0 32px}.home-container .kanban-container[data-v-30952e46]{padding:8px 16px}.home-container .kanban-container .area1[data-v-30952e46],.home-container .kanban-container .area2[data-v-30952e46],.home-container .kanban-container .area3[data-v-30952e46],.home-container .kanban-container .area4[data-v-30952e46]{height:calc(50vh - 84px);border-radius:4px;background-color:#fff}.home-container .kanban-container .area1[data-v-30952e46],.home-container .kanban-container .area2[data-v-30952e46]{margin-bottom:8px;overflow:scroll} .home_module_title[data-v-632946fd]{padding:16px 16px 0}.home_module_title .iconStyle[data-v-632946fd]{margin-right:8px}.home_module_title .titleStyle[data-v-632946fd]{font-weight:600;color:rgba(0,0,0,.9);vertical-align:top}.capacity_box[data-v-7b29d162],.material_box[data-v-01601021]{padding:12px 23px 0}.device_alarm[data-v-8c9c62bc]{display:flex;flex-flow:row wrap}.device_alarm .alarm_item[data-v-8c9c62bc]{width:20%;border-right:1px solid #ccc;border-bottom:1px solid #ccc}.device_alarm .alarm_item .alarm_tip[data-v-8c9c62bc]{color:#000}.device_alarm .alarm_item .alarm_tip .alarm_num[data-v-8c9c62bc]{display:inline-block;color:#fff;margin-left:4px;padding:1px 4px;border-radius:4px}.device_alarm .alarm_item .alarm_tip .class_red[data-v-8c9c62bc]{background:#f55;box-shadow:0 2px 5px 0 hsla(0,97%,71%,.6)}.device_alarm .alarm_item .alarm_tip .class_green[data-v-8c9c62bc]{background:#50d277;box-shadow:0 2px 5px 0 rgba(80,210,119,.6)}.device_alarm .alarm_item .icon-style[data-v-8c9c62bc]{margin:8px 5px 0 0;vertical-align:middle}.device_alarm .alarm_item .alarm_yellow[data-v-8c9c62bc]{color:#ffb750}.device_alarm .alarm_item .alarm_grey[data-v-8c9c62bc]{color:#aaa}.device_alarm .alarm_item .alarm_green[data-v-8c9c62bc]{color:#50d277}.device_alarm .alarm_item .sub_name[data-v-8c9c62bc]{vertical-align:middle;color:#000;opacity:.55}.device_alarm .alarm_item .special_item[data-v-8c9c62bc]{position:relative}.device_alarm .alarm_item .model_style[data-v-8c9c62bc]{display:none;color:#454545;padding:2px;background:#f2f4f9;border-radius:2px;vertical-align:middle}.device_alarm .alarm_item .model_style .separate_color[data-v-8c9c62bc]{color:#dcdfe6}.device_alarm .alarm_item .model_style2[data-v-8c9c62bc]{position:absolute;top:5px;line-height:10px}.device_alarm .alarm_item .model_style2 p[data-v-8c9c62bc]:after{content:"";display:inline-block;height:1px;width:100%;position:relative;top:-3px;background-color:#dcdfe6;margin-left:2px}.device_alarm .alarm_item:hover .model_style[data-v-8c9c62bc]{display:inline-block}.device_alarm[data-v-8c9c62bc] :nth-child(10),.device_alarm[data-v-8c9c62bc] :nth-child(15),.device_alarm[data-v-8c9c62bc] :nth-child(5){border-right:0}.device_alarm[data-v-8c9c62bc] :nth-child(16),.device_alarm[data-v-8c9c62bc] :nth-child(17),.device_alarm[data-v-8c9c62bc] :nth-child(18),.device_alarm[data-v-8c9c62bc] :nth-child(19){border-bottom:0}.device_alarm[data-v-8c9c62bc] :last-child{border-right:0;border-bottom:0}.home_progress .el-progress-bar__inner{background:linear-gradient(270deg,#4bc4ff,#0b58ff)}.product_area[data-v-093ac14a]{display:flex}.product_area .box_left[data-v-093ac14a],.product_area .box_right[data-v-093ac14a]{width:50%;height:calc(50vh - 154px)}.product_area .box_left .title[data-v-093ac14a],.product_area .box_right .title[data-v-093ac14a]{color:#000}.product_area .box_left .title[data-v-093ac14a] :first-child,.product_area .box_right .title[data-v-093ac14a] :first-child{margin-right:24px}.product_area .box_left .title[data-v-093ac14a]:before,.product_area .box_right .title[data-v-093ac14a]:before{content:"";display:inline-block;width:4px;height:16px;background:#0b58ff;border-radius:1px;margin-right:8px;vertical-align:middle}.product_area .box_left[data-v-093ac14a]{border-right:1px solid #dcdfe6;padding-right:18px}.product_area .box_left .plan_num[data-v-093ac14a],.product_area .box_left .product_num[data-v-093ac14a]{width:100%;border-radius:8px}.product_area .box_left .plan_num .num[data-v-093ac14a],.product_area .box_left .product_num .num[data-v-093ac14a]{color:rgba(0,0,0,.85)}.product_area .box_left .plan_num .words[data-v-093ac14a],.product_area .box_left .product_num .words[data-v-093ac14a]{font-size:14px;color:rgba(0,0,0,.45)}.product_area .box_left .plan_num[data-v-093ac14a]{background:#fff8e8}.product_area .box_left .product_num[data-v-093ac14a]{background:#e3ffeb}.product_area .progress_box[data-v-093ac14a]{color:#000}.product_area .progress_box .blue_color[data-v-093ac14a]{color:#0d5bff;float:right;margin-bottom:8px}.home-container .title-bar[data-v-30952e46]{height:52px;background-color:#fff}.home-container .title-bar .tip[data-v-30952e46]{font-size:18px;font-weight:600;color:#000;display:inline-block;margin:10px 20px 0 32px}.home-container .kanban-container[data-v-30952e46]{padding:8px 16px}.home-container .kanban-container .area1[data-v-30952e46],.home-container .kanban-container .area2[data-v-30952e46],.home-container .kanban-container .area3[data-v-30952e46],.home-container .kanban-container .area4[data-v-30952e46]{height:calc(50vh - 84px);border-radius:4px;background-color:#fff}.home-container .kanban-container .area1[data-v-30952e46],.home-container .kanban-container .area2[data-v-30952e46]{margin-bottom:8px;overflow:scroll}

View File

@ -1 +1 @@
.bottom-box[data-v-5624e103]{overflow-x:auto;display:flex}.bottom-box .bottom-left[data-v-5624e103],.bottom-box .bottom-right[data-v-5624e103]{display:inline-block}.bottom-box .bottom-left[data-v-5624e103]{width:290px;margin-right:8px}.bottom-box .bottom-left .dataTab li[data-v-5624e103]{width:65px}.bottom-box .bottom-right[data-v-5624e103]{width:calc(100% - 300px)}.bottom-box .bottom-right .dataTab li[data-v-5624e103]{width:7.7%;min-width:60px}.title[data-v-5624e103]{display:inline-block;height:66px;width:30px;font-size:14px;line-height:14px;font-weight:500;padding:5px 8px 0;color:rgba(0,0,0,.85);background-color:#fafafa;border-top-left-radius:5px;border-bottom-left-radius:5px}.dataTab[data-v-5624e103]{display:flex;flex-flow:row nowrap}.dataTab li[data-v-5624e103]{font-size:14px;border-right:1px solid #e8e8e8;border-bottom:1px solid #e8e8e8}.dataTab li p[data-v-5624e103]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.dataTab li .tabHead[data-v-5624e103]{height:31px;background:#e9ebf0}.dataTab li .tabHead[data-v-5624e103],.dataTab li .tabValue[data-v-5624e103]{padding:8px}.dataTab li .tabValue[data-v-5624e103]{height:35px}.box[data-v-1c347a00]{position:relative}.box .text1[data-v-1c347a00],.box .text2[data-v-1c347a00],.box .text3[data-v-1c347a00],.box .text4[data-v-1c347a00]{position:absolute}.box .text1[data-v-1c347a00]{top:30px;left:0}.box .text2[data-v-1c347a00]{top:30px;right:0}.box .text3[data-v-1c347a00]{bottom:10px;left:0}.box .text4[data-v-1c347a00]{bottom:10px;right:0}.defectScatterPlot[data-v-71b0f520]{height:calc(100vh - 206px);overflow:auto}.defectScatterPlot .split-pane[data-v-71b0f520]{height:100%;border-radius:8px}.defectScatterPlot .left-box[data-v-71b0f520]{margin-left:16px;padding:16px 16px 0;background-color:#fff}.defectScatterPlot .right-box[data-v-71b0f520]{margin-right:16px}.defectScatterPlot .right-box .inner-box[data-v-71b0f520]{height:100%;margin-left:16px;padding:16px 16px 0;border-radius:8px;overflow:auto;background-color:#fff;font-size:14px}.defectScatterPlot .right-box .inner-box .line1[data-v-71b0f520]{margin-bottom:18px}.defectScatterPlot .right-box .inner-box .line2[data-v-71b0f520]{margin-bottom:12px}.defectScatterPlot .right-box .inner-box .line2 .el-checkbox[data-v-71b0f520]{margin-right:8px}.defectScatterPlot .title[data-v-71b0f520]{font-size:14px;color:rgba(0,0,0,.85)}.defectScatterPlot .title[data-v-71b0f520]:before{content:"";display:inline-block;width:4px;height:16px;background:#0b58ff;border-radius:1px;vertical-align:middle;margin-right:8px} .bottom-box[data-v-5624e103]{overflow-x:auto;display:flex}.bottom-box .bottom-left[data-v-5624e103],.bottom-box .bottom-right[data-v-5624e103]{display:inline-block}.bottom-box .bottom-left[data-v-5624e103]{width:290px;margin-right:8px}.bottom-box .bottom-left .dataTab li[data-v-5624e103]{width:65px}.bottom-box .bottom-right[data-v-5624e103]{width:calc(100% - 300px)}.bottom-box .bottom-right .dataTab li[data-v-5624e103]{width:7.7%;min-width:60px}.title[data-v-5624e103]{display:inline-block;height:66px;width:30px;font-size:14px;line-height:14px;font-weight:500;padding:5px 8px 0;color:rgba(0,0,0,.85);background-color:#fafafa;border-top-left-radius:5px;border-bottom-left-radius:5px}.dataTab[data-v-5624e103]{display:flex;flex-flow:row nowrap}.dataTab li[data-v-5624e103]{font-size:14px;border-right:1px solid #e8e8e8;border-bottom:1px solid #e8e8e8}.dataTab li p[data-v-5624e103]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.dataTab li .tabHead[data-v-5624e103]{height:31px;background:#e9ebf0}.dataTab li .tabHead[data-v-5624e103],.dataTab li .tabValue[data-v-5624e103]{padding:8px}.dataTab li .tabValue[data-v-5624e103]{height:35px}.box[data-v-2ee4d940]{position:relative}.box .text1[data-v-2ee4d940],.box .text2[data-v-2ee4d940],.box .text3[data-v-2ee4d940],.box .text4[data-v-2ee4d940]{position:absolute}.box .text1[data-v-2ee4d940]{top:30px;left:0}.box .text2[data-v-2ee4d940]{top:30px;right:0}.box .text3[data-v-2ee4d940]{bottom:10px;left:0}.box .text4[data-v-2ee4d940]{bottom:10px;right:0}.defectScatterPlot[data-v-79550084]{height:calc(100vh - 206px);overflow:auto}.defectScatterPlot .split-pane[data-v-79550084]{height:100%;border-radius:8px}.defectScatterPlot .left-box[data-v-79550084]{margin-left:16px;padding:16px 16px 0;background-color:#fff}.defectScatterPlot .right-box[data-v-79550084]{margin-right:16px}.defectScatterPlot .right-box .inner-box[data-v-79550084]{height:100%;margin-left:16px;padding:16px 16px 0;border-radius:8px;overflow:auto;background-color:#fff;font-size:14px}.defectScatterPlot .right-box .inner-box .line1[data-v-79550084]{margin-bottom:18px}.defectScatterPlot .right-box .inner-box .line2[data-v-79550084]{margin-bottom:12px}.defectScatterPlot .right-box .inner-box .line2 .el-checkbox[data-v-79550084]{margin-right:8px}.defectScatterPlot .title[data-v-79550084]{font-size:14px;color:rgba(0,0,0,.85)}.defectScatterPlot .title[data-v-79550084]:before{content:"";display:inline-block;width:4px;height:16px;background:#0b58ff;border-radius:1px;vertical-align:middle;margin-right:8px}

View File

@ -1 +0,0 @@
.root-box[data-v-690601c2]{height:calc(29.2vh - 45.552px);width:calc(100vw - 280px);position:relative}.root-box .canvas[data-v-690601c2]{position:absolute}.bottom-box[data-v-46ad938a],.top-box[data-v-46ad938a]{background-color:#fff;margin:8px 16px 0!important;border-radius:4px}.top-box[data-v-46ad938a]{height:calc(29.2vh - 45.552px)}.bottom-box[data-v-46ad938a]{height:calc(70.8vh - 110.448px);padding:0 16px 16px}.bottom-box .area .title[data-v-46ad938a]{display:inline-block;font-size:14px;color:#000;margin:14px 0}.bottom-box .area .title[data-v-46ad938a]:before{content:"";display:inline-block;width:4px;height:16px;background:#0b58ff;border-radius:1px;margin-right:8px;vertical-align:middle}

2
dist/index.html vendored
View File

@ -1 +1 @@
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>tft-mes</title><script defer="defer" src="/js/chunk-vendors.a42f8636.js"></script><script defer="defer" src="/js/app.8a6daf4f.js"></script><link href="/css/app.68cbc19b.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but tft-mes doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html> <!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>tft-mes</title><script defer="defer" src="/js/chunk-vendors.a42f8636.js"></script><script defer="defer" src="/js/app.26ea233c.js"></script><link href="/css/app.68cbc19b.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but tft-mes doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>

1
dist/js/1076.409f47c3.js vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/js/1653.bc452354.js vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/js/1965.f053e7a5.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
"use strict";(self["webpackChunktft_mes"]=self["webpackChunktft_mes"]||[]).push([[2765],{2765:function(e,t,n){n.r(t),n.d(t,{default:function(){return m}});var a=function(){var e=this,t=e._self._c;return t("div",{staticClass:"maintenance-management"},[t("el-menu",{attrs:{"default-active":e.activeName,mode:"horizontal"},on:{select:e.handleSelect}},[t("el-menu-item",{attrs:{index:"plannedMaintenance"}},[e._v("计划维护")]),t("el-menu-item",{attrs:{index:"selfMaintenance"}},[e._v("自主维护")])],1),t("section",[t("router-view")],1)],1)},i=[],s={name:"MaintenanceManagement",data(){return{activeName:""}},mounted(){this.activeName=this.$route.name},methods:{handleSelect(e){this.$router.push({name:e})}},watch:{$route:{handler:function(e){this.activeName=e.name}}}},u=s,l=n(1001),c=(0,l.Z)(u,a,i,!1,null,null,null),m=c.exports}}]); "use strict";(self["webpackChunktft_mes"]=self["webpackChunktft_mes"]||[]).push([[3101],{3101:function(e,t,n){n.r(t),n.d(t,{default:function(){return m}});var a=function(){var e=this,t=e._self._c;return t("div",{staticClass:"maintenance-management"},[t("el-menu",{attrs:{"default-active":e.activeName,mode:"horizontal"},on:{select:e.handleSelect}},[t("el-menu-item",{attrs:{index:"plannedMaintenance"}},[e._v("计划维护")]),t("el-menu-item",{attrs:{index:"selfMaintenance"}},[e._v("自主维护")])],1),t("section",[t("router-view")],1)],1)},i=[],s={name:"MaintenanceManagement",data(){return{activeName:""}},mounted(){this.activeName=this.$route.name},methods:{handleSelect(e){this.$router.push({name:e})}},watch:{$route:{handler:function(e){this.activeName=e.name}}}},u=s,l=n(1001),c=(0,l.Z)(u,a,i,!1,null,null,null),m=c.exports}}]);

File diff suppressed because one or more lines are too long

1
dist/js/3518.f5220cf2.js vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/js/3712.70a56b6d.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
"use strict";(self["webpackChunktft_mes"]=self["webpackChunktft_mes"]||[]).push([[6354],{6354:function(t,e,a){a.r(e),a.d(e,{default:function(){return p}});var l=function(){var t=this,e=t._self._c;return e("el-row",{staticClass:"main-box",attrs:{gutter:10}},[e("el-col",{attrs:{span:4}},[e("div",{staticClass:"left-box"},[e("el-tree",{attrs:{data:t.data,"node-key":"id","default-expand-all":""},on:{"node-click":t.clickDevice}})],1)]),e("el-col",{attrs:{span:20}},[e("div",{staticClass:"right-box"},[e("search-bar",{attrs:{formConfigs:t.formConfig},on:{headBtnClick:t.buttonClick}}),e("base-table",{attrs:{page:t.listQuery.current,limit:t.listQuery.size,"table-props":t.tableProps,"table-data":t.tableData,"max-height":t.tableH}}),e("pagination",{attrs:{limit:t.listQuery.size,total:t.total}})],1)])],1)},i=[],r=a(475);const s=[{prop:"unitAndDevice",label:"单元/设备名称",width:300},{prop:"startTime",label:"开始时间"},{prop:"endTime",label:"结束时间"},{prop:"inputNum",label:"投入数量"},{prop:"outputNum",label:"输出数量"},{prop:"lossesNum",label:"损失数量"}];var n={name:"ProductionData",data(){return{data:[{id:1,label:"产线1",isAllowDrag:!1,children:[{id:4,label:"精切磨边",parent:1,isAllowDrag:!1,children:[{id:9,label:"精切磨边设备1",parent:4,isAllowDrag:!0},{id:10,label:"精切磨边设备2",parent:4,isAllowDrag:!0}]},{id:2,label:"磨边后清洗",isAllowDrag:!1,parent:1,children:[{id:5,label:"磨边后清洗设备1",parent:2,isAllowDrag:!0},{id:6,label:"磨边后清洗设备2",parent:2,isAllowDrag:!0}]}]}],defaultProps:{children:"children",label:"label"},formConfig:[{type:"datePicker",label:"开始时间",dateType:"date",format:"yyyy-MM-dd",valueFormat:"yyyy-MM-dd",placeholder:"开始时间",param:"testTime",defaultSelect:"2022-08-11"},{type:"button",btnName:"查询",name:"search",color:"primary"},{type:"separate"},{type:"button",btnName:"导出",name:"export",color:"primary",plain:!0}],tableProps:s,tableData:[],tableH:(0,r.NC)(275),total:0,listQuery:{current:1,size:20},centervisible:!1,addOrEditTitle:""}},mounted(){window.addEventListener("resize",(()=>{this.tableH=(0,r.NC)(275)}));for(let t=0;t<30;t++){let e={unitAndDevice:"精切磨边模块/精切模块",startTime:"2022-07-07",endTime:"2022-08-11"};e.inputNum=99+t,e.outputNum=100+t,e.lossesNum=t,this.tableData.push(e)}},methods:{getList(){console.log("getList")},clickDevice(){},buttonClick(t){switch(console.log(t),t.btnName){case"search":this.getList();break;default:}},successSubmit(t){alert(t),this.handleCancel()}}},o=n,d=a(1001),c=(0,d.Z)(o,l,i,!1,null,"97276a96",null),p=c.exports}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
dist/js/9705.aecc645f.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
dist/js/9796.a4b45557.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
dist/js/app.26ea233c.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -99,6 +99,25 @@ export function workOrderImportTemplate(data) {
export const uploadPath = '/api/order/workOrder/import' export const uploadPath = '/api/order/workOrder/import'
// 生产数据
export function proDataPage(data) {
return request({
url: '/order/ProData/page',
method: 'post',
data
})
}
export function proDataExport(data) {
return request({
url: '/order/ProData/export',
method: 'post',
responseType: 'blob',
data,
timeout: 60000
})
}
// 下架包装 // 下架包装
export function unloadPalletPage(data) { export function unloadPalletPage(data) {
return request({ return request({

View File

@ -481,15 +481,6 @@ export const routes = [
}, },
component: () => component: () =>
import('../views/qualityManagement/productTraceability') import('../views/qualityManagement/productTraceability')
},
{
path: 'finalInspectionDailyReport',
name: 'finalInspectionDailyReport',
meta: {
title: '终检日报表'
},
component: () =>
import('../views/qualityManagement/finalInspectionDailyReport')
} }
] ]
}, },

View File

@ -1,126 +1,131 @@
<template> <template>
<el-form ref="form" label-width="110px" :model="form"> <div>
<el-row :gutter="20"> <div style="text-align: center; margin-bottom: 10px; font-weight: bold">
<el-col :span="12"> {{ name }}
<el-form-item label="1月" prop="january"> </div>
<el-input-number <el-form ref="form" label-width="110px" :model="form">
v-model="form.january" <el-row :gutter="20">
:min="0" <el-col :span="12">
style="width: 300px" <el-form-item label="1月" prop="january">
></el-input-number> <el-input-number
</el-form-item> v-model="form.january"
</el-col> :min="0"
<el-col :span="12"> style="width: 100%"
<el-form-item label="2月" prop="february"> ></el-input-number>
<el-input-number </el-form-item>
v-model="form.february" </el-col>
:min="0" <el-col :span="12">
style="width: 300px" <el-form-item label="2月" prop="february">
></el-input-number> <el-input-number
</el-form-item> v-model="form.february"
</el-col> :min="0"
</el-row> style="width: 100%"
<el-row :gutter="20"> ></el-input-number>
<el-col :span="12"> </el-form-item>
<el-form-item label="3月" prop="march"> </el-col>
<el-input-number </el-row>
v-model="form.march" <el-row :gutter="20">
:min="0" <el-col :span="12">
style="width: 300px" <el-form-item label="3月" prop="march">
></el-input-number> <el-input-number
</el-form-item> v-model="form.march"
</el-col> :min="0"
<el-col :span="12"> style="width: 100%"
<el-form-item label="4月" prop="april"> ></el-input-number>
<el-input-number </el-form-item>
v-model="form.april" </el-col>
:min="0" <el-col :span="12">
style="width: 300px" <el-form-item label="4月" prop="april">
></el-input-number> <el-input-number
</el-form-item> v-model="form.april"
</el-col> :min="0"
</el-row> style="width: 100%"
<el-row :gutter="20"> ></el-input-number>
<el-col :span="12"> </el-form-item>
<el-form-item label="5月" prop="may"> </el-col>
<el-input-number </el-row>
v-model="form.may" <el-row :gutter="20">
:min="0" <el-col :span="12">
style="width: 300px" <el-form-item label="5月" prop="may">
></el-input-number> <el-input-number
</el-form-item> v-model="form.may"
</el-col> :min="0"
<el-col :span="12"> style="width: 100%"
<el-form-item label="6月" prop="june"> ></el-input-number>
<el-input-number </el-form-item>
v-model="form.june" </el-col>
:min="0" <el-col :span="12">
style="width: 300px" <el-form-item label="6月" prop="june">
></el-input-number> <el-input-number
</el-form-item> v-model="form.june"
</el-col> :min="0"
</el-row> style="width: 100%"
<el-row :gutter="20"> ></el-input-number>
<el-col :span="12"> </el-form-item>
<el-form-item label="7月" prop="july"> </el-col>
<el-input-number </el-row>
v-model="form.july" <el-row :gutter="20">
:min="0" <el-col :span="12">
style="width: 300px" <el-form-item label="7月" prop="july">
></el-input-number> <el-input-number
</el-form-item> v-model="form.july"
</el-col> :min="0"
<el-col :span="12"> style="width: 100%"
<el-form-item label="8月" prop="august"> ></el-input-number>
<el-input-number </el-form-item>
v-model="form.august" </el-col>
:min="0" <el-col :span="12">
style="width: 300px" <el-form-item label="8月" prop="august">
></el-input-number> <el-input-number
</el-form-item> v-model="form.august"
</el-col> :min="0"
</el-row> style="width: 100%"
<el-row :gutter="20"> ></el-input-number>
<el-col :span="12"> </el-form-item>
<el-form-item label="9月" prop="september"> </el-col>
<el-input-number </el-row>
v-model="form.september" <el-row :gutter="20">
:min="0" <el-col :span="12">
style="width: 300px" <el-form-item label="9月" prop="september">
></el-input-number> <el-input-number
</el-form-item> v-model="form.september"
</el-col> :min="0"
<el-col :span="12"> style="width: 100%"
<el-form-item label="10月" prop="october"> ></el-input-number>
<el-input-number </el-form-item>
v-model="form.october" </el-col>
:min="0" <el-col :span="12">
style="width: 300px" <el-form-item label="10月" prop="october">
></el-input-number> <el-input-number
</el-form-item> v-model="form.october"
</el-col> :min="0"
</el-row> style="width: 100%"
<el-row :gutter="20"> ></el-input-number>
<el-col :span="12"> </el-form-item>
<el-form-item label="11月" prop="november"> </el-col>
<el-input-number </el-row>
v-model="form.november" <el-row :gutter="20">
:min="0" <el-col :span="12">
style="width: 300px" <el-form-item label="11月" prop="november">
></el-input-number> <el-input-number
</el-form-item> v-model="form.november"
</el-col> :min="0"
<el-col :span="12"> style="width: 100%"
<el-form-item label="12月" prop="december"> ></el-input-number>
<el-input-number </el-form-item>
v-model="form.december" </el-col>
:min="0" <el-col :span="12">
style="width: 300px" <el-form-item label="12月" prop="december">
></el-input-number> <el-input-number
</el-form-item> v-model="form.december"
</el-col> :min="0"
</el-row> style="width: 100%"
</el-form> ></el-input-number>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</template> </template>
<script> <script>
import { import {
@ -131,16 +136,18 @@ export default {
name: 'productPowerEdit', name: 'productPowerEdit',
data() { data() {
return { return {
form: {} form: {},
name: ''
} }
}, },
mounted() {}, mounted() {},
methods: { methods: {
init(param) { init(param) {
this.name = param.name
let date = new Date(param.timePosition) let date = new Date(param.timePosition)
let year = date.getFullYear() let year = date.getFullYear()
performanceAnalysisPlan({ performanceAnalysisPlan({
name: param.name, name: this.name,
year: year year: year
}).then((res) => { }).then((res) => {
console.log(res) console.log(res)
@ -150,6 +157,7 @@ export default {
}) })
}, },
submitForm() { submitForm() {
console.log(this.form)
performanceUpdatePlan({ ...this.form }).then((res) => { performanceUpdatePlan({ ...this.form }).then((res) => {
if (res.code === 0) { if (res.code === 0) {
this.$message({ this.$message({

View File

@ -40,7 +40,7 @@
<el-col :span="6"> <el-col :span="6">
<div class="top-right"> <div class="top-right">
<div> <div>
<span class="title">{{ unitName }}单元计划产能</span> <span class="title">{{ eqName }}计划产能</span>
<svg-icon <svg-icon
icon-class="device_edit" icon-class="device_edit"
class="icon-style" class="icon-style"
@ -81,6 +81,7 @@
<base-dialog <base-dialog
dialogTitle="产能维护" dialogTitle="产能维护"
:dialogVisible="centervisible" :dialogVisible="centervisible"
:close-on-click-modal="false"
@cancel="handleCancel" @cancel="handleCancel"
@confirm="handleConfirm" @confirm="handleConfirm"
:before-close="handleCancel" :before-close="handleCancel"
@ -101,7 +102,7 @@ import deviceOeeLine from './../components/deviceOeeLine.vue'
// import moment from 'moment' // import moment from 'moment'
const tableProps = [ const tableProps = [
{ {
prop: 'date', prop: 'recordDate',
label: '时间', label: '时间',
minWidth: 160, minWidth: 160,
filter: timeFormatter filter: timeFormatter
@ -173,7 +174,7 @@ export default {
children: 'children', children: 'children',
label: 'name' label: 'name'
}, },
unitName: '', eqName: '',
chooseMonth: '', chooseMonth: '',
formConfig: [ formConfig: [
{ {
@ -231,10 +232,10 @@ export default {
getTree() { getTree() {
getTreeData().then((res) => { getTreeData().then((res) => {
this.treeData = res.data this.treeData = res.data
this.unitName = res.data[0].children[0].name this.eqName = res.data[0].children[0].children[0].name
this.listQuery.name = this.unitName this.listQuery.name = this.eqName
setTimeout(() => { setTimeout(() => {
this.$refs.deviceTree.setCurrentKey(this.unitName) this.$refs.deviceTree.setCurrentKey(this.eqName)
}, 100) }, 100)
this.getList() this.getList()
this.getPlan() this.getPlan()
@ -274,30 +275,28 @@ export default {
{ month: '11月', value: null, type: 'november' }, { month: '11月', value: null, type: 'november' },
{ month: '12月', value: null, type: 'december' } { month: '12月', value: null, type: 'december' }
] ]
performanceAnalysisPlan({ name: this.unitName, year: year }).then( performanceAnalysisPlan({ name: this.eqName, year: year }).then((res) => {
(res) => { if (res.code === 0 && !!res.data) {
if (res.code === 0 && !!res.data) { let obj = res.data
let obj = res.data for (let i = 0; i < arr.length; i++) {
for (let i = 0; i < arr.length; i++) { arr[i].value = obj[arr[i].type]
arr[i].value = obj[arr[i].type] }
} } else {
} else { for (let i = 0; i < arr.length; i++) {
for (let i = 0; i < arr.length; i++) { arr[i].value = null
arr[i].value = null
}
} }
this.tableData2 = arr.slice(0, 6)
this.tableData3 = arr.slice(6, 12)
} }
) this.tableData2 = arr.slice(0, 6)
this.tableData3 = arr.slice(6, 12)
})
}, },
clickDevice(val) { clickDevice(val) {
if (val.children && val.parent) { if (!val.children) {
// //
this.listQuery.name = val.name this.listQuery.name = val.name
this.unitName = val.name this.eqName = val.name
this.getList() // this.getList()
this.getPlan() // this.getPlan()
} }
}, },
editPower() { editPower() {

View File

@ -64,7 +64,7 @@
marginBottom: 5 * beilv + 'px' marginBottom: 5 * beilv + 'px'
}" }"
> >
{{ productMsg.finishNum }} {{ productMsg.realProductNum }}
</p> </p>
<p class="words">生产数量</p> <p class="words">生产数量</p>
</div> </div>

View File

@ -1,49 +1,74 @@
<template> <template>
<el-drawer title="查看详情" :visible.sync="visible" size="70%"> <div>
<div> <el-drawer title="查看详情" :visible.sync="visible" size="70%">
<base-table <div>
:page="1" <base-table
:limit="1000" :page="1"
:table-props="tableProps" :limit="1000"
:table-data="tableData" :table-props="tableProps"
:max-height="tableH" :table-data="tableData"
> :max-height="tableH"
<method-btn >
v-if="tableBtn.length" <method-btn
slot="handleBtn" v-if="tableBtn.length"
:width="110" slot="handleBtn"
label="操作" :width="110"
:method-list="tableBtn" label="操作"
@clickBtn="handleClick" :method-list="tableBtn"
/> @clickBtn="handleClick"
</base-table> />
<pagination :limit="listQuery.size" :total="total" /> </base-table>
<el-drawer <pagination :limit="listQuery.size" :total="total" />
title="玻璃ID追溯" </div>
:append-to-body="true" </el-drawer>
:visible.sync="historyVisible" <base-dialog
size="50%" dialogTitle="玻璃ID追溯"
> :dialogVisible="historyVisible"
<el-form ref="form" :model="form" label-width="150px"> :close-on-click-modal="false"
<el-form-item label="初投玻璃ID:">{{ :before-close="handleCancel"
form.initialGlassId >
}}</el-form-item> <el-form ref="historyForm" :model="form" label-width="150px">
<el-form-item label="第一次复磨玻璃ID:">{{ <el-row :gutter="20">
form.reloadOne <el-col :span="12">
}}</el-form-item> <el-form-item label="初投玻璃ID:">
<el-form-item label="第二次复磨玻璃ID:">{{ <el-input v-model="form.initialGlassId" disabled></el-input
form.reloadTwo ></el-form-item>
}}</el-form-item> </el-col>
<el-form-item label="第三次复磨玻璃ID:">{{ <el-col :span="12">
form.reloadThree <el-form-item label="第一次复磨玻璃ID:">
}}</el-form-item> <el-input v-model="form.initialGlassId" disabled></el-input
<el-form-item label="第四次复磨玻璃ID:">{{ ></el-form-item>
form.reloadFour </el-col>
}}</el-form-item> </el-row>
</el-form> <el-row :gutter="20">
</el-drawer> <el-col :span="12">
</div> <el-form-item label="第二次复磨玻璃ID:">
</el-drawer> <el-input v-model="form.reloadTwo" disabled></el-input
></el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="第三次复磨玻璃ID:">
<el-input v-model="form.reloadThree" disabled></el-input
></el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="第四次复磨玻璃ID:">
<el-input v-model="form.reloadFour" disabled></el-input
></el-form-item>
</el-col>
</el-row>
</el-form>
<el-row slot="footer" type="flex" justify="end">
<el-col :span="12">
<el-button size="small" class="btnTextStyle" @click="handleCancel"
>取消</el-button
>
</el-col>
</el-row>
</base-dialog>
</div>
</template> </template>
<script> <script>
import { tableHeight, timeFormatter } from '@/utils/index' import { tableHeight, timeFormatter } from '@/utils/index'
@ -139,8 +164,10 @@ export default {
this.form.reloadFour = res.data.reloadFour ? res.data.reloadFour : '-' this.form.reloadFour = res.data.reloadFour ? res.data.reloadFour : '-'
}) })
}, },
handleCloseProcess() {}, handleCancel() {
handleCloseDevice() {} this.$refs.historyForm.resetFields()
this.historyVisible = false
}
} }
} }
</script> </script>

View File

@ -84,7 +84,7 @@
fontSize: 27 * beilv + 'px', fontSize: 27 * beilv + 'px',
marginBottom: 6 * beilv + 'px' marginBottom: 6 * beilv + 'px'
}" }"
>{{ detailMsg.finishNum }}</span >{{ detailMsg.realProductNum }}</span
> >
<span class="tip" :style="{ fontSize: 16 * beilv + 'px' }" <span class="tip" :style="{ fontSize: 16 * beilv + 'px' }"
>完成数量</span >完成数量</span

View File

@ -3,10 +3,13 @@
<el-col :span="4"> <el-col :span="4">
<div class="left-box"> <div class="left-box">
<el-tree <el-tree
:data="data" :data="treeData"
node-key="id" node-key="name"
:props="defaultProps"
default-expand-all default-expand-all
:highlight-current="true"
@node-click="clickDevice" @node-click="clickDevice"
ref="deviceTree"
> >
</el-tree> </el-tree>
</div> </div>
@ -27,31 +30,38 @@
</el-row> </el-row>
</template> </template>
<script> <script>
import { tableHeight } from '@/utils/index' import { tableHeight, timeFormatter } from '@/utils/index'
import { getTreeData } from '@/api/app'
import { proDataPage, proDataExport } from '@/api/productionScheduling'
import moment from 'moment'
const tableProps = [ const tableProps = [
{ {
prop: 'unitAndDevice', prop: 'name',
label: '单元/设备名称', label: '单元/设备名称',
width: 300 width: 300
}, },
{ {
prop: 'startTime', prop: 'startTime',
label: '开始时间' label: '开始时间',
minWidth: 160,
filter: timeFormatter
}, },
{ {
prop: 'endTime', prop: 'endTime',
label: '结束时间' label: '结束时间',
minWidth: 160,
filter: timeFormatter
}, },
{ {
prop: 'inputNum', prop: 'glassInNum',
label: '投入数量' label: '投入数量'
}, },
{ {
prop: 'outputNum', prop: 'glassOutNum',
label: '输出数量' label: '输出数量'
}, },
{ {
prop: 'lossesNum', prop: 'glassMissNum',
label: '损失数量' label: '损失数量'
} }
] ]
@ -59,69 +69,24 @@ export default {
name: 'ProductionData', name: 'ProductionData',
data() { data() {
return { return {
data: [ treeData: [],
{
id: 1,
label: '产线1',
isAllowDrag: false,
children: [
{
id: 4,
label: '精切磨边',
parent: 1,
isAllowDrag: false,
children: [
{
id: 9,
label: '精切磨边设备1',
parent: 4,
isAllowDrag: true
},
{
id: 10,
label: '精切磨边设备2',
parent: 4,
isAllowDrag: true
}
]
},
{
id: 2,
label: '磨边后清洗',
isAllowDrag: false,
parent: 1,
children: [
{
id: 5,
label: '磨边后清洗设备1',
parent: 2,
isAllowDrag: true
},
{
id: 6,
label: '磨边后清洗设备2',
parent: 2,
isAllowDrag: true
}
]
}
]
}
],
defaultProps: { defaultProps: {
children: 'children', children: 'children',
label: 'label' label: 'name'
}, },
formConfig: [ formConfig: [
{ {
type: 'datePicker', type: 'datePicker',
label: '开始时间', label: '开始时间',
dateType: 'date', dateType: 'datetimerange',
format: 'yyyy-MM-dd', format: 'yyyy-MM-dd HH:mm:ss',
valueFormat: 'yyyy-MM-dd', valueFormat: 'yyyy-MM-ddTHH:mm:ss',
placeholder: '开始时间', rangeSeparator: '-',
param: 'testTime', startPlaceholder: '开始时间',
defaultSelect: '2022-08-11' endPlaceholder: '结束时间',
param: 'timeVal',
defaultSelect: [],
width: 350
}, },
{ {
type: 'button', type: 'button',
@ -146,7 +111,9 @@ export default {
total: 0, total: 0,
listQuery: { listQuery: {
current: 1, current: 1,
size: 20 size: 20,
unitName: '',
eqName: ''
}, },
centervisible: false, centervisible: false,
addOrEditTitle: '' addOrEditTitle: ''
@ -156,29 +123,80 @@ export default {
window.addEventListener('resize', () => { window.addEventListener('resize', () => {
this.tableH = tableHeight(275) this.tableH = tableHeight(275)
}) })
for (let i = 0; i < 30; i++) { this.formConfig[0].defaultSelect = [
let obj = {} moment().format('yyyy-MM-DD') + 'T00:00:00',
obj.unitAndDevice = '精切磨边模块/精切模块' moment().format('yyyy-MM-DD') + 'T23:59:59'
obj.startTime = '2022-07-07' ]
obj.endTime = '2022-08-11' this.listQuery.startTime = moment().format('yyyy-MM-DD') + 'T00:00:00'
obj.inputNum = 99 + i this.listQuery.endTime = moment().format('yyyy-MM-DD') + 'T23:59:59'
obj.outputNum = 100 + i this.getTree()
obj.lossesNum = i
this.tableData.push(obj)
}
}, },
methods: { methods: {
getList() { getTree() {
console.log('getList') getTreeData().then((res) => {
this.treeData = res.data
this.listQuery.unitName = res.data[0].children[0].name
setTimeout(() => {
this.$refs.deviceTree.setCurrentKey(this.listQuery.unitName)
}, 100)
this.getList()
})
},
getList() {
proDataPage({ ...this.listQuery }).then((res) => {
console.log(res)
if (res.code === 0 && res.data) {
this.tableData = res.data.records
this.total = res.data.total
} else {
this.tableData = []
this.total = 0
}
})
},
clickDevice(val) {
if (!val.children) {
//
this.listQuery.eqName = val.name
this.listQuery.unitName = ''
} else if (val.children && val.parent) {
this.listQuery.eqName = ''
this.listQuery.unitName = val.name
}
this.getList()
}, },
clickDevice() {},
buttonClick(val) { buttonClick(val) {
console.log(val) console.log(val)
switch (val.btnName) { switch (val.btnName) {
case 'search': case 'search':
this.listQuery.startTime = val.timeVal ? val.timeVal[0] : ''
this.listQuery.endTime = val.timeVal ? val.timeVal[1] : ''
this.getList() this.getList()
break break
default: default:
proDataExport({ ...this.listQuery }).then((response) => {
console.log(response)
let fileName = ''
const contentDisposition = response.headers['content-disposition']
if (contentDisposition) {
fileName = decodeURIComponent(
contentDisposition.slice(
contentDisposition.indexOf('filename=') + 9
)
)
}
const blob = new Blob([response.data])
const reader = new FileReader()
reader.readAsDataURL(blob)
reader.onload = (e) => {
const a = document.createElement('a')
a.download = fileName
a.href = e.target.result
document.body.appendChild(a)
a.click()
document.body.removeChild(a)
}
})
} }
}, },
successSubmit(res) { successSubmit(res) {

View File

@ -113,7 +113,7 @@
marginBottom: 6 * beilv + 'px' marginBottom: 6 * beilv + 'px'
}" }"
> >
{{ productMsg.finishNum }} {{ productMsg.realProductNum }}
</p> </p>
<p class="words" :style="{ fontSize: 14 * beilv + 'px' }"> <p class="words" :style="{ fontSize: 14 * beilv + 'px' }">
生产数量 生产数量

View File

@ -1,30 +0,0 @@
<template>
<div>
<el-tag size="medium">{{ showTotal }}</el-tag>
</div>
</template>
<script>
export default {
name: 'TableTags',
data() {
return {
showTotal: ''
}
},
props: {
injectData: {
type: Object,
default: () => ({})
}
},
mounted() {
console.log(this.injectData)
console.log(this.injectData.prop)
if (this.injectData.prop === 'ct1') {
this.showTotal = this.injectData.ct1
} else if (this.injectData.prop === 'ct2') {
this.showTotal = this.injectData.ct2
}
}
}
</script>

View File

@ -34,7 +34,6 @@ export default {
}, },
data() { data() {
return { return {
chartDom: '',
chart: '', chart: '',
chartHeight: tableHeight(446), chartHeight: tableHeight(446),
list: [ list: [
@ -120,8 +119,8 @@ export default {
) { ) {
this.chart.dispose() // Dom this.chart.dispose() // Dom
} }
this.chartDom = document.getElementById('defectScatterPlotChart') var chartDom = document.getElementById('defectScatterPlotChart')
this.chart = echarts.init(this.chartDom) this.chart = echarts.init(chartDom)
let legendList = [] let legendList = []
let seriesList = [] let seriesList = []
for (let i in this.defectMsg) { for (let i in this.defectMsg) {
@ -130,8 +129,8 @@ export default {
let obj = {} let obj = {}
for (let j of this.defectMsg[i]) { for (let j of this.defectMsg[i]) {
let arr2 = [] let arr2 = []
arr2.push(parseInt(j.xpos))
arr2.push(parseInt(j.ypos)) arr2.push(parseInt(j.ypos))
arr2.push(parseInt(j.xpos))
arr1.push(arr2) arr1.push(arr2)
} }
obj.name = this.transLabel(i) obj.name = this.transLabel(i)
@ -169,6 +168,10 @@ export default {
}, },
itemWidth: 10 // itemWidth: 10 //
}, },
brush: {
toolbox: ['rect', 'clear'],
xAxisIndex: 0
},
grid: { grid: {
x: 60, x: 60,
y: 60, y: 60,
@ -187,7 +190,10 @@ export default {
lineStyle: { lineStyle: {
color: 'rgba(0, 0, 0, 0.15)' color: 'rgba(0, 0, 0, 0.15)'
} }
} },
max: 2600,
min: 0,
interval: 100
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
@ -201,30 +207,76 @@ export default {
lineStyle: { lineStyle: {
color: 'rgba(0, 0, 0, 0.15)' color: 'rgba(0, 0, 0, 0.15)'
} }
} },
max: 2250,
min: 0,
interval: 100
}, },
series: seriesList series: seriesList
// series: [
// {
// name: 'S',
// type: 'scatter',
// data: dataS,
// symbolSize: 5
// },
// {
// name: 'M',
// type: 'scatter',
// data: dataM,
// symbolSize: 5
// },
// {
// name: 'L',
// type: 'scatter',
// data: dataL,
// symbolSize: 5
// }
// ]
} }
let that = this
this.chart.on('brushSelected', function (params) {
var brushed = []
var brushComponent = params.batch[0]
var total = 0
var xLong = 0
var yLong = 0
if (params.batch[0].areas[0]) {
xLong = parseInt(
params.batch[0].areas[0].coordRange[0][1] -
params.batch[0].areas[0].coordRange[0][0]
)
yLong = parseInt(
params.batch[0].areas[0].coordRange[1][1] -
params.batch[0].areas[0].coordRange[1][0]
)
}
for (var sIdx = 0; sIdx < brushComponent.selected.length; sIdx++) {
var rawIndices = brushComponent.selected[sIdx].dataIndex.length
total += rawIndices
brushed.push(
brushComponent.selected[sIdx].seriesName + ' : ' + rawIndices
)
}
brushed.push('总计 : ' + total)
that.chart.setOption({
title: {
backgroundColor: 'rgba(0, 0, 0, 0.5)',
text: 'SELECTED DATA: \n' + brushed.join('\n'),
right: params.batch[0].areas[0] ? '10%' : -100,
bottom: params.batch[0].areas[0] ? 0 : -500,
textStyle: {
fontSize: 12,
fontWeight: 'normal',
color: '#fff'
}
},
graphic: [
{
type: 'group',
left: params.batch[0].areas[0]
? params.batch[0].areas[0].range[0][0]
: -100,
top: params.batch[0].areas[0]
? params.batch[0].areas[0].range[1][1] + 5
: -100,
children: [
{
type: 'text',
z: 100,
style: {
fill: '#333',
width: 220,
overflow: 'break',
text: xLong + '*' + yLong,
font: '12px Microsoft YaHei'
}
}
]
}
]
})
})
option && this.chart.setOption(option) option && this.chart.setOption(option)
} }
} }

View File

@ -1,545 +0,0 @@
<template>
<div class="page-box">
<search-bar
:formConfigs="formConfig"
ref="searchBarForm"
@headBtnClick="buttonClick"
/>
<base-table
:page="listQuery.current"
:limit="listQuery.size"
:table-props="tableProp"
:table-data="tableData"
:span-method="spanMethod"
:max-height="tableH"
/>
</div>
</template>
<script>
import { tableHeight } from '@/utils/index'
import TableTags from './components/TableTags.vue'
const tableProp = [
{
prop: 'process',
label: '区域',
fixed: true
},
{
prop: 'equipmentName',
label: '项目指标',
minWidth: 150,
fixed: true
},
{
label: '白班(8:00-20:00)',
align: 'center',
children: [
{ prop: 'b1', label: '7-8', width: 60 },
{ prop: 'b2', label: '8-9', width: 60 },
{ prop: 'b3', label: '9-10', width: 60 },
{ prop: 'b4', label: '10-11', width: 60 },
{ prop: 'b5', label: '11-12', width: 60 },
{ prop: 'b6', label: '12-13', width: 60 },
{ prop: 'b7', label: '13-14', width: 60 },
{ prop: 'b8', label: '14-15', width: 60 },
{ prop: 'b9', label: '15-16', width: 60 },
{ prop: 'b10', label: '16-17', width: 60 },
{ prop: 'b11', label: '17-18', width: 60 },
{ prop: 'b12', label: '18-19', width: 60 },
{ prop: 'ct1', label: '合计', subcomponent: TableTags }
]
},
{
label: '夜班(20:00-8:00)',
align: 'center',
children: [
{ prop: 'y1', label: '19-20', width: 60 },
{ prop: 'y2', label: '20-21', width: 60 },
{ prop: 'y3', label: '21-22', width: 60 },
{ prop: 'y4', label: '22-23', width: 60 },
{ prop: 'y5', label: '23-24', width: 60 },
{ prop: 'y6', label: '0-1', width: 60 },
{ prop: 'y7', label: '1-2', width: 60 },
{ prop: 'y8', label: '2-3', width: 60 },
{ prop: 'y9', label: '3-4', width: 60 },
{ prop: 'y10', label: '4-5', width: 60 },
{ prop: 'y11', label: '5-6', width: 60 },
{ prop: 'y12', label: '6-7', width: 60 },
{ prop: 'ct2', label: '合计', subcomponent: TableTags }
]
}
]
export default {
name: 'FinalInspectionDailyReport',
data() {
return {
formConfig: [
{
type: 'datePicker',
label: '日期选择',
dateType: 'date',
format: 'yyyy-MM-dd',
valueFormat: 'yyyy-MM-dd',
param: 'timeVal',
width: 200
},
{
type: 'button',
btnName: '查询',
name: 'search',
color: 'primary'
},
{
type: 'separate'
},
{
type: 'button',
btnName: '导出',
name: 'export',
color: 'primary',
plain: true
}
],
listQuery: {
current: 1,
size: 20
},
tableH: tableHeight(300),
tableProp,
tableData: [],
span: []
}
},
mounted() {
window.addEventListener('resize', () => {
this.tableH = tableHeight(300)
})
this.getData()
},
methods: {
buttonClick(val) {
console.log(val)
},
getData() {
;(this.tableData = [
{
b1: 1,
b2: 2,
b3: 3,
b4: 4,
b5: 5,
b6: 6,
b7: 7,
b8: 8,
b9: 9,
b10: 10,
b11: 11,
b12: 12,
ct1: 108,
y1: 1,
y2: 2,
y3: 3,
y4: 4,
y5: 5,
y6: 6,
y7: 7,
y8: 8,
y9: 9,
y10: 10,
y11: 11,
y12: 12,
ct2: 103,
equipmentName: '上片投入数',
process: '综合'
},
{
b1: 1,
b2: 2,
b3: 3,
b4: 4,
b5: 5,
b6: 6,
b7: 7,
b8: 8,
b9: 9,
b10: 10,
b11: 11,
b12: 12,
ct1: 102,
y1: 1,
y2: 2,
y3: 3,
y4: 4,
y5: 5,
y6: 6,
y7: 7,
y8: 8,
y9: 9,
y10: 10,
y11: 11,
y12: 12,
ct2: 99,
equipmentName: '机器人投入数',
process: '综合'
},
{
b1: 1,
b2: 2,
b3: 3,
b4: 4,
b5: 5,
b6: 6,
b7: 7,
b8: 8,
b9: 9,
b10: 10,
b11: 11,
b12: 12,
ct1: 100,
y1: 1,
y2: 2,
y3: 3,
y4: 4,
y5: 5,
y6: 6,
y7: 7,
y8: 8,
y9: 9,
y10: 10,
y11: 11,
y12: 12,
ct2: 100,
equipmentName: '良品总投入数',
process: '综合'
},
{
b1: 1,
b2: 2,
b3: 3,
b4: 4,
b5: 5,
b6: 6,
b7: 7,
b8: 8,
b9: 9,
b10: 10,
b11: 11,
b12: 12,
ct1: 100,
y1: 1,
y2: 2,
y3: 3,
y4: 4,
y5: 5,
y6: 6,
y7: 7,
y8: 8,
y9: 9,
y10: 10,
y11: 11,
y12: 12,
ct2: 100,
equipmentName: '工序损耗',
process: '综合'
},
{
b1: 1,
b2: 2,
b3: 3,
b4: 4,
b5: 5,
b6: 6,
b7: 7,
b8: 8,
b9: 9,
b10: 10,
b11: 11,
b12: 12,
ct1: 100,
y1: 1,
y2: 2,
y3: 3,
y4: 4,
y5: 5,
y6: 6,
y7: 7,
y8: 8,
y9: 9,
y10: 10,
y11: 11,
y12: 12,
ct2: 100,
equipmentName: '后清洗输出',
process: '综合'
},
{
b1: 1,
b2: 2,
b3: 3,
b4: 4,
b5: 5,
b6: 6,
b7: 7,
b8: 8,
b9: 9,
b10: 10,
b11: 11,
b12: 12,
ct1: 100,
y1: 1,
y2: 2,
y3: 3,
y4: 4,
y5: 5,
y6: 6,
y7: 7,
y8: 8,
y9: 9,
y10: 10,
y11: 11,
y12: 12,
ct2: 100,
equipmentName: '上片损失',
process: '上片'
},
{
b1: 1,
b2: 2,
b3: 3,
b4: 4,
b5: 5,
b6: 6,
b7: 7,
b8: 8,
b9: 9,
b10: 10,
b11: 11,
b12: 12,
ct1: 100,
y1: 1,
y2: 2,
y3: 3,
y4: 4,
y5: 5,
y6: 6,
y7: 7,
y8: 8,
y9: 9,
y10: 10,
y11: 11,
y12: 12,
ct2: 100,
equipmentName: '精切损失',
process: '精切'
},
{
b1: 1,
b2: 2,
b3: 3,
b4: 4,
b5: 5,
b6: 6,
b7: 7,
b8: 8,
b9: 9,
b10: 10,
b11: 11,
b12: 12,
ct1: 100,
y1: 1,
y2: 2,
y3: 3,
y4: 4,
y5: 5,
y6: 6,
y7: 7,
y8: 8,
y9: 9,
y10: 10,
y11: 11,
y12: 12,
ct2: 100,
equipmentName: '精切抽检',
process: '精切'
},
{
b1: 1,
b2: 2,
b3: 3,
b4: 4,
b5: 5,
b6: 6,
b7: 7,
b8: 8,
b9: 9,
b10: 10,
b11: 11,
b12: 12,
ct1: 100,
y1: 1,
y2: 2,
y3: 3,
y4: 4,
y5: 5,
y6: 6,
y7: 7,
y8: 8,
y9: 9,
y10: 10,
y11: 11,
y12: 12,
ct2: 100,
equipmentName: '磨边损失',
process: '磨边'
},
{
b1: 1,
b2: 2,
b3: 3,
b4: 4,
b5: 5,
b6: 6,
b7: 7,
b8: 8,
b9: 9,
b10: 10,
b11: 11,
b12: 12,
ct1: 100,
y1: 1,
y2: 2,
y3: 3,
y4: 4,
y5: 5,
y6: 6,
y7: 7,
y8: 8,
y9: 9,
y10: 10,
y11: 11,
y12: 12,
ct2: 100,
equipmentName: '磨边抽检',
process: '磨边'
},
{
b1: 1,
b2: 2,
b3: 3,
b4: 4,
b5: 5,
b6: 6,
b7: 7,
b8: 8,
b9: 9,
b10: 10,
b11: 11,
b12: 12,
ct1: 100,
y1: 1,
y2: 2,
y3: 3,
y4: 4,
y5: 5,
y6: 6,
y7: 7,
y8: 8,
y9: 9,
y10: 10,
y11: 11,
y12: 12,
ct2: 100,
equipmentName: '前清洗损失',
process: '前清洗'
},
{
b1: 1,
b2: 2,
b3: 3,
b4: 4,
b5: 5,
b6: 6,
b7: 7,
b8: 8,
b9: 9,
b10: 10,
b11: 11,
b12: 12,
ct1: 100,
y1: 1,
y2: 2,
y3: 3,
y4: 4,
y5: 5,
y6: 6,
y7: 7,
y8: 8,
y9: 9,
y10: 10,
y11: 11,
y12: 12,
ct2: 100,
equipmentName: '边检损失',
process: '边检'
},
{
b1: 1,
b2: 2,
b3: 3,
b4: 4,
b5: 5,
b6: 6,
b7: 7,
b8: 8,
b9: 9,
b10: 10,
b11: 11,
b12: 12,
ct1: 100,
y1: 1,
y2: 2,
y3: 3,
y4: 4,
y5: 5,
y6: 6,
y7: 7,
y8: 8,
y9: 9,
y10: 10,
y11: 11,
y12: 12,
ct2: 100,
equipmentName: '复投损失',
process: '复投'
}
]),
this.getSpanArr(this.tableData)
},
getSpanArr(data) {
for (var i = 0; i < data.length; i++) {
if (i === 0) {
this.span.push(1)
this.index = 0
} else {
if (data[i].process === data[i - 1].process) {
this.span[this.index] += 1
this.span.push(0)
} else {
this.span.push(1)
this.index = i
}
}
}
},
spanMethod({ rowIndex, columnIndex }) {
if (columnIndex === 1) {
const _row = this.span[rowIndex]
return {
rowspan: _row,
colspan: 1
}
}
}
}
}
</script>

View File

@ -92,10 +92,13 @@ const tableProps = [
fixed: 'left', fixed: 'left',
minWidth: 120 minWidth: 120
}, },
{
prop: 'package',
label: '包装工位'
},
{ {
prop: 'testTime', prop: 'testTime',
label: '检验时间', label: '检验时间',
fixed: 'left',
filter: timeFormatter, filter: timeFormatter,
minWidth: 160 minWidth: 160
}, },

View File

@ -29,7 +29,7 @@
<div v-if="reportTitle"> <div v-if="reportTitle">
<span class="title">{{ reportTitle }}</span> <span class="title">{{ reportTitle }}</span>
</div> </div>
<div class="table-box" v-if="reportTitle === '玻璃基板缺陷统计'"> <div class="table-box" v-if="reportTitle === '玻璃基板品质报表'">
<glass-quality-report :tableData="glassQualityArr" /> <glass-quality-report :tableData="glassQualityArr" />
</div> </div>
<div class="table-box" v-if="reportTitle === '厚度汇总报表'"> <div class="table-box" v-if="reportTitle === '厚度汇总报表'">
@ -41,6 +41,18 @@
:tableData2="packReportArr" :tableData2="packReportArr"
/> />
</div> </div>
<div class="table-box" v-if="reportTitle === '玻璃判废统计表'">
<glass-waste-report :tableData="wasteReportArr" />
</div>
<div class="table-box" v-if="reportTitle === '判废机组统计表'">
<waste-machine-report :tableData="wasteMachineArr" />
</div>
<div class="table-box" v-if="reportTitle === '判废位置统计表'">
<waste-location-report :tableData="wasteLocationArr" />
</div>
<div class="table-box" v-if="reportTitle === '玻璃基板缺陷报表'">
<glass-defect-report :tableData="glassDefectArr" />
</div>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
@ -60,6 +72,10 @@ import {
import glassQualityReport from './finalInspectionDataReport/glassQualityReport.vue' import glassQualityReport from './finalInspectionDataReport/glassQualityReport.vue'
import glassThickReport from './finalInspectionDataReport/glassThickReport.vue' import glassThickReport from './finalInspectionDataReport/glassThickReport.vue'
import glassPackReport from './finalInspectionDataReport/glassPackReport.vue' import glassPackReport from './finalInspectionDataReport/glassPackReport.vue'
import glassWasteReport from './finalInspectionDataReport/glassWasteReport.vue'
import wasteMachineReport from './finalInspectionDataReport/wasteMachineReport.vue'
import wasteLocationReport from './finalInspectionDataReport/wasteLocationReport.vue'
import glassDefectReport from './finalInspectionDataReport/glassDefectReport.vue'
import moment from 'moment' import moment from 'moment'
import { timeFormatter } from '@/utils' import { timeFormatter } from '@/utils'
const tablePropsL = [ const tablePropsL = [
@ -82,7 +98,15 @@ const tablePropsL = [
] ]
export default { export default {
name: 'FinalInspectionData', name: 'FinalInspectionData',
components: { glassQualityReport, glassThickReport, glassPackReport }, components: {
glassQualityReport,
glassThickReport,
glassPackReport,
glassWasteReport,
wasteMachineReport,
wasteLocationReport,
glassDefectReport
},
data() { data() {
return { return {
formConfig: [ formConfig: [
@ -112,9 +136,13 @@ export default {
type: 'select', type: 'select',
label: '报表类型', label: '报表类型',
selectOptions: [ selectOptions: [
{ id: '玻璃基板缺陷统计', name: '玻璃基板缺陷统计' }, { id: '玻璃基板品质报表', name: '玻璃基板品质报表' },
{ id: '终检下片包装', name: '终检下片包装' }, { id: '终检下片包装', name: '终检下片包装' },
{ id: '厚度汇总报表', name: '厚度汇总报表' } { id: '厚度汇总报表', name: '厚度汇总报表' },
{ id: '玻璃判废统计表', name: '玻璃判废统计表' },
{ id: '判废机组统计表', name: '判废机组统计表' },
{ id: '判废位置统计表', name: '判废位置统计表' },
{ id: '玻璃基板缺陷报表', name: '玻璃基板缺陷报表' }
], ],
param: 'fullInspectionType1', param: 'fullInspectionType1',
defaultSelect: '', defaultSelect: '',
@ -153,7 +181,23 @@ export default {
glassQualityArr: [], // glassQualityArr: [], //
thickReportArr: [], // thickReportArr: [], //
packReportArr: [], // packReportArr: [], //
packClaReportArr: [] packClaReportArr: [],
wasteReportArr: [{ name1: 11 }, { name1: 22 }], //
wasteMachineArr: [
{ name: '颗粒/面检数超标', name1: '11' },
{ name: '颗粒/缺陷聚集', name1: '22' },
{ name: '划伤', name1: '33' },
{ name: '面磨印记', name1: '44' },
{ name: '磨痕', name1: '55' }
],
wasteLocationArr: [
{ name: '颗粒/面检数超标', name1: '11' },
{ name: '颗粒/缺陷聚集', name1: '22' },
{ name: '划伤', name1: '33' },
{ name: '面磨印记', name1: '44' },
{ name: '磨痕', name1: '55' }
],
glassDefectArr: []
} }
}, },
mounted() { mounted() {
@ -220,7 +264,7 @@ export default {
for (let i of this.selectArr) { for (let i of this.selectArr) {
arr.push(i.glassId) arr.push(i.glassId)
} }
if (this.reportTitle === '玻璃基板缺陷统计') { if (this.reportTitle === '玻璃基板品质报表') {
this.exportGlassReport(arr) this.exportGlassReport(arr)
} else if (this.reportTitle === '厚度汇总报表') { } else if (this.reportTitle === '厚度汇总报表') {
this.exportThickReport(arr) this.exportThickReport(arr)
@ -258,7 +302,7 @@ export default {
arr.push(i.glassId) arr.push(i.glassId)
} }
switch (this.reportTitle) { switch (this.reportTitle) {
case '玻璃基板缺陷统计': case '玻璃基板品质报表':
this.getGlassReport(arr) this.getGlassReport(arr)
break break
case '厚度汇总报表': case '厚度汇总报表':

View File

@ -1,5 +1,11 @@
<template> <template>
<div class="finalDataTable"> <div class="glassDefectReport">
<ul class="baseMsg">
<li><span>单位:</span>um</li>
<li :title="glassId"><span>玻璃ID:</span>{{ glassId }}</li>
<li><span>生产日期:</span>2022.12.24 14:45:34</li>
<li><span>等级:</span>G1</li>
</ul>
<base-table :table-props="tablePropsT" :table-data="tableDataT" /> <base-table :table-props="tablePropsT" :table-data="tableDataT" />
<base-table :table-props="tablePropsB" :table-data="tableDataB" /> <base-table :table-props="tablePropsB" :table-data="tableDataB" />
</div> </div>
@ -240,13 +246,14 @@ const tablePropsB = [
} }
] ]
export default { export default {
name: 'FinalDataTable', name: 'glassDefectReport',
data() { data() {
return { return {
tablePropsT, tablePropsT,
tableDataT: [], tableDataT: [],
tablePropsB, tablePropsB,
tableDataB: [] tableDataB: [],
glassId: '203839738763,5324723648623,87423745327845,23645326,4532675444'
} }
}, },
mounted() { mounted() {
@ -627,7 +634,28 @@ export default {
} }
</script> </script>
<style lang="scss"> <style lang="scss">
.finalDataTable { .glassDefectReport {
.baseMsg {
font-size: 14px;
height: 40px;
line-height: 40px;
display: flex;
border: 1px solid #e8e8e8;
border-radius: 4px;
margin-bottom: 20px;
li {
width: 25%;
text-align: center;
padding: 0 10px;
border-right: 1px solid #e8e8e8;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
span {
font-weight: 600;
}
}
}
.el-table thead.is-group tr:first-of-type th:first-of-type { .el-table thead.is-group tr:first-of-type th:first-of-type {
border-bottom: none; border-bottom: none;
} }

View File

@ -0,0 +1,183 @@
<template>
<div class="glassWasteReport">
<base-table
:table-props="tableProps"
:table-data="tableData"
:max-height="tableH"
:page="1"
:limit="20"
show-summary
/>
</div>
</template>
<script>
import { tableHeight } from '@/utils'
const tableProps = [
{
prop: 'glassId',
label: 'ID'
},
{
prop: 'name1',
label: '合格'
},
{
prop: 'lineA',
label: '前工程不良',
children: [
{
prop: 'name2',
label: '气泡数量'
},
{
prop: 'name3',
label: '气泡尺寸'
},
{
prop: 'name4',
label: '上表锡数量'
},
{
prop: 'name5',
label: '上表锡尺寸'
},
{
prop: 'name6',
label: '下表锡数量'
},
{
prop: 'name7',
label: '下表锡尺寸'
},
{
prop: 'name8',
label: '欠点数合计'
},
{
prop: 'name9',
label: '缺陷聚集'
},
{
prop: 'name10',
label: '结瘤'
},
{
prop: 'name11',
label: 'PT'
},
{
prop: 'name12',
label: '结石'
},
{
prop: 'name13',
label: '其他'
}
]
},
{
prop: 'lineB',
label: '后工程不良',
children: [
{
prop: 'age',
label: '颗粒/面检数超'
},
{
prop: 'age1',
label: '划伤'
},
{
prop: 'age2',
label: '颗粒/缺陷聚集'
},
{
prop: 'age3',
label: '轮印'
},
{
prop: 'age4',
label: '面磨印记'
},
{
prop: 'age5',
label: '残留'
},
{
prop: 'age6',
label: '污渍'
},
{
prop: 'age7',
label: '纤维'
},
{
prop: 'age8',
label: '水渍'
},
{
prop: 'age9',
label: '磨痕'
},
{
prop: 'age10',
label: '气浮擦伤'
},
{
prop: 'age11',
label: '雾面'
},
{
prop: 'age12',
label: '异物'
},
{
prop: 'age13',
label: '其他'
}
]
}
]
export default {
name: 'glassWasteReport',
data() {
return {
tableProps,
tableH: tableHeight(292)
}
},
mounted() {
window.addEventListener('resize', () => {
this.tableH = tableHeight(292)
})
},
props: {
tableData: {
type: Array,
required: true,
default: () => {
return []
}
}
},
methods: {}
}
</script>
<style lang="scss">
.glassWasteReport {
.el-table {
display: flex;
flex-direction: column;
}
.el-table__body-wrapper {
order: 1;
}
.el-table__fixed-body-wrapper {
top: 116px !important;
}
.el-table__fixed-footer-wrapper {
z-index: 0;
top: 81px !important;
}
}
</style>

View File

@ -0,0 +1,124 @@
<template>
<div class="wasteLocationReport">
<base-table
:table-props="tableProps"
:table-data="tableData"
:max-height="tableH"
/>
</div>
</template>
<script>
import { tableHeight } from '@/utils'
const tableProps = [
{
label: '九宫格',
children: [
{
prop: 'name',
label: '判废原因',
minWidth: 110
}
]
},
{
prop: 'name1',
label: '1#'
},
{
prop: 'name2',
label: '2#'
},
{
prop: 'name3',
label: '3#'
},
{
prop: 'name4',
label: '4#'
},
{
prop: 'name5',
label: '5#'
},
{
prop: 'name6',
label: '6#'
},
{
prop: 'name7',
label: '7#'
},
{
prop: 'name8',
label: '8#'
},
{
prop: 'name9',
label: '9#'
},
{
prop: 'name10',
label: '整板'
}
]
export default {
name: 'wasteLocationReport',
data() {
return {
tableProps,
tableH: tableHeight(292)
}
},
mounted() {
window.addEventListener('resize', () => {
this.tableH = tableHeight(292)
})
},
props: {
tableData: {
type: Array,
required: true,
default: () => {
return []
}
}
}
}
</script>
<style lang="scss">
.wasteLocationReport {
.el-table thead.is-group tr:first-of-type th:first-of-type {
border-bottom: none;
}
.el-table thead.is-group tr:first-of-type th:first-of-type div.cell {
text-align: right;
}
.el-table th.el-table__cell {
height: 28px;
}
.el-table thead.is-group tr:first-of-type th:first-of-type:before {
content: '';
position: absolute;
height: 35px;
top: 0;
left: 48px;
background-color: #ebeef5;
transform: rotate(-35deg);
-webkit-transform-origin: top;
transform-origin: top;
width: 1px;
}
.el-table thead.is-group tr:last-of-type th:first-of-type:before {
content: '';
position: absolute;
height: 35px;
top: 0;
left: 68px;
background-color: #ebeef5;
transform: rotate(-35deg);
-webkit-transform-origin: top;
transform-origin: top;
width: 1px;
}
}
</style>

View File

@ -0,0 +1,112 @@
<template>
<div class="wasteMachineReport">
<base-table
:table-props="tableProps"
:table-data="tableData"
:max-height="tableH"
/>
</div>
</template>
<script>
import { tableHeight } from '@/utils'
const tableProps = [
{
label: '研磨机组',
children: [
{
prop: 'name',
label: '判废原因',
minWidth: 110
}
]
},
{
prop: 'name1',
label: '1#'
},
{
prop: 'name2',
label: '2#'
},
{
prop: 'name3',
label: '3#'
},
{
prop: 'name4',
label: '4#'
},
{
prop: 'name5',
label: '5#'
},
{
prop: 'name6',
label: '6#'
},
{
prop: 'name7',
label: '7#'
}
]
export default {
name: 'wasteMachineReport',
data() {
return {
tableProps,
tableH: tableHeight(292)
}
},
mounted() {
window.addEventListener('resize', () => {
this.tableH = tableHeight(292)
})
},
props: {
tableData: {
type: Array,
required: true,
default: () => {
return []
}
}
}
}
</script>
<style lang="scss">
.wasteMachineReport {
.el-table thead.is-group tr:first-of-type th:first-of-type {
border-bottom: none;
}
.el-table thead.is-group tr:first-of-type th:first-of-type div.cell {
text-align: right;
}
.el-table th.el-table__cell {
height: 28px;
}
.el-table thead.is-group tr:first-of-type th:first-of-type:before {
content: '';
position: absolute;
height: 35px;
top: 0;
left: 60px;
background-color: #ebeef5;
transform: rotate(-35deg);
-webkit-transform-origin: top;
transform-origin: top;
width: 1px;
}
.el-table thead.is-group tr:last-of-type th:first-of-type:before {
content: '';
position: absolute;
height: 35px;
top: 0;
left: 80px;
background-color: #ebeef5;
transform: rotate(-35deg);
-webkit-transform-origin: top;
transform-origin: top;
width: 1px;
}
}
</style>

View File

@ -1,6 +1,9 @@
<template> <template>
<div> <div>
<div class="top-box"> <div class="top-box">
<div style="padding: 10px 0 0 16px">
<search-bar :formConfigs="formConfig" />
</div>
<production-line-diagram></production-line-diagram> <production-line-diagram></production-line-diagram>
</div> </div>
<el-row class="bottom-box" :gutter="10"> <el-row class="bottom-box" :gutter="10">
@ -107,6 +110,16 @@ export default {
name: 'ProductionLineStatus', name: 'ProductionLineStatus',
data() { data() {
return { return {
formConfig: [
{
type: 'select',
label: '产线',
selectOptions: JSON.parse(localStorage.getItem('publicList'))
.proLineVoList,
param: 'proLineId',
defaultSelect: ''
}
],
listQuery1: { listQuery1: {
current: 1, current: 1,
size: 10 size: 10
@ -115,8 +128,8 @@ export default {
current: 1, current: 1,
size: 5 size: 5
}, },
tableH: tableHeight(450), tableH: tableHeight(479),
tableH2: (tableHeight(238) * 0.708 - 50) / 2, tableH2: (tableHeight(238) * 0.68 - 50) / 2,
tableProps1, tableProps1,
tableData1: [], tableData1: [],
tableData2: [], tableData2: [],
@ -130,8 +143,8 @@ export default {
components: { ProductionLineDiagram }, components: { ProductionLineDiagram },
mounted() { mounted() {
window.addEventListener('resize', () => { window.addEventListener('resize', () => {
this.tableH = tableHeight(450) this.tableH = tableHeight(479)
this.tableH2 = (tableHeight(238) * 0.708 - 50) / 2 this.tableH2 = (tableHeight(238) * 0.68 - 50) / 2
}) })
this.getTableMsg() this.getTableMsg()
}, },
@ -162,10 +175,10 @@ export default {
border-radius: 4px; border-radius: 4px;
} }
.top-box { .top-box {
height: calc((100vh - 90px - 50px - 16px) * 0.292); height: calc((100vh - 90px - 50px - 16px) * 0.32);
} }
.bottom-box { .bottom-box {
height: calc((100vh - 90px - 50px - 16px) * 0.708); height: calc((100vh - 90px - 50px - 16px) * 0.68);
padding: 0 16px 16px; padding: 0 16px 16px;
.area { .area {
.title { .title {