修改自定义数据

master
suixy 2 weeks ago
parent 7304ce2df0
commit 8f5fa2f9d4

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

@ -1,45 +1,99 @@
<script src="../../../router/index.js"></script>
<template>
<div class="app-container">
<div class="headTitle">数字化注塑车间管控中心</div>
<div class="centerDevice"></div>
<div class="text1" style="top: 14.7%;left: 5.5%;">今日计划数: <span style="color: #6ACBFD">432</span></div>
<div class="text1" style="top: 14.7%;left: 16.8%;">今日完成数: <span style="color: #68FD82">432</span></div>
<div class="text1" style="top: 24%;left: 5.5%;">今日差异数: <span style="color: #FEF16A">432</span></div>
<div class="text1" style="top: 24%;left: 16.8%;">今日完成率: <span style="color: #69CBFE">98%</span></div>
<div class="text1" style="top: 14.7%;left: 5.5%;">今日计划数: <span style="color: #6ACBFD">{{ form.text1 }}</span>
</div>
<div class="text1" style="top: 14.7%;left: 16.8%;">今日完成数: <span style="color: #68FD82">{{
form.text2
}}</span>
</div>
<div class="text1" style="top: 24%;left: 5.5%;">今日差异数: <span style="color: #FEF16A">{{ form.text3 }}</span>
</div>
<div class="text1" style="top: 24%;left: 16.8%;">今日完成率: <span style="color: #69CBFE">{{ form.text4 }}%</span>
</div>
<div class="text1" style="top: 12%;left: 29%;">今日用水(t):</div>
<div class="text1" style="top: 12%;left: 44%;">今日用电(kwh):</div>
<div class="text1" style="top: 12%;left: 59%;">今日用气():</div>
<div class="text1" style="top: 19.1%;left: 75%;">正常: <span style="color: #6AFD81">300</span></div>
<div class="text1" style="top: 19.1%;left: 82.4%;">告警: <span style="color: #FFF46C">01</span></div>
<div class="text1" style="top: 19.1%;left: 89.8%;">停机: <span style="color: #F9241F">01</span></div>
<div class="num1" style="color:#63CDFA;top: 17%;left: 30.05%;">1</div>
<div class="num1" style="color:#63CDFA;top: 17%;left: 32.55%;">2</div>
<div class="num1" style="color:#63CDFA;top: 17%;left: 35.05%;">3</div>
<div class="num1" style="color:#63CDFA;top: 17%;left: 37.55%;">4</div>
<div class="num1" style="color:#63CDFA;top: 17%;left: 40.05%;">5</div>
<div class="num1" style="color:#69FD80;top: 17%;left: 45.05%;">6</div>
<div class="num1" style="color:#69FD80;top: 17%;left: 47.55%;">7</div>
<div class="num1" style="color:#69FD80;top: 17%;left: 50.05%;">8</div>
<div class="num1" style="color:#69FD80;top: 17%;left: 52.55%;">9</div>
<div class="num1" style="color:#69FD80;top: 17%;left: 55.05%;">0</div>
<div class="num1" style="color:#FEF26A;top: 17%;left: 60.05%;">1</div>
<div class="num1" style="color:#FEF26A;top: 17%;left: 62.55%;">2</div>
<div class="num1" style="color:#FEF26A;top: 17%;left: 65.05%;">3</div>
<div class="num1" style="color:#FEF26A;top: 17%;left: 67.55%;">4</div>
<div class="num1" style="color:#FEF26A;top: 17%;left: 70.05%;">5</div>
<div class="text2" style="top: 12.7%;left: 84.7%;">设备总数: <span style="color: #68CBFF">320</span></div>
<div class="text2" style="top: 41%;left: 84.7%;">总维修次数: <span style="color: #EF241E">257</span></div>
<div class="text1" style="top: 19.1%;left: 75%;">正常: <span style="color: #6AFD81">{{ form.text8 }}</span></div>
<div class="text1" style="top: 19.1%;left: 82.4%;">告警: <span style="color: #FFF46C">{{ form.text9 }}</span>
</div>
<div class="text1" style="top: 19.1%;left: 89.8%;">停机: <span style="color: #F9241F">{{ form.text10 }}</span>
</div>
<div class="num1" style="color:#63CDFA;top: 17%;left: 30.05%;">{{
(form.text5 || '').padStart(5, '0').split('')[0]
}}
</div>
<div class="num1" style="color:#63CDFA;top: 17%;left: 32.55%;">{{
(form.text5 || '').padStart(5, '0').split('')[1]
}}
</div>
<div class="num1" style="color:#63CDFA;top: 17%;left: 35.05%;">{{
(form.text5 || '').padStart(5, '0').split('')[2]
}}
</div>
<div class="num1" style="color:#63CDFA;top: 17%;left: 37.55%;">{{
(form.text5 || '').padStart(5, '0').split('')[3]
}}
</div>
<div class="num1" style="color:#63CDFA;top: 17%;left: 40.05%;">{{
(form.text5 || '').padStart(5, '0').split('')[4]
}}
</div>
<div class="num1" style="color:#69FD80;top: 17%;left: 45.05%;">{{
(form.text6 || '').padStart(5, '0').split('')[0]
}}
</div>
<div class="num1" style="color:#69FD80;top: 17%;left: 47.55%;">{{
(form.text6 || '').padStart(5, '0').split('')[1]
}}
</div>
<div class="num1" style="color:#69FD80;top: 17%;left: 50.05%;">{{
(form.text6 || '').padStart(5, '0').split('')[2]
}}
</div>
<div class="num1" style="color:#69FD80;top: 17%;left: 52.55%;">{{
(form.text6 || '').padStart(5, '0').split('')[3]
}}
</div>
<div class="num1" style="color:#69FD80;top: 17%;left: 55.05%;">{{
(form.text6 || '').padStart(5, '0').split('')[4]
}}
</div>
<div class="num1" style="color:#FEF26A;top: 17%;left: 60.05%;">{{
(form.text7 || '').padStart(5, '0').split('')[0]
}}
</div>
<div class="num1" style="color:#FEF26A;top: 17%;left: 62.55%;">{{
(form.text7 || '').padStart(5, '0').split('')[1]
}}
</div>
<div class="num1" style="color:#FEF26A;top: 17%;left: 65.05%;">{{
(form.text7 || '').padStart(5, '0').split('')[2]
}}
</div>
<div class="num1" style="color:#FEF26A;top: 17%;left: 67.55%;">{{
(form.text7 || '').padStart(5, '0').split('')[3]
}}
</div>
<div class="num1" style="color:#FEF26A;top: 17%;left: 70.05%;">{{
(form.text7 || '').padStart(5, '0').split('')[4]
}}
</div>
<div class="text2" style="top: 12.7%;left: 84.7%;">设备总数: <span style="color: #68CBFF">{{ form.text11 }}</span>
</div>
<div class="text2" style="top: 41%;left: 84.7%;">总维修次数: <span style="color: #EF241E">{{ form.text12 }}</span>
</div>
<div class="text3" style="top: 35.15%;left: 5.5%;">工单进度</div>
<div class="text3" style="top: 35.15%;left: 75%;">维修分析</div>
<div class="text3" style="top: 63.05%;left: 5.5%;">质量追溯</div>
<div class="text3" style="top: 63.05%;left: 30.2%;">设备分析</div>
<div class="text3" style="top: 63.05%;left: 75%;">告警趋势</div>
<div class="deviceError">
<div class="deviceError" v-if="form.view1">
<div class="icon"></div>
<div class="text" style="left: 18%">设备1#</div>
<div class="text" style="left: 42%;color: #F42223">产品未顶出</div>
<div class="text" style="left: 75%">66:66:66</div>
<div class="text" style="left: 18%">{{ form.info1.text1 }}</div>
<div class="text" style="left: 42%;color: #F42223">{{ form.info1.text2 }}</div>
<div class="text" style="left: 75%">{{ form.info1.text3 }}</div>
</div>
<div class="scrollTable">
@ -62,47 +116,48 @@
</div>
<vue-seamless-scroll
:class-option="scrollTableOption"
:data="scrollTableData"
:data="form.table1"
class="case-item"
:key="key"
style="height: calc(100% - 20px - 1vw - 0.4vw);overflow: hidden;"
>
<div
v-for="(item, index) in scrollTableData"
v-for="(item, index) in form.table1"
:key="index"
>
<div :style='"background-color:" + ((index % 2 === 0)? "#05346022":"#05346044") '>
<div
class="scrollTableItem" style="width: 25%">
{{ item.value1 }}
{{ item.text1 }}
</div>
<div
class="scrollTableItem" style="width: 16.66%">
{{ item.value2 }}
{{ item.text2 }}
</div>
<div
class="scrollTableItem" style="width: 16.66%">
{{ item.value3 }}
{{ item.text3 }}
</div>
<div
class="scrollTableItem" style="width: 16.66%">
{{ item.value4 }}
{{ item.text4 }}
</div>
<div
class="scrollTableItem" style="width: 25%">
{{ item.value5 }}
{{ item.text5 }}
</div>
</div>
</div>
</vue-seamless-scroll>
</div>
<div class="repairTimes">
<div class="item" v-for="i in 3">
<div class="num">{{ i }}</div>
<div class="deviceName">SC-228NE</div>
<div class="item" v-for="(i,k) in form.table2">
<div class="num">{{ k + 1 }}</div>
<div class="deviceName">{{ i.text1 }}</div>
<div class="schedule">
<div class="progressBar" :style="{width: 100 - ((i-1) * 10) + '%'}"></div>
<div class="progressBar" :style="{width: i.text2 + '%'}"></div>
</div>
<div class="times">{{ 10 - i + 1 }}</div>
<div class="times">{{ i.text3 }}</div>
</div>
</div>
<div class="chart1">
@ -117,12 +172,278 @@
<div class="chart3">
<Chart ref="chart3"></Chart>
</div>
<div class="config">
<el-button class="btn" @click="configDialogVisible = true">配置</el-button>
</div>
<div v-if="isData">
<el-dialog
title="提示"
:visible.sync="configDialogVisible"
width="70%">
<el-form :inline="true" :model="form" label-width="120px">
<el-form-item label="今日计划数">
<el-input v-model="form.text1" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="今日完成数">
<el-input v-model="form.text2" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="今日差异数">
<el-input v-model="form.text3" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="今日完成率">
<el-input v-model="form.text4" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="今日用水">
<el-input v-model="form.text5" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="今日用电">
<el-input v-model="form.text6" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="今日用气">
<el-input v-model="form.text7" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="设备正常数">
<el-input v-model="form.text8" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="设备告警数">
<el-input v-model="form.text9" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="设备停机数">
<el-input v-model="form.text10" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="设备总数">
<el-input v-model="form.text11" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="总维修次数">
<el-input v-model="form.text12" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="是否报警">
<el-switch
v-model="form.view1"
active-color="#13ce66"
inactive-color="#ff4949">
</el-switch>
</el-form-item>
<el-form-item label="报警设备">
<el-input v-model="form.info1.text1" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="报警原因">
<el-input v-model="form.info1.text2" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="报警时间">
<el-input v-model="form.info1.text3" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="工单进度" class="fullLine">
<el-table
:data="form.table1"
style="width: 100%">
<el-table-column
prop="date"
label="型号"
>
<template slot-scope="scope">
<el-input v-model="form.table1[scope.$index].text1" autocomplete="off"></el-input>
</template>
</el-table-column>
<el-table-column
prop="name"
label="计划数"
>
<template slot-scope="scope">
<el-input v-model="form.table1[scope.$index].text2" autocomplete="off"></el-input>
</template>
</el-table-column>
<el-table-column
prop="address"
label="完成数">
<template slot-scope="scope">
<el-input v-model="form.table1[scope.$index].text3" autocomplete="off"></el-input>
</template>
</el-table-column>
<el-table-column
prop="address"
label="差异数">
<template slot-scope="scope">
<el-input v-model="form.table1[scope.$index].text4" autocomplete="off"></el-input>
</template>
</el-table-column>
<el-table-column
prop="address"
label="执行进度">
<template slot-scope="scope">
<el-input v-model="form.table1[scope.$index].text5" autocomplete="off"></el-input>
</template>
</el-table-column>
</el-table>
<div>
<i class="el-icon-circle-plus-outline" @click="key +=1;form.table1.push({
text1: '1',
text2: '0',
text3: '0',
text4: '0',
text5: '0%'})" style="font-size: 24px"></i>
</div>
</el-form-item>
<el-form-item label="维修分析" class="fullLine">
<el-table
:data="form.table2"
style="width: 100%">
<el-table-column
prop="date"
label="设备型号"
>
<template slot-scope="scope">
<el-input v-model="form.table2[scope.$index].text1" autocomplete="off"></el-input>
</template>
</el-table-column>
<el-table-column
prop="name"
label="占比"
>
<template slot-scope="scope">
<el-input v-model="form.table2[scope.$index].text2" autocomplete="off"></el-input>
</template>
</el-table-column>
<el-table-column
prop="address"
label="次数">
<template slot-scope="scope">
<el-input v-model="form.table2[scope.$index].text3" autocomplete="off"></el-input>
</template>
</el-table-column>
</el-table>
<div>
<i class="el-icon-circle-plus-outline" @click=" form.table2.push({
text1: '1',
text2: '0',
text3: '0' })" style="font-size: 24px"></i>
</div>
</el-form-item>
<el-form-item label="合格数">
<el-input-number @change="chartInit" :controls="false" v-model="form.chart1.value1"
autocomplete="off"></el-input-number>
</el-form-item>
<el-form-item label="不合格数">
<el-input-number @change="chartInit" :controls="false" v-model="form.chart1.value2"
autocomplete="off"></el-input-number>
</el-form-item>
<el-form-item label="质量追溯" class="fullLine">
<el-table
:data="form.chart4"
style="width: 100%">
<el-table-column
prop="date"
label="产品名"
>
<template slot-scope="scope">
<el-input @change="chartInit" v-model="form.chart4[scope.$index].value1"
autocomplete="off"></el-input>
</template>
</el-table-column>
<el-table-column
prop="name"
label="合格率"
>
<template slot-scope="scope">
<el-input @change="chartInit" v-model="form.chart4[scope.$index].value2"
autocomplete="off"></el-input>
</template>
</el-table-column>
<el-table-column
prop="address"
label="合格上限">
<template slot-scope="scope">
<el-input @change="chartInit" v-model="form.chart4[scope.$index].value3"
autocomplete="off"></el-input>
</template>
</el-table-column>
</el-table>
<div>
<i class="el-icon-circle-plus-outline" @click="chartInit(); form.chart4.push({
value1: '',
value2: '0',
value3: '100' })" style="font-size: 24px"></i>
</div>
</el-form-item>
<el-form-item label="设备分析" class="fullLine">
<el-table
:data="form.chart2"
style="width: 100%">
<el-table-column
prop="date"
label="设备型号"
>
<template slot-scope="scope">
<el-input @change="chartInit" v-model="form.chart2[scope.$index].value1"
autocomplete="off"></el-input>
</template>
</el-table-column>
<el-table-column
prop="name"
label="数量"
>
<template slot-scope="scope">
<el-input @change="chartInit" v-model="form.chart2[scope.$index].value2"
autocomplete="off"></el-input>
</template>
</el-table-column>
</el-table>
<div>
<i class="el-icon-circle-plus-outline" @click="chartInit(); form.chart2.push({
value1: '1',
value2: '1'})" style="font-size: 24px"></i>
</div>
</el-form-item>
<el-form-item label="维修分析" class="fullLine">
<el-table
:data="form.chart3"
style="width: 100%">
<el-table-column
prop="date"
label="时间"
>
<template slot-scope="scope">
<el-input @change="chartInit" v-model="form.chart3[scope.$index].value1"
autocomplete="off"></el-input>
</template>
</el-table-column>
<el-table-column
prop="name"
label="次数"
>
<template slot-scope="scope">
<el-input @change="chartInit" v-model="form.chart3[scope.$index].value2"
autocomplete="off"></el-input>
</template>
</el-table-column>
</el-table>
<div>
<i class="el-icon-circle-plus-outline" @click="chartInit(); form.chart3.push({
value1: '1',
value2: '0' })" style="font-size: 24px"></i>
</div>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="configDialogVisible = false"> </el-button>
<el-button type="primary" @click="save"> </el-button>
</span>
</el-dialog>
</div>
</div>
</template>
<script>
import vueSeamlessScroll from "vue-seamless-scroll";
import Chart from "@/components/board/Chart.vue";
import * as echarts from "echarts";
import {getSimulateData} from "@/api/board/getData";
import {updateCustomData} from "@/api/base/customData";
import {Message} from "element-ui";
const vw = (document.documentElement.clientWidth || document.body.clientWidth) / 100
export default {
@ -132,9 +453,71 @@ export default {
name: "Liner",
data() {
return {
// form: {
// text1: '1',
// text2: '2',
// text3: '3',
// text4: '4',
// text5: '12345',
// text6: '54321',
// text7: '13579',
// text8: '5',
// text9: '6',
// text10: '7',
// text11: '8',
// text12: '9',
// view1: true,
// info1: {
// text1: '1#',
// text2: '',
// text3: '66:66:66',
// },
// table1: Array(20).fill(0).map(i => {
// return {
// text1: Math.ceil(Math.floor(Math.random() * 100)) + 'WD',
// text2: Math.ceil(Math.floor(Math.random() * 100)),
// text3: Math.ceil(Math.floor(Math.random() * 100)),
// text4: Math.ceil(Math.floor(Math.random() * 100)),
// text5: Math.ceil(Math.floor(Math.random() * 100)) + '%',
// }
// }),
// table2: Array(3).fill(0).map((i, k) => {
// return {
// text1: 'SC-228NE',
// text2: '' + Math.ceil(Math.floor(Math.random() * 100)),
// text3: '' + Math.ceil(Math.floor(Math.random() * 100)),
// }
// }),
// chart1: {
// value1: 1000,
// value2: 100,
// },
// chart2: Array(8).fill(0).map((i, k) => {
// return {
// value1: 'SC-228NE',
// value2: Math.ceil(Math.floor(Math.random() * 25)),
// }
// }),
// chart3: Array(5).fill(0).map((i, k) => {
// return {
// value1: '13:0' + k + ':00',
// value2: Math.ceil(Math.floor(Math.random() * 25)),
// }
// }),
// chart4: Array(5).fill(0).map((i, k) => {
// return {
// value1: '' + (k + 1),
// value2: Math.ceil(Math.floor(Math.random() * 100)),
// value3: '100',
// }
// }),
// },
form: {},
key: 0,
configDialogVisible: false,
scrollTableOption: {
step: 0.5, //
limitMoveNum: 5, // this.dataList.length
limitMoveNum: 3,// this.dataList.length
hoverStop: true, // stop
direction: 1, // 0 1 2 3
openWatch: true, // dom
@ -142,18 +525,27 @@ export default {
singleWidth: 0, // (0) direction => 2/3
waitTime: 0,
},
isData: false,
row: {}
}
},
mounted() {
const dataMap = {
'合格数': 100,
'不合格数': 100
}
getSimulateData({customCode: 'board-1' || '', customType: 1}).then(val => {
this.row = val.rows[0]
this.form = JSON.parse(val.rows[0].customData);
this.isData = true
this.$nextTick(() => {
this.chartInit()
})
})
},
methods: {
chartInit() {
this.$refs.chart1.setData({
title: {
y: 'center',
left: '60%',
text: `{dot1|●} {name|合格数} {value|1000}\n\n\n{dot2|●} {name|不合格数} {value|100}`,
text: `{dot1|●} {name|合格数} {value|${this.form.chart1.value1}}\n\n\n{dot2|●} {name|不合格数} {value|${this.form.chart1.value2}}`,
textStyle: {
color: '#ffffff',
rich: {
@ -206,7 +598,7 @@ export default {
},
data: [
{
value: 15,
value: this.form.chart1.value2,
name: '不合格数',
itemStyle: {
color: '#4E97FF',
@ -215,7 +607,7 @@ export default {
},
},
{
value: 85,
value: this.form.chart1.value1,
name: '合格数',
itemStyle: {
color: '#0000',
@ -250,9 +642,9 @@ export default {
fontSize: 8,
color: '#ddd',
},
indicator: Array(8).fill(0).map((item, index) => {
return {name: '产品' + (index + 1), index, max: 100}
}),
indicator: this.form.chart4.map(e => {
return {name: e.value1, max: e.value3}
})
},
series: [
{
@ -268,8 +660,8 @@ export default {
},
data: [
{
value: Array(8).fill(0).map((item, index) => {
return 90 + Math.floor(Math.random() * 10);
value: this.form.chart4.map(e => {
return e.value2
}),
name: 'Allocated Budget',
areaStyle: {
@ -289,12 +681,9 @@ export default {
}
]
})
let barData = Array(8).fill(0).map((item, index) => {
return 5 + Math.floor(Math.random() * 8);
})
this.$refs.chart2.setData({
xAxis: {
data: Array(8).fill(0).map((item, index) => 'SC-228NE'),
data: this.form.chart2.map(e => e.value1),
axisLine: {
lineStyle: {
color: '#377097',
@ -319,7 +708,6 @@ export default {
}
},
yAxis: {
max: 25,
axisLine: {
show: true,
lineStyle: {
@ -381,7 +769,7 @@ export default {
color: '#66C7FA',
position: 'top',
},
data: barData,
data: this.form.chart2.map(e => e.value2),
},
{
type: 'pictorialBar',
@ -396,13 +784,13 @@ export default {
itemStyle: {
color: '#0D2DD7'
},
data: barData,
data: this.form.chart2.map(e => e.value2),
}
],
})
this.$refs.chart3.setData({
xAxis: {
data: ["13:00:00", "13:01:00", "13:02:00", "13:03:00", "13:04:00", '13:05:00'],
data: this.form.chart3.map(e => e.value1),
boundaryGap: false,
axisLine: {
lineStyle: {
@ -430,7 +818,6 @@ export default {
}
},
yAxis: {
max: 10,
axisLine: {
show: true,
lineStyle: {
@ -480,30 +867,21 @@ export default {
label: {
show: false,
},
data: Array(6).fill(0).map((item, index) => {
let num = Math.floor(Math.random() * 2) + 2
return Math.max(num, 0)
})
data: this.form.chart3.map(e => e.value2),
},
],
})
},
methods: {},
computed: {
scrollTableData() {
return Array(222).fill(0).map(i => {
return {
value1: Math.ceil(Math.floor(Math.random() * 100)) + 'WD',
value2: Math.ceil(Math.floor(Math.random() * 100)),
value3: Math.ceil(Math.floor(Math.random() * 100)),
value4: Math.ceil(Math.floor(Math.random() * 100)),
value5: Math.ceil(Math.floor(Math.random() * 100)) + '%',
}
save() {
updateCustomData({
...this.row,
customData: JSON.stringify(this.form)
}).then(res => {
Message({message: '保存成功', type: 'success'})
this.configDialogVisible = false
})
}
},
beforeDestroy() {
}
};
</script>
@ -723,4 +1101,31 @@ export default {
width: 23.8%;
height: 29%;
}
.config {
position: absolute;
top: 3%;
right: 3%;
width: 10%;
height: 5vw;
.btn {
display: none;
}
&:hover {
.btn {
display: inline-block;
}
}
}
.fullLine {
width: 100%;
/deep/ .el-form-item__content {
width: calc(100% - 120px);
}
}
</style>

@ -3,32 +3,32 @@
<div class="headTitle">数字化注塑车间管控中心</div>
<div class="text1" style="top: 11.8%;left: 4.5%;letter-spacing: 0.3vw">
<span>工单总数:</span>
<span style="color: #fff;letter-spacing: 0.2vw"> 08</span>
<span style="color: #fff;letter-spacing: 0.2vw"> {{ form.text1 }}</span>
<span style="color: #fff;letter-spacing: 0.2vw"></span>
</div>
<div class="text1" style="top: 11.8%;left: 19%;letter-spacing: 0.5vw">
<span>已完成:</span>
<span style="color: #43FC36;letter-spacing: 0.2vw"> 07</span>
<span style="color: #43FC36;letter-spacing: 0.2vw"> {{ form.text2 }}</span>
<span style="color: #fff;letter-spacing: 0.2vw"></span>
</div>
<div class="text1" style="top: 11.8%;left: 33.8%;letter-spacing: 0.5vw">
<span>完成率:</span>
<span style="color: #43FC35;letter-spacing: 0.2vw"> 90</span>
<span style="color: #43FC35;letter-spacing: 0.2vw"> {{ form.text3 }}</span>
<span style="color: #fff;letter-spacing: 0.2vw">%</span>
</div>
<div class="text1" style="top: 11.8%;left: 48.2%;letter-spacing: 0.3vw">
<span>停机工单:</span>
<span style="color: #EF0506;letter-spacing: 0.2vw"> 00</span>
<span style="color: #EF0506;letter-spacing: 0.2vw"> {{ form.text4 }}</span>
<span style="color: #fff;letter-spacing: 0.2vw"></span>
</div>
<div class="text1" style="top: 11.8%;left: 62.9%;letter-spacing: 0.1vw">
<span>平均响应时间:</span>
<span style="color: #ECB808;letter-spacing: 0.2vw"> 123.45</span>
<span style="color: #ECB808;letter-spacing: 0.2vw"> {{ form.text5 }}</span>
<span style="color: #fff;letter-spacing: 0.2vw">min</span>
</div>
<div class="text1" style="top: 11.8%;left: 84%;letter-spacing: 0.1vw">
<span>平均维修时间:</span>
<span style="color: #E10806;letter-spacing: 0.2vw"> 0.25</span>
<span style="color: #E10806;letter-spacing: 0.2vw"> {{ form.text6 }}</span>
<span style="color: #fff;letter-spacing: 0.2vw">H</span>
</div>
<div class="text2" style="top: 19.7%;left: 11%;">设备保养执行情况</div>
@ -41,19 +41,25 @@
<div class="text3" style="top: 42.5%;left: 18.8%;">待保养</div>
<div class="text3" style="top: 42.5%;left: 24.6%;">保养中</div>
<div class="text3" style="top: 42.5%;left: 30.3%;">待验证</div>
<div class="text4" style="top: 34.3%;left: 20.9%;font-size: 1vw">3</div>
<div class="text4" style="top: 34.3%;left: 27.5%;font-size: 1vw">2</div>
<div class="text4" style="top: 45.6%;left: 18.8%;">0% / <span style="font-size: 0.6vw">0</span></div>
<div class="text4" style="top: 45.6%;left: 24.6%;">0% / <span style="font-size: 0.6vw">0</span></div>
<div class="text4" style="top: 45.6%;left: 30.3%;">33.3% / <span style="font-size: 0.6vw">1</span></div>
<div class="text4" style="top: 34.3%;left: 20.9%;font-size: 1vw">{{ form.text7 }}</div>
<div class="text4" style="top: 34.3%;left: 27.5%;font-size: 1vw">{{ form.text8 }}</div>
<div class="text4" style="top: 45.6%;left: 18.8%;">{{ form.text9 }}% / <span style="font-size: 0.6vw">{{
form.text10
}}</span></div>
<div class="text4" style="top: 45.6%;left: 24.6%;">{{ form.text11 }}% / <span
style="font-size: 0.6vw">{{ form.text12 }}</span></div>
<div class="text4" style="top: 45.6%;left: 30.3%;">{{ form.text13 }}% / <span
style="font-size: 0.6vw">{{ form.text14 }}</span></div>
<div class="chart1">
<div class="title"><span style="font-size: 1.5vw;font-weight: 800">66.6</span>%</div>
<div class="title"><span style="font-size: 1.5vw;font-weight: 800">{{ form.text15 }}</span>%</div>
<div class="subTitle">完成率</div>
<Chart ref="chart1"></Chart>
</div>
<div class="chart2">
<div class="deviceNum">应检设备<span style="color: #56BDFF;font-weight: 800;margin-left: 1vw">20</span></div>
<div class="title"><span style="font-size: 1.5vw;font-weight: 800">68</span>%</div>
<div class="deviceNum">应检设备<span style="color: #56BDFF;font-weight: 800;margin-left: 1vw">{{
form.text16
}}</span></div>
<div class="title"><span style="font-size: 1.5vw;font-weight: 800">{{ form.text17 }}</span>%</div>
<div class="subTitle">完成率</div>
<Chart ref="chart2"></Chart>
</div>
@ -70,21 +76,180 @@
</div>
<div class="repairTimes">
<div class="expendImg" v-if="toggle"></div>
<div class="item" v-for="i in 5" v-else>
<div class="num">{{ i }}</div>
<div class="deviceName">SC-228NE</div>
<div class="item" v-for="(i,k) in form.chart2" v-else>
<div class="num">{{ k + 1 }}</div>
<div class="deviceName">{{ i.value1 }}</div>
<div class="schedule">
<div class="progressBar" :style="{width: 100 - ((i-1) * 10) + '%'}"></div>
<div class="progressBar" :style="{width: i.value2 + '%'}"></div>
</div>
<div class="times">{{ 10 - i + 1 }}</div>
<div class="times">{{ i.value3 }}</div>
</div>
</div>
<div class="config">
<el-button class="btn" @click="configDialogVisible = true">配置</el-button>
</div>
<el-dialog
v-if="isData"
title="提示"
:visible.sync="configDialogVisible"
width="70%">
<el-form :inline="true" :model="form" label-width="120px">
<el-form-item label="工单总数">
<el-input v-model="form.text1" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="已完成">
<el-input v-model="form.text2" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="完成率">
<el-input v-model="form.text3" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="停机工单">
<el-input v-model="form.text4" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="平均响应时间">
<el-input v-model="form.text5" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="平均维修时间">
<el-input v-model="form.text6" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="计划保养数量">
<el-input v-model="form.text7" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="已保养数量">
<el-input v-model="form.text8" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="待保养比例">
<el-input v-model="form.text9" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="待保养数量">
<el-input v-model="form.text10" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="保养中比例">
<el-input v-model="form.text11" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="保养中数量">
<el-input v-model="form.text12" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="待验证比例">
<el-input v-model="form.text13" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="待验证数量">
<el-input v-model="form.text14" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="设备保养完成率">
<el-input @change="chartInit" v-model="form.text15" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="应检设备">
<el-input v-model="form.text16" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="设备巡检完成率">
<el-input v-model="form.text17" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="实验设备数量">
<el-input-number @change="chartInit" :controls="false" v-model="form.value1"
autocomplete="off"></el-input-number>
</el-form-item>
<el-form-item label="未检设备数量">
<el-input-number @change="chartInit" :controls="false" v-model="form.value2"
autocomplete="off"></el-input-number>
</el-form-item>
<el-form-item label="正常设备数量">
<el-input-number @change="chartInit" :controls="false" v-model="form.value3"
autocomplete="off"></el-input-number>
</el-form-item>
<el-form-item label="异常设备数量">
<el-input-number @change="chartInit" :controls="false" v-model="form.value4"
autocomplete="off"></el-input-number>
</el-form-item>
<el-form-item label="维护故障占比">
<el-input-number @change="chartInit" :controls="false" v-model="form.value5"
autocomplete="off"></el-input-number>
</el-form-item>
<el-form-item label="运行故障占比">
<el-input-number @change="chartInit" :controls="false" v-model="form.value6"
autocomplete="off"></el-input-number>
</el-form-item>
<el-form-item label="自然故障占比">
<el-input-number @change="chartInit" :controls="false" v-model="form.value7"
autocomplete="off"></el-input-number>
</el-form-item>
<el-form-item label="故障数量" class="fullLine">
<el-table
:data="form.chart1"
style="width: 100%">
<el-table-column
prop="date"
label="日期">
<template slot-scope="scope">
<el-input @change="chartInit" v-model="form.chart1[scope.$index].value1" autocomplete="off"></el-input>
</template>
</el-table-column>
<el-table-column
prop="name"
label="数量"
>
<template slot-scope="scope">
<el-input @change="chartInit" v-model="form.chart1[scope.$index].value2" autocomplete="off"></el-input>
</template>
</el-table-column>
</el-table>
<div>
<i class="el-icon-circle-plus-outline" @click="chartInit(); form.chart1.push({
value1: '1',
value2: 1})" style="font-size: 24px"></i>
</div>
</el-form-item>
<el-form-item label="备件消耗费用" class="fullLine">
<el-table
:data="form.chart2"
style="width: 100%">
<el-table-column
prop="date"
label="设备名称">
<template slot-scope="scope">
<el-input @change="chartInit" v-model="form.chart2[scope.$index].value1" autocomplete="off"></el-input>
</template>
</el-table-column>
<el-table-column
prop="name"
label="百分比"
>
<template slot-scope="scope">
<el-input @change="chartInit" v-model="form.chart2[scope.$index].value2" autocomplete="off"></el-input>
</template>
</el-table-column>
<el-table-column
prop="name"
label="次数"
>
<template slot-scope="scope">
<el-input @change="chartInit" v-model="form.chart2[scope.$index].value3" autocomplete="off"></el-input>
</template>
</el-table-column>
</el-table>
<div>
<i class="el-icon-circle-plus-outline" @click="chartInit(); form.chart2.push({
value1: '1',
value2: 1,
value3: 1,})" style="font-size: 24px"></i>
</div>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="configDialogVisible = false"> </el-button>
<el-button type="primary" @click="save"> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import Chart from "@/components/board/Chart.vue";
import * as echarts from "echarts";
import {getSimulateData} from "@/api/board/getData";
import {updateCustomData} from "@/api/base/customData";
import {Message} from "element-ui";
const vw = (document.documentElement.clientWidth || document.body.clientWidth) / 100
export default {
@ -94,13 +259,67 @@ export default {
name: "Liner",
data() {
return {
toggle: false
// form: {
// text1: '08',
// text2: '07',
// text3: '90',
// text4: '00',
// text5: '123.45',
// text6: '0.25',
// text7: '3',
// text8: '2',
// text9: '0',
// text10: '0',
// text11: '0',
// text12: '0',
// text13: '33.33',
// text14: '1',
// text15: '66.6',
// text16: '20',
// text17: '66',
// value1: 37,
// value2: 24,
// value3: 22,
// value4: 10,
// value5: 36,
// value6: 30,
// value7: 34,
// chart1: Array(20).fill(0).map((i, k) => {
// return {
// value1: '' + k,
// value2: Math.ceil(Math.floor(Math.random() * 5)),
// }
// }),
// chart2: Array(5).fill(0).map((i, k) => {
// return {
// value1: 'SC-228NE',
// value2: Math.ceil(Math.floor(Math.random() * 100)),
// value3: Math.ceil(Math.floor(Math.random() * 10)),
// }
// }),
// },
form: {},
configDialogVisible: false,
toggle: false,
isData: false,
row: {}
}
},
mounted() {
getSimulateData({customCode: 'board-2' || '', customType: 1}).then(val => {
this.row = val.rows[0]
this.form = JSON.parse(val.rows[0].customData);
this.isData = true
this.$nextTick(() => {
this.chartInit()
})
})
},
methods: {
chartInit() {
let data = [
{
value: 37,
value: this.form.value1,
name: '实验设备',
index: 0,
itemStyle: {
@ -110,7 +329,7 @@ export default {
},
},
{
value: 24,
value: this.form.value2,
name: '未检设备',
index: 1,
itemStyle: {
@ -120,7 +339,7 @@ export default {
},
},
{
value: 22,
value: this.form.value3,
name: '正常设备',
index: 2,
itemStyle: {
@ -130,7 +349,7 @@ export default {
},
},
{
value: 10,
value: this.form.value4,
index: 3,
name: '异常设备',
itemStyle: {
@ -142,7 +361,7 @@ export default {
]
let chartData = [
{
value: 36,
value: this.form.value5,
name: '维护故障',
index: 0,
itemStyle: {
@ -152,7 +371,7 @@ export default {
},
},
{
value: 30,
value: this.form.value6,
name: '运行故障',
index: 1,
itemStyle: {
@ -162,7 +381,7 @@ export default {
},
},
{
value: 34,
value: this.form.value7,
name: '自然故障',
index: 2,
itemStyle: {
@ -187,14 +406,14 @@ export default {
},
data: [
{
value: 66,
value: Math.min(parseFloat(this.form.text15), 100),
name: '不合格数',
itemStyle: {
color: '#00AFFF'
},
},
{
value: 34,
value: Math.max((100 - parseFloat(this.form.text15)), 0),
name: '合格数',
itemStyle: {
color: '#0000'
@ -331,9 +550,10 @@ export default {
},
]
})
this.$refs.chart4.setData({
xAxis: {
data: Array(30).fill(0).map((item, index) => index + 1),
data: this.form.chart1.map(e => e.value1),
boundaryGap: false,
axisLine: {
lineStyle: {
@ -409,30 +629,21 @@ export default {
label: {
show: false,
},
data: Array(30).fill(0).map((item, index) => {
let num = Math.floor(Math.random() * 15) - 9
return Math.max(num, 0)
})
data: this.form.chart1.map(e => e.value2),
},
]
})
},
methods: {},
computed: {
scrollTableData() {
return Array(222).fill(0).map(i => {
return {
value1: Math.ceil(Math.floor(Math.random() * 100)) + 'WD',
value2: Math.ceil(Math.floor(Math.random() * 100)),
value3: Math.ceil(Math.floor(Math.random() * 100)),
value4: Math.ceil(Math.floor(Math.random() * 100)),
value5: Math.ceil(Math.floor(Math.random() * 100)) + '%',
}
save() {
updateCustomData({
...this.row,
customData: JSON.stringify(this.form)
}).then(res => {
Message({message: '保存成功', type: 'success'})
this.configDialogVisible = false
})
}
},
beforeDestroy() {
}
};
</script>
<style scoped lang="less">
@ -670,4 +881,31 @@ export default {
}
}
.config {
position: absolute;
top: 3%;
right: 3%;
width: 10%;
height: 5vw;
.btn {
display: none;
}
&:hover {
.btn {
display: inline-block;
}
}
}
.fullLine {
width: 100%;
/deep/ .el-form-item__content {
width: calc(100% - 120px);
}
}
</style>
Loading…
Cancel
Save