|
|
@@ -37,19 +37,25 @@
|
|
|
<div class="top_bar">
|
|
|
<div class="runDeviceInfo">
|
|
|
<div
|
|
|
- >运行<span style="">{{ totalData.total }}</span
|
|
|
+ >运行<span style="">{{ totalData.runNum }}</span
|
|
|
>台</div
|
|
|
>
|
|
|
</div>
|
|
|
<div class="repaireInfo">
|
|
|
<div
|
|
|
- >计划维修<span style="">{{ totalData.total }}</span
|
|
|
+ >计划维修<span style="">{{ totalData.planMaintenanceNum }}</span
|
|
|
+ >台</div
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ <div class="repaireInfo1">
|
|
|
+ <div
|
|
|
+ >保养<span style="">{{ totalData.maintenanceNum }}</span
|
|
|
>台</div
|
|
|
>
|
|
|
</div>
|
|
|
<div class="faultDeviceInfo">
|
|
|
<div
|
|
|
- >故障维修<span>{{ totalData.repairNum }}</span
|
|
|
+ >故障维修<span>{{ totalData.malfunctionNum }}</span
|
|
|
>台</div
|
|
|
>
|
|
|
</div>
|
|
|
@@ -59,13 +65,15 @@
|
|
|
<div class="title">
|
|
|
<div>
|
|
|
<span>巡点检:</span>
|
|
|
- <span class="blue">25</span>
|
|
|
+ <span class="blue">{{
|
|
|
+ getSalesFinishListLength('xdjList')
|
|
|
+ }}</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="table"> </div>
|
|
|
<dv-scroll-board
|
|
|
v-if="isFlag"
|
|
|
- :config="config"
|
|
|
+ :config="getSalesFinishList('xdjList')"
|
|
|
style="width: 90%; height: 87%; transform: translate(5%, 1%)"
|
|
|
/>
|
|
|
</div>
|
|
|
@@ -73,13 +81,13 @@
|
|
|
<div class="title">
|
|
|
<div>
|
|
|
<span>保养:</span>
|
|
|
- <span class="blue">25</span>
|
|
|
+ <span class="blue">{{ getSalesFinishListLength('byList') }}</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="table"> </div>
|
|
|
<dv-scroll-board
|
|
|
v-if="isFlag"
|
|
|
- :config="config"
|
|
|
+ :config="getSalesFinishList('byList')"
|
|
|
style="width: 90%; height: 87%; transform: translate(5%, 1%)"
|
|
|
/>
|
|
|
</div>
|
|
|
@@ -89,13 +97,15 @@
|
|
|
<div class="title">
|
|
|
<div>
|
|
|
<span>故障维修:</span>
|
|
|
- <span class="blue">25</span>
|
|
|
+ <span class="blue">{{
|
|
|
+ getSalesFinishListLength('gzwxList')
|
|
|
+ }}</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="table"> </div>
|
|
|
<dv-scroll-board
|
|
|
v-if="isFlag"
|
|
|
- :config="config"
|
|
|
+ :config="getSalesFinishList('gzwxList')"
|
|
|
style="width: 90%; height: 87%; transform: translate(5%, 1%)"
|
|
|
/>
|
|
|
</div>
|
|
|
@@ -103,13 +113,15 @@
|
|
|
<div class="title">
|
|
|
<div>
|
|
|
<span>计划性维修:</span>
|
|
|
- <span class="blue">25</span>
|
|
|
+ <span class="blue">{{
|
|
|
+ getSalesFinishListLength('jhwxList')
|
|
|
+ }}</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="table"> </div>
|
|
|
<dv-scroll-board
|
|
|
v-if="isFlag"
|
|
|
- :config="config"
|
|
|
+ :config="getSalesFinishList('jhwxList')"
|
|
|
style="width: 90%; height: 87%; transform: translate(5%, 1%)"
|
|
|
/>
|
|
|
</div>
|
|
|
@@ -123,7 +135,7 @@
|
|
|
<script>
|
|
|
import dvBorderContent from './dv-border-content.vue';
|
|
|
import { component } from 'vue-fullscreen';
|
|
|
- import { getRepairWorkList, statisticsDeviceStatus } from '@/api/equipment';
|
|
|
+ import { screenSubstanceGroupQuery } from '@/api/equipment';
|
|
|
export default {
|
|
|
name: 'index',
|
|
|
components: {
|
|
|
@@ -133,6 +145,53 @@
|
|
|
computed: {
|
|
|
contentWidth() {
|
|
|
return this.$store.state.theme.contentWidth;
|
|
|
+ },
|
|
|
+ getSalesFinishListLength() {
|
|
|
+ return (key) => this.totalData[key]?.length;
|
|
|
+ },
|
|
|
+ getSalesFinishList() {
|
|
|
+ return (key) => {
|
|
|
+ return {
|
|
|
+ header: this.tableHeader.map(
|
|
|
+ (item) =>
|
|
|
+ `<div style="color: #0577FF;font-size: 1.3rem;font-weight: bold">${item}</div>`
|
|
|
+ ),
|
|
|
+ data:
|
|
|
+ this.totalData[key].map((item) => {
|
|
|
+ let list = [];
|
|
|
+ for (let i in item) {
|
|
|
+ let div = '';
|
|
|
+ if (i === 'workOrderNo') {
|
|
|
+ div = `<div class="white" style="font-size: 1.3rem;">${item[i]}</div>`;
|
|
|
+ list[0] = div;
|
|
|
+ }
|
|
|
+ if (i === 'repairUserName') {
|
|
|
+ div = `<div class="white" style="font-size: 1.3rem;">${item[i]}</div>`;
|
|
|
+ list[1] = div;
|
|
|
+ }
|
|
|
+ if (i === 'delayTime') {
|
|
|
+ div = `<div class="white" style="font-size: 1.3rem;">${item[i]}</div>`;
|
|
|
+ list[3] = div;
|
|
|
+ }
|
|
|
+ if (i === 'orderStatusString') {
|
|
|
+ div = `<div class="${this.getColor(
|
|
|
+ item[i]
|
|
|
+ )}" style="font-size: 1.3rem;">${item[i]}</div>`;
|
|
|
+ list[2] = div;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }) ?? [],
|
|
|
+ align: ['center', 'center', 'center', 'center', 'center', 'center'],
|
|
|
+ headerBGC: '#031d42',
|
|
|
+ columnWidth: [140, 250, 130, 200],
|
|
|
+ headerHeight: 30,
|
|
|
+ oddRowBGC: '#031d42',
|
|
|
+ evenRowBGC: '#031d42',
|
|
|
+ waitTime: 5000,
|
|
|
+ rowNum: 8
|
|
|
+ };
|
|
|
+ };
|
|
|
}
|
|
|
},
|
|
|
watch: {
|
|
|
@@ -172,12 +231,6 @@
|
|
|
? '18px'
|
|
|
: '16px';
|
|
|
this.isFlag = true;
|
|
|
-
|
|
|
- this.$nextTick(() => {
|
|
|
- statisticsDeviceStatus().then((data) => {
|
|
|
- this.totalData = data;
|
|
|
- });
|
|
|
- });
|
|
|
});
|
|
|
},
|
|
|
immediate: true
|
|
|
@@ -216,11 +269,6 @@
|
|
|
? '18px'
|
|
|
: '16px';
|
|
|
this.isFlag = true;
|
|
|
- this.$nextTick(() => {
|
|
|
- statisticsDeviceStatus().then((data) => {
|
|
|
- this.totalData = data;
|
|
|
- });
|
|
|
- });
|
|
|
});
|
|
|
},
|
|
|
immediate: true
|
|
|
@@ -244,56 +292,7 @@
|
|
|
WeightStorageTotal: 0,
|
|
|
salesChart: null,
|
|
|
outputChart: null,
|
|
|
- orderStatusOptions: {
|
|
|
- 0: '待接收',
|
|
|
- 1: '已接收',
|
|
|
- 2: '执行中',
|
|
|
- 3: '待验收',
|
|
|
- 4: '已完成'
|
|
|
- },
|
|
|
- tableHeader: ['工单号', '负责人', '状态', '响应时间'],
|
|
|
- config: {
|
|
|
- header: [],
|
|
|
- data: [],
|
|
|
- align: ['center', 'center', 'center', 'center'],
|
|
|
- headerBGC: '#031d42',
|
|
|
- columnWidth: [110, 120],
|
|
|
- headerHeight: 20,
|
|
|
- oddRowBGC: '#031d42',
|
|
|
- evenRowBGC: '#031d42',
|
|
|
- waitTime: 5000,
|
|
|
- rowNum: 12
|
|
|
- },
|
|
|
- optionData: [
|
|
|
- {
|
|
|
- code: '3',
|
|
|
- name: '运行数量',
|
|
|
- cws: 80,
|
|
|
- zcs: 20,
|
|
|
- zcl: '25%',
|
|
|
- value: 80,
|
|
|
- startRatio: 0,
|
|
|
- endRatio: 0.34782608695652173,
|
|
|
- itemStyle: {
|
|
|
- color: '#5089F2',
|
|
|
- opacity: 1
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- code: '1',
|
|
|
- name: '故障检修数量',
|
|
|
- cws: 40,
|
|
|
- zcs: 30,
|
|
|
- zcl: '75%',
|
|
|
- value: 40,
|
|
|
- startRatio: 0.8260869565217391,
|
|
|
- endRatio: 1,
|
|
|
- itemStyle: {
|
|
|
- color: '#FF736A',
|
|
|
- opacity: 1
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
+ tableHeader: ['工单号', '负责人', '状态', '响应时间']
|
|
|
};
|
|
|
},
|
|
|
created() {
|
|
|
@@ -301,15 +300,35 @@
|
|
|
this.updateTimer = setInterval(this.updateTime, 1000);
|
|
|
},
|
|
|
mounted() {
|
|
|
- this.getSalesFinishList();
|
|
|
- setInterval(() => {
|
|
|
- this.getSalesFinishList();
|
|
|
- }, 3600000);
|
|
|
- statisticsDeviceStatus().then((data) => {
|
|
|
+ // this.getSalesFinishList();
|
|
|
+ // setInterval(() => {
|
|
|
+ // this.getSalesFinishList();
|
|
|
+ // }, 3600000);
|
|
|
+ screenSubstanceGroupQuery().then((data) => {
|
|
|
this.totalData = data;
|
|
|
+ // this.getSalesFinishList()
|
|
|
});
|
|
|
},
|
|
|
methods: {
|
|
|
+ getColor(val) {
|
|
|
+ // 0: '待接收',
|
|
|
+ // 1: '已接收',
|
|
|
+ // 2: '执行中',
|
|
|
+ // 3: '待验收',
|
|
|
+ // 4: '已完成'
|
|
|
+ if (val == '待接收') {
|
|
|
+ return 'white';
|
|
|
+ }
|
|
|
+ if (val == '已接收') {
|
|
|
+ return 'yellow';
|
|
|
+ }
|
|
|
+ if (val == '执行中') {
|
|
|
+ return 'green';
|
|
|
+ }
|
|
|
+ if (val == '待验收') {
|
|
|
+ return 'red';
|
|
|
+ }
|
|
|
+ },
|
|
|
fomatFloat(num, n) {
|
|
|
var f = parseFloat(num);
|
|
|
if (isNaN(f)) {
|
|
|
@@ -333,85 +352,12 @@
|
|
|
this.isFullscreen = !this.isFullscreen;
|
|
|
},
|
|
|
//
|
|
|
- async getSalesFinishList() {
|
|
|
- /*customerMark 客户代号 string
|
|
|
-deliveryStatus 交付状态 1未交付2提前3按时4延期 integer(int32)
|
|
|
-produceStatus 生产状态 1未生产2已生产3已完成 integer(int32)
|
|
|
-purchaseStatus 采购状态 1未采购2已采购3已入库 integer(int32)
|
|
|
-saleOrderCode 销售订单号 string
|
|
|
-scheduleStatus 排产状态 1待排产2已排产 integer(int32)*/
|
|
|
- let HeaderFiled = [
|
|
|
- 'customerMark',
|
|
|
- 'saleOrderCode',
|
|
|
- 'purchaseStatus',
|
|
|
- 'scheduleStatus',
|
|
|
- 'produceStatus',
|
|
|
- 'deliveryStatus'
|
|
|
- ];
|
|
|
- let data = await getRepairWorkList();
|
|
|
- console.log(data);
|
|
|
- this.config = {
|
|
|
- header: this.tableHeader.map(
|
|
|
- (item) =>
|
|
|
- `<div style="color: #0577FF;font-size: 1.3rem;font-weight: bold">${item}</div>`
|
|
|
- ),
|
|
|
- data:
|
|
|
- data.map((item) => {
|
|
|
- let list = [];
|
|
|
- for (let i in item) {
|
|
|
- let div = '';
|
|
|
- if (i === 'executeGroupName') {
|
|
|
- div = `<div class="white" style="font-size: 1.3rem;">${item[i]}</div>`;
|
|
|
- list[0] = div;
|
|
|
- }
|
|
|
- if (i === 'executeUserName') {
|
|
|
- div = `<div class="white" style="font-size: 1.3rem;">${item[i]}</div>`;
|
|
|
- list[1] = div;
|
|
|
- }
|
|
|
- if (i === 'orderStatus') {
|
|
|
- if (item[i] > -1) {
|
|
|
- switch (item[i]) {
|
|
|
- case '0':
|
|
|
- div = `<div class="white" style="font-size: 1.3rem;">${
|
|
|
- this.orderStatusOptions[item[i]]
|
|
|
- }</div>`;
|
|
|
- break;
|
|
|
- case '1':
|
|
|
- div = `<div class="yellow" style="font-size: 1.3rem;">${
|
|
|
- this.orderStatusOptions[item[i]]
|
|
|
- }</div>`;
|
|
|
- break;
|
|
|
- case '2':
|
|
|
- div = `<div class="green" style="font-size: 1.3rem;">${
|
|
|
- this.orderStatusOptions[item[i]]
|
|
|
- }</div>`;
|
|
|
- break;
|
|
|
- default:
|
|
|
- div = `<div class="red" style="font-size: 1.3rem;">${
|
|
|
- this.orderStatusOptions[item[i]]
|
|
|
- }</div>`;
|
|
|
- break;
|
|
|
- }
|
|
|
+ // async getSalesFinishList() {
|
|
|
+ // this.totalData
|
|
|
+ // this.config = {
|
|
|
|
|
|
- list[2] = div;
|
|
|
- } else {
|
|
|
- div = `<div class="white" style="font-size: 1.3rem;"></div>`;
|
|
|
- list[2] = div;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return list;
|
|
|
- }) ?? [],
|
|
|
- align: ['center', 'center', 'center', 'center', 'center', 'center'],
|
|
|
- headerBGC: '#031d42',
|
|
|
- columnWidth: [140, 250, 170, 150],
|
|
|
- headerHeight: 30,
|
|
|
- oddRowBGC: '#031d42',
|
|
|
- evenRowBGC: '#031d42',
|
|
|
- waitTime: 5000,
|
|
|
- rowNum: 8
|
|
|
- };
|
|
|
- },
|
|
|
+ // };
|
|
|
+ // },
|
|
|
//实时更新日期
|
|
|
updateTime() {
|
|
|
let now = new Date();
|
|
|
@@ -506,18 +452,14 @@ scheduleStatus 排产状态 1待排产2已排产 integer(int32)*/
|
|
|
height: 8.625rem;
|
|
|
width: 100%;
|
|
|
position: relative;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-around;
|
|
|
> div {
|
|
|
width: 25.77rem;
|
|
|
height: 6.27rem;
|
|
|
background-size: 100% 100%;
|
|
|
background-repeat: no-repeat;
|
|
|
line-height: 6.27rem;
|
|
|
- }
|
|
|
- .runDeviceInfo {
|
|
|
- position: absolute;
|
|
|
- top: 1.177rem;
|
|
|
- left: 10.625rem;
|
|
|
- background-image: url('@/assets/successInfo.png');
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
justify-content: center;
|
|
|
@@ -530,36 +472,19 @@ scheduleStatus 排产状态 1待排产2已排产 integer(int32)*/
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ .runDeviceInfo {
|
|
|
+ background-image: url('@/assets/successInfo.png');
|
|
|
+ }
|
|
|
.repaireInfo {
|
|
|
- position: absolute;
|
|
|
- top: 1.177rem;
|
|
|
- left: 38.625rem;
|
|
|
background-image: url('@/assets/runDevice.png');
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- justify-content: center;
|
|
|
- > div {
|
|
|
- font-family: '优设标题黑';
|
|
|
- font-size: 2.3rem;
|
|
|
- color: #fff;
|
|
|
- > span {
|
|
|
- color: #00c1fd;
|
|
|
- }
|
|
|
- }
|
|
|
+ }
|
|
|
+ .repaireInfo1 {
|
|
|
+ background-image: url('@/assets/runDevice.png');
|
|
|
}
|
|
|
.faultDeviceInfo {
|
|
|
- position: absolute;
|
|
|
- top: 1.177rem;
|
|
|
- right: 12.625rem;
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- justify-content: center;
|
|
|
background-image: url('@/assets/faultDevice.png');
|
|
|
> div {
|
|
|
- font-family: '优设标题黑';
|
|
|
- font-size: 2.3rem;
|
|
|
- color: #fff;
|
|
|
- > span {
|
|
|
+ span {
|
|
|
color: #f26e6c;
|
|
|
}
|
|
|
}
|