diff --git a/.env.dev b/.env.dev index 3e5a19da..acb7b2ac 100644 --- a/.env.dev +++ b/.env.dev @@ -1,7 +1,7 @@ ### # @Author: Do not edit # @Date: 2023-08-29 09:40:39 - # @LastEditTime: 2023-11-13 09:50:51 + # @LastEditTime: 2023-11-15 14:37:35 # @LastEditors: DY # @Description: ### diff --git a/public/static/videos/login.webm b/public/static/videos/login.webm new file mode 100644 index 00000000..4ac1bdd2 Binary files /dev/null and b/public/static/videos/login.webm differ diff --git a/src/api/monitoring/statisticalData.js b/src/api/monitoring/statisticalData.js index 4f19d699..cdf92812 100644 --- a/src/api/monitoring/statisticalData.js +++ b/src/api/monitoring/statisticalData.js @@ -1,7 +1,7 @@ /* * @Author: zhp * @Date: 2023-11-07 14:10:18 - * @LastEditTime: 2023-11-07 16:29:55 + * @LastEditTime: 2023-11-14 14:46:04 * @LastEditors: zhp * @Description: */ diff --git a/src/assets/icons/svg/exitbtn.svg b/src/assets/icons/svg/exitbtn.svg new file mode 100644 index 00000000..8b8b0eff --- /dev/null +++ b/src/assets/icons/svg/exitbtn.svg @@ -0,0 +1,12 @@ + + + exit + + + + + + + + + \ No newline at end of file diff --git a/src/assets/icons/svg/helpbtn.svg b/src/assets/icons/svg/helpbtn.svg new file mode 100644 index 00000000..5960b5b3 --- /dev/null +++ b/src/assets/icons/svg/helpbtn.svg @@ -0,0 +1,20 @@ + + + 编组 17 + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/images/choicepart/Core.png b/src/assets/images/choicepart/Core.png new file mode 100644 index 00000000..f1d1b73d Binary files /dev/null and b/src/assets/images/choicepart/Core.png differ diff --git a/src/assets/images/choicepart/Delivery.png b/src/assets/images/choicepart/Delivery.png new file mode 100644 index 00000000..b0331ade Binary files /dev/null and b/src/assets/images/choicepart/Delivery.png differ diff --git a/src/assets/images/choicepart/Energy.png b/src/assets/images/choicepart/Energy.png new file mode 100644 index 00000000..a6511565 Binary files /dev/null and b/src/assets/images/choicepart/Energy.png differ diff --git a/src/assets/images/choicepart/Equipment.png b/src/assets/images/choicepart/Equipment.png new file mode 100644 index 00000000..763e5396 Binary files /dev/null and b/src/assets/images/choicepart/Equipment.png differ diff --git a/src/assets/images/choicepart/Extend.png b/src/assets/images/choicepart/Extend.png new file mode 100644 index 00000000..ae319647 Binary files /dev/null and b/src/assets/images/choicepart/Extend.png differ diff --git a/src/assets/images/choicepart/Group.png b/src/assets/images/choicepart/Group.png new file mode 100644 index 00000000..3c16e819 Binary files /dev/null and b/src/assets/images/choicepart/Group.png differ diff --git a/src/assets/images/choicepart/Material.png b/src/assets/images/choicepart/Material.png new file mode 100644 index 00000000..b4b1364a Binary files /dev/null and b/src/assets/images/choicepart/Material.png differ diff --git a/src/assets/images/choicepart/Order.png b/src/assets/images/choicepart/Order.png new file mode 100644 index 00000000..7c8a3216 Binary files /dev/null and b/src/assets/images/choicepart/Order.png differ diff --git a/src/assets/images/choicepart/Packaging.png b/src/assets/images/choicepart/Packaging.png new file mode 100644 index 00000000..60ccd89e Binary files /dev/null and b/src/assets/images/choicepart/Packaging.png differ diff --git a/src/assets/images/choicepart/Quality.png b/src/assets/images/choicepart/Quality.png new file mode 100644 index 00000000..e6680dfa Binary files /dev/null and b/src/assets/images/choicepart/Quality.png differ diff --git a/src/assets/images/choicepart/Report.png b/src/assets/images/choicepart/Report.png new file mode 100644 index 00000000..a103eede Binary files /dev/null and b/src/assets/images/choicepart/Report.png differ diff --git a/src/assets/images/choicepart/System.png b/src/assets/images/choicepart/System.png new file mode 100644 index 00000000..30a1a7e8 Binary files /dev/null and b/src/assets/images/choicepart/System.png differ diff --git a/src/assets/images/choicepart/Warehouse.png b/src/assets/images/choicepart/Warehouse.png new file mode 100644 index 00000000..d808730d Binary files /dev/null and b/src/assets/images/choicepart/Warehouse.png differ diff --git a/src/assets/images/choicepart/avatar.png b/src/assets/images/choicepart/avatar.png new file mode 100644 index 00000000..4b1f623a Binary files /dev/null and b/src/assets/images/choicepart/avatar.png differ diff --git a/src/assets/images/choicepart/choice-item-back.png b/src/assets/images/choicepart/choice-item-back.png new file mode 100644 index 00000000..1cddcef5 Binary files /dev/null and b/src/assets/images/choicepart/choice-item-back.png differ diff --git a/src/assets/images/choicepart/choicepart-back.png b/src/assets/images/choicepart/choicepart-back.png new file mode 100644 index 00000000..2f7a3de4 Binary files /dev/null and b/src/assets/images/choicepart/choicepart-back.png differ diff --git a/src/assets/images/cnbm.png b/src/assets/images/cnbm.png new file mode 100644 index 00000000..ed7d3fdf Binary files /dev/null and b/src/assets/images/cnbm.png differ diff --git a/src/assets/images/login-bg.png b/src/assets/images/login-bg.png new file mode 100644 index 00000000..0156badd Binary files /dev/null and b/src/assets/images/login-bg.png differ diff --git a/src/assets/img/1.jpg b/src/assets/img/1.jpg new file mode 100644 index 00000000..005bc57c Binary files /dev/null and b/src/assets/img/1.jpg differ diff --git a/src/assets/img/OperationalOverview/back.png b/src/assets/img/OperationalOverview/back.png new file mode 100644 index 00000000..ad2afe91 Binary files /dev/null and b/src/assets/img/OperationalOverview/back.png differ diff --git a/src/assets/img/OperationalOverview/title.png b/src/assets/img/OperationalOverview/title.png new file mode 100644 index 00000000..b8a7e9dd Binary files /dev/null and b/src/assets/img/OperationalOverview/title.png differ diff --git a/src/assets/img/Toughenedfurnace.png b/src/assets/img/Toughenedfurnace.png new file mode 100644 index 00000000..80263bd9 Binary files /dev/null and b/src/assets/img/Toughenedfurnace.png differ diff --git a/src/assets/img/back.jpg b/src/assets/img/back.jpg new file mode 100644 index 00000000..61df5c8c Binary files /dev/null and b/src/assets/img/back.jpg differ diff --git a/src/assets/img/back.png b/src/assets/img/back.png new file mode 100644 index 00000000..e9d7d397 Binary files /dev/null and b/src/assets/img/back.png differ diff --git a/src/assets/img/back1.png b/src/assets/img/back1.png new file mode 100644 index 00000000..8b811db9 Binary files /dev/null and b/src/assets/img/back1.png differ diff --git a/src/assets/img/bg-bottom-item.png b/src/assets/img/bg-bottom-item.png new file mode 100644 index 00000000..a45ee8ee Binary files /dev/null and b/src/assets/img/bg-bottom-item.png differ diff --git a/src/assets/img/choicepart/ArtManager.png b/src/assets/img/choicepart/ArtManager.png new file mode 100644 index 00000000..ae319647 Binary files /dev/null and b/src/assets/img/choicepart/ArtManager.png differ diff --git a/src/assets/img/choicepart/ArticleManager.png b/src/assets/img/choicepart/ArticleManager.png new file mode 100644 index 00000000..30a1a7e8 Binary files /dev/null and b/src/assets/img/choicepart/ArticleManager.png differ diff --git a/src/assets/img/choicepart/DataAnalysis.png b/src/assets/img/choicepart/DataAnalysis.png new file mode 100644 index 00000000..672cc103 Binary files /dev/null and b/src/assets/img/choicepart/DataAnalysis.png differ diff --git a/src/assets/img/choicepart/EquipmentManager.png b/src/assets/img/choicepart/EquipmentManager.png new file mode 100644 index 00000000..763e5396 Binary files /dev/null and b/src/assets/img/choicepart/EquipmentManager.png differ diff --git a/src/assets/img/choicepart/MaterialsManage.png b/src/assets/img/choicepart/MaterialsManage.png new file mode 100644 index 00000000..d808730d Binary files /dev/null and b/src/assets/img/choicepart/MaterialsManage.png differ diff --git a/src/assets/img/choicepart/OperationalOverview.png b/src/assets/img/choicepart/OperationalOverview.png new file mode 100644 index 00000000..77af0878 Binary files /dev/null and b/src/assets/img/choicepart/OperationalOverview.png differ diff --git a/src/assets/img/choicepart/WarehouseManager.png b/src/assets/img/choicepart/WarehouseManager.png new file mode 100644 index 00000000..8f18d70f Binary files /dev/null and b/src/assets/img/choicepart/WarehouseManager.png differ diff --git a/src/assets/img/choicepart/basicData.png b/src/assets/img/choicepart/basicData.png new file mode 100644 index 00000000..f1d1b73d Binary files /dev/null and b/src/assets/img/choicepart/basicData.png differ diff --git a/src/assets/img/choicepart/choice-item-back.png b/src/assets/img/choicepart/choice-item-back.png new file mode 100644 index 00000000..1cddcef5 Binary files /dev/null and b/src/assets/img/choicepart/choice-item-back.png differ diff --git a/src/assets/img/choicepart/choicepart-back.png b/src/assets/img/choicepart/choicepart-back.png new file mode 100644 index 00000000..b16893b4 Binary files /dev/null and b/src/assets/img/choicepart/choicepart-back.png differ diff --git a/src/assets/img/choicepart/energyManage.png b/src/assets/img/choicepart/energyManage.png new file mode 100644 index 00000000..f1d1b73d Binary files /dev/null and b/src/assets/img/choicepart/energyManage.png differ diff --git a/src/assets/img/choicepart/factoryManage.png b/src/assets/img/choicepart/factoryManage.png new file mode 100644 index 00000000..a804d851 Binary files /dev/null and b/src/assets/img/choicepart/factoryManage.png differ diff --git a/src/assets/img/choicepart/formManage.png b/src/assets/img/choicepart/formManage.png new file mode 100644 index 00000000..7c8a3216 Binary files /dev/null and b/src/assets/img/choicepart/formManage.png differ diff --git a/src/assets/img/choicepart/orderManage.png b/src/assets/img/choicepart/orderManage.png new file mode 100644 index 00000000..23038d23 Binary files /dev/null and b/src/assets/img/choicepart/orderManage.png differ diff --git a/src/assets/img/choicepart/packingManage.png b/src/assets/img/choicepart/packingManage.png new file mode 100644 index 00000000..60ccd89e Binary files /dev/null and b/src/assets/img/choicepart/packingManage.png differ diff --git a/src/assets/img/choicepart/qualityManage.png b/src/assets/img/choicepart/qualityManage.png new file mode 100644 index 00000000..e6680dfa Binary files /dev/null and b/src/assets/img/choicepart/qualityManage.png differ diff --git a/src/assets/img/cnbm.png b/src/assets/img/cnbm.png new file mode 100644 index 00000000..ed7d3fdf Binary files /dev/null and b/src/assets/img/cnbm.png differ diff --git a/src/assets/img/empty.png b/src/assets/img/empty.png new file mode 100644 index 00000000..de349a33 Binary files /dev/null and b/src/assets/img/empty.png differ diff --git a/src/assets/img/energy.png b/src/assets/img/energy.png new file mode 100644 index 00000000..cb341110 Binary files /dev/null and b/src/assets/img/energy.png differ diff --git a/src/assets/img/head-w.png b/src/assets/img/head-w.png new file mode 100644 index 00000000..85dca606 Binary files /dev/null and b/src/assets/img/head-w.png differ diff --git a/src/assets/img/head.png b/src/assets/img/head.png new file mode 100644 index 00000000..0e5d2483 Binary files /dev/null and b/src/assets/img/head.png differ diff --git a/src/assets/img/jiantou.svg b/src/assets/img/jiantou.svg new file mode 100644 index 00000000..9652390b --- /dev/null +++ b/src/assets/img/jiantou.svg @@ -0,0 +1,18 @@ + + + + icon/流程箭头备份 5 + Created with Sketch. + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/img/login-back.jpg b/src/assets/img/login-back.jpg new file mode 100644 index 00000000..cfed13e1 Binary files /dev/null and b/src/assets/img/login-back.jpg differ diff --git a/src/assets/img/login-back.png b/src/assets/img/login-back.png new file mode 100644 index 00000000..a98739e7 Binary files /dev/null and b/src/assets/img/login-back.png differ diff --git a/src/assets/img/login-new.jpg b/src/assets/img/login-new.jpg new file mode 100644 index 00000000..b39ac147 Binary files /dev/null and b/src/assets/img/login-new.jpg differ diff --git a/src/assets/img/login.gif b/src/assets/img/login.gif new file mode 100644 index 00000000..8c931207 Binary files /dev/null and b/src/assets/img/login.gif differ diff --git a/src/assets/img/login1.gif b/src/assets/img/login1.gif new file mode 100644 index 00000000..2ca2b406 Binary files /dev/null and b/src/assets/img/login1.gif differ diff --git a/src/assets/img/logo.png b/src/assets/img/logo.png new file mode 100644 index 00000000..9fdd8338 Binary files /dev/null and b/src/assets/img/logo.png differ diff --git a/src/assets/img/medal/champion.png b/src/assets/img/medal/champion.png new file mode 100644 index 00000000..38006430 Binary files /dev/null and b/src/assets/img/medal/champion.png differ diff --git a/src/assets/img/medal/secondPlace.png b/src/assets/img/medal/secondPlace.png new file mode 100644 index 00000000..425b76c5 Binary files /dev/null and b/src/assets/img/medal/secondPlace.png differ diff --git a/src/assets/img/medal/thirdPlace.png b/src/assets/img/medal/thirdPlace.png new file mode 100644 index 00000000..db1d9edc Binary files /dev/null and b/src/assets/img/medal/thirdPlace.png differ diff --git a/src/assets/img/status.png b/src/assets/img/status.png new file mode 100644 index 00000000..283cdd41 Binary files /dev/null and b/src/assets/img/status.png differ diff --git a/src/assets/img/uploadIcon.png b/src/assets/img/uploadIcon.png new file mode 100644 index 00000000..fb344f9f Binary files /dev/null and b/src/assets/img/uploadIcon.png differ diff --git a/src/assets/logo/cnbm.png b/src/assets/logo/cnbm.png new file mode 100644 index 00000000..ed7d3fdf Binary files /dev/null and b/src/assets/logo/cnbm.png differ diff --git a/src/assets/styles/login.scss b/src/assets/styles/login.scss index 7efb2546..db9f3a47 100644 --- a/src/assets/styles/login.scss +++ b/src/assets/styles/login.scss @@ -1,10 +1,13 @@ /* ===== PC DESIGN ===== */ -$W: 1000; +$W: 1080; $H: 1920; -$picW: 438; -$picH: 560; -$formW: 320; +// $picW: 438; +// $picH: 560; +$picW: 1080; +$picH: 1118; +$formW: 420; $tabW: $formW / 2; +// $rowH: 56; $rowH: 56; $buttonH: 50; @@ -15,6 +18,7 @@ $containerBgImage: '../assets/images/bg.png'; $logoWidth: 417px; $logoHeight: 64px; $logoImage: '../assets/logo/login-logo.png'; +$cnbmLogo: '../assets/logo/cnbm.png'; // container-content $contentWidth: round($W / $H * 100) * 1vw; $contentHeight: round($picH / $W * 100) / 100 * $contentWidth; @@ -22,7 +26,8 @@ $contentBgColor: #ffffff; // container-content-pic $picWidth: round($picW / $H * 100) * 1vw; $picHeight: inherit; -$picImage: '../assets/images/pic.png'; +// $picImage: '../assets/images/pic.png'; +$picImage: '../assets/images/login-bg.png'; // container-content-field $fieldWidth: $contentWidth - $picWidth; $fieldHeight: inherit; @@ -34,231 +39,309 @@ $buttonHeight: $buttonH * 1px; // - - - - - 页面基础设置 .container { - .login-code { - width: 33%; - height: 38px; - float: right; - img { - cursor: pointer; - width:100%;max-width:100px; height:auto; - vertical-align: middle; - } - } - // 元素 - width: inherit; - height: inherit; - min-width: 1080px; - min-height: 620px; - background-color: $containerBgColor; - background-image: url($containerBgImage); - background-size: cover; - // 定位 - position: relative; - display: flex; - justify-content: center; - align-items: center; - // 文字 - font-size: 14px; - font-family: Microsoft YaHei; - font-weight: 400; - .logo { - // 元素 - width: $logoWidth; - height: $logoHeight; - // background-image: url($logoImage); - // background-size: contain; - // 定位 - position: absolute; - top: 50px; - left: 50%; - margin-left: -$logoWidth/2; - } - .content { - // 元素 - width: $contentWidth; - height: $contentHeight; - background-color: #ffffff; - box-shadow: 0px 16px 40px rgba(0, 0, 0, 0.07); - border-radius: 20px; - // 定位 - position: relative; - .pic { - // 元素 - width: $picWidth; - height: $picHeight; - background-image: url($picImage); - background-repeat: no-repeat; - background-size: cover; - border-radius: 20px 0 0 20px; - // 定位 - position: absolute; - top: 0; - left: 0; - } - .field { - width: $fieldWidth; - height: $fieldHeight; - // 定位 - position: absolute; - top: 0; - left: $picWidth; - display:flex; - justify-content: center; - align-items: center; - .pc-title{ width: 100%; clear: both;} - .mobile-title, - .mobile-switch { - display: none; - } - .form { - box-sizing: border-box; - width: $formWidth; - // - - - tab - :deep(.el-tabs__content) { - padding: 20px 0 0; - } - :deep(.el-tabs__item) { - // 元素 - width: $tabWidth; - height: $rowHeight; - padding: 0; - // 文字 - line-height: $rowHeight; - color: #666666; - } - :deep(.el-tabs__item.is-active) { - font-weight: bold; - color: #2F53EB; - } - :deep(.el-tabs__active-bar) { - height: 3px; - border-radius: 2px; - } - // - - - input - :deep(.el-input__inner) { - // 元素 - width: 100%; - height: $rowHeight; - background: #f5f5f5; - border: 0; - border-radius: 28px; - // 文字 - text-align: center; - line-height: 19px; - color: #262626; - } - .code:deep(.el-input__inner) { - padding: 0 24px; - // 文字 - text-align: left; - } - :deep(.el-input__inner::-webkit-input-placeholder) { /* WebKit browsers */ - font-weight: 400; - color: #8C8C8C; - } - :deep(.el-input__inner:-moz-placeholder) { /* Mozilla Firefox 4 to 18 */ - font-weight: 400; - color: #8C8C8C; - } - :deep(.el-input__inner::-moz-placeholder) { /* Mozilla Firefox 19+ */ - font-weight: 400; - color: #8C8C8C; - opacity:1; - } - :deep(.el-input__inner:-ms-input-placeholder) { /* Internet Explorer 10+ */ - font-weight: 400; - color: #8C8C8C !important; - } - :deep(.el-form-item) { - position: relative; - .button-code { - // 元素 - height: $rowHeight; - box-sizing: border-box; - // 定位 - position: absolute; - top: 0; - right: 20px; - z-index: 1; - // 文字 - line-height: 20px; - font-size: 14px; - font-family: PingFang SC; - font-weight: 400; - color: #2F53EB; - span { - padding-left: 15px; - border-left: 2px solid #D9D9D9; - } - } - } - :deep(.el-form-item__error) { - padding-left: 24px; - } - .button { - width: 100%; - height: $buttonHeight; - background: rgba(24, 144, 255, 0.2); - border: 0; - border-radius: 24px; - margin-bottom: 20px; - // 文字 - line-height: 26px; - font-size: 20px; - color: #FFFFFF; - } - .button-active { - background: #2F53EB; - box-shadow: 0px 2px 8px rgba(0, 80, 184, 0.2); - } - } - } - } - .footer { - // 元素 - height: 16px; - line-height: 16px; - font-size: 12px; - color: #8c8c8c; - // 定位 - position: absolute; - bottom: 30px; - a, - a:hover, - a:active { - color: inherit; - text-decoration: none; - } - } + .login-code { + width: 33%; + height: 38px; + float: right; + img { + cursor: pointer; + width: 100%; + max-width: 100px; + height: auto; + vertical-align: middle; + } + } + // 元素 + width: inherit; + height: inherit; + min-width: 1080px; + min-height: 620px; + background-color: $containerBgColor; + // background-image: url($containerBgImage); + background-size: cover; + // 定位 + position: relative; + display: flex; + justify-content: center; + align-items: center; + // 文字 + font-size: 14px; + font-family: Microsoft YaHei; + font-weight: 400; + .logo { + // 元素 + width: $logoWidth; + height: $logoHeight; + // background-image: url($logoImage); + // background-size: contain; + // 定位 + position: absolute; + top: 50px; + left: 50%; + margin-left: -$logoWidth/2; + } + .content { + // 元素 + // width: $contentWidth; + // height: $contentHeight; + width: 100%; + height: 100%; + background-color: #ffffff; + // box-shadow: 0px 16px 40px rgba(0, 0, 0, 0.07); + // border-radius: 20px; + // 定位 + position: relative; + display: flex; + + .pic { + // 元素 + width: $picWidth; + height: $picHeight; + background-image: url($picImage); + background-repeat: no-repeat; + background-size: 100% 100%; + background-position: 0 0; + position: relative; + &::after { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + // background: #f003; + display: inline-block; + } + } + .field { + // background: #ccc3; + position: relative; + padding-top: 196px; + flex: 1; + display: flex; + flex-direction: column; + // justify-content: center; + align-items: center; + .pc-title { + width: 100%; + text-align: center; + clear: both; + position: relative; + top: -36px; + + // h3.title { + // position: relative; + + // &::before { + // content: ''; + // background: url($cnbmLogo) 100% / 100% no-repeat; + // height: 48px; + // width: 48px; + // position: absolute; + // left: 0px; + // top: 4px; + // display: inline-block; + // } + // } + } + .mobile-title, + .mobile-switch { + display: none; + } + .form { + margin-top: 32px; + box-sizing: border-box; + // width: $formWidth; + width: 100%; + // - - - tab + :deep(.el-tabs__nav) { + // background: #f0f3; + } + :deep(.el-tabs__content) { + padding: 20px 0 0; + } + :deep(.el-tabs__item) { + user-select: none; + // 元素 + width: $tabWidth; + height: $rowHeight; + padding: 0; + // 文字 + line-height: $rowHeight; + color: #666666; + font-size: 18px; + font-weight: 400; + text-align: center; + } + :deep(.el-tabs__item.is-active) { + font-weight: 500; + color: #2f53eb; + } + :deep(.el-tabs__active-bar) { + height: 3px; + border-radius: 2px; + } + // - - - input + :deep(.el-input__inner) { + // 元素 + width: 100%; + height: $rowHeight; + background: #f5f5f5; + border: 0; + border-radius: 28px; + // 文字 + text-align: center; + line-height: 19px; + color: #262626; + } + .code:deep(.el-input__inner) { + padding: 0 24px; + // 文字 + text-align: left; + } + :deep(.el-input__inner::-webkit-input-placeholder) { + /* WebKit browsers */ + font-weight: 400; + color: #8c8c8c; + } + :deep(.el-input__inner:-moz-placeholder) { + /* Mozilla Firefox 4 to 18 */ + font-weight: 400; + color: #8c8c8c; + } + :deep(.el-input__inner::-moz-placeholder) { + /* Mozilla Firefox 19+ */ + font-weight: 400; + color: #8c8c8c; + opacity: 1; + } + :deep(.el-input__inner:-ms-input-placeholder) { + /* Internet Explorer 10+ */ + font-weight: 400; + color: #8c8c8c !important; + } + :deep(.el-form-item) { + position: relative; + .button-code { + // 元素 + height: $rowHeight; + box-sizing: border-box; + // 定位 + position: absolute; + top: 0; + right: 20px; + z-index: 1; + // 文字 + line-height: 20px; + font-size: 14px; + font-family: PingFang SC; + font-weight: 400; + color: #2f53eb; + span { + padding-left: 15px; + border-left: 2px solid #d9d9d9; + } + } + } + :deep(.el-form-item__error) { + padding-left: 24px; + } + .button { + width: 100%; + height: $buttonHeight; + background: rgba(24, 144, 255, 0.2); + border: 0; + border-radius: 24px; + margin-bottom: 20px; + // 文字 + line-height: 26px; + font-size: 20px; + color: #ffffff; + } + .button-active { + background: #2f53eb; + box-shadow: 0px 2px 8px rgba(0, 80, 184, 0.2); + } + } + } + } + + .login-form { + * { + user-select: none; + } + // - - - input + :deep(.el-input__inner) { + // 元素 + width: 420px; + height: 66px; + color: #262626; + font-size: 18px; + } + :deep(.el-checkbox__label) { + font-size: 18px; + line-height: 14px; + } + } + + .footer { + user-select: none; + // 元素 + height: 16px; + line-height: 16px; + font-size: 12px; + color: #8c8c8c; + // 定位 + position: absolute; + bottom: 30px; + a, + a:hover, + a:active { + color: inherit; + text-decoration: none; + } + } } // - - - - - PC 最小尺寸设置 @media screen and (min-width: 599px) and (max-width: 1366px) { - .container { - .content { - width: 710px; - height: 397px; - .pic { - width: 314px; - } - .field { - width: calc(710px - 314px); - left: 314px; - .form { - width: 320px; - :deep(.el-input__inner) { - width: 320px; - height: 56px; - } - .button { - height: 50px; - } - } - } - } - } -} + .container { + min-width: 599px; + .content { + // width: 710px; + // height: 397px; + width: 100%; + height: 100%; + .pic { + // width: 314px; + display: none; + } + .field { + // width: calc(710px - 314px); + // left: 314px; + // justify-content: center; + width: 100%; + .pc-title { + h3 { + font-size: 2.4rem !important; + } + } + + .form { + // width: 320px; + :deep(.el-input__inner) { + width: 320px; + height: 56px; + } + .button { + height: 50px; + } + } + } + } + } +} /* ===== MOBILE DESIGN ===== */ $mobileW: 375; @@ -273,115 +356,142 @@ $mobileButtonH: 48; $mobileContainerBgImage: '../assets/images/bg-mobile.png'; // container-content $mobileContentWidth: round($mobileContentW / $mobileW * 100) * 1vw; -$mobileContentHeight: round($mobileContentH / $mobileW * 100) / 100 * $mobileContentWidth; +$mobileContentHeight: round($mobileContentH / $mobileW * 100) / 100 * + $mobileContentWidth; // container-content-field-form -$mobileFormWidth: round($mobileFormW / $mobileW *100) * 1vw; +$mobileFormWidth: round($mobileFormW / $mobileW * 100) * 1vw; $mobileRowHeight: $mobileRowH * 1px; $mobileButtonHeight: $mobileButtonH * 1px; $iconBgImage: '../assets/images/icon.png'; // - - - - - 移动端设置 @media screen and (max-width: 599px) { - .container { - // 元素 - background-image: url($mobileContainerBgImage); - min-width: 280px; - min-height: 568px; - // 文字 - font-size: 17px; - font-family: PingFang SC; - font-weight: bold; - .logo { - display: none; - } + .container { + // 元素 + background-image: url($mobileContainerBgImage); + min-width: 280px; + min-height: 568px; + // 文字 + font-size: 14px; + font-family: PingFang SC; + font-weight: bold; + .logo { + display: none; + } - .content { - // 元素 - width: $mobileContentWidth; - height: $mobileContentHeight; - min-width: 250px; - min-height: 340px; - // 定位 - display: flex; - justify-content: center; - align-items: center; - .pic { - display: none; - } - .field { - // 元素 - width: inherit; - min-height: inherit; - // 定位 - left: 0; - display: flex; - flex-direction: column; - .mobile-title { - // 元素 - margin: 0 0 20px; - display: block; - } - .form { - width: $mobileFormWidth; - // - - - tab - :deep(.el-tabs__header) { - display: none; - } - :deep(.el-tabs__content) { - padding: 0; - } - // - - - input - :deep(.el-input__inner) { - height: $mobileRowHeight; - line-height: 24px; - // 文字 - text-align: center; - color: #262626; - } - :deep(.el-form-item) { - .button-code { - // 元素 - height: $mobileRowHeight; - } - } - .button { - height: $mobileButtonHeight; - line-height: 24px; - color: #FFFFFF; - } - } - .mobile-switch { - display: block; - line-height: 20px; - font-size: 14px; - font-weight: 400; - color: #595959; - margin: 0; - .icon { - width: 14px; - height: 14px; - display: inline-block; - background-image: url($iconBgImage); - background-size: cover; - } - } - .mobile-switch:hover { - cursor: pointer; - } - } - } - .footer { - // 元素 - font-size: 12px; - font-family: PingFang SC; - font-weight: 400; - line-height: 17px; - color: #333333; - opacity: 0.6; - // 定位 - position: absolute; - bottom: 20px; - } - } + .pc-title { + display: none; + } + .content { + // 元素 + width: $mobileContentWidth; + height: $mobileContentHeight; + min-width: 250px; + min-height: 340px; + // 定位 + display: flex; + justify-content: center; + align-items: center; + .pic { + display: none; + } + .field { + padding: 0; + // 元素 + width: inherit; + min-height: inherit; + // 定位 + left: 0; + display: flex; + flex-direction: column; + + .mobile-title { + // 元素 + margin: 0; + display: block; + } + + .form { + margin: 0; + width: $mobileFormWidth; + // - - - tab + :deep(.el-tabs__header) { + display: none; + } + :deep(.el-tabs__content) { + padding: 0; + } + // - - - input + :deep(.el-input__inner) { + height: $mobileRowHeight; + line-height: 24px; + // 文字 + text-align: center; + color: #262626; + } + :deep(.el-form-item) { + .button-code { + // 元素 + height: $mobileRowHeight; + } + } + .button { + height: $mobileButtonHeight; + line-height: 24px; + color: #ffffff; + } + } + + .login-form { + :deep(.el-input__inner) { + height: $mobileRowHeight; + line-height: 24px; + // 文字 + text-align: center; + color: #262626; + } + + :deep(#button-form-item) { + margin: 0 !important; + button { + // 元素 + height: $mobileRowHeight; + } + } + } + .mobile-switch { + display: block; + line-height: 20px; + font-size: 14px; + font-weight: 400; + color: #595959; + margin: 0; + .icon { + width: 14px; + height: 14px; + display: inline-block; + background-image: url($iconBgImage); + background-size: cover; + } + } + .mobile-switch:hover { + cursor: pointer; + } + } + } + + .footer { + // 元素 + font-size: 12px; + font-family: PingFang SC; + font-weight: 400; + line-height: 17px; + color: #333333; + opacity: 0.6; + // 定位 + // position: absolute; + bottom: -32px; + } + } } diff --git a/src/assets/styles/ruoyi.scss b/src/assets/styles/ruoyi.scss index 17ef2e4f..d9b3a411 100644 --- a/src/assets/styles/ruoyi.scss +++ b/src/assets/styles/ruoyi.scss @@ -104,8 +104,8 @@ h6 { word-break: break-word; background-color: #f8f8f9; color: #515a6e; - height: 40px; - font-size: 13px; + // height: 40px; + // font-size: 13px; } } .el-table__body-wrapper { diff --git a/src/components/Breadcrumb/index.vue b/src/components/Breadcrumb/index.vue index 4902d3d8..d7c255e2 100644 --- a/src/components/Breadcrumb/index.vue +++ b/src/components/Breadcrumb/index.vue @@ -35,7 +35,7 @@ export default { const first = matched[0] if (!this.isDashboard(first)) { - matched = [{ path: '/index', meta: { title: '首页' }}].concat(matched) + matched = [{ path: '/', meta: { title: '首页' }}].concat(matched) } this.levelList = matched.filter(item => item.meta && item.meta.title && item.meta.breadcrumb !== false) diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue index 655a9ab5..c23172b9 100644 --- a/src/layout/components/Navbar.vue +++ b/src/layout/components/Navbar.vue @@ -5,8 +5,12 @@ -
- + - -
+ - {{ nickname }} + - + +
@@ -51,7 +55,8 @@ import Screenfull from '@/components/Screenfull' import SizeSelect from '@/components/SizeSelect' import Search from '@/components/HeaderSearch' import NotifyMessage from '@/layout/components/Message' -import {getPath} from "@/utils/ruoyi"; +// import {getPath} from "@/utils/ruoyi"; +import NavbarRight from './NavbarRight.vue' export default { components: { @@ -61,7 +66,8 @@ export default { Screenfull, SizeSelect, Search, - NotifyMessage + NotifyMessage, + NavbarRight }, computed: { ...mapGetters([ diff --git a/src/layout/components/NavbarRight.vue b/src/layout/components/NavbarRight.vue new file mode 100644 index 00000000..66460aff --- /dev/null +++ b/src/layout/components/NavbarRight.vue @@ -0,0 +1,111 @@ + + + \ No newline at end of file diff --git a/src/layout/components/Sidebar/SidebarItem copy.vue b/src/layout/components/Sidebar/SidebarItem copy.vue new file mode 100644 index 00000000..7880cbba --- /dev/null +++ b/src/layout/components/Sidebar/SidebarItem copy.vue @@ -0,0 +1,96 @@ + + + diff --git a/src/layout/components/Sidebar/index copy.vue b/src/layout/components/Sidebar/index copy.vue new file mode 100644 index 00000000..79f2dc38 --- /dev/null +++ b/src/layout/components/Sidebar/index copy.vue @@ -0,0 +1,71 @@ + + + diff --git a/src/layout/components/Sidebar/index.vue b/src/layout/components/Sidebar/index.vue index 79f2dc38..bac19f28 100644 --- a/src/layout/components/Sidebar/index.vue +++ b/src/layout/components/Sidebar/index.vue @@ -28,7 +28,7 @@ mode="vertical"> @@ -47,7 +47,12 @@ export default { components: { SidebarItem, Logo }, computed: { ...mapState(['settings']), - ...mapGetters(['sidebarRouters', 'sidebar']), + ...mapGetters(['sidebarRouters', 'sidebar', 'choicepart']), + routeList() { + // return [this.partList[this.choicepart]] + // return [this.sidebarRouters[29]] + return [this.sidebarRouters[this.choicepart]] + }, activeMenu() { const route = this.$route; const { meta, path } = route; diff --git a/src/router/index.js b/src/router/index.js index 555a4184..b7ea83f8 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -71,16 +71,47 @@ export const constantRoutes = [ }, { path: '/', + component: () => import('@/views/choicePart'), + hidden: true, + meta: { requireToken: true } + }, + // { + // path: '/', + // component: Layout, + // // redirect: 'core/base/factory', + // // children: [{ + // // path: 'index', + // // redirect: 'core/base/factory', + // // component: (resolve) => require(['@/views/index'], resolve), + // // name: '首页', + // // meta: { title: '首页', icon: 'dashboard', affix: true } + // // } + // // ] + // }, + { + path: '/AGVBoard', + name: 'AGVBoard', component: Layout, - // redirect: 'core/base/factory', - // children: [{ - // path: 'index', - // redirect: 'core/base/factory', - // component: (resolve) => require(['@/views/index'], resolve), - // name: '首页', - // meta: { title: '首页', icon: 'dashboard', affix: true } - // } - // ] + // route level code-splitting + // this generates a separate chunk (about.[hash].js) for this route + // which is lazy-loaded when the route is visited. + component: () => import(/* webpackChunkName: "about" */ '@/views/OperationalOverview/AGVBoard.vue') + }, + { + path: '/coldBoard', + name: 'coldBoard', + // route level code-splitting + // this generates a separate chunk (about.[hash].js) for this route + // which is lazy-loaded when the route is visited. + component: () => import(/* webpackChunkName: "about" */ '@/views/OperationalOverview/coldBoard.vue') + }, + { + path: '/processingBoard', + name: 'processingBoard', + // route level code-splitting + // this generates a separate chunk (about.[hash].js) for this route + // which is lazy-loaded when the route is visited. + component: () => import(/* webpackChunkName: "about" */ '@/views/OperationalOverview/processingBoard.vue') }, { path: '/user', diff --git a/src/store/getters.js b/src/store/getters.js index 79cdf2c3..16103f89 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -17,6 +17,7 @@ const getters = { topbarRouters:state => state.permission.topbarRouters, defaultRoutes:state => state.permission.defaultRoutes, sidebarRouters:state => state.permission.sidebarRouters, + choicepart: state => state.app.choicepart, // 数据字典 dict_datas: state => state.dict.dictDatas } diff --git a/src/store/modules/app.js b/src/store/modules/app.js index 623622e1..55fa6c8e 100644 --- a/src/store/modules/app.js +++ b/src/store/modules/app.js @@ -8,6 +8,7 @@ const state = { }, device: "desktop", size: localStorage.getItem("size") || "medium", + choicepart: localStorage.getItem('choicepart') || null }; const mutations = { @@ -38,6 +39,10 @@ const mutations = { SET_SIDEBAR_HIDE: (state, status) => { state.sidebar.hide = status; }, + SET_CHOICEPART: (state, choicepart) => { + state.choicepart = choicepart + localStorage.setItem('choicepart', choicepart) + } }; const actions = { @@ -56,6 +61,9 @@ const actions = { toggleSideBarHide({ commit }, status) { commit("SET_SIDEBAR_HIDE", status); }, + setChoicepart({ commit }, choicepart) { + commit('SET_CHOICEPART', choicepart) + } }; export default { diff --git a/src/views/OperationalOverview/AGVBoard.vue b/src/views/OperationalOverview/AGVBoard.vue new file mode 100644 index 00000000..5dfda096 --- /dev/null +++ b/src/views/OperationalOverview/AGVBoard.vue @@ -0,0 +1,976 @@ + + + + + + + + + + diff --git a/src/views/OperationalOverview/coldBoard.vue b/src/views/OperationalOverview/coldBoard.vue new file mode 100644 index 00000000..1a83f074 --- /dev/null +++ b/src/views/OperationalOverview/coldBoard.vue @@ -0,0 +1,1131 @@ + + + + + + + + + diff --git a/src/views/OperationalOverview/components/BarChart.vue b/src/views/OperationalOverview/components/BarChart.vue new file mode 100644 index 00000000..b719d38c --- /dev/null +++ b/src/views/OperationalOverview/components/BarChart.vue @@ -0,0 +1,127 @@ + + + + diff --git a/src/views/OperationalOverview/components/LineChart.vue b/src/views/OperationalOverview/components/LineChart.vue new file mode 100644 index 00000000..0b87c726 --- /dev/null +++ b/src/views/OperationalOverview/components/LineChart.vue @@ -0,0 +1,253 @@ + + + + + + diff --git a/src/views/OperationalOverview/components/LineRadioGroup.vue b/src/views/OperationalOverview/components/LineRadioGroup.vue new file mode 100644 index 00000000..e69de29b diff --git a/src/views/OperationalOverview/components/PieChart.vue b/src/views/OperationalOverview/components/PieChart.vue new file mode 100644 index 00000000..da36e585 --- /dev/null +++ b/src/views/OperationalOverview/components/PieChart.vue @@ -0,0 +1,221 @@ + + + + + + diff --git a/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/BarChart.vue b/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/BarChart.vue new file mode 100644 index 00000000..49ef81f1 --- /dev/null +++ b/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/BarChart.vue @@ -0,0 +1,158 @@ + + + + + diff --git a/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/BarChartOne.vue b/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/BarChartOne.vue new file mode 100644 index 00000000..1d5ef821 --- /dev/null +++ b/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/BarChartOne.vue @@ -0,0 +1,158 @@ + + + + + diff --git a/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/baseContainer/index.vue b/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/baseContainer/index.vue new file mode 100644 index 00000000..cf643a53 --- /dev/null +++ b/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/baseContainer/index.vue @@ -0,0 +1,144 @@ + + + + + + diff --git a/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/baseTable.vue b/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/baseTable.vue new file mode 100644 index 00000000..84b5976b --- /dev/null +++ b/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/baseTable.vue @@ -0,0 +1,170 @@ + + + + diff --git a/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/colorDiv.vue b/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/colorDiv.vue new file mode 100644 index 00000000..eef54784 --- /dev/null +++ b/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/colorDiv.vue @@ -0,0 +1,31 @@ + + + + diff --git a/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/topGroup.vue b/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/topGroup.vue new file mode 100644 index 00000000..961ab65f --- /dev/null +++ b/src/views/OperationalOverview/components/ProductionAndOperationCenterCockpit/topGroup.vue @@ -0,0 +1,60 @@ + + + + + + diff --git a/src/views/OperationalOverview/components/ProductionLineMonitoringCockpit/nowTeam.vue b/src/views/OperationalOverview/components/ProductionLineMonitoringCockpit/nowTeam.vue new file mode 100644 index 00000000..dc3cf0b7 --- /dev/null +++ b/src/views/OperationalOverview/components/ProductionLineMonitoringCockpit/nowTeam.vue @@ -0,0 +1,83 @@ + + + + + + diff --git a/src/views/OperationalOverview/components/SimpleLineChart.vue b/src/views/OperationalOverview/components/SimpleLineChart.vue new file mode 100644 index 00000000..a62b7157 --- /dev/null +++ b/src/views/OperationalOverview/components/SimpleLineChart.vue @@ -0,0 +1,229 @@ + + + + + + diff --git a/src/views/OperationalOverview/components/alarmLevel.vue b/src/views/OperationalOverview/components/alarmLevel.vue new file mode 100644 index 00000000..ec999515 --- /dev/null +++ b/src/views/OperationalOverview/components/alarmLevel.vue @@ -0,0 +1,51 @@ + + + diff --git a/src/views/OperationalOverview/components/baseContainer/index.vue b/src/views/OperationalOverview/components/baseContainer/index.vue new file mode 100644 index 00000000..09b91e92 --- /dev/null +++ b/src/views/OperationalOverview/components/baseContainer/index.vue @@ -0,0 +1,195 @@ + + + + + + diff --git a/src/views/OperationalOverview/components/baseContainer1/index.vue b/src/views/OperationalOverview/components/baseContainer1/index.vue new file mode 100644 index 00000000..78249620 --- /dev/null +++ b/src/views/OperationalOverview/components/baseContainer1/index.vue @@ -0,0 +1,187 @@ + + + + + + diff --git a/src/views/OperationalOverview/components/baseTable.vue b/src/views/OperationalOverview/components/baseTable.vue new file mode 100644 index 00000000..52fc5ca8 --- /dev/null +++ b/src/views/OperationalOverview/components/baseTable.vue @@ -0,0 +1,187 @@ + + + + diff --git a/src/views/OperationalOverview/components/baseVideo.vue b/src/views/OperationalOverview/components/baseVideo.vue new file mode 100644 index 00000000..64d2403f --- /dev/null +++ b/src/views/OperationalOverview/components/baseVideo.vue @@ -0,0 +1,40 @@ + + + + diff --git a/src/views/OperationalOverview/components/doubleYChart .vue b/src/views/OperationalOverview/components/doubleYChart .vue new file mode 100644 index 00000000..3b91bfb8 --- /dev/null +++ b/src/views/OperationalOverview/components/doubleYChart .vue @@ -0,0 +1,325 @@ + + + + diff --git a/src/views/OperationalOverview/components/linearBarChart.vue b/src/views/OperationalOverview/components/linearBarChart.vue new file mode 100644 index 00000000..9dea0694 --- /dev/null +++ b/src/views/OperationalOverview/components/linearBarChart.vue @@ -0,0 +1,237 @@ + + + diff --git a/src/views/OperationalOverview/components/mixins/resize.js b/src/views/OperationalOverview/components/mixins/resize.js new file mode 100644 index 00000000..234953b1 --- /dev/null +++ b/src/views/OperationalOverview/components/mixins/resize.js @@ -0,0 +1,55 @@ +import { debounce } from '@/utils' + +export default { + data() { + return { + $_sidebarElm: null, + $_resizeHandler: null + } + }, + mounted() { + this.$_resizeHandler = debounce(() => { + if (this.chart) { + this.chart.resize() + } + }, 100) + this.$_initResizeEvent() + this.$_initSidebarResizeEvent() + }, + beforeDestroy() { + this.$_destroyResizeEvent() + this.$_destroySidebarResizeEvent() + }, + // to fixed bug when cached by keep-alive + // https://github.com/PanJiaChen/vue-element-admin/issues/2116 + activated() { + this.$_initResizeEvent() + this.$_initSidebarResizeEvent() + }, + deactivated() { + this.$_destroyResizeEvent() + this.$_destroySidebarResizeEvent() + }, + methods: { + // use $_ for mixins properties + // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential + $_initResizeEvent() { + window.addEventListener('resize', this.$_resizeHandler) + }, + $_destroyResizeEvent() { + window.removeEventListener('resize', this.$_resizeHandler) + }, + $_sidebarResizeHandler(e) { + if (e.propertyName === 'width') { + this.$_resizeHandler() + } + }, + $_initSidebarResizeEvent() { + this.$_sidebarElm = document.getElementsByClassName('sidebar-container')[0] + this.$_sidebarElm && this.$_sidebarElm.addEventListener('transitionend', this.$_sidebarResizeHandler) + }, + $_destroySidebarResizeEvent() { + this.$_sidebarElm && this.$_sidebarElm.removeEventListener('transitionend', this.$_sidebarResizeHandler) + } + } +} diff --git a/src/views/OperationalOverview/components/nextDay.vue b/src/views/OperationalOverview/components/nextDay.vue new file mode 100644 index 00000000..ba01a329 --- /dev/null +++ b/src/views/OperationalOverview/components/nextDay.vue @@ -0,0 +1,40 @@ + + + + diff --git a/src/views/OperationalOverview/components/threeBarChart.vue b/src/views/OperationalOverview/components/threeBarChart.vue new file mode 100644 index 00000000..43fce6d1 --- /dev/null +++ b/src/views/OperationalOverview/components/threeBarChart.vue @@ -0,0 +1,237 @@ + + + + diff --git a/src/views/OperationalOverview/components/topRadioGroup.vue b/src/views/OperationalOverview/components/topRadioGroup.vue new file mode 100644 index 00000000..f1339253 --- /dev/null +++ b/src/views/OperationalOverview/components/topRadioGroup.vue @@ -0,0 +1,86 @@ + + + + + + + diff --git a/src/views/OperationalOverview/components/utilChart.vue b/src/views/OperationalOverview/components/utilChart.vue new file mode 100644 index 00000000..cc1b553a --- /dev/null +++ b/src/views/OperationalOverview/components/utilChart.vue @@ -0,0 +1,67 @@ + + + + diff --git a/src/views/OperationalOverview/components/videoFooter.vue b/src/views/OperationalOverview/components/videoFooter.vue new file mode 100644 index 00000000..d9f3fcb7 --- /dev/null +++ b/src/views/OperationalOverview/components/videoFooter.vue @@ -0,0 +1,66 @@ + + + + diff --git a/src/views/OperationalOverview/processingBoard.vue b/src/views/OperationalOverview/processingBoard.vue new file mode 100644 index 00000000..a499d999 --- /dev/null +++ b/src/views/OperationalOverview/processingBoard.vue @@ -0,0 +1,969 @@ + + + + + + + + + + diff --git a/src/views/OperationalOverview/styles/btn.scss b/src/views/OperationalOverview/styles/btn.scss new file mode 100644 index 00000000..e6ba1a8e --- /dev/null +++ b/src/views/OperationalOverview/styles/btn.scss @@ -0,0 +1,99 @@ +@import './variables.scss'; + +@mixin colorBtn($color) { + background: $color; + + &:hover { + color: $color; + + &:before, + &:after { + background: $color; + } + } +} + +.blue-btn { + @include colorBtn($blue) +} + +.light-blue-btn { + @include colorBtn($light-blue) +} + +.red-btn { + @include colorBtn($red) +} + +.pink-btn { + @include colorBtn($pink) +} + +.green-btn { + @include colorBtn($green) +} + +.tiffany-btn { + @include colorBtn($tiffany) +} + +.yellow-btn { + @include colorBtn($yellow) +} + +.pan-btn { + font-size: 14px; + color: #fff; + padding: 14px 36px; + border-radius: 8px; + border: none; + outline: none; + transition: 600ms ease all; + position: relative; + display: inline-block; + + &:hover { + background: #fff; + + &:before, + &:after { + width: 100%; + transition: 600ms ease all; + } + } + + &:before, + &:after { + content: ''; + position: absolute; + top: 0; + right: 0; + height: 2px; + width: 0; + transition: 400ms ease all; + } + + &::after { + right: inherit; + top: inherit; + left: 0; + bottom: 0; + } +} + +.custom-button { + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + color: #fff; + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: 0; + margin: 0; + padding: 10px 15px; + font-size: 14px; + border-radius: 4px; +} diff --git a/src/views/OperationalOverview/styles/element-ui.scss b/src/views/OperationalOverview/styles/element-ui.scss new file mode 100644 index 00000000..b6edbddf --- /dev/null +++ b/src/views/OperationalOverview/styles/element-ui.scss @@ -0,0 +1,173 @@ +// cover some element-ui styles + +.el-breadcrumb__inner, +.el-breadcrumb__inner a { + font-weight: 400 !important; +} + +.el-upload { + input[type="file"] { + display: none !important; + } +} + +.el-upload__input { + display: none; +} + +.cell { + .el-tag { + margin-right: 0px; + } +} + +.visual-container { + .el-table { + .cell { + line-height: 1.2em !important; + } + } +} +.app-container { + .el-table th>.cell { + color: rgb(0, 0, 0,0.85); + } + .el-table__body tr.current-row>td { + background-color: #EAF1FC; + } + +} +.el-table--medium th, .el-table--medium td { + padding: 5px 0; +} + +::v-deep .el-table__fixed-right { + right: 0 !important; + height: 100% !important; +} +.el-button--mini { + padding: 4px 0; +} +.small-padding { + .cell { + padding-left: 5px; + padding-right: 5px; + } +} + +.fixed-width { + .el-button--mini { + padding: 7px 10px; + min-width: 60px; + } +} + +.status-col { + .cell { + padding: 0 10px; + text-align: center; + + .el-tag { + margin-right: 0px; + } + } +} + +.el-button--primary { + background-color: #0B58FF !important; + border-color: #0B58FF !important; +} +// to fixed https://github.com/ElemeFE/element/issues/2461 +.el-dialog { + transform: none; + left: 0; + position: relative; + margin: 0 auto; + border-radius: 4px; +} + +.el-dialog__header { + padding: 12px 24px 8px; + border-bottom: 1px solid #E9E9E9; + text-align: left; +} + +.el-dialog__title { + font-size: 16px; + font-weight: 700; + color: rgba(0, 0, 0, 0.85); +} + +.el-form-item__label { + font-size: 14px; + font-weight: 400; + color: rgba(0, 0, 0, 0.65); + padding-right: 8px; +} + +.el-dialog__headerbtn { + top: 16px; + right: 24px; +} + +.el-form-item--medium .el-form-item__label { + line-height: 32px; +} + +.el-button--medium { + padding: 8px 16px; +} + +.el-select { + width: 100%; +} + +.el-switch.is-checked .el-switch__core { + background-color: #0B58FF; + border-color: #0B58FF; +} + +.el-radio__input.is-checked .el-radio__inner { + background-color: #0B58FF; + border-color: #0B58FF; +} + +.el-button--text{ + color:#0B58FF; +} + +.el-tabs__item.is-active { + color: #0b58ff; +} + +.el-tooltip__popper.is-dark { + max-width: 1100px; +} +// refine element ui upload +.upload-container { + .el-upload { + width: 100%; + + .el-upload-dragger { + width: 100%; + height: 200px; + } + } +} + +// dropdown +.el-dropdown-menu { + a { + display: block + } +} + +// fix date-picker ui bug in filter-item +.el-range-editor.el-input__inner { + display: inline-flex !important; +} + +// to fix el-date-picker css style +.el-range-separator { + box-sizing: content-box; +} diff --git a/src/views/OperationalOverview/styles/element-variables.scss b/src/views/OperationalOverview/styles/element-variables.scss new file mode 100644 index 00000000..5bdc4dad --- /dev/null +++ b/src/views/OperationalOverview/styles/element-variables.scss @@ -0,0 +1,31 @@ +/** +* I think element-ui's default theme color is too light for long-term use. +* So I modified the default color and you can modify it to your liking. +**/ + +/* theme color */ +$--color-primary: #1890ff; +$--color-success: #13ce66; +$--color-warning: #ffba00; +$--color-danger: #ff4949; +// $--color-info: #1E1E1E; + +$--button-font-weight: 400; + +// $--color-text-regular: #1f2d3d; + +$--border-color-light: #dfe4ed; +$--border-color-lighter: #e6ebf5; + +$--table-border: 1px solid #dfe6ec; + +/* icon font path, required */ +$--font-path: "~element-ui/lib/theme-chalk/fonts"; + +@import "~element-ui/packages/theme-chalk/src/index"; + +// the :export directive is the magic sauce for webpack +// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass +:export { + theme: $--color-primary; +} diff --git a/src/views/OperationalOverview/styles/index.scss b/src/views/OperationalOverview/styles/index.scss new file mode 100644 index 00000000..577e7e66 --- /dev/null +++ b/src/views/OperationalOverview/styles/index.scss @@ -0,0 +1,319 @@ +@import './variables.scss'; +@import './mixin.scss'; +@import './transition.scss'; +@import './element-ui.scss'; +@import './sidebar.scss'; +@import './btn.scss'; + +body { + height: 100%; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; + font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif; +} + +label { + font-weight: 700; +} + +html { + height: 100%; + box-sizing: border-box; +} + +#app { + height: 100%; +} + +*, +*:before, +*:after { + box-sizing: inherit; +} + +.no-padding { + padding: 0px !important; +} + +.padding-content { + padding: 4px 0; +} + +a:focus, +a:active { + outline: none; +} + +a, +a:focus, +a:hover { + cursor: pointer; + color: inherit; + text-decoration: none; +} + +div:focus { + outline: none; +} + +.fr { + float: right; +} + +.fl { + float: left; +} + +.pr-5 { + padding-right: 5px; +} + +.pl-5 { + padding-left: 5px; +} + +.block { + display: block; +} + +.pointer { + cursor: pointer; +} + +.inlineBlock { + display: block; +} + +.clearfix { + &:after { + visibility: hidden; + display: block; + font-size: 0; + content: " "; + clear: both; + height: 0; + } +} + +aside { + background: #eef1f6; + padding: 8px 24px; + margin-bottom: 20px; + border-radius: 2px; + display: block; + line-height: 32px; + font-size: 16px; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; + color: #2c3e50; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + a { + color: #337ab7; + cursor: pointer; + + &:hover { + color: rgb(32, 160, 255); + } + } +} + +//main-container全局样式 +.app-container { + margin:0 16px 0; + background-color: #fff; + border-radius: 4px; + padding: 16px 16px 0; + height: calc(100vh - 134px); + overflow: auto; +} + +.components-container { + margin: 30px 50px; + position: relative; +} + +// 覆盖原有的分页样式-start + +.el-pagination { + position: relative; +} + +.el-pagination.is-background .btn-prev,.el-pagination.is-background .btn-next,.el-pagination.is-background .el-pager li { + background-color: #fff; +} + +.el-pagination__jump { + margin-left: 125px; +} + +.el-pagination__sizes { + position: absolute; + right: 100px; +} + +.el-pagination.is-background .el-pager li:not(.disabled).active { + background-color: #0B58FF; +} +.el-pagination .el-select .el-input .el-input__inner { + height: 22px; +} +.el-badge__content { + border: none; +} +// 覆盖原有的分页样式-end + +.text-center { + text-align: center +} + +.sub-navbar { + height: 50px; + line-height: 50px; + position: relative; + width: 100%; + text-align: right; + padding-right: 20px; + transition: 600ms ease position; + background: linear-gradient(90deg, rgba(32, 182, 249, 1) 0%, rgba(32, 182, 249, 1) 0%, rgba(33, 120, 241, 1) 100%, rgba(33, 120, 241, 1) 100%); + + .subtitle { + font-size: 20px; + color: #fff; + } + + &.draft { + background: #d0d0d0; + } + + &.deleted { + background: #d0d0d0; + } +} + +.link-type, +.link-type:focus { + color: #337ab7; + cursor: pointer; + + &:hover { + color: rgb(32, 160, 255); + } +} + +.filter-container { + padding-bottom: 10px; + + .filter-item { + display: inline-block; + vertical-align: middle; + margin-bottom: 10px; + } +} + +//refine vue-multiselect plugin +.multiselect { + line-height: 16px; +} + +.multiselect--active { + z-index: 1000 !important; +} + +// 业务代码中 +.content-row { + padding: 10px 0; +} + +.el-dialog { + width: 1000px; +} +.el-dialog__body { + padding: 30px 40px; +} + +.el-dialog__wrapper { + backdrop-filter: blur(5px); +} + +::-webkit-scrollbar { + width: 8px; + height: 8px; + background-color: transparent; +} + +::-webkit-scrollbar-track-piece { + background-color:rgba(144,147,153,0); +} + +::-webkit-scrollbar-corner { + background-color:rgba(144,147,153,0); +} + +::-webkit-scrollbar-track { + width: 6px; + background: rgba(144,147,153,0); + -webkit-border-radius: 2em; + -moz-border-radius: 2em; + border-radius: 2em; +} + +::-webkit-scrollbar-thumb { + background-color: rgba(144,147,153,.5); + background-clip: padding-box; + min-height: 28px; + -webkit-border-radius: 2em; + -moz-border-radius: 2em; + border-radius: 2em; + transition: background-color .3s; + cursor: pointer; +} + +::-webkit-scrollbar-thumb:hover { + background-color: rgba(144,147,153,.3); +} + +// 数据分析单选框样式覆盖 + +.app-container{ + .data-analysis-radio{ + .el-radio-button__inner { + border: 0; + padding: 7px 0; + margin: 0 15px; + } + .el-radio-button__orig-radio:checked+.el-radio-button__inner{ + background-color: transparent; + color: #606266; + box-shadow: 0 0 0 0 transparent; + border-bottom: 2px solid #0B58FF; + } + .el-radio-button:first-child .el-radio-button__inner, + .el-radio-button:last-child .el-radio-button__inner { + border-radius: 0; + } + } +} + +.el-table--group, .el-table--border { + border: none; +} + +// 全局loading样式覆盖 +.el-loading-mask{ + z-index: 99999; +} + + +input::-webkit-input-placeholder { + /* WebKit browsers */ + font-size:12px; +} +input::-moz-placeholder { + /* Mozilla Firefox 19+ */ + font-size:12px; +} +input:-ms-input-placeholder { + font-size:12px; +} \ No newline at end of file diff --git a/src/views/OperationalOverview/styles/mixin.scss b/src/views/OperationalOverview/styles/mixin.scss new file mode 100644 index 00000000..06fa0612 --- /dev/null +++ b/src/views/OperationalOverview/styles/mixin.scss @@ -0,0 +1,66 @@ +@mixin clearfix { + &:after { + content: ""; + display: table; + clear: both; + } +} + +@mixin scrollBar { + &::-webkit-scrollbar-track-piece { + background: #d3dce6; + } + + &::-webkit-scrollbar { + width: 6px; + } + + &::-webkit-scrollbar-thumb { + background: #99a9bf; + border-radius: 20px; + } +} + +@mixin relative { + position: relative; + width: 100%; + height: 100%; +} + +@mixin pct($pct) { + width: #{$pct}; + position: relative; + margin: 0 auto; +} + +@mixin triangle($width, $height, $color, $direction) { + $width: $width/2; + $color-border-style: $height solid $color; + $transparent-border-style: $width solid transparent; + height: 0; + width: 0; + + @if $direction==up { + border-bottom: $color-border-style; + border-left: $transparent-border-style; + border-right: $transparent-border-style; + } + + @else if $direction==right { + border-left: $color-border-style; + border-top: $transparent-border-style; + border-bottom: $transparent-border-style; + } + + @else if $direction==down { + border-top: $color-border-style; + border-left: $transparent-border-style; + border-right: $transparent-border-style; + } + + @else if $direction==left { + border-right: $color-border-style; + border-top: $transparent-border-style; + border-bottom: $transparent-border-style; + } +} diff --git a/src/views/OperationalOverview/styles/sidebar.scss b/src/views/OperationalOverview/styles/sidebar.scss new file mode 100644 index 00000000..4c2691e4 --- /dev/null +++ b/src/views/OperationalOverview/styles/sidebar.scss @@ -0,0 +1,209 @@ +#app { + + .main-container { + min-height: 100%; + transition: margin-left .28s; + // margin-left: $sideBarWidth; + position: relative; + } + + .sidebar-container { + transition: width 0.28s; + // width: $sideBarWidth !important; + // background-color: $menuBg; + height: 100%; + position: fixed; + font-size: 0px; + top: 0; + bottom: 0; + left: 0; + z-index: 1001; + overflow: hidden; + + // reset element-ui css + .horizontal-collapse-transition { + transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out; + } + + .scrollbar-wrapper { + overflow-x: hidden !important; + } + + .el-scrollbar__bar.is-vertical { + right: 0px; + } + + .el-scrollbar { + height: 100%; + } + + &.has-logo { + .el-scrollbar { + height: calc(100% - 50px); + } + } + + .is-horizontal { + display: none; + } + + a { + display: inline-block; + width: 100%; + overflow: hidden; + } + + .svg-icon { + margin-right: 16px; + } + + .el-menu { + border: none; + height: 100%; + width: 100% !important; + } + + // menu hover + .submenu-title-noDropdown, + .el-submenu__title { + &:hover { + // background-color: $menuHover !important; + } + } + + .is-active>.el-submenu__title { + // color: $subMenuActiveText !important; + } + + & .nest-menu .el-submenu>.el-submenu__title, + & .el-submenu .el-menu-item { + // min-width: $sideBarWidth !important; + // background-color: $subMenuBg !important; + + &:hover { + // background-color: $subMenuHover !important; + } + } + } + + .hideSidebar { + .sidebar-container { + width: 54px !important; + } + + .main-container { + margin-left: 54px; + } + + .submenu-title-noDropdown { + padding: 0 !important; + position: relative; + + .el-tooltip { + padding: 0 !important; + + .svg-icon { + margin-left: 20px; + } + } + } + + .el-submenu { + overflow: hidden; + + &>.el-submenu__title { + padding: 0 !important; + + .svg-icon { + margin-left: 20px; + } + + .el-submenu__icon-arrow { + display: none; + } + } + } + + .el-menu--collapse { + .el-submenu { + &>.el-submenu__title { + &>span { + height: 0; + width: 0; + overflow: hidden; + visibility: hidden; + display: inline-block; + } + } + } + } + } + + .el-menu--collapse .el-menu .el-submenu { + // min-width: $sideBarWidth !important; + } + + // mobile responsive + .mobile { + .main-container { + margin-left: 0px; + } + + .sidebar-container { + transition: transform .28s; + // width: $sideBarWidth !important; + } + + &.hideSidebar { + .sidebar-container { + pointer-events: none; + transition-duration: 0.3s; + // transform: translate3d(-$sideBarWidth, 0, 0); + } + } + } + + .withoutAnimation { + + .main-container, + .sidebar-container { + transition: none; + } + } +} + +// when menu collapsed +.el-menu--vertical { + &>.el-menu { + .svg-icon { + margin-right: 16px; + } + } + + .nest-menu .el-submenu>.el-submenu__title, + .el-menu-item { + &:hover { + // you can use $subMenuHover + // background-color: $menuHover !important; + } + } + + // the scroll bar appears when the subMenu is too long + >.el-menu--popup { + max-height: 100vh; + overflow-y: auto; + + &::-webkit-scrollbar-track-piece { + background: #d3dce6; + } + + &::-webkit-scrollbar { + width: 6px; + } + + &::-webkit-scrollbar-thumb { + background: #99a9bf; + border-radius: 20px; + } + } +} diff --git a/src/views/OperationalOverview/styles/transition.scss b/src/views/OperationalOverview/styles/transition.scss new file mode 100644 index 00000000..4cb27cc8 --- /dev/null +++ b/src/views/OperationalOverview/styles/transition.scss @@ -0,0 +1,48 @@ +// global transition css + +/* fade */ +.fade-enter-active, +.fade-leave-active { + transition: opacity 0.28s; +} + +.fade-enter, +.fade-leave-active { + opacity: 0; +} + +/* fade-transform */ +.fade-transform-leave-active, +.fade-transform-enter-active { + transition: all .5s; +} + +.fade-transform-enter { + opacity: 0; + transform: translateX(-30px); +} + +.fade-transform-leave-to { + opacity: 0; + transform: translateX(30px); +} + +/* breadcrumb transition */ +.breadcrumb-enter-active, +.breadcrumb-leave-active { + transition: all .5s; +} + +.breadcrumb-enter, +.breadcrumb-leave-active { + opacity: 0; + transform: translateX(20px); +} + +.breadcrumb-move { + transition: all .5s; +} + +.breadcrumb-leave-active { + position: absolute; +} diff --git a/src/views/OperationalOverview/styles/variables.scss b/src/views/OperationalOverview/styles/variables.scss new file mode 100644 index 00000000..e96d9af7 --- /dev/null +++ b/src/views/OperationalOverview/styles/variables.scss @@ -0,0 +1,35 @@ +// base color +$blue:#324157; +$light-blue:#3A71A8; +$red:#C03639; +$pink: #E65D6E; +$green: #30B08F; +$tiffany: #4AB7BD; +$yellow:#FEC171; +$panGreen: #30B08F; + +// sidebar +$menuText:#bfcbd9; +$menuActiveText:#409EFF; +$subMenuActiveText:#f4f4f5; // https://github.com/ElemeFE/element/issues/12951 + +$menuBg:#304156; +$menuHover:#263445; + +$subMenuBg:#0B253F; +$subMenuHover:#001528; + +$sideBarWidth: 248px; + +// the :export directive is the magic sauce for webpack +// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass +:export { + menuText: $menuText; + menuActiveText: $menuActiveText; + subMenuActiveText: $subMenuActiveText; + // menuBg: $menuBg; + menuHover: $menuHover; + subMenuBg: $subMenuBg; + subMenuHover: $subMenuHover; + sideBarWidth: $sideBarWidth; +} diff --git a/src/views/choicePart/components/Navbar.vue b/src/views/choicePart/components/Navbar.vue new file mode 100644 index 00000000..fbee3224 --- /dev/null +++ b/src/views/choicePart/components/Navbar.vue @@ -0,0 +1,24 @@ + + + \ No newline at end of file diff --git a/src/views/choicePart/index.vue b/src/views/choicePart/index.vue new file mode 100644 index 00000000..5ee61349 --- /dev/null +++ b/src/views/choicePart/index.vue @@ -0,0 +1,312 @@ + + + \ No newline at end of file diff --git a/src/views/energy/base/energyPlcConnect/index.vue b/src/views/energy/base/energyPlcConnect/index.vue index cfbe6dcf..7316665e 100644 --- a/src/views/energy/base/energyPlcConnect/index.vue +++ b/src/views/energy/base/energyPlcConnect/index.vue @@ -67,7 +67,8 @@ const tableProps = [ }, { prop: 'plcTableCode', - label: '关联表编码' + label: '关联表编码', + showOverflowtooltip: true }, { prop: 'cnName', diff --git a/src/views/group/base/groupClasses/components/groupClassAdd.vue b/src/views/group/base/groupClasses/components/groupClassAdd.vue index 52272a1e..cd2f0fe6 100644 --- a/src/views/group/base/groupClasses/components/groupClassAdd.vue +++ b/src/views/group/base/groupClasses/components/groupClassAdd.vue @@ -116,6 +116,7 @@ export default { getGroupClasses(id).then((res) => { if (res.code === 0) { this.form = res.data + this.form.disableTime = res.data.disableTime || '' } }) } else { @@ -145,22 +146,10 @@ export default { submitForm() { this.$refs['form'].validate((valid) => { if (valid) { - let obj = {} - if (this.form.disableTime) { - obj = this.form - } else { - obj.id = this.form.id - obj.name = this.form.name - obj.code = this.form.code - obj.enableTime = this.form.enableTime - obj.startTime = this.form.startTime - obj.endTime = this.form.endTime - obj.daySpan = this.form.daySpan - obj.remark = this.form.remark - } + this.form.disableTime = this.form.disableTime || '' if (this.isEdit) { //编辑 - updateGroupClasses({ ...obj }).then((res) => { + updateGroupClasses({ ...this.form }).then((res) => { if (res.code === 0) { this.$modal.msgSuccess("操作成功"); this.$emit('successSubmit') diff --git a/src/views/group/base/groupTeamScheduling/index.vue b/src/views/group/base/groupTeamScheduling/index.vue index 37924793..61389315 100644 --- a/src/views/group/base/groupTeamScheduling/index.vue +++ b/src/views/group/base/groupTeamScheduling/index.vue @@ -34,7 +34,7 @@ 取消 - 班组上下片查询 + 班组能源查询 班组检测查询 @@ -286,22 +286,18 @@ export default { case '1': this.$router.push({ path: '/core/enhance/product-line-24h?startTime='+this.chooseObj.startTime+'&endTime='+this.chooseObj.endTime, - // name: 'ProductionLineData', - // params: { startTime: this.chooseObj.startTime, endTime: this.chooseObj.endTime } }) break; case '2': // 能源 this.$router.push({ path: '/energy/monitoring/energy-report-search?startTime='+this.chooseObj.startTime+'&endTime='+this.chooseObj.endTime - // name: 'EnergyReportSearch', - // params: { startTime: this.chooseObj.startTime, endTime: this.chooseObj.endTime } }) break; default: this.$router.push({ - path: '/quality/monitoring/quality-statistics', + path: '/quality/base/quality-inspection-data/detection-information/statistical-data?startTime='+this.chooseObj.startTime+'&endTime='+this.chooseObj.endTime, // name: 'QualityStatistics', - params: { startTime: this.chooseObj.startTime, endTime: this.chooseObj.endTime } + // params: { startTime: this.chooseObj.startTime, endTime: this.chooseObj.endTime } }) } } diff --git a/src/views/login.vue b/src/views/login.vue index 401be7aa..ae2ff139 100644 --- a/src/views/login.vue +++ b/src/views/login.vue @@ -1,81 +1,238 @@ + :deep(.el-input__prefix) { + top: 22%; + } +} + diff --git a/src/views/order/base/orderManage/components/addWorkOrder.vue b/src/views/order/base/orderManage/components/addWorkOrder.vue index 69d9904c..4e50fcf7 100644 --- a/src/views/order/base/orderManage/components/addWorkOrder.vue +++ b/src/views/order/base/orderManage/components/addWorkOrder.vue @@ -92,8 +92,8 @@ - 产品基础 - 工艺扩展 + 产品基础BOM + 工艺扩展BOM @@ -253,12 +253,20 @@ export default { }) } else { // 新增工单 - this.form.planStartTime = this.planStartTime ? new Date(this.planStartTime).valueOf() : '' - this.form.planFinishTime = this.planFinishTime ? new Date(this.planFinishTime).valueOf() : '' - orderIssue({ ...this.form }).then(res => { + let _this = this + _this.form.planStartTime = _this.planStartTime ? new Date(_this.planStartTime).valueOf() : '' + _this.form.planFinishTime = _this.planFinishTime ? new Date(_this.planFinishTime).valueOf() : '' + orderIssue({ ..._this.form }).then(res => { if (res.code === 0) { - this.$modal.msgSuccess("操作成功") - this.$emit('addWorkOrderSubmit') + _this.$modal.msgSuccess("操作成功") + let name = this.form.name + _this.$emit('addWorkOrderSubmit') + // 询问是否添加预使用主原料 + _this.$modal.confirm('是否添加预使用主原料信息?').then(function() { + _this.$router.push({ + path: '/core/core-work-order?workOrderName='+encodeURI(name) + }) + }) } }) } diff --git a/src/views/order/base/orderManage/components/orderAdd.vue b/src/views/order/base/orderManage/components/orderAdd.vue index daf4c18b..63cc03cd 100644 --- a/src/views/order/base/orderManage/components/orderAdd.vue +++ b/src/views/order/base/orderManage/components/orderAdd.vue @@ -24,7 +24,7 @@ {{ item.name }} {{ item.specifications }} @@ -41,7 +41,7 @@ - + - + - + - + - - 产品基础 - 工艺扩展 + + 产品基础BOM + 工艺扩展BOM @@ -240,6 +240,20 @@ export default { } } }, + // 工艺变更 + materialMethodChange(val) { + if (val === 2 && !this.form.processFlowId) { + this.form.materialMethod = 1 + this.$modal.msgError("请先选择关联工艺"); + } + }, + // 工艺变更 + processFlowIdChange(val) { + console.log(val) + if (!val) { + this.form.materialMethod = 1 + } + }, submitForm() { this.$refs['orderAddForm'].validate((valid) => { if (valid) { diff --git a/src/views/order/base/orderManage/index.vue b/src/views/order/base/orderManage/index.vue index ec44b927..a30a4344 100644 --- a/src/views/order/base/orderManage/index.vue +++ b/src/views/order/base/orderManage/index.vue @@ -194,12 +194,22 @@ export default { type: 'add', btnName: '新增工单', showParam: { - type: '&', + type: '|', data: [ { type: 'equal', name: 'status', value: 1 + }, + { + type: 'equal', + name: 'status', + value: 2 + }, + { + type: 'equal', + name: 'status', + value: 3 } ] } @@ -210,12 +220,22 @@ export default { type: 'bind', btnName: '绑定工单', showParam: { - type: '&', + type: '|', data: [ { type: 'equal', name: 'status', value: 1 + }, + { + type: 'equal', + name: 'status', + value: 2 + }, + { + type: 'equal', + name: 'status', + value: 3 } ] } @@ -224,14 +244,19 @@ export default { this.$auth.hasPermi('base:order-manage:bindWorkOrder') ? { type: 'complete', - btnName: '完成工单', + btnName: '完成订单', showParam: { - type: '&', + type: '|', data: [ { type: 'equal', name: 'status', value: 2 + }, + { + type: 'equal', + name: 'status', + value: 3 } ] } diff --git a/src/views/order/monitoring/orderCompletionMonitoring/index.vue b/src/views/order/monitoring/orderCompletionMonitoring/index.vue index d20b887a..d1efb9f8 100644 --- a/src/views/order/monitoring/orderCompletionMonitoring/index.vue +++ b/src/views/order/monitoring/orderCompletionMonitoring/index.vue @@ -6,9 +6,24 @@ ref="searchBarForm" @headBtnClick="buttonClick" /> - + + + + - +
各订单环形图 @@ -36,7 +51,7 @@ style="width: 182px; height: 180px;" >
-
+ -->
diff --git a/src/views/quality/base/qualityScrapDet/index.vue b/src/views/quality/base/qualityScrapDet/index.vue index 82467b0e..6e9276aa 100644 --- a/src/views/quality/base/qualityScrapDet/index.vue +++ b/src/views/quality/base/qualityScrapDet/index.vue @@ -43,9 +43,9 @@ import basicPage from '../../../core/mixins/basic-page'; import { parseTime } from '../../../core/mixins/code-filter'; import { getQualityScrapDetPage, - deleteQualityScrapDet + deleteQualityScrapDet, } from '@/api/base/qualityScrapDet'; - +import { getList, } from "@/api/base/qualityScrapType"; const tableProps = [ { prop: 'createTime', @@ -98,10 +98,18 @@ export default { formConfig: [ { type: 'input', - label: '批次名', - placeholder: '批次名', - param: 'name', - }, + label: '报废原因', + placeholder: '报废原因', + param: 'content', + }, + { + type: 'select', + label: '报废类型', + selectOptions: [], + labelField: 'name', + valueField: 'id', + param: 'typeId', + }, { type: 'button', btnName: '查询', @@ -124,7 +132,10 @@ export default { components: { AddOrUpdate, }, - created() {}, + created() { }, + mounted () { + this.getDict(); + }, methods: { // 获取数据列表 getDataList() { @@ -134,13 +145,19 @@ export default { this.listQuery.total = response.data.total; this.dataListLoading = false; }); + }, + async getDict() { + // 物料列表 + const res = await getList(); + this.formConfig[1].selectOptions = res.data; }, buttonClick(val) { switch (val.btnName) { case 'search': this.listQuery.pageNo = 1; this.listQuery.pageSize = 10; - this.listQuery.name = val.name ? val.name : undefined; + this.listQuery.content = val.content ? val.content : undefined; + this.listQuery.typeId = val.typeId ? val.typeId : undefined; this.getDataList(); break; case 'reset': diff --git a/src/views/quality/base/qualityScrapType/index.vue b/src/views/quality/base/qualityScrapType/index.vue index 156ab946..6d638e83 100644 --- a/src/views/quality/base/qualityScrapType/index.vue +++ b/src/views/quality/base/qualityScrapType/index.vue @@ -98,8 +98,8 @@ export default { formConfig: [ { type: 'input', - label: '批次名', - placeholder: '批次名', + label: '报废类型', + placeholder: '报废类型', param: 'name', }, { diff --git a/src/views/quality/monitoring/currentData/index.vue b/src/views/quality/monitoring/currentData/index.vue index c6231efc..36ed989a 100644 --- a/src/views/quality/monitoring/currentData/index.vue +++ b/src/views/quality/monitoring/currentData/index.vue @@ -9,12 +9,18 @@ +
产品名:{{ productDetail.name }} 产品规格:{{ productDetail.specifications }}
+
+
工单:{{ list[index].workOrderName }}
+ + +
- +
@@ -49,7 +55,7 @@ import { // import Editor from '@/components/Editor'; import moment from 'moment'; // import DialogForm from './dialogForm.vue'; - +import * as echarts from 'echarts'; // import basicPageMixin from '@/mixins/lb/basicPageMixin'; export default { name: 'statisticalData', @@ -61,6 +67,12 @@ export default { return { list: [], dynamicProps: [], + downProps: [], + downList: [], + productDetail: { + name: null, + specifications:null, + }, activeName: 'table', searchBarFormConfig: [ // { @@ -202,19 +214,19 @@ export default { return [ { // width: 160, - prop: 'inspectionContent', - label: '检测内容', + prop: 'workOrderName', + label: '工单名', }, ...this.dynamicProps, { // width: 128, prop: 'sumInput', - label: '检测类型总数', + label: '上片总数', }, { // width: 128, - prop: 'scrapRatio', - label: '比例(%)', + prop: 'sumOutput', + label: '下片总数', // subcomponent: { // name: 'TextOnly', // props: { @@ -259,7 +271,61 @@ export default { } this.getList() }, - methods: { + methods: { + handleTabClick() { + if (this.activeName === 'chart') { + var chartDom = document.getElementById('main'); + var myChart = echarts.init(chartDom); + var option; + let arrXAxis = [] + this.list.forEach((ele) => { + arrXAxis.push(ele.workOrderName) + }) + this.downList.forEach((ele) => { + ele.forEach((item) => { + if (ele.length !==0 && item.productionline) { + arrXAxis.push('产线' + item.productionline) + + } + }) + }) + let arrYAxis = [] + this.list.forEach((ele) => { + // console.log(ele); + arrYAxis.push(ele.sumInput) + }) + this.downList.forEach((ele) => { + ele.forEach((item) => { + console.log(item); + // if (ele.length !== 0 && item.productionline) { + arrYAxis.push(item.sumInput) + // } + }) + }) + // console.log(arrXAxis); + option = { + xAxis: { + type: 'category', + data: arrXAxis + }, + yAxis: { + type: 'value' + }, + series: [ + { + data: arrYAxis, + type: 'bar', + showBackground: true, + backgroundStyle: { + color: 'rgba(180, 180, 180, 0.2)' + } + } + ] + }; + + option && myChart.setOption(option); + } + }, /** 获取搜索栏的产线列表 */ // async getDict() { // const res = await getProductList() @@ -297,31 +363,71 @@ export default { /** 查询列表 */ async getDataList() { this.loading = true; - // 执行查询 + // 执行查询 + this.downProps= [] const res = await getInspectionData(this.queryParams) console.log(res); - this.dynamicProps = this.filterNameData(res.data[0].upPart) + this.productDetail.name = res.data[0].productName + this.productDetail.specifications = res.data[0].specifications + // this.productName = res.data[0].productName + this.dynamicProps = this.filterNameData(res.data[0].upPart.nameData) console.log(this.dynamicProps) this.list = this.filterData(res.data[0].upPart.data) - console.log(this.list); - }, - filterNameData(upData) { - console.log(upData); - // upData.forEach((ele) => { - const ndSet = new Set(); - upData.nameData.forEach((nd) => { - ndSet.add(nd.name); - }); - return Array.from(ndSet.values()) - .sort() - .map((name) => ({ - prop: name, - label: name, - })); - // }) + console.log(this.list) + res.data[0].downPart.forEach((ele) => { + // console.log(ele.data); + let arr = this.downFilterNameData(ele.nameData) + if (arr.length !== 0) { + let propArr = [{ + // width: 160, + prop: 'inspectionContent', + label: '检测内容', + }, + ...arr, + { + // width: 128, + prop: 'sumInput', + label: '原片总数', + }, + { + // width: 128, + prop: 'sumScrap', + label: '未通过检测总数', + }, + { + // width: 128, + prop: 'scrapRatio', + label: '报废比例', + }] + this.downProps.push(propArr) + } + // this.downProps = [] + }) + res.data[0].downPart.forEach((ele) => { + // console.log(ele.data); + let arr =this.downFilterData(ele.data) + if (arr.length !== 0) { + this.downList.push(arr) + } + // this.downProps = [] + }) + // console.log(this.downList); }, - filterData(data) { + downFilterNameData(nameData) { + const ndSet = new Set(); + nameData.forEach((nd) => { + ndSet.add(nd.name); + }); + return Array.from(ndSet.values()) + .sort() + .map((name) => ({ + prop: name, + label: name, + })); + // }) + }, + downFilterData(data) { return data.map((item) => { const { data: innerData } = item; const keyValuePairs = {}; @@ -333,6 +439,39 @@ export default { ...keyValuePairs, sumInput: item.sumInput, scrapRatio: item.scrapRatio, + sumScrap: item.sumScrap + }; + }); + }, + filterNameData(nameData) { + // console.log(upData); + // upData.forEach((ele) => { + const ndSet = new Set(); + + nameData.forEach((nd) => { + ndSet.add(nd.name); + }); + return Array.from(ndSet.values()) + .sort() + .map((name) => ({ + prop: name, + label: name, + })); + // }) + }, + filterData(data) { + return data.map((item) => { + const { data: innerData } = item; + const keyValuePairs = {}; + innerData.map((d) => { + keyValuePairs[d.dynamicName] = d.dynamicValue; + }); + return { + inspectionContent: item.inspectionContent, + workOrderName: item.workOrderName, + ...keyValuePairs, + sumInput: item.sumInput, + sumOutput: item.sumOutput, }; }); }, @@ -456,5 +595,24 @@ export default { height: 36px; } } +.blue-title { + position: relative; + padding: 4px 0; + padding-left: 12px; + font-size: 14px; + color: #606266; + font-weight: 700; + margin-bottom: 12px; + &::before { + content: ''; + position: absolute; + left: 0; + top: 6px; + height: 16px; + width: 4px; + border-radius: 1px; + background: #0b58ff; + } +} diff --git a/src/views/quality/monitoring/deviceParameters/index.vue b/src/views/quality/monitoring/deviceParameters/index.vue index 0c30de48..1146b523 100644 --- a/src/views/quality/monitoring/deviceParameters/index.vue +++ b/src/views/quality/monitoring/deviceParameters/index.vue @@ -15,7 +15,7 @@ ">
- {{ currentFactory?.label || '点我选择工厂' }} + {{ currentFactory?.label || '点我选择设备' }}