14 Commits

Author SHA1 Message Date
f0562eade5 Merge pull request '修改EAP' (#97) from zwq into develop
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #97
2022-08-09 10:07:48 +08:00
zwq
396e09f696 修改EAP 2022-08-09 10:07:17 +08:00
0402b24568 Merge pull request '更新ERP' (#96) from zwq into develop
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #96
2022-07-29 16:33:15 +08:00
zwq
dcbece43f8 更新ERP 2022-07-29 16:32:28 +08:00
4cd26e2f47 Merge pull request '打包' (#95) from zwq into develop
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #95
2022-07-25 10:22:32 +08:00
zwq
35c3b18b0c 打包 2022-07-25 10:21:32 +08:00
b31e9539fd Merge pull request '更新ERP' (#94) from zwq into develop
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #94
2022-07-25 10:18:48 +08:00
zwq
72af437415 更新ERP 2022-07-25 10:17:59 +08:00
3e6712ddc5 Merge pull request '修改样式' (#93) from zwq into develop
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #93
2022-06-29 13:32:36 +08:00
zwq
8d0c0feb72 修改样式 2022-06-29 13:31:49 +08:00
47895cfcf5 Merge pull request '改名字' (#92) from zwq into develop
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #92
2022-06-21 14:04:14 +08:00
zwq
b907cb88f2 改名字 2022-06-21 14:03:26 +08:00
0fc8003621 Merge pull request '改名字' (#91) from zwq into develop
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #91
2022-06-21 11:35:38 +08:00
zwq
ecc16ce276 改名字 2022-06-21 11:35:09 +08:00
42 changed files with 1161 additions and 152 deletions

View File

@@ -3,5 +3,6 @@ ENV = 'production'
# base api
VUE_APP_BASE_API = ''
VUE_APP_WB_API = 'a.wms.picaiba.com'
VUE_APP_REPORT_DESIGN_URL = '/ureport/designer'
VUE_APP_REPORT_VIEW_URL = '/ureport/preview'

2
dist/index.html vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.app-container[data-v-3a23e516]{width:100%;height:200px}.waring[data-v-3a23e516]{padding:5px;border-radius:5px;background-color:#f56c6c;color:#fff}.normal[data-v-3a23e516]{padding:5px;border-radius:5px;background-color:#67c23a;color:#fff}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.app-container[data-v-3a23e516]{width:100%;height:200px}.waring[data-v-3a23e516]{padding:5px;border-radius:5px;background-color:#f56c6c;color:#fff}.normal[data-v-3a23e516]{padding:5px;border-radius:5px;background-color:#67c23a;color:#fff}.btn-container[data-v-2e322fe2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap}.btndiv[data-v-2e322fe2]{width:20%;height:100px;margin:auto}.box-card[data-v-2e322fe2]{background-color:#3e8ef7;margin:10px;color:#fff}

1
dist/static/js/app.6fb7a37a.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

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,3 +1,10 @@
<!--
* @Author: zwq
* @Date: 2022-03-14 10:58:37
* @LastEditors: zwq
* @LastEditTime: 2022-06-29 10:02:02
* @Description:
-->
<template>
<div id="app">
<router-view />
@@ -11,3 +18,9 @@ export default {
}
}
</script>
<style lang="scss" scoped>
#app {
background-color: #f2f4f9;
}
</style>

244
src/api/EAP.js Normal file
View File

@@ -0,0 +1,244 @@
import request from '@/utils/request'
export function AlarmCleared() {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendAlarmClearedEvent',
method: 'post'
})
}
export function AlarmDetected() {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendAlarmDetectedEvent',
method: 'post'
})
}
export function CompleteProcessFlow() {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendCompleteProcessFlowEvent',
method: 'post'
})
}
export function ControlStateLocal() {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendControlStateLocalEvent',
method: 'post'
})
}
export function ControlStateRemote() {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendControlStateRemoteEvent',
method: 'post'
})
}
export function E10StateChanged() {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendE10StateChangedEvent',
method: 'post'
})
}
export function EmptyCassettereport() {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendEmptyCassettereportEvent',
method: 'post'
})
}
export function EquipmentOffline() {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendEquipmentOfflineEvent',
method: 'post'
})
}
export function MaintenancePlan() {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendMaintenancePlanEvent',
method: 'post'
})
}
export function MaintenanceRecord() {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendMaintenanceRecordEvent',
method: 'post'
})
}
export function MaterialReceived() {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendMaterialReceivedEvent',
method: 'post'
})
}
export function MaterialRemoved() {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendMaterialRemovedEvent',
method: 'post'
})
}
export function OKsubstratereport() {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendOKsubstratereportEvent',
method: 'post'
})
}
export function PowerConsumption() {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendPowerConsumptionEvent',
method: 'post'
})
}
export function ProcessingCompleted() {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendProcessingCompletedEvent',
method: 'post'
})
}
export function ProcessingStarted() {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendProcessingStartedEvent',
method: 'post'
})
}
export function ProcessingStopped() {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendProcessingStoppedEvent',
method: 'post'
})
}
export function QCPChange() {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendQCPChangeEvent',
method: 'post'
})
}
export function RepairRecord() {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendRepairRecordEvent',
method: 'post'
})
}
export function Scrapsubstratereport() {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendScrapsubstratereportEvent',
method: 'post'
})
}
export function ShuttleMovementFinished() {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendShuttleMovementFinishedEvent',
method: 'post'
})
}
export function ShuttleMovementStart() {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendShuttleMovementStartEvent',
method: 'post'
})
}
export function SpoolTransmitFailure() {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendSpoolTransmitFailureEvent',
method: 'post'
})
}
export function SpoolingActivated() {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendSpoolingActivatedEvent',
method: 'post'
})
}
export function SpoolingDeactivated() {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendSpoolingDeactivatedEvent',
method: 'post'
})
}
export function DisableEnableCommunication(data) {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendDisableEnableCommunication',
method: 'post',
headers: {
'Content-Type': 'text/plain'
},
data
})
}
export function getCommunicationState() {
return request({
url: '/cigs-00a/IL1testcontroller/post/communicationState/get',
method: 'post'
})
}
export function getcontrollerState() {
return request({
url: '/cigs-00a/IL1testcontroller/post/controllerState/get',
method: 'post'
})
}
export function sendControllerState(data) {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendControllerState',
method: 'post',
headers: {
'Content-Type': 'text/plain'
},
data
})
}
export function sendEqpState(data) {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendEqpState',
method: 'post',
headers: {
'Content-Type': 'text/plain'
},
data
})
}
export function sendReportLinkedEventAndVid() {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendReportLinkedEventAndVid',
method: 'post'
})
}
export function sendSecsGemSetting() {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendSecsGemSetting',
method: 'post'
})
}
export function sendAlarmReport() {
return request({
url: '/cigs-00a/IL1testcontroller/post/sendAlarmReport',
method: 'post'
})
}

View File

@@ -1,7 +1,7 @@
<!--
* @Date: 2020-12-14 09:07:03
* @LastEditors: gtz
* @LastEditTime: 2021-06-22 09:07:41
* @LastEditors: zwq
* @LastEditTime: 2022-06-21 14:22:47
* @FilePath: \basic-admin\src\components\BaseTable\index.vue
* @Description:
-->

View File

@@ -1,8 +1,8 @@
<!--
* @Author: your name
* @Date: 2021-01-27 10:07:42
* @LastEditTime: 2021-01-28 16:26:15
* @LastEditors: gtz
* @LastEditTime: 2022-06-20 16:57:55
* @LastEditors: zwq
* @Description: In User Settings Edit
* @FilePath: \mt-bus-fe\src\components\Breadcrumb\index.vue
-->
@@ -10,7 +10,7 @@
<el-breadcrumb class="app-breadcrumb" separator="/">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item,index) in levelList" :key="item.path">
<span v-if="item.redirect==='noRedirect'||index==levelList.length-1">{{ item.meta.title }}</span>
<span v-if="item.redirect==='noRedirect'||index==levelList.length-1" class="isredirect">{{ item.meta.title }}</span>
<span v-else class="no-redirect">{{ item.meta.title }}</span>
<!-- @click.prevent="handleLink(item)" -->
</el-breadcrumb-item>
@@ -80,11 +80,13 @@ export default {
.app-breadcrumb.el-breadcrumb {
display: inline-block;
font-size: 14px;
line-height: 50px;
line-height: 48px;
margin-left: 8px;
.isredirect {
color: rgba(0, 0, 0, 0.65);
}
.no-redirect {
color: #97a8be;
color: #8C8C8C;
cursor: text;
}
}

View File

@@ -1,15 +1,6 @@
<template>
<div style="padding: 0 15px;" @click="toggleClick">
<svg
:class="{'is-active':isActive}"
class="hamburger"
viewBox="0 0 1024 1024"
xmlns="http://www.w3.org/2000/svg"
width="64"
height="64"
>
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM142.4 642.1L298.7 519a8.84 8.84 0 0 0 0-13.9L142.4 381.9c-5.8-4.6-14.4-.5-14.4 6.9v246.3a8.9 8.9 0 0 0 14.4 7z" />
</svg>
<div style="padding: 5px 15px 5px 32px;" @click="toggleClick">
<svg-icon style="width: 24px; height: 24px" class="item-icon hamburger" :class="{'is-active':isActive}" icon-class="hamburgerBtn" />
</div>
</template>

View File

@@ -1,6 +1,7 @@
<template>
<div :class="{'hidden':hidden}" class="pagination-container">
<el-pagination
small
:background="background"
:current-page.sync="currentPage"
:page-size.sync="pageSize"
@@ -93,7 +94,9 @@ export default {
<style scoped>
.pagination-container {
background: #fff;
padding: 32px 16px;
padding-top: 20px;
text-align: right;
border-radius: 4px;
}
.pagination-container.hidden {
display: none;

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="选择" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="首页选择" transform="translate(-1492.000000, -20.000000)" fill-rule="nonzero">
<g id="banner/top" transform="translate(1.000000, -0.000000)">
<g id="倒计时" transform="translate(1491.000000, 20.000000)">
<rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="24" height="24"></rect>
<path d="M18.6251339,2.5 L18.7173046,2.506884 C19.0181775,2.55223577 19.25,2.81622235 19.25,3.13636364 C19.25,3.48849651 18.9695089,3.77267387 18.6250952,3.77272728 L18.6250952,3.77272728 L17.500134,3.77272728 L17.500134,6.68181819 L17.4950738,6.93194703 C17.4134263,8.92636566 16.3486624,10.7533909 14.6512846,11.7864428 L14.6512846,11.7864428 L14.3002984,12.0000588 L14.6513368,12.2135889 L14.8602283,12.3467668 C16.5045868,13.4445685 17.5015027,15.3107448 17.500134,17.3180114 L17.500134,17.3180114 L17.500134,20.2272727 L18.6251339,20.2272727 L18.7173078,20.2341693 C19.0181892,20.2795564 19.25,20.5435156 19.25,20.8636364 C19.25,21.2157918 18.9694948,21.5 18.6251339,21.5 L18.6251339,21.5 L4.62513396,21.5 L4.53296333,21.493116 C4.23209038,21.4477642 4.00026791,21.1837777 4.00026791,20.8636364 C4.00026791,20.5115035 4.28075902,20.2273261 4.62517273,20.2272727 L4.62517273,20.2272727 L5.75013395,20.2272727 L5.75013395,17.3181818 L5.75519413,17.068053 C5.8368416,15.0736343 6.90160547,13.2466092 8.59898334,12.2135572 L8.59898334,12.2135572 L8.94996946,11.9999412 L8.59893115,11.7864111 L8.39003962,11.6532332 C6.74568111,10.5554315 5.74876521,8.68925518 5.75013389,6.68198865 L5.75013389,6.68198865 L5.75013395,3.77272728 L4.62513396,3.77272728 L4.53097506,3.76549115 C4.34557884,3.73677723 4.18042961,3.62417437 4.08444297,3.45578133 C3.97185234,3.2582593 3.97185234,3.01446799 4.08444297,2.81694595 C4.196414,2.6205109 4.40253386,2.5 4.62513396,2.5 L4.62513396,2.5 L18.6251339,2.5 Z M11.6309675,12.6364317 L11.4133705,12.641183 C8.9566894,12.7532313 7.00013396,14.805007 7.00013396,17.3181818 L7.00013396,17.3181818 L7.00013396,20.2272727 L16.2501339,20.2272727 L16.2501339,17.3181818 L16.2450986,17.0982663 C16.1348575,14.6926999 14.227663,12.7467226 11.8259996,12.6410372 L11.8259996,12.6410372 L11.6309675,12.6364317 Z M16.2501339,3.77272728 L7.00013396,3.77272728 L7.00013396,6.68181819 L7.00489156,6.89606874 C7.1155058,9.38167112 9.1410632,11.3636364 11.625134,11.3636364 L11.625134,11.3636364 L11.8208425,11.3591365 L12.0382189,11.3444826 C14.4134338,11.1283734 16.2499952,9.11397106 16.2501339,6.68183244 L16.2501339,6.68183244 L16.2501339,3.77272728 Z" id="形状结合" fill="#FFFFFF"></path>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="1_基础资料" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="1-1工厂信息" transform="translate(-1446.000000, -20.000000)" fill="#000000" fill-rule="nonzero">
<g id="banner/top/栏" transform="translate(336.000000, 0.000000)">
<g id="编组-5" transform="translate(944.000000, 15.000000)">
<g id="倒计时" transform="translate(166.000000, 5.000000)">
<rect id="矩形" opacity="0" x="0" y="0" width="24" height="24"></rect>
<path d="M18.6251339,2.5 L18.7173046,2.506884 C19.0181775,2.55223577 19.25,2.81622235 19.25,3.13636364 C19.25,3.48849651 18.9695089,3.77267387 18.6250952,3.77272728 L18.6250952,3.77272728 L17.500134,3.77272728 L17.500134,6.68181819 L17.4950738,6.93194703 C17.4134263,8.92636566 16.3486624,10.7533909 14.6512846,11.7864428 L14.6512846,11.7864428 L14.3002984,12.0000588 L14.6513368,12.2135889 L14.8602283,12.3467668 C16.5045868,13.4445685 17.5015027,15.3107448 17.500134,17.3180114 L17.500134,17.3180114 L17.500134,20.2272727 L18.6251339,20.2272727 L18.7173078,20.2341693 C19.0181892,20.2795564 19.25,20.5435156 19.25,20.8636364 C19.25,21.2157918 18.9694948,21.5 18.6251339,21.5 L18.6251339,21.5 L4.62513396,21.5 L4.53296333,21.493116 C4.23209038,21.4477642 4.00026791,21.1837777 4.00026791,20.8636364 C4.00026791,20.5115035 4.28075902,20.2273261 4.62517273,20.2272727 L4.62517273,20.2272727 L5.75013395,20.2272727 L5.75013395,17.3181818 L5.75519413,17.068053 C5.8368416,15.0736343 6.90160547,13.2466092 8.59898334,12.2135572 L8.59898334,12.2135572 L8.94996946,11.9999412 L8.59893115,11.7864111 L8.39003962,11.6532332 C6.74568111,10.5554315 5.74876521,8.68925518 5.75013389,6.68198865 L5.75013389,6.68198865 L5.75013395,3.77272728 L4.62513396,3.77272728 L4.53097506,3.76549115 C4.34557884,3.73677723 4.18042961,3.62417437 4.08444297,3.45578133 C3.97185234,3.2582593 3.97185234,3.01446799 4.08444297,2.81694595 C4.196414,2.6205109 4.40253386,2.5 4.62513396,2.5 L4.62513396,2.5 L18.6251339,2.5 Z M11.6309675,12.6364317 L11.4133705,12.641183 C8.9566894,12.7532313 7.00013396,14.805007 7.00013396,17.3181818 L7.00013396,17.3181818 L7.00013396,20.2272727 L16.2501339,20.2272727 L16.2501339,17.3181818 L16.2450986,17.0982663 C16.1348575,14.6926999 14.227663,12.7467226 11.8259996,12.6410372 L11.8259996,12.6410372 L11.6309675,12.6364317 Z M16.2501339,3.77272728 L7.00013396,3.77272728 L7.00013396,6.68181819 L7.00489156,6.89606874 C7.1155058,9.38167112 9.1410632,11.3636364 11.625134,11.3636364 L11.625134,11.3636364 L11.8208425,11.3591365 L12.0382189,11.3444826 C14.4134338,11.1283734 16.2499952,9.11397106 16.2501339,6.68183244 L16.2501339,6.68183244 L16.2501339,3.77272728 Z" id="形状结合"></path>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="1_基础资料" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="1-1工厂信息" transform="translate(-1580.000000, -20.000000)" fill="#000000" fill-rule="nonzero">
<g id="banner/top/栏" transform="translate(336.000000, 0.000000)">
<g id="编组-5" transform="translate(944.000000, 15.000000)">
<g id="下载" transform="translate(300.000000, 5.000000)">
<rect id="矩形" opacity="0" x="0" y="0" width="24" height="24"></rect>
<path d="M7.6875,13.5 L11.25,13.5 L11.25,3.75 C11.25,3.33578644 11.5857864,3 12,3 C12.4142136,3 12.75,3.33578644 12.75,3.75 L12.75,13.5 L12.75,13.5 L16.3125,13.5 L12,18 L7.6875,13.5 Z M20.25,12 C19.8357864,12 19.5,12.3357864 19.5,12.75 L19.5,18.5 C19.5,19.0522847 19.0522847,19.5 18.5,19.5 L5.5,19.5 C4.94771525,19.5 4.5,19.0522847 4.5,18.5 L4.5,12.75 C4.5,12.3357864 4.16421356,12 3.75,12 C3.33578644,12 3,12.3357864 3,12.75 L3,19 C3,20.1045695 3.8954305,21 5,21 L19,21 C20.1045695,21 21,20.1045695 21,19 L21,12.75 C21,12.3357864 20.6642136,12 20.25,12 Z" id="形状"></path>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>outdent</title>
<g id="质量管理" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="质量追溯_设备参数追溯" transform="translate(-368.000000, -20.000000)" fill="#000000" fill-rule="nonzero">
<g id="编组-18" transform="translate(336.000000, 0.000000)">
<g id="outdent" transform="translate(44.000000, 32.000000) scale(-1, 1) translate(-44.000000, -32.000000) translate(32.000000, 20.000000)">
<rect id="矩形" opacity="0" x="0" y="0" width="24" height="24"></rect>
<path d="M9.5625,10.359375 L20.8125,10.359375 C20.915625,10.359375 21,10.275 21,10.171875 L21,8.859375 C21,8.75625 20.915625,8.671875 20.8125,8.671875 L9.5625,8.671875 C9.459375,8.671875 9.375,8.75625 9.375,8.859375 L9.375,10.171875 C9.375,10.275 9.459375,10.359375 9.5625,10.359375 Z M9.375,15.140625 C9.375,15.24375 9.459375,15.328125 9.5625,15.328125 L20.8125,15.328125 C20.915625,15.328125 21,15.24375 21,15.140625 L21,13.828125 C21,13.725 20.915625,13.640625 20.8125,13.640625 L9.5625,13.640625 C9.459375,13.640625 9.375,13.725 9.375,13.828125 L9.375,15.140625 Z M21.1875,3.75 L2.8125,3.75 C2.709375,3.75 2.625,3.834375 2.625,3.9375 L2.625,5.25 C2.625,5.353125 2.709375,5.4375 2.8125,5.4375 L21.1875,5.4375 C21.290625,5.4375 21.375,5.353125 21.375,5.25 L21.375,3.9375 C21.375,3.834375 21.290625,3.75 21.1875,3.75 Z M21.1875,18.5625 L2.8125,18.5625 C2.709375,18.5625 2.625,18.646875 2.625,18.75 L2.625,20.0625 C2.625,20.165625 2.709375,20.25 2.8125,20.25 L21.1875,20.25 C21.290625,20.25 21.375,20.165625 21.375,20.0625 L21.375,18.75 C21.375,18.646875 21.290625,18.5625 21.1875,18.5625 Z M2.7046875,12.1617187 L6.36796875,15.046875 C6.50390625,15.1546875 6.70546875,15.0585937 6.70546875,14.8851562 L6.70546875,9.11484375 C6.70546875,8.94140625 6.50625,8.8453125 6.36796875,8.953125 L2.7046875,11.8382812 C2.59921875,11.9203125 2.59921875,12.0796875 2.7046875,12.1617187 Z" id="形状" fill-opacity="0.65"></path>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="选择" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" opacity="0.903721">
<g id="首页选择" transform="translate(-1873.000000, -20.000000)">
<g id="banner/top" transform="translate(1.000000, -0.000000)">
<g id="编组" transform="translate(1872.000000, 20.000000)">
<rect id="矩形" stroke="#979797" fill="#D8D8D8" opacity="0" x="0.5" y="0.5" width="23" height="23"></rect>
<path d="M11.310182,10.3337823 C12.5601874,9.70367185 13.51051,9.44503668 13.9702819,9.64581368 C14.472601,9.8651991 14.5084688,10.7360792 14.1222621,12.1103343 C14.0263593,12.4515891 13.9079191,12.8128586 13.7663384,13.204699 L13.7663384,13.204699 L13.1755703,14.7700352 L13.1356173,14.8923194 C12.9377283,15.712423 12.7983671,16.8200017 12.912421,17.6028055 C13.0909539,18.8281585 13.8745484,19.1391381 15.1518197,18.2618535 L15.1518197,18.2618535 L15.2431014,18.1949758 L14.9940164,18.4800885 L14.5796447,18.9305355 C13.5052517,20.0760203 12.2512381,20.8876408 11.2037186,21.1562825 C10.2220563,21.4080347 9.60903688,21.1544199 9.47437495,20.4388955 C9.43164291,20.2118661 9.43430014,19.8730341 9.48049136,19.4147347 L9.48049136,19.4147347 L9.52326841,19.0484903 L9.58219677,18.636727 L9.65710251,18.1787264 L9.79903824,17.4034584 L9.91312648,16.8267205 L10.0833225,16.0088515 L10.5653971,13.7726047 L10.7525122,12.8466096 L10.8135626,12.5082623 L10.8593992,12.2197102 C10.892055,11.9945685 10.8447612,11.8140224 10.6819512,11.7150937 C10.5500877,11.6349691 10.4054478,11.6456233 10.2453725,11.7048381 C10.0817522,11.7653643 9.91628553,11.8715133 9.77571237,11.9796145 L9.77571237,11.9796145 L9.57499388,12.1142665 L9.31774645,12.2720806 C9.22286657,12.3279967 9.11972797,12.3863858 9.01094671,12.4447325 C8.79608072,12.5599796 8.5883481,12.6580442 8.39387109,12.7334809 L8.39387109,12.7334809 L8.24743549,12.7868596 L8.11116233,12.82956 C7.76146569,12.9292776 7.52195085,12.916147 7.40687766,12.7986103 L7.40687766,12.7986103 L7.39810145,12.7852594 C7.42648997,12.8080346 7.45483725,12.7948797 7.48619177,12.7687749 L7.48619177,12.7687749 L7.63793148,12.6336999 C7.75465486,12.5374893 7.88430531,12.4463052 7.96282058,12.4045046 L7.96282058,12.4045046 L8.6231747,11.9447563 C9.11169615,11.6130499 9.6289273,11.2813461 10.1513385,10.9720739 C10.5522838,10.7347105 10.9405318,10.5201178 11.310182,10.3337823 Z M13.6878854,2.7492498 L13.8429866,2.75227308 L13.9974951,2.76617758 C15.1180125,2.90704663 15.9546797,3.89345207 15.8920662,5.03876017 C15.8266298,6.23604447 14.8030933,7.15360401 13.6059845,7.08817659 C12.4088582,7.0227508 11.4914496,5.99905482 11.556888,4.80168562 C11.6223247,3.60432538 12.645833,2.68679848 13.8429866,2.75227308 Z" id="形状结合" fill="#FFFFFF" fill-rule="nonzero"></path>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="1_基础资料" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" opacity="0.750912">
<g id="1-1工厂信息" transform="translate(-1872.000000, -20.000000)">
<g id="banner/top/栏" transform="translate(336.000000, 0.000000)">
<g id="编组" transform="translate(1536.000000, 20.000000)">
<rect id="矩形" stroke="#979797" fill="#D8D8D8" opacity="0" x="0.5" y="0.5" width="23" height="23"></rect>
<path d="M11.310182,10.3337823 C12.5601874,9.70367185 13.51051,9.44503668 13.9702819,9.64581368 C14.472601,9.8651991 14.5084688,10.7360792 14.1222621,12.1103343 C14.0263593,12.4515891 13.9079191,12.8128586 13.7663384,13.204699 L13.7663384,13.204699 L13.1755703,14.7700352 L13.1356173,14.8923194 C12.9377283,15.712423 12.7983671,16.8200017 12.912421,17.6028055 C13.0909539,18.8281585 13.8745484,19.1391381 15.1518197,18.2618535 L15.1518197,18.2618535 L15.2431014,18.1949758 L14.9940164,18.4800885 L14.5796447,18.9305355 C13.5052517,20.0760203 12.2512381,20.8876408 11.2037186,21.1562825 C10.2220563,21.4080347 9.60903688,21.1544199 9.47437495,20.4388955 C9.43164291,20.2118661 9.43430014,19.8730341 9.48049136,19.4147347 L9.48049136,19.4147347 L9.52326841,19.0484903 L9.58219677,18.636727 L9.65710251,18.1787264 L9.79903824,17.4034584 L9.91312648,16.8267205 L10.0833225,16.0088515 L10.5653971,13.7726047 L10.7525122,12.8466096 L10.8135626,12.5082623 L10.8593992,12.2197102 C10.892055,11.9945685 10.8447612,11.8140224 10.6819512,11.7150937 C10.5500877,11.6349691 10.4054478,11.6456233 10.2453725,11.7048381 C10.0817522,11.7653643 9.91628553,11.8715133 9.77571237,11.9796145 L9.77571237,11.9796145 L9.57499388,12.1142665 L9.31774645,12.2720806 C9.22286657,12.3279967 9.11972797,12.3863858 9.01094671,12.4447325 C8.79608072,12.5599796 8.5883481,12.6580442 8.39387109,12.7334809 L8.39387109,12.7334809 L8.24743549,12.7868596 L8.11116233,12.82956 C7.76146569,12.9292776 7.52195085,12.916147 7.40687766,12.7986103 L7.40687766,12.7986103 L7.39810145,12.7852594 C7.42648997,12.8080346 7.45483725,12.7948797 7.48619177,12.7687749 L7.48619177,12.7687749 L7.63793148,12.6336999 C7.75465486,12.5374893 7.88430531,12.4463052 7.96282058,12.4045046 L7.96282058,12.4045046 L8.6231747,11.9447563 C9.11169615,11.6130499 9.6289273,11.2813461 10.1513385,10.9720739 C10.5522838,10.7347105 10.9405318,10.5201178 11.310182,10.3337823 Z M13.6878854,2.7492498 L13.8429866,2.75227308 L13.9974951,2.76617758 C15.1180125,2.90704663 15.9546797,3.89345207 15.8920662,5.03876017 C15.8266298,6.23604447 14.8030933,7.15360401 13.6059845,7.08817659 C12.4088582,7.0227508 11.4914496,5.99905482 11.556888,4.80168562 C11.6223247,3.60432538 12.645833,2.68679848 13.8429866,2.75227308 Z" id="形状结合" fill="#000000" fill-rule="nonzero"></path>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -1,7 +1,9 @@
export default {
title: {
// en: 'SCC System',
// zh: '玻璃新材料供应链协同生产平台'
en: 'ARI WMS',
zh: '中建材自动化智能仓库管理系统'
zh: '中建材自动化仓库管理系统'
},
btn: {
start: {
@@ -265,6 +267,14 @@ export default {
zh: '首页',
en: 'Home'
},
eap: {
zh: 'EAP',
en: 'EAP'
},
eapControl: {
zh: 'EAP控制',
en: 'EAP Control'
},
basic: {
zh: '系统管理',
en: 'System Manager',

View File

@@ -2,7 +2,7 @@
* @Author: gtz
* @Date: 2022-03-15 16:42:34
* @LastEditors: zwq
* @LastEditTime: 2022-06-06 15:53:29
* @LastEditTime: 2022-06-21 11:23:55
* @Description: file content
* @FilePath: \mt-ck-wms-ui\src\lang\i18n\en\module\dashboard.js
*/
@@ -10,7 +10,7 @@
export default {
first: 'First Row',
second: 'Second Row',
title: 'WMS Inventory Information',
title: 'Inventory Information',
pageHeader: 'No.',
pageFooter: ' Page',
isEmpty: 'Is Empty',

View File

@@ -2,7 +2,7 @@
* @Author: gtz
* @Date: 2022-03-15 16:42:34
* @LastEditors: zwq
* @LastEditTime: 2022-06-07 15:08:30
* @LastEditTime: 2022-06-21 11:23:46
* @Description: file content
* @FilePath: \mt-ck-wms-ui\src\lang\i18n\zh\module\dashboard.js
*/
@@ -10,7 +10,7 @@
export default {
first: '第一排',
second: '第二排',
title: 'WMS库存信息',
title: '库存信息',
pageHeader: '第',
pageFooter: '页',
isEmpty: '是否为空',

View File

@@ -1,3 +1,10 @@
<!--
* @Author: zwq
* @Date: 2021-09-18 16:09:08
* @LastEditors: zwq
* @LastEditTime: 2022-06-29 10:02:58
* @Description:
-->
<template>
<section class="app-main">
<transition name="fade-transform" mode="out-in">
@@ -24,26 +31,26 @@ export default {
<style lang="scss" scoped>
.app-main {
/* 50= navbar 50 */
min-height: calc(100vh - 50px);
/* 64= navbar 64 */
min-height: calc(100vh - 64px);
width: 100%;
position: relative;
overflow: hidden;
}
.fixed-header+.app-main {
padding-top: 50px;
padding-bottom: 50px;
padding-top: 64px;
// padding-bottom: 64px;
}
.hasTagsView {
.app-main {
/* 84 = navbar + tags-view = 50 + 34 */
min-height: calc(100vh - 84px);
/* 84 = navbar + tags-view = 64 + 34 */
min-height: calc(100vh - 31px);
}
.fixed-header+.app-main {
padding-top: 84px;
padding-top: 96px;
}
}
</style>

View File

@@ -1,8 +1,8 @@
<!--
* @Author: your name
* @Date: 2021-01-27 10:07:42
* @LastEditTime: 2021-03-02 10:11:08
* @LastEditors: gtz
* @LastEditTime: 2022-06-29 10:03:35
* @LastEditors: zwq
* @Description: In User Settings Edit
* @FilePath: \mt-bus-fe\src\layout\components\FooterBar.vue
-->
@@ -24,14 +24,18 @@ export default {
<style lang="scss">
.footerbar{
position: fixed;
bottom: 0;
// position: fixed;
// bottom: 0;
width: 100%;
height: 50px;
line-height: 50px;
text-indent: 2em;
background: #fff;
z-index: 999;
box-shadow: 2px -2px 2px rgba($color: #000000, $alpha: .1);
height: 20px;
// line-height: 50px;
// text-indent: 2em;
// background: #fff;
// z-index: 999;
// box-shadow: 2px -2px 2px rgba($color: #000000, $alpha: .1);
text-align: center;
font-size: 12px;
color: #C7C7C7;
margin: 5px 0;
}
</style>

View File

@@ -1,9 +1,9 @@
<template>
<div class="navbar">
<div class="navbar" :style="showTitle ? 'background: rgba(8,17,50,0.25)' : ''" style="padding-right: 23px;">
<hamburger v-if="showhome" id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" />
<div v-if="showTitle" style="font-size: 20px; float: left; font-weight: bold; padding-left: 20px; color: #606266">
<img src="../../assets/img/cnbm.png" style="width: 1.6em; height: 1.6em; position: relative; top: .4em" alt="">
<div v-if="showTitle" style="color: #fff;font-size: 22px; float: left; letter-spacing: 1px; font-weight: 500; padding-left: 24px; marginTop: 5px">
<img src="../../assets/img/cnbm.png" style="width: 26px; height: 26px; position: relative; top: 6px; marginRight: 14px" alt="">
{{ 'title' | i18nFilter }}
</div>
@@ -11,35 +11,69 @@
<div class="right-menu">
<!-- <div v-if="showhome" class="right-menu-back" @click="toHome">
<svg-icon class="item-icon" icon-class="home" />
<div v-if="showhome" class="right-menu-back" @click="toHome">
<svg-icon class="item-icon" icon-class="home" style="height: 24px; width: 24px; vertical-align: -6px; margin-right: 2px;" />
{{ 'navbar.homepage' | i18nFilter }}
</div> -->
</div>
<el-dropdown :style="showTitle ? 'color: #fff' : '#000'" class="avatar-container right-menu-item hover-effect" trigger="click">
<el-dropdown-menu />
<el-badge :hidden="alarmNum>0?false:true" :value="alarmNum" class="item" style="line-height: 0; margin: 0 10px; vertical-align: -3px" @click.native="handleAlarm">
<svg-icon style="width: 24px; height: 24px" class="item-icon" icon-class="alarm" />
</el-badge>
</el-dropdown>
<div :style="showTitle ? 'color: #fff' : ''" class="right-menu-back">
<svg-icon style="width: 24px; height: 24px; vertical-align: -7px" :icon-class="showTitle ? 'countdown' : 'countdown2'" />
{{ formatTime }}
</div>
<template>
<lang-select class="right-menu-item hover-effect" />
<lang-select :style="showTitle ? 'color: #fff' : ''" class="right-menu-item hover-effect" :is-show="showTitle" />
</template>
<div v-if="showhome" class="right-menu-back">
<a href="Lodap.zip"><i class="el-icon-download" /></a>
<a href="Lodap.zip"><svg-icon style="width: 24px; height: 24px; vertical-align: -7px" icon-class="download" /></a>
</div>
<!-- <div class="right-menu-back">
<i class="el-icon-alarm-clock" />
{{ formatTime }}
<!-- <div class="right-menu-back" style="color: #fff" @click="$router.push({name: 'VisualCreate'})">
可视化配置
</div> -->
<el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
<!-- <div :style="showTitle ? 'color: #fff' : ''" class="right-menu-back">
<svg-icon class="item-icon" icon-class="ntp" />
{{ showDay }}
{{ showTime }}
</div> -->
<el-dropdown :style="showTitle ? 'color: #fff' : 'color: #000'" class="avatar-container right-menu-item hover-effect" trigger="click">
<div class="avatar-wrapper">
<img :src="require('@/assets/img/head.png')" class="user-avatar">
<!-- <div class="avatar-username">{{ username }}</div> -->
<div class="avatar-username" :title="username">{{ username }}</div>
<div class="avatar-roles" :title="roles.join(',')">{{ roles.length>0?roles[0]:'' }}</div>
<!-- <i class="el-icon-caret-bottom" /> -->
</div>
<el-dropdown-menu slot="dropdown">
<router-link to="/profile/index">
<el-dropdown-item>
<svg-icon class="item-icon" icon-class="user" />
{{ 'navbar.profile' | i18nFilter }}
</el-dropdown-item>
</router-link>
<el-dropdown-item @click.native="toHome">
<svg-icon class="item-icon" icon-class="help" />
{{ 'navbar.help' | i18nFilter }}
</el-dropdown-item>
<el-dropdown-item @click.native="logout">
<svg-icon class="item-icon" icon-class="logout" />
{{ 'navbar.logOut' | i18nFilter }}
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<!-- <div class="right-menu-back">
<el-tooltip class="item" effect="dark" placement="top">
<div slot="content">
{{ 'navbar.copyright' | i18nFilter }}<br>
{{ 'navbar.versionNum' | i18nFilter }}v3.0
</div>
<el-button type="text">
<svg-icon icon-class="black-info" />
</el-button>
</el-tooltip>
</div> -->
<!-- <div class="right-menu-back" @click="toHome">
<svg-icon class="item-icon" icon-class="help" />
{{ 'navbar.help' | i18nFilter }}
@@ -49,6 +83,13 @@
<svg-icon class="item-icon" icon-class="logout" />
{{ 'navbar.logOut' | i18nFilter }}
</div> -->
<div :style="showTitle ? 'borderColor: #fff' : 'borderColor: #979797'" class="right-menu-back verticalBar" />
<div :style="showTitle ? 'color: #fff' : 'color: red'" class="right-menu-back">
<el-tooltip class="item" effect="dark" placement="bottom-end">
<div slot="content">{{ 'copyright.copyright' | i18nFilter }}{{ 'copyright.company' | i18nFilter }} <br>{{ 'copyright.version' | i18nFilter }}3.0</div>
<svg-icon style="width: 24px; height: 24px; vertical-align: -7px" :icon-class="showTitle ? 'introduce' : 'introduce2'" />
</el-tooltip>
</div>
</div>
</div>
</template>
@@ -56,12 +97,15 @@
<script>
import axios from 'axios'
import { mapGetters } from 'vuex'
// import { getAlarmNum, getEqAlarmNum, getMESAlarmNum } from '@/api/team-manage/team'
// import { downLoadTime } from '@/api/user'
import Breadcrumb from '@/components/Breadcrumb'
import Hamburger from '@/components/Hamburger'
import LangSelect from '@/components/LangSelect'
import moment from 'moment'
let logoutInterval = null
const timeInterval = null
export default {
components: {
@@ -86,8 +130,16 @@ export default {
data() {
return {
logoutTime: 1800000,
alarmList: [],
blurTime: null
alarmNum: 0,
eqAlarmNum: 0,
MESAlarmNum: 0,
blurTime: null,
time: 30,
showTime: '',
showDay: '',
m: '',
s: '',
h: ''
}
},
computed: {
@@ -95,7 +147,8 @@ export default {
'sidebar',
'avatar',
'username',
'choicepart'
'choicepart',
'roles'
]),
formatTime() {
return moment(this.logoutTime - 28800000).format('HH:mm:ss')
@@ -106,21 +159,31 @@ export default {
if (val <= 0) {
this.logout()
}
},
$route: function() {
this.getAlarm()
}
},
created() {
// this.getTime()
},
mounted() {
this.getAlarm()
logoutInterval = setInterval(() => {
this.logoutTime -= 1000
}, 1000)
addEventListener('click', this.logoutTimeReset)
addEventListener('keydown', this.logoutTimeReset)
addEventListener('visibilitychange', this.visibilitychangeListener)
},
destroyed() {
clearInterval(logoutInterval)
clearInterval(timeInterval)
removeEventListener('click', this.logoutTimeReset)
removeEventListener('keydown', this.logoutTimeReset)
removeEventListener('visibilitychange', this.visibilitychangeListener)
},
methods: {
// 浏览器失去焦点
winBlur() {
this.blurTime = new Date()
clearInterval(logoutInterval)
@@ -138,7 +201,7 @@ export default {
},
// 重置退出时间
logoutTimeReset() {
this.logoutTime = 1800000
this.logoutTime = this.time * 60000
},
visibilitychangeListener() {
if (document.hidden) {
@@ -169,21 +232,47 @@ export default {
async toHome() {
this.$store.dispatch('app/setChoicepart')
this.$router.push('/')
},
getAlarm() {
// getAlarmNum().then(response => {
// if (response.data) {
// this.alarmNum = response.data.alarmNum
// } else {
// this.alarmNum = 0
// }
// })
// getEqAlarmNum().then(response => {
// if (response.data) {
// this.eqAlarmNum = response.data.alarmNum
// } else {
// this.eqAlarmNum = 0
// }
// })
// getMESAlarmNum().then(response => {
// if (response.data) {
// this.MESAlarmNum = response.data.alarmNum
// } else {
// this.MESAlarmNum = 0
// }
// })
}
}
}
</script>
<style lang="scss" scoped>
.time-menu {
display: inline-block;
}
.navbar {
height: 50px;
height: 48px;
overflow: hidden;
position: relative;
background: #fff;
box-shadow: 0 1px 4px rgba(0,21,41,.08);
.hamburger-container {
line-height: 46px;
line-height: 48px;
height: 100%;
float: left;
cursor: pointer;
@@ -207,7 +296,7 @@ export default {
.right-menu {
float: right;
height: 100%;
line-height: 50px;
line-height: 48px;
position: relative;
&:focus {
outline: none;
@@ -220,7 +309,6 @@ export default {
padding: 0 8px;
text-align: center;
cursor: pointer;
color: #606266;
}
.right-menu-item {
@@ -240,27 +328,52 @@ export default {
}
}
}
.verticalBar {
height: 32px;
width: 0;
opacity: 0.49;
padding: 0;
border-right: 1px solid #fff;
position: relative;
top: -8px;
}
.avatar-container {
margin-right: 20px;
.avatar-wrapper {
margin-top: 5px;
padding-top: 9px;
position: relative;
width: 140px;
height: 48px;
.user-avatar {
cursor: pointer;
width: 40px;
height: 40px;
border-radius: 10px;
width: 32px;
height: 32px;
border-radius: 16px;
}
.avatar-username {
display: inline-block;
position: relative;
top: -14px;
width: 80px;
text-align: center;
position: absolute;
font-size: 14px;
right: 13px;
top: 3px;
line-height: 25px;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
.avatar-roles{
width: 80px;
text-align: center;
position: absolute;
font-size: 14px;
top: 20px;
right: 13px;
line-height: 25px;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
opacity: 0.64;
}
.el-icon-caret-bottom {
cursor: pointer;
position: absolute;
@@ -272,4 +385,19 @@ export default {
}
}
}
.dropdown-badge {
background: #ff4949;
color: #fff;
line-height: 16px;
border-radius: 8px;
padding: 0 8px;
float: right;
margin-left: 5px;
position: relative;
top: 7px;
}
.navbar-alarmbox {
text-align: center;
cursor: pointer;
}
</style>

View File

@@ -1,9 +1,9 @@
<!--
* @Author: gtz
* @Date: 2021-01-27 10:07:42
* @LastEditors: gtz
* @LastEditTime: 2021-03-12 17:07:14
* @Description: file content
* @Author: zwq
* @Date: 2022-05-12 13:49:54
* @LastEditors: zwq
* @LastEditTime: 2022-06-29 10:04:49
* @Description:
-->
<template>
<div class="sidebar-logo-container" :class="{'collapse':collapse}">
@@ -14,7 +14,7 @@
</router-link>
<router-link v-else key="expand" class="sidebar-logo-link" to="/">
<img v-if="logo" :src="logo" class="sidebar-logo">
<h1 :style="{fontSize}" class="sidebar-title">{{ title }} </h1>
<h3 :style="{fontSize}" class="sidebar-title">{{ title }} </h3>
</router-link>
</transition>
</div>
@@ -58,9 +58,9 @@ export default {
.sidebar-logo-container {
position: relative;
width: 100%;
height: 50px;
line-height: 50px;
background: #2b2f3a;
height: 48px;
line-height: 48px;
background: #001529;
padding-left: 10px;
overflow: hidden;
@@ -69,8 +69,8 @@ export default {
width: 100%;
& .sidebar-logo {
width: 32px;
height: 32px;
width: 36px;
height: 36px;
vertical-align: middle;
margin-right: 12px;
}
@@ -79,13 +79,13 @@ export default {
display: inline-block;
margin: 0;
color: #fff;
width: 240px;
width: 220px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
font-weight: 600;
font-weight: 500;
line-height: 50px;
font-size: 14px;
font-size: 12px;
font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
vertical-align: middle;
}

View File

@@ -1,14 +1,14 @@
<!--
* @Author: your name
* @Date: 2021-01-27 10:07:42
* @LastEditTime: 2021-12-22 16:06:25
* @LastEditTime: 2022-06-29 10:13:09
* @LastEditors: zwq
* @Description: In User Settings Edit
* @FilePath: \mt-bus-fe\src\layout\components\Sidebar\index.vue
-->
<template>
<div :class="{'has-logo':showLogo}">
<logo v-if="showLogo" :font-size="language === 'en' ? '16px' : '12px'" :title="'title' | i18nFilter" :collapse="isCollapse" />
<div :class="{'has-logo':showLogo}" style="padding-bottom: 48px">
<logo v-if="showLogo" font-size="16px" :title="'title' | i18nFilter" :collapse="isCollapse" />
<el-scrollbar wrap-class="scrollbar-wrapper">
<el-menu
:default-active="activeMenu"

View File

@@ -45,8 +45,8 @@ export default {
return this.$store.state.tagsView.visitedViews
},
routes() {
return this.$store.state.permission.routes
// return []
// return this.$store.state.permission.routes
return []
}
},
watch: {
@@ -201,45 +201,50 @@ export default {
<style lang="scss" scoped>
.tags-view-container {
height: 34px;
height: 40px;
width: 100%;
background: #fff;
border-bottom: 1px solid #d8dce5;
box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 3px 0 rgba(0, 0, 0, .04);
// border-bottom: 1px solid #d8dce5;
// box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 3px 0 rgba(0, 0, 0, .04);
.tags-view-wrapper {
.tags-view-item {
display: inline-block;
position: relative;
cursor: pointer;
height: 26px;
line-height: 26px;
border: 1px solid #d8dce5;
color: #495060;
background: #fff;
height: 24px;
line-height: 24px;
border: 1px solid #F4F4F4;
color: rgba(0, 0, 0, 0.45);
background: #F4F4F4;
border-radius: 4px;
padding: 0 8px;
font-size: 12px;
margin-left: 5px;
margin-top: 4px;
margin-top: 8px;
&:first-of-type {
margin-left: 15px;
margin-left: 32px;
}
&:last-of-type {
margin-right: 15px;
}
&:hover {
color: rgba(89, 89, 89, 1);
background: #EFEFEF;
}
&.active {
background-color: #42b983;
background-color: #3E8EF7;
color: #fff;
border-color: #42b983;
&::before {
content: '';
background: #fff;
display: inline-block;
width: 8px;
height: 8px;
border-radius: 50%;
position: relative;
margin-right: 2px;
}
border-color: #3E8EF7;
// &::before {//选中的tags前面的小白点
// content: '';
// background: #fff;
// display: inline-block;
// width: 8px;
// height: 8px;
// border-radius: 50%;
// position: relative;
// margin-right: 2px;
// }
}
}
}
@@ -254,7 +259,7 @@ export default {
font-size: 12px;
font-weight: 400;
color: #333;
box-shadow: 2px 2px 3px 0 rgba(0, 0, 0, .3);
// box-shadow: 2px 2px 3px 0 rgba(0, 0, 0, .3);
li {
margin: 0;
padding: 7px 16px;
@@ -279,15 +284,16 @@ export default {
text-align: center;
transition: all .3s cubic-bezier(.645, .045, .355, 1);
transform-origin: 100% 50%;
&:before {
transform: scale(.6);
display: inline-block;
vertical-align: -3px;
}
&:hover {
background-color: #b4bccc;
color: #fff;
}
vertical-align: -1px;
// &:before {
// transform: scale(.6);
// display: inline-block;
// vertical-align: -3px;
// }
// &:hover {
// background-color: #b4bccc;
// color: #fff;
// }
}
}
}

View File

@@ -8,17 +8,17 @@
<tags-view v-if="needTagsView" />
</div>
<app-main />
<right-panel v-if="showSettings">
<!-- 右下角设置按钮 -->
<!-- <right-panel v-if="showSettings">
<settings />
</right-panel>
</right-panel> -->
<footerbar />
</div>
</div>
</template>
<script>
import RightPanel from '@/components/RightPanel'
import { AppMain, Navbar, Settings, Sidebar, TagsView, Footerbar } from './components'
import { AppMain, Navbar, Sidebar, TagsView, Footerbar } from './components'
import ResizeMixin from './mixin/ResizeHandler'
import { mapState } from 'vuex'
@@ -27,8 +27,8 @@ export default {
components: {
AppMain,
Navbar,
RightPanel,
Settings,
// RightPanel,
// Settings,
Sidebar,
TagsView,
Footerbar
@@ -66,8 +66,9 @@ export default {
.app-wrapper {
@include clearfix;
position: relative;
height: 100%;
// height: 100%;
width: 100%;
background-color: #F2F4F9;
&.mobile.openSidebar {
position: fixed;

View File

@@ -92,6 +92,28 @@ export const constantRoutes = [
}
]
},
{
path: '/eap',
component: Layout,
redirect: '/eap',
name: 'eap',
meta: { title: routerTitle.eap?.[language] || routerTitle.eap.en, icon: 'form', iconPart: 'ArtManager', affix: true, required: true, requireToken: true },
children: [
{
path: 'eap',
component: () => import('@/views/EAP/index'),
name: 'eap',
meta: { title: routerTitle.eap?.[language] || routerTitle.eap.en, icon: 'form', affix: true, required: true, requireToken: true, noCache: true }
},
{
path: 'eapControl',
component: () => import('@/views/EAP/eapControl'),
name: 'eapControl',
hidden: true,
meta: { title: routerTitle.eapControl?.[language] || routerTitle.eapControl.en, icon: 'form', affix: true, required: true, requireToken: true, noCache: true }
}
]
},
{
path: '/',
component: Layout,

View File

@@ -1,12 +1,13 @@
/*
* @Date: 2020-12-14 09:07:03
* @LastEditors: zwq
* @LastEditTime: 2022-06-06 15:58:41
* @LastEditTime: 2022-06-21 11:24:50
* @FilePath: \basic-admin\src\settings.js
* @Description:
*/
module.exports = {
// title: 'SCC System',
title: 'ARI WMS',
/**

View File

@@ -121,7 +121,12 @@ aside {
//main-container全局样式
.app-container {
padding: 20px;
margin:0 16px 0;
background-color: #fff;
border-radius: 4px;
padding: 16px 16px 0;
height: calc(100vh - 134px);
overflow: auto;
}
.components-container {
@@ -129,10 +134,36 @@ aside {
position: relative;
}
.pagination-container {
margin-top: 30px;
// 覆盖原有的分页样式-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
}
@@ -195,6 +226,13 @@ aside {
padding: 10px 0;
}
.el-dialog {
width: 1000px;
}
.el-dialog__body {
padding: 30px 40px;
}
.el-dialog__wrapper {
backdrop-filter: blur(5px);
}
@@ -235,3 +273,30 @@ aside {
::-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;
}
}
}
// 全局loading样式覆盖
.el-loading-mask{
z-index: 99999;
}

View File

@@ -16,10 +16,10 @@ $subMenuActiveText:#f4f4f5; // https://github.com/ElemeFE/element/issues/12951
$menuBg:#304156;
$menuHover:#263445;
$subMenuBg:#1f2d3d;
$subMenuBg:#0B253F;
$subMenuHover:#001528;
$sideBarWidth: 300px;
$sideBarWidth: 280px;
// the :export directive is the magic sauce for webpack
// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass
@@ -33,3 +33,4 @@ $sideBarWidth: 300px;
subMenuHover: $subMenuHover;
sideBarWidth: $sideBarWidth;
}

View File

@@ -0,0 +1,307 @@
<!--
* @Author: zwq
* @Date: 2020-12-29 15:41:11
* @LastEditors: zwq
* @LastEditTime: 2022-08-05 09:09:17
* @Description:
-->
<template>
<div class="app-container">
<el-row :gutter="10">
<el-form
ref="dataForm"
:model="dataForm"
:rules="rules"
size="medium"
label-position="left"
>
<el-col :span="4">
<el-form-item label="communication状态" prop="communicationState" required>
<span :class="dataForm.communicationState === 0? 'waring' : 'normal'">{{ dataForm.communicationState === 0? 'off' : 'on' }}</span>
<el-button type="primary" size="mini" @click="switchChange()">控制</el-button>
</el-form-item>
<!-- <div v-show="communicationShow">Result ={{ communicationStatus }}</div> -->
</el-col>
<el-col v-if="false" :span="6" :offset="1">
<el-form-item label="eqpState" prop="eqpState">
<el-select v-model="dataForm.eqpState" placeholder="请选择下拉选择" clearable @change="eqpStateChange">
<el-option
v-for="(item, index) in eqpStateArr"
:key="index"
:label="item.label"
:value="item.value"
/>
</el-select>
<!-- <div v-show="eqpStatusShow">Result ={{ eqpStatus }}</div> -->
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="controllerState" prop="controllerState">
<el-select v-model="dataForm.controllerState" placeholder="请选择下拉选择" clearable @change="controllerStateChange">
<el-option
v-for="(item, index) in controllerStateArr"
:key="index"
:label="item.label"
:value="item.value"
/>
</el-select>
<span :class="controllerInfo === 'offline'? 'waring' : 'normal'">{{ controllerInfo }}</span>
<!-- <div v-show="controllerStatusShow">Result ={{ controllerStatus }}</div> -->
</el-form-item>
</el-col>
</el-form>
<el-col :span="3" :offset="2">
<el-button type="primary" @click="sendSecsGemSetting()">Setting</el-button>
</el-col>
<el-col :span="3">
<el-button type="primary" @click="sendAlarmReport()">AlarmReport</el-button>
</el-col>
<el-col v-if="false" :span="3">
<el-button type="primary" @click="sendReportLinkedEventAndVid()"> ReportLinkedEventAndVid </el-button>
</el-col>
</el-row>
</div>
</template>
<script>
import {
DisableEnableCommunication,
getCommunicationState,
getcontrollerState,
sendEqpState,
sendControllerState,
sendReportLinkedEventAndVid,
sendSecsGemSetting,
sendAlarmReport
} from '@/api/EAP'
/**
* 表格表头配置项 TypeScript接口注释
* tableConfig<ConfigItem> = []
*
* Interface ConfigItem = {
* prop: string,
* label: string,
* width: string,
* align: string,
* subcomponent: function,
* filter: function
* }
*
*
*/
export default {
name: 'Aspc',
components: { },
filters: {
statusFilter(status) {
const statusMap = {
published: 'success',
draft: 'info',
deleted: 'danger'
}
return statusMap[status]
}
},
data() {
return {
dataForm: {
communicationState: 0,
eqpState: undefined,
controllerState: undefined
},
controllerStatus: '',
eqpStatus: '',
communicationStatus: '',
communicationShow: false,
eqpStatusShow: false,
controllerStatusShow: false,
controllerInfo: '',
rules: {
},
eqpStateArr: [{
'label': 'local',
'value': 4
}, {
'label': 'remote',
'value': 5
}],
controllerStateArr: [{
'label': 'offline',
'value': 1
}, {
'label': 'local',
'value': 2
}, {
'label': 'remote',
'value': 3
}],
websock: '',
url: '',
wbData: {}
}
},
created() {
this.getState()
this.url = process.env.VUE_APP_WB_API
this.initWebSocket()
getCommunicationState().then(res => {
this.dataForm.communicationState = res.data.communicationState
})
},
destroyed() {
// 页面销毁时关闭ws连接
if (this.websock) {
this.websock.close() // 关闭websocket
}
},
methods: {
switchChange() {
this.communicationShow = false
const cState = this.dataForm.communicationState ? 0 : 1
DisableEnableCommunication(cState).then(response => {
this.$message({
message: this.$t('module.basicData.visual.success'),
type: 'success',
duration: 1500
})
})
},
eqpStateChange() {
this.eqpStatusShow = false
sendEqpState(this.dataForm.eqpState).then(response => {
this.$message({
message: this.$t('module.basicData.visual.success'),
type: 'success',
duration: 1500
})
})
},
controllerStateChange() {
this.controllerStatusShow = false
sendControllerState(this.dataForm.controllerState).then(response => {
this.$message({
message: this.$t('module.basicData.visual.success'),
type: 'success',
duration: 1500
})
})
},
getState() {
getcontrollerState().then(res => {
if (res.data.controllerState === 1) {
this.dataForm.controllerState = 1
this.controllerInfo = 'offline'
} else if (res.data.eqpState === 4) {
this.dataForm.controllerState = 2
this.controllerInfo = 'local'
} else if (res.data.eqpState === 5) {
this.dataForm.controllerState = 3
this.controllerInfo = 'remote'
}
this.dataForm.eqpState = res.data.eqpState
})
},
sendReportLinkedEventAndVid() {
sendReportLinkedEventAndVid().then(response => {
this.$message({
message: this.$t('module.basicData.visual.success'),
type: 'success',
duration: 1500
})
})
},
sendSecsGemSetting() {
sendSecsGemSetting().then(response => {
this.$message({
message: this.$t('module.basicData.visual.success'),
type: 'success',
duration: 1500
})
})
},
sendAlarmReport() {
sendAlarmReport().then(response => {
this.$message({
message: this.$t('module.basicData.visual.success'),
type: 'success',
duration: 1500
})
})
},
initWebSocket() {
// 初始化weosocket
const path = `ws://${this.url}/opcua/websocket/${Math.round(Math.random() * 100)}`
this.websock = new WebSocket(path)
this.websock.onmessage = this.websocketonmessage
this.websock.onopen = this.websocketonopen
this.websock.onerror = this.websocketonerror
this.websock.onclose = this.websocketclose
},
websocketonopen() {
console.log('websocketonopen')
// 连接建立之后执行send方法发送数据
// this.websocketsend(JSON.stringify('2'))
},
websocketonerror() {
// 连接建立失败重连
this.initWebSocket()
},
websocketonmessage(e) {
// 数据接收
this.wbData = JSON.parse(e.data)
console.log(this.wbData)
if (this.wbData.controllerState) {
this.controllerStatus = this.wbData.vidResult
if (this.wbData.controllerState === '1') {
this.dataForm.controllerState = 1
this.controllerInfo = 'offline'
} else if (this.wbData.eqpState === '4') {
this.dataForm.controllerState = 2
this.controllerInfo = 'local'
} else if (this.wbData.eqpState === '5') {
this.dataForm.controllerState = 3
this.controllerInfo = 'remote'
}
this.controllerStatusShow = true
} else if (this.wbData.eqpState) {
this.eqpStatus = this.wbData.eqpResult
this.dataForm.eqpState = parseInt(this.wbData.eqpState)
this.eqpStatusShow = true
} else {
this.communicationStatus = this.wbData.communicationResult
this.dataForm.communicationState = parseInt(this.wbData.connectState)
this.communicationShow = true
}
},
websocketsend(val) {
// 数据发送
this.websock.send(val)
},
websocketclose(e) {
// 关闭
console.log('断开连接', e)
this.initWebSocket()
}
}
}
</script>
<style scoped>
.app-container{
width: 100%;
height: 200px;
}
.waring{
padding: 5px;
border-radius: 5px;
background-color: #F56C6C;
color: white;
}
.normal{
padding: 5px;
border-radius: 5px;
background-color: #67C23A;
color: white;
}
</style>

115
src/views/EAP/index.vue Normal file
View File

@@ -0,0 +1,115 @@
<!--
* @Author: zwq
* @Date: 2020-12-29 15:41:11
* @LastEditors: zwq
* @LastEditTime: 2022-08-03 16:30:27
* @Description:
-->
<template>
<div>
<div class="btn-container">
<div v-for="(item,index) in btnList" :key="index" class="btndiv">
<el-card class="box-card" @click.native="sendInfo(item)">{{ item }}</el-card>
</div>
</div>
<spc-control />
</div>
</template>
<script>
import * as spcApi from '@/api/EAP'
import spcControl from './eapControl'
// , handleLimit
/**
* 表格表头配置项 TypeScript接口注释
* tableConfig<ConfigItem> = []
*
* Interface ConfigItem = {
* prop: string,
* label: string,
* width: string,
* align: string,
* subcomponent: function,
* filter: function
* }
*
*
*/
export default {
name: 'Aspc',
components: { spcControl },
filters: {
statusFilter(status) {
const statusMap = {
published: 'success',
draft: 'info',
deleted: 'danger'
}
return statusMap[status]
}
},
data() {
return {
btnList: [
'EquipmentOffline',
'ControlStateLocal',
'ControlStateRemote',
'AlarmDetected',
'AlarmCleared',
// 'SpoolTransmitFailure',
// 'SpoolingActivated',
// 'SpoolingDeactivated',
'ProcessingStarted',
'ProcessingCompleted',
'ProcessingStopped',
'MaterialReceived',
'MaterialRemoved',
'E10StateChanged',
'CompleteProcessFlow',
'MaintenancePlan',
'MaintenanceRecord',
'RepairRecord',
'ShuttleMovementStart',
'ShuttleMovementFinished',
'QCPChange',
'PowerConsumption',
'OKsubstratereport',
'Scrapsubstratereport',
'EmptyCassettereport'
]
}
},
created() {
},
methods: {
sendInfo(name) {
spcApi[name]().then(response => {
this.$message({
message: this.$t('module.basicData.visual.success'),
type: 'success',
duration: 1500
})
})
}
}
}
</script>
<style scoped>
.btn-container{
display: flex;
justify-content: space-between;
flex-wrap: wrap;
}
.btndiv{
width: 20%;
height: 100px;
margin: auto;
}
.box-card{
background-color: #3e8ef7;
margin: 10px;
color: white;
}
</style>

View File

@@ -47,15 +47,15 @@ module.exports = {
proxy: {
'/api': {
// target: 'http://localhost:8080',
// target: 'http://192.168.0.148:8080',
target: 'http://a.wms.picaiba.com/api',
// target: 'http://192.168.1.38:8080',
target: 'http://a.wms.picaiba.com',
// target: 'http://192.168.0.127:8080',
// target: 'http://192.168.0.165:8080',
// target: 'http://192.168.43.105:8080',
// target: 'http://127.0.0.1:8080',
// target: 'http://192.168.0.70:8080',
// target: 'http://192.168.0.199:8080',
ws: true,
changeOrigin: true,
pathRewrite: {
@@ -188,4 +188,4 @@ module.exports = {
}
)
}
}
}