Compare commits
10 Commits
960751a264
...
8929e53724
Author | SHA1 | Date | |
---|---|---|---|
8929e53724 | |||
b625ef0118 | |||
|
8004c85c32 | ||
|
9041428003 | ||
39d06cd902 | |||
d79ba71bd7 | |||
0225be1c94 | |||
265024d989 | |||
|
8dbc1d512d | ||
|
8af06c6c42 |
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* @Author: Do not edit
|
* @Author: Do not edit
|
||||||
* @Date: 2023-11-08 15:56:52
|
* @Date: 2023-11-08 15:56:52
|
||||||
* @LastEditTime: 2023-11-21 10:50:55
|
* @LastEditTime: 2023-11-23 19:10:07
|
||||||
* @LastEditors: DY
|
* @LastEditors: DY
|
||||||
* @Description:
|
* @Description:
|
||||||
*/
|
*/
|
||||||
@ -32,3 +32,13 @@ export function exportMaintainMonitorExcel(query) {
|
|||||||
responseType: 'blob'
|
responseType: 'blob'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 导出设备保养记录
|
||||||
|
export function exportMaintainLogExcel(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/equipment-maintain-log/export-excel',
|
||||||
|
method: 'get',
|
||||||
|
params: query,
|
||||||
|
responseType: 'blob'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* @Author: Do not edit
|
* @Author: Do not edit
|
||||||
* @Date: 2023-11-10 16:09:33
|
* @Date: 2023-11-10 16:09:33
|
||||||
* @LastEditTime: 2023-11-16 18:57:08
|
* @LastEditTime: 2023-11-23 20:29:28
|
||||||
* @LastEditors: DY
|
* @LastEditors: DY
|
||||||
* @Description:
|
* @Description:
|
||||||
*/
|
*/
|
||||||
@ -31,3 +31,13 @@ export function deleteRepair(id) {
|
|||||||
method: 'delete'
|
method: 'delete'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 导出设备维修
|
||||||
|
export function exportRepairLogExcel(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/equipment-repair-log/export-excel',
|
||||||
|
method: 'get',
|
||||||
|
params: query,
|
||||||
|
responseType: 'blob'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
@ -33,6 +33,7 @@ export default {
|
|||||||
addUrl: '',
|
addUrl: '',
|
||||||
pageUrl: '',
|
pageUrl: '',
|
||||||
infoUrl: '',
|
infoUrl: '',
|
||||||
|
deleteUrl: '',
|
||||||
basePath: '',
|
basePath: '',
|
||||||
form: {}
|
form: {}
|
||||||
};
|
};
|
||||||
@ -60,7 +61,7 @@ export default {
|
|||||||
return this.$axios({
|
return this.$axios({
|
||||||
url,
|
url,
|
||||||
method,
|
method,
|
||||||
params: method === 'get' ? payload : null,
|
params: (method === 'get' || method === 'delete') ? payload : null,
|
||||||
data: method !== 'get' ? payload : null,
|
data: method !== 'get' ? payload : null,
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@ -77,6 +78,7 @@ export default {
|
|||||||
return this.http(this.infoUrl == '' ? this.infoPath : this.infoUrl, 'get', payload);
|
return this.http(this.infoUrl == '' ? this.infoPath : this.infoUrl, 'get', payload);
|
||||||
},
|
},
|
||||||
del(payload) {
|
del(payload) {
|
||||||
|
debugger;
|
||||||
return this.http(this.deleteUrl == '' ? this.deletePath : this.deleteUrl, 'delete', payload);
|
return this.http(this.deleteUrl == '' ? this.deletePath : this.deleteUrl, 'delete', payload);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -163,7 +163,7 @@ input, textarea{
|
|||||||
}
|
}
|
||||||
|
|
||||||
::-webkit-scrollbar-thumb {
|
::-webkit-scrollbar-thumb {
|
||||||
background-color: rgba(144,147,153,.5);
|
background-color: #EDEDED;
|
||||||
background-clip: padding-box;
|
background-clip: padding-box;
|
||||||
min-height: 28px;
|
min-height: 28px;
|
||||||
-webkit-border-radius: 2em;
|
-webkit-border-radius: 2em;
|
||||||
@ -174,7 +174,7 @@ input, textarea{
|
|||||||
}
|
}
|
||||||
|
|
||||||
::-webkit-scrollbar-thumb:hover {
|
::-webkit-scrollbar-thumb:hover {
|
||||||
background-color: rgba(144,147,153,.3);
|
background-color: #D9D9D9;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 抽屉head区域---start
|
// 抽屉head区域---start
|
||||||
|
@ -288,10 +288,10 @@ export default {
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
input: true,
|
input: true,
|
||||||
label: '产品加工时间(s)',
|
label: '单件产品加工时间(s)',
|
||||||
prop: 'processingTime',
|
prop: 'processingTime',
|
||||||
rules: [
|
rules: [
|
||||||
{ required: true, message: '产品加工时间不能为空', trigger: 'blur' },
|
{ required: true, message: '单件产品加工时间不能为空', trigger: 'blur' },
|
||||||
{
|
{
|
||||||
type: 'number',
|
type: 'number',
|
||||||
message: '请输入正确的数字值',
|
message: '请输入正确的数字值',
|
||||||
@ -319,9 +319,16 @@ export default {
|
|||||||
prop: 'description',
|
prop: 'description',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
upload: true,
|
||||||
|
label: '上传资料',
|
||||||
|
prop: 'files',
|
||||||
|
},
|
||||||
|
],
|
||||||
[
|
[
|
||||||
{ input: true, label: '备注', prop: 'remark' }
|
{ input: true, label: '备注', prop: 'remark' }
|
||||||
]
|
],
|
||||||
// [
|
// [
|
||||||
// {
|
// {
|
||||||
// assetUpload: true,
|
// assetUpload: true,
|
||||||
|
@ -189,6 +189,10 @@ export default {
|
|||||||
],
|
],
|
||||||
label: '产线统计类型',
|
label: '产线统计类型',
|
||||||
prop: 'lineDataType',
|
prop: 'lineDataType',
|
||||||
|
bind: {
|
||||||
|
clearable: true, filterable: true
|
||||||
|
},
|
||||||
|
rules: [{ required: true, message: '产线统计类型不能为空', trigger: 'change' }],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
select: true,
|
select: true,
|
||||||
@ -199,6 +203,10 @@ export default {
|
|||||||
],
|
],
|
||||||
label: '工段统计类型',
|
label: '工段统计类型',
|
||||||
prop: 'sectionDataType',
|
prop: 'sectionDataType',
|
||||||
|
bind: {
|
||||||
|
clearable: true, filterable: true
|
||||||
|
},
|
||||||
|
rules: [{ required: true, message: '工段统计类型不能为空', trigger: 'change' }],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* @Author: zwq
|
* @Author: zwq
|
||||||
* @Date: 2021-11-18 14:16:25
|
* @Date: 2021-11-18 14:16:25
|
||||||
* @LastEditors: DY
|
* @LastEditors: DY
|
||||||
* @LastEditTime: 2023-11-22 09:47:53
|
* @LastEditTime: 2023-11-23 18:45:15
|
||||||
* @Description:
|
* @Description:
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
@ -49,7 +49,9 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="8">负责人:{{ dataForm.workers }}</el-col>
|
<el-col :span="8">负责人:{{ dataForm.workers }}</el-col>
|
||||||
<el-col :span="8">关联产线:{{ dataForm.productLineNames }}</el-col>
|
<el-col :span="8">关联产线:
|
||||||
|
<span v-for="(item, index) in dataForm.productLineNames" :key="index" style="margin-right: 10px">{{ item }}</span>
|
||||||
|
</el-col>
|
||||||
<el-col :span="8">物料计算方式:{{ dataForm.materialMethod === 1 ? '产品基础' : dataForm.materialMethod === 2 ? '工艺扩展' : '' }}</el-col>
|
<el-col :span="8">物料计算方式:{{ dataForm.materialMethod === 1 ? '产品基础' : dataForm.materialMethod === 2 ? '工艺扩展' : '' }}</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
|
@ -39,6 +39,7 @@ import {
|
|||||||
deleteMaterial
|
deleteMaterial
|
||||||
} from '@/api/base/material';
|
} from '@/api/base/material';
|
||||||
import { listData } from "@/api/system/dict/data";
|
import { listData } from "@/api/system/dict/data";
|
||||||
|
import { publicFormatter } from '@/utils/dict';
|
||||||
|
|
||||||
const tableProps = [
|
const tableProps = [
|
||||||
{
|
{
|
||||||
@ -59,8 +60,9 @@ const tableProps = [
|
|||||||
label: '英文名称'
|
label: '英文名称'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'materialType',
|
prop: 'type',
|
||||||
label: '物料类型'
|
label: '物料类型',
|
||||||
|
filter: publicFormatter('material_type')
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'supplierName',
|
prop: 'supplierName',
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* @Author: zwq
|
* @Author: zwq
|
||||||
* @Date: 2021-11-18 14:16:25
|
* @Date: 2021-11-18 14:16:25
|
||||||
* @LastEditors: DY
|
* @LastEditors: DY
|
||||||
* @LastEditTime: 2023-11-22 11:09:44
|
* @LastEditTime: 2023-11-23 15:00:00
|
||||||
* @Description:
|
* @Description:
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
@ -311,6 +311,9 @@ export default {
|
|||||||
row.mUnit = u.label
|
row.mUnit = u.label
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
} else {
|
||||||
|
row.unit = null
|
||||||
|
row.mUnit = ''
|
||||||
}
|
}
|
||||||
// row.materialCode = tempList[0].code
|
// row.materialCode = tempList[0].code
|
||||||
// row.unit = tempList[0].unit
|
// row.unit = tempList[0].unit
|
||||||
|
@ -215,12 +215,33 @@ export default {
|
|||||||
this.$refs.addOrUpdate.init(val.data.id);
|
this.$refs.addOrUpdate.init(val.data.id);
|
||||||
});
|
});
|
||||||
} else if (val.type === "delete") {
|
} else if (val.type === "delete") {
|
||||||
this.deleteHandle(val.data.id, val.data.materialName, val.data._pageIndex)
|
this.deleteHandle(val.data.id, val.data.materialName)
|
||||||
} else if (val.type === "change") {
|
} else if (val.type === "change") {
|
||||||
this.changeStatus(val.data.id)
|
this.changeStatus(val.data.id)
|
||||||
} else {
|
} else {
|
||||||
this.otherMethods(val)
|
this.otherMethods(val)
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
// 删除
|
||||||
|
deleteHandle(id, name) {
|
||||||
|
this.$confirm(`是否确认删除物料名称为${name}的数据项?`, "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning",
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
this.urlOptions.deleteURL(id).then(({ data }) => {
|
||||||
|
this.$message({
|
||||||
|
message: "操作成功",
|
||||||
|
type: "success",
|
||||||
|
duration: 1500,
|
||||||
|
onClose: () => {
|
||||||
|
this.getDataList();
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(() => { });
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -6,17 +6,27 @@
|
|||||||
* @Description:
|
* @Description:
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div class="balace-chart">
|
||||||
<div style="margin: 20px">
|
<div style="margin: 20px">
|
||||||
<el-button v-for="(item, index) in buttonList" :key="index" :class="[item.actived ? 'activeButton': 'normalButton']" @click="changeChart(index)">{{ item.name }}</el-button>
|
<el-button
|
||||||
|
v-for="(item, index) in buttonList"
|
||||||
|
:key="index"
|
||||||
|
:class="[item.actived ? 'activeButton' : '']"
|
||||||
|
@click="changeChart(index)">
|
||||||
|
{{ item.name }}
|
||||||
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
<div id="chart" ref="chartDiv" :class="className" :style="{height:height,width:width}" />
|
<div
|
||||||
|
id="chart"
|
||||||
|
ref="chartDiv"
|
||||||
|
:class="className"
|
||||||
|
:style="{ height: height, width: width }" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import * as echarts from 'echarts'
|
import * as echarts from 'echarts';
|
||||||
require('echarts/theme/macarons') // echarts theme
|
require('echarts/theme/macarons'); // echarts theme
|
||||||
// import resize from './mixins/resize'
|
// import resize from './mixins/resize'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@ -24,15 +34,15 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
className: {
|
className: {
|
||||||
type: String,
|
type: String,
|
||||||
default: 'chart'
|
default: 'chart',
|
||||||
},
|
},
|
||||||
width: {
|
width: {
|
||||||
type: String,
|
type: String,
|
||||||
default: '100%'
|
default: '100%',
|
||||||
},
|
},
|
||||||
height: {
|
height: {
|
||||||
type: String,
|
type: String,
|
||||||
default: '350px'
|
default: '350px',
|
||||||
},
|
},
|
||||||
// autoResize: {
|
// autoResize: {
|
||||||
// type: Boolean,
|
// type: Boolean,
|
||||||
@ -44,44 +54,47 @@ export default {
|
|||||||
chart: null,
|
chart: null,
|
||||||
dataArray: [],
|
dataArray: [],
|
||||||
xDatas: [],
|
xDatas: [],
|
||||||
buttonList: []
|
buttonList: [],
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
// this.initChart()
|
// this.initChart()
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.changeChart(0);
|
||||||
|
});
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
changeChart(index) {
|
changeChart(index) {
|
||||||
this.setOptions(this.xDatas, this.dataArray[index])
|
this.setOptions(this.xDatas, this.dataArray[index]);
|
||||||
this.buttonList.forEach((item, s) => {
|
this.buttonList.forEach((item, s) => {
|
||||||
if (index === s) {
|
if (index === s) {
|
||||||
// item.actived = true
|
// item.actived = true
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
// item.actived = true
|
// item.actived = true
|
||||||
this.$set(item, 'actived', true)
|
this.$set(item, 'actived', true);
|
||||||
})
|
});
|
||||||
} else {
|
} else {
|
||||||
// item.actived = false
|
// item.actived = false
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
// item.actived = false
|
// item.actived = false
|
||||||
this.$set(item, 'actived', false)
|
this.$set(item, 'actived', false);
|
||||||
})
|
});
|
||||||
// this.$set(item, 'actived', false)
|
// this.$set(item, 'actived', false)
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
console.log('看一下数22222据', this.dataArray)
|
console.log('看一下数22222据', this.dataArray);
|
||||||
},
|
},
|
||||||
initChart(xData, yData, lineName) {
|
initChart(xData, yData, lineName) {
|
||||||
this.dataArray = yData
|
this.dataArray = yData;
|
||||||
this.buttonList = this.dataArray.map((item, index) => {
|
this.buttonList = this.dataArray.map((item, index) => {
|
||||||
return {
|
return {
|
||||||
'name': item.name,
|
name: item.name,
|
||||||
'actived': index === 0 ? true : false
|
actived: index === 0 ? true : false,
|
||||||
}
|
};
|
||||||
})
|
});
|
||||||
console.log('看一下数据', this.dataArray)
|
console.log('看一下数据', this.dataArray);
|
||||||
this.xDatas = xData
|
this.xDatas = xData;
|
||||||
this.chart = echarts.init(this.$refs.chartDiv, 'macarons')
|
this.chart = echarts.init(this.$refs.chartDiv, 'macarons');
|
||||||
// this.chart = echarts.init(document.getElementById('chart'), 'macarons')
|
// this.chart = echarts.init(document.getElementById('chart'), 'macarons')
|
||||||
// this.setOptions(xData, yData[0], lineName)
|
// this.setOptions(xData, yData[0], lineName)
|
||||||
},
|
},
|
||||||
@ -97,16 +110,16 @@ export default {
|
|||||||
this.chart.setOption({
|
this.chart.setOption({
|
||||||
xAxis: {
|
xAxis: {
|
||||||
type: 'category',
|
type: 'category',
|
||||||
data: xData
|
data: xData,
|
||||||
},
|
},
|
||||||
tooltip: {
|
tooltip: {
|
||||||
trigger: 'axis'
|
trigger: 'axis',
|
||||||
},
|
},
|
||||||
legend: {
|
legend: {
|
||||||
data:lineName
|
data: lineName,
|
||||||
},
|
},
|
||||||
yAxis: {
|
yAxis: {
|
||||||
type: 'value'
|
type: 'value',
|
||||||
},
|
},
|
||||||
series: [
|
series: [
|
||||||
{
|
{
|
||||||
@ -118,19 +131,25 @@ export default {
|
|||||||
name: '产线CT',
|
name: '产线CT',
|
||||||
data: dataList.plData,
|
data: dataList.plData,
|
||||||
type: 'line',
|
type: 'line',
|
||||||
}
|
},
|
||||||
]
|
],
|
||||||
})
|
});
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.activeButton {
|
.balace-chart >>> .el-button {
|
||||||
background-color: rgb(93,159,255);
|
background: #e3e3e3;
|
||||||
|
color: #333;
|
||||||
|
transition: all 0.3s;
|
||||||
|
border: none;
|
||||||
|
|
||||||
|
&.activeButton,
|
||||||
|
&:hover {
|
||||||
|
background: #0b58ff;
|
||||||
|
color: #fff;
|
||||||
}
|
}
|
||||||
.normalButton {
|
|
||||||
background-color: none;
|
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<el-drawer
|
<el-drawer
|
||||||
title="发货进度"
|
title="发货进度"
|
||||||
:visible.sync="centervisible"
|
:visible.sync="centervisible"
|
||||||
size="80%"
|
size="50%"
|
||||||
class="deliveryLogDetail"
|
class="deliveryLogDetail"
|
||||||
@close='closeA'
|
@close='closeA'
|
||||||
:show-close='false'>
|
:show-close='false'>
|
||||||
@ -47,7 +47,7 @@
|
|||||||
<method-btn
|
<method-btn
|
||||||
v-if="tableBtn.length"
|
v-if="tableBtn.length"
|
||||||
slot="handleBtn"
|
slot="handleBtn"
|
||||||
:width="150"
|
:width="80"
|
||||||
label="操作"
|
label="操作"
|
||||||
:method-list="tableBtn"
|
:method-list="tableBtn"
|
||||||
@clickBtn="viewDetDetail"
|
@clickBtn="viewDetDetail"
|
||||||
@ -65,7 +65,7 @@
|
|||||||
<div v-if="activeName === 'barChart'">
|
<div v-if="activeName === 'barChart'">
|
||||||
<div
|
<div
|
||||||
id="logDetPieBar"
|
id="logDetPieBar"
|
||||||
style="width: 100%"
|
style="width: 60%"
|
||||||
:style="{ height: chartHeight + 'px' }"
|
:style="{ height: chartHeight + 'px' }"
|
||||||
></div>
|
></div>
|
||||||
</div>
|
</div>
|
||||||
@ -75,7 +75,7 @@
|
|||||||
<!-- 详情抽屉 -->
|
<!-- 详情抽屉 -->
|
||||||
<el-drawer
|
<el-drawer
|
||||||
title="发货详情"
|
title="发货详情"
|
||||||
size="60%"
|
size="50%"
|
||||||
:append-to-body="true"
|
:append-to-body="true"
|
||||||
:visible.sync="innerDrawer"
|
:visible.sync="innerDrawer"
|
||||||
@close='closeB'
|
@close='closeB'
|
||||||
@ -141,7 +141,8 @@ const tableProps = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'rate',
|
prop: 'rate',
|
||||||
label: '发货比列(%)'
|
label: '发货比列(%)',
|
||||||
|
width: 110
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'principalCost',
|
prop: 'principalCost',
|
||||||
@ -173,7 +174,8 @@ const tableProps2 = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'packagingSize',
|
prop: 'packagingSize',
|
||||||
label: '装箱规格(片/箱)'
|
label: '装箱规格(片/箱)',
|
||||||
|
minWidth: 140
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'packagingNum',
|
prop: 'packagingNum',
|
||||||
@ -210,8 +212,8 @@ export default {
|
|||||||
tableBtn: [
|
tableBtn: [
|
||||||
this.$auth.hasPermi('base:group-team:update')
|
this.$auth.hasPermi('base:group-team:update')
|
||||||
? {
|
? {
|
||||||
type: 'detDetail',
|
type: 'detail',
|
||||||
btnName: '查看发货详情'
|
btnName: '详情'
|
||||||
}
|
}
|
||||||
: undefined
|
: undefined
|
||||||
].filter((v) => v),
|
].filter((v) => v),
|
||||||
@ -230,7 +232,7 @@ export default {
|
|||||||
// 图
|
// 图
|
||||||
chartDom: '',
|
chartDom: '',
|
||||||
chart: '',
|
chart: '',
|
||||||
chartHeight: this.tableHeight(300)
|
chartHeight: this.tableHeight(300)*0.6
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// watch: {
|
// watch: {
|
||||||
@ -270,6 +272,8 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
getBar() {
|
getBar() {
|
||||||
|
let color = ['#7164FF','#288AFF','#63BDFF','#8EF0AB','#FFCE6A']
|
||||||
|
let colorList = []
|
||||||
if (
|
if (
|
||||||
this.chart !== null &&
|
this.chart !== null &&
|
||||||
this.chart !== '' &&
|
this.chart !== '' &&
|
||||||
@ -280,64 +284,90 @@ export default {
|
|||||||
this.chartDom = document.getElementById('logDetPieBar')
|
this.chartDom = document.getElementById('logDetPieBar')
|
||||||
this.chart = echarts.init(this.chartDom)
|
this.chart = echarts.init(this.chartDom)
|
||||||
let seriesData = []
|
let seriesData = []
|
||||||
let sumData = 0
|
if (this.tableData.length > 0) {
|
||||||
this.tableData && this.tableData.map(item =>{
|
for (let i = 0; i < this.tableData.length; i++) {
|
||||||
let obj = {}
|
let obj = {}
|
||||||
obj.value = item.rate
|
obj.value = this.tableData[i].num
|
||||||
obj.name = item.name
|
obj.name = this.tableData[i].name
|
||||||
seriesData.push(obj)
|
seriesData.push(obj)
|
||||||
sumData+=item.rate
|
if (i < 5) {
|
||||||
})
|
colorList.push(color[i])
|
||||||
if (sumData < 100) {
|
} else {
|
||||||
|
colorList.push(color[i%5])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (this.orderMsg.num < this.orderMsg.orderNum) {
|
||||||
let obj = {}
|
let obj = {}
|
||||||
obj.value = 100 - sumData
|
obj.value = this.orderMsg.orderNum - this.orderMsg.num
|
||||||
obj.name = "未发货"
|
obj.name = "未发货"
|
||||||
seriesData.push(obj)
|
seriesData.push(obj)
|
||||||
|
colorList.push('#F5F5F5')
|
||||||
|
}else {
|
||||||
|
let obj = {}
|
||||||
|
obj.value = 0
|
||||||
|
obj.name = "未发货"
|
||||||
|
seriesData.push(obj)
|
||||||
|
colorList.push('#F5F5F5')
|
||||||
}
|
}
|
||||||
var option = {
|
var option = {
|
||||||
color: ['#B0EB42', '#FF9747', '#FF6860', '#7164FF', '#288AFF', '#63BDFF', '#73DE93', '#FFCE6A'],
|
color: colorList,
|
||||||
tooltip: {
|
|
||||||
trigger: 'item',
|
|
||||||
formatter: function(params) {
|
|
||||||
let str = `<span style="display:inline-block;width:8px;height:8px;margin: 0 8px 0 -3px;border-radius:2px;background-color:${params.color};"></span>`
|
|
||||||
return `<span>
|
|
||||||
<span style="color:rgba(0,0,0,0.85);">${str}${params.name}</span>
|
|
||||||
<span style="display:inline-block;margin-left:10px;color:rgba(0,0,0,0.45);">${params.percent}</span>
|
|
||||||
</span>`
|
|
||||||
}
|
|
||||||
},
|
|
||||||
legend: {
|
legend: {
|
||||||
type: 'scroll',
|
bottom: '5%',
|
||||||
orient: 'vertical',
|
left: 'center',
|
||||||
right: '10%',
|
itemWidth: 8,
|
||||||
top: 20,
|
itemHeight: 8
|
||||||
bottom: 20,
|
|
||||||
icon: 'rect',
|
|
||||||
itemHeight: 8,
|
|
||||||
itemWidth: 8
|
|
||||||
},
|
},
|
||||||
series: [
|
series: [
|
||||||
{
|
{
|
||||||
type: 'pie',
|
type: 'pie',
|
||||||
radius: ['60%', '80%'],
|
radius: ['40%', '55%'],
|
||||||
avoidLabelOverlap: false,
|
|
||||||
label: {
|
|
||||||
show: false,
|
|
||||||
position: 'center'
|
|
||||||
},
|
|
||||||
emphasis: {
|
emphasis: {
|
||||||
|
scale: false
|
||||||
|
},
|
||||||
label: {
|
label: {
|
||||||
show: true,
|
alignTo: 'edge',
|
||||||
fontSize: 40,
|
formatter: '{name|{b}}\n{value|{c}}',
|
||||||
fontWeight: 'bold'
|
minMargin: 5,
|
||||||
|
edgeDistance: 10,
|
||||||
|
lineHeight: 15,
|
||||||
|
rich: {
|
||||||
|
name: {
|
||||||
|
fontSize: 14,
|
||||||
|
color: 'rgba(0,0,0,0.65)'
|
||||||
},
|
},
|
||||||
scale: true ,
|
value: {
|
||||||
scaleSize: 20 ,
|
fontSize: 14,
|
||||||
},
|
color: 'rgba(0,0,0,0.65)'
|
||||||
labelLine: {
|
}
|
||||||
show: false
|
}
|
||||||
},
|
},
|
||||||
data: seriesData
|
data: seriesData
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'pie',
|
||||||
|
radius: ['40%', '40%'],
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
position: 'center',
|
||||||
|
color: '#000',
|
||||||
|
formatter: [
|
||||||
|
'{a|'+this.orderMsg.orderNum+'}',
|
||||||
|
'{b|总数}'
|
||||||
|
].join('\n\n'),
|
||||||
|
rich: {
|
||||||
|
a: {
|
||||||
|
fontSize: 26 +'px'
|
||||||
|
},
|
||||||
|
b: {
|
||||||
|
fontSize: 16 +'px'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
emphasis: {
|
||||||
|
scale: false
|
||||||
|
},
|
||||||
|
data: [100]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
@ -377,11 +407,13 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
<style scoped lang='scss'>
|
<style scoped lang='scss'>
|
||||||
.box1 {
|
.box1 {
|
||||||
height: 56px;
|
height: 76px;
|
||||||
|
border-bottom: 1px solid #E9E9E9;
|
||||||
|
margin: 0px 8px 20px 30px;
|
||||||
.box_col {
|
.box_col {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 20%;
|
width: 20%;
|
||||||
padding: 8px 8px 8px 40px;
|
padding: 8px 8px 8px 8px;
|
||||||
.blodTip {
|
.blodTip {
|
||||||
height: 16px;
|
height: 16px;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
@ -398,7 +430,7 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.box2 {
|
.box2 {
|
||||||
padding:32px 32px 30px 30px;
|
padding:0px 32px 30px 30px;
|
||||||
height: calc(100vh - 150px);
|
height: calc(100vh - 150px);
|
||||||
}
|
}
|
||||||
.boxTitle {
|
.boxTitle {
|
||||||
|
@ -28,51 +28,79 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import basicPage from '../../../core/mixins/basic-page';
|
import basicPage from '../../../core/mixins/basic-page';
|
||||||
import { parseTime } from '../../../core/mixins/code-filter';
|
import moment from 'moment';
|
||||||
import {
|
import {
|
||||||
getEqAnalysis,
|
getEqAnalysis,
|
||||||
exportEqAnalysisExcel
|
exportEqAnalysisExcel,
|
||||||
} from '@/api/equipment/analysis/statistics';
|
} from '@/api/equipment/analysis/statistics';
|
||||||
|
|
||||||
const tableProps = [
|
const tableProps = [
|
||||||
{
|
{
|
||||||
prop: 'recordTime',
|
prop: 'recordTime',
|
||||||
label: '时间段',
|
label: '时间段',
|
||||||
filter: parseTime
|
filter: (val) => {
|
||||||
|
if (val && val.length > 0) {
|
||||||
|
return (
|
||||||
|
moment(val[0]).format('YYYY-MM-DD HH:mm:ss') +
|
||||||
|
' ~ ' +
|
||||||
|
moment(val[1]).format('YYYY-MM-DD HH:mm:ss')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return '-';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'lineName',
|
prop: 'lineName',
|
||||||
label: '产线'
|
label: '产线',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'sectionName',
|
prop: 'sectionName',
|
||||||
label: '工段'
|
label: '工段',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'equipmentName',
|
prop: 'equipmentName',
|
||||||
label: '设备名称'
|
label: '设备名称',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'equipmentType',
|
prop: 'equipmentType',
|
||||||
label: '设备类型'
|
label: '设备类型',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'workTime',
|
prop: 'workTime',
|
||||||
label: '工作时间累积(h)'
|
label: '工作时间累积(h)',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'repairCount',
|
prop: 'repairCount',
|
||||||
label: '维修次数'
|
label: '维修次数',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'maintainCount',
|
prop: 'maintainCount',
|
||||||
label: '保养次数'
|
label: '保养次数',
|
||||||
}
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
mixins: [basicPage],
|
mixins: [basicPage],
|
||||||
data() {
|
data() {
|
||||||
|
const today = new Date();
|
||||||
|
|
||||||
|
const todayStart = new Date(
|
||||||
|
today.getFullYear(),
|
||||||
|
today.getMonth(),
|
||||||
|
today.getDate(),
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
);
|
||||||
|
const todayEnd = new Date(
|
||||||
|
today.getFullYear(),
|
||||||
|
today.getMonth(),
|
||||||
|
today.getDate(),
|
||||||
|
23,
|
||||||
|
59,
|
||||||
|
59
|
||||||
|
);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
urlOptions: {
|
urlOptions: {
|
||||||
getDataListURL: getEqAnalysis,
|
getDataListURL: getEqAnalysis,
|
||||||
@ -81,6 +109,15 @@ export default {
|
|||||||
tableProps,
|
tableProps,
|
||||||
tableBtn: [].filter((v) => v),
|
tableBtn: [].filter((v) => v),
|
||||||
tableData: [],
|
tableData: [],
|
||||||
|
listQuery: {
|
||||||
|
pageSize: 10,
|
||||||
|
pageNo: 1,
|
||||||
|
total: 1,
|
||||||
|
recordTime: [
|
||||||
|
moment(todayStart).format('YYYY-MM-DD HH:mm:ss'),
|
||||||
|
moment(todayEnd).format('YYYY-MM-DD HH:mm:ss'),
|
||||||
|
],
|
||||||
|
},
|
||||||
formConfig: [
|
formConfig: [
|
||||||
{
|
{
|
||||||
type: 'input',
|
type: 'input',
|
||||||
@ -101,7 +138,10 @@ export default {
|
|||||||
endPlaceholder: '结束日期',
|
endPlaceholder: '结束日期',
|
||||||
defaultTime: ['00:00:00', '23:59:59'],
|
defaultTime: ['00:00:00', '23:59:59'],
|
||||||
param: 'recordTime',
|
param: 'recordTime',
|
||||||
defaultSelect: [],
|
defaultSelect: [
|
||||||
|
moment(todayStart).format('YYYY-MM-DD HH:mm:ss'),
|
||||||
|
moment(todayEnd).format('YYYY-MM-DD HH:mm:ss'),
|
||||||
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'button',
|
type: 'button',
|
||||||
@ -113,21 +153,24 @@ export default {
|
|||||||
type: 'separate',
|
type: 'separate',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: this.$auth.hasPermi('equipment:analysis-statistics:export') ? 'button' : '',
|
type: this.$auth.hasPermi('equipment:analysis-statistics:export')
|
||||||
|
? 'button'
|
||||||
|
: '',
|
||||||
btnName: '导出',
|
btnName: '导出',
|
||||||
name: 'export',
|
name: 'export',
|
||||||
color: 'warning',
|
color: 'warning',
|
||||||
plain: true
|
plain: true,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
created() {},
|
created() {},
|
||||||
|
mounted() {},
|
||||||
methods: {
|
methods: {
|
||||||
// 获取数据列表
|
// 获取数据列表
|
||||||
getDataList() {
|
getDataList() {
|
||||||
this.dataListLoading = true;
|
this.dataListLoading = true;
|
||||||
this.urlOptions.getDataListURL(this.listQuery).then(response => {
|
this.urlOptions.getDataListURL(this.listQuery).then((response) => {
|
||||||
this.tableData = response.data.list;
|
this.tableData = response.data.list;
|
||||||
this.listQuery.total = response.data.total;
|
this.listQuery.total = response.data.total;
|
||||||
this.dataListLoading = false;
|
this.dataListLoading = false;
|
||||||
@ -139,7 +182,9 @@ export default {
|
|||||||
this.listQuery.pageNo = 1;
|
this.listQuery.pageNo = 1;
|
||||||
this.listQuery.pageSize = 10;
|
this.listQuery.pageSize = 10;
|
||||||
this.listQuery.equipmentName = val.name ? val.name : undefined;
|
this.listQuery.equipmentName = val.name ? val.name : undefined;
|
||||||
this.listQuery.recordTime = val.recordTime ? val.recordTime : undefined;
|
this.listQuery.recordTime = val.recordTime
|
||||||
|
? val.recordTime
|
||||||
|
: undefined;
|
||||||
this.getDataList();
|
this.getDataList();
|
||||||
break;
|
break;
|
||||||
case 'reset':
|
case 'reset':
|
||||||
@ -164,14 +209,18 @@ export default {
|
|||||||
let params = { ...this.listQuery };
|
let params = { ...this.listQuery };
|
||||||
params.pageNo = undefined;
|
params.pageNo = undefined;
|
||||||
params.pageSize = undefined;
|
params.pageSize = undefined;
|
||||||
this.$modal.confirm('是否确认导出所有数据项?').then(() => {
|
this.$modal
|
||||||
|
.confirm('是否确认导出所有数据项?')
|
||||||
|
.then(() => {
|
||||||
this.exportLoading = true;
|
this.exportLoading = true;
|
||||||
return this.urlOptions.exportURL(params);
|
return this.urlOptions.exportURL(params);
|
||||||
}).then(response => {
|
})
|
||||||
|
.then((response) => {
|
||||||
this.$download.excel(response, '设备统计分析.xls');
|
this.$download.excel(response, '设备统计分析.xls');
|
||||||
this.exportLoading = false;
|
this.exportLoading = false;
|
||||||
}).catch(() => { });
|
})
|
||||||
}
|
.catch(() => {});
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
@ -237,6 +237,7 @@ export default {
|
|||||||
label: '工厂',
|
label: '工厂',
|
||||||
placeholder: '请选择工厂',
|
placeholder: '请选择工厂',
|
||||||
param: 'factoryId',
|
param: 'factoryId',
|
||||||
|
filterable: true,
|
||||||
selectOptions: [],
|
selectOptions: [],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -244,6 +245,7 @@ export default {
|
|||||||
label: '产线',
|
label: '产线',
|
||||||
placeholder: '请选择产线',
|
placeholder: '请选择产线',
|
||||||
param: 'lineId',
|
param: 'lineId',
|
||||||
|
filterable: true,
|
||||||
selectOptions: [],
|
selectOptions: [],
|
||||||
},
|
},
|
||||||
// 选项切换
|
// 选项切换
|
||||||
|
@ -310,7 +310,7 @@ export default {
|
|||||||
this.$modal
|
this.$modal
|
||||||
.confirm('是否确认删除记录"' + row.name + '"?')
|
.confirm('是否确认删除记录"' + row.name + '"?')
|
||||||
.then(function () {
|
.then(function () {
|
||||||
return this.delete({ id });
|
return this.del({ id });
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
this.getList();
|
this.getList();
|
||||||
|
@ -198,26 +198,23 @@ export default {
|
|||||||
prop: 'createTime',
|
prop: 'createTime',
|
||||||
label: '添加时间',
|
label: '添加时间',
|
||||||
fixed: true,
|
fixed: true,
|
||||||
width: 180,
|
|
||||||
filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
|
filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
|
||||||
},
|
},
|
||||||
{ width: 240, prop: 'code', label: '报警编码' },
|
{ prop: 'code', label: '报警编码' },
|
||||||
{
|
{
|
||||||
width: 100,
|
|
||||||
prop: 'type',
|
prop: 'type',
|
||||||
label: '报警类型',
|
label: '报警类型',
|
||||||
filter: (val) =>
|
filter: (val) =>
|
||||||
val != null ? ['-', '字符型', '布尔型', '-'][val] : '-',
|
val != null ? ['-', '字符型', '布尔型', '-'][val] : '-',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
width: 90,
|
|
||||||
prop: 'grade',
|
prop: 'grade',
|
||||||
label: '报警级别',
|
label: '报警级别',
|
||||||
filter: publicFormatter(this.DICT_TYPE.EQU_ALARM_LEVEL),
|
filter: publicFormatter(this.DICT_TYPE.EQU_ALARM_LEVEL),
|
||||||
},
|
},
|
||||||
{ width: 180, prop: 'alarmCode', label: '设备报警编码' },
|
{ prop: 'alarmCode', label: '设备报警编码' },
|
||||||
{ width: 128, prop: 'plcParamName', label: '参数列名' },
|
{ prop: 'plcParamName', label: '参数列名' },
|
||||||
{ width: 128, prop: 'alarmContent', label: '报警内容' },
|
{ prop: 'alarmContent', label: '报警内容' },
|
||||||
],
|
],
|
||||||
alarmForm: {
|
alarmForm: {
|
||||||
id: undefined,
|
id: undefined,
|
||||||
|
@ -52,7 +52,7 @@
|
|||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import basicPageMixin from '@/mixins/lb/basicPageMixin';
|
import basicPageMixin from '@/mixins/lb/basicPageMixin';
|
||||||
import { publicFormatter } from '@/utils/dict';
|
import { publicFormatter } from '@/utils/dict';
|
||||||
import { deleteCheck } from "@/api/equipment/base/inspection/settings";
|
import { deleteCheck } from '@/api/equipment/base/inspection/settings';
|
||||||
|
|
||||||
const timeFilter = (val) => moment(val).format('yyyy-MM-DD HH:mm:ss');
|
const timeFilter = (val) => moment(val).format('yyyy-MM-DD HH:mm:ss');
|
||||||
|
|
||||||
@ -128,15 +128,21 @@ export default {
|
|||||||
label: '巡检内容编号',
|
label: '巡检内容编号',
|
||||||
prop: 'code',
|
prop: 'code',
|
||||||
url: '/base/equipment-check/getCode',
|
url: '/base/equipment-check/getCode',
|
||||||
rules: [{ required: true, message: '巡检内容编号不能为空', trigger: 'blur' }],
|
rules: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '巡检内容编号不能为空',
|
||||||
|
trigger: 'blur',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
[
|
},
|
||||||
{
|
{
|
||||||
input: true,
|
input: true,
|
||||||
label: '巡检项目',
|
label: '巡检项目',
|
||||||
prop: 'program',
|
prop: 'program',
|
||||||
rules: [{ required: true, message: '巡检项目不能为空', trigger: 'blur' }],
|
rules: [
|
||||||
|
{ required: true, message: '巡检项目不能为空', trigger: 'blur' },
|
||||||
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
@ -144,10 +150,10 @@ export default {
|
|||||||
input: true,
|
input: true,
|
||||||
label: '巡检内容',
|
label: '巡检内容',
|
||||||
prop: 'content',
|
prop: 'content',
|
||||||
rules: [{ required: true, message: '巡检内容不能为空', trigger: 'blur' }],
|
rules: [
|
||||||
},
|
{ required: true, message: '巡检内容不能为空', trigger: 'blur' },
|
||||||
],
|
],
|
||||||
[
|
},
|
||||||
{
|
{
|
||||||
input: true,
|
input: true,
|
||||||
label: '备注',
|
label: '备注',
|
||||||
@ -168,7 +174,7 @@ export default {
|
|||||||
code: '',
|
code: '',
|
||||||
program: '',
|
program: '',
|
||||||
id: undefined,
|
id: undefined,
|
||||||
content: ''
|
content: '',
|
||||||
},
|
},
|
||||||
basePath: '/base/equipment-check',
|
basePath: '/base/equipment-check',
|
||||||
mode: null,
|
mode: null,
|
||||||
@ -271,10 +277,10 @@ export default {
|
|||||||
handleDelete(row) {
|
handleDelete(row) {
|
||||||
const id = row.id;
|
const id = row.id;
|
||||||
this.$modal
|
this.$modal
|
||||||
.confirm('是否确认删除巡检项目名称为"' + row.program + '"的数据项?')
|
.confirm('是否确认删除该巡检项目?')
|
||||||
.then(function () {
|
.then(function () {
|
||||||
// return this.delete({ id });
|
// return this.del({ id });
|
||||||
return deleteCheck(id)
|
return deleteCheck(id);
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
this.getList();
|
this.getList();
|
||||||
|
@ -105,6 +105,7 @@ export default {
|
|||||||
label: '设备',
|
label: '设备',
|
||||||
placeholder: '请选择设备',
|
placeholder: '请选择设备',
|
||||||
param: 'equipmentId',
|
param: 'equipmentId',
|
||||||
|
filterable: true
|
||||||
},
|
},
|
||||||
// 开始结束时间
|
// 开始结束时间
|
||||||
{
|
{
|
||||||
|
@ -54,7 +54,6 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import moment from 'moment';
|
|
||||||
import basicPageMixin from '@/mixins/lb/basicPageMixin';
|
import basicPageMixin from '@/mixins/lb/basicPageMixin';
|
||||||
import addOrUpdata from './add-or-updata.vue';
|
import addOrUpdata from './add-or-updata.vue';
|
||||||
// import { publicFormatter } from '@/utils/dict';
|
// import { publicFormatter } from '@/utils/dict';
|
||||||
@ -101,9 +100,9 @@ export default {
|
|||||||
{ prop: 'lineName', label: '产线' },
|
{ prop: 'lineName', label: '产线' },
|
||||||
{ prop: 'sectionName', label: '工段' },
|
{ prop: 'sectionName', label: '工段' },
|
||||||
{ prop: 'equipmentName', label: '设备' },
|
{ prop: 'equipmentName', label: '设备' },
|
||||||
|
{ prop: 'equipmentCode', label: '设备编码' },
|
||||||
{ prop: 'responsible', label: '负责人' },
|
{ prop: 'responsible', label: '负责人' },
|
||||||
{ prop: 'equipmentCode', label: '描述' },
|
{ prop: 'checkNumber', label: '巡检条数' }, // TODO: 操作 选项,四个,群里询问
|
||||||
{ prop: 'checkNumber', label: '巡检条数' } // TODO: 操作 选项,四个,群里询问
|
|
||||||
],
|
],
|
||||||
searchBarFormConfig: [
|
searchBarFormConfig: [
|
||||||
{
|
{
|
||||||
@ -151,14 +150,18 @@ export default {
|
|||||||
input: true,
|
input: true,
|
||||||
label: '配置名称',
|
label: '配置名称',
|
||||||
prop: 'name',
|
prop: 'name',
|
||||||
rules: [{ required: true, message: '配置名称不能为空', trigger: 'blur' }],
|
rules: [
|
||||||
|
{ required: true, message: '配置名称不能为空', trigger: 'blur' },
|
||||||
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
input: true,
|
input: true,
|
||||||
label: '配置编码',
|
label: '配置编码',
|
||||||
prop: 'code',
|
prop: 'code',
|
||||||
url: '/base/equipment-check-config/getCode',
|
url: '/base/equipment-check-config/getCode',
|
||||||
rules: [{ required: true, message: '配置编码不能为空', trigger: 'blur' }],
|
rules: [
|
||||||
|
{ required: true, message: '配置编码不能为空', trigger: 'blur' },
|
||||||
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
@ -167,7 +170,9 @@ export default {
|
|||||||
label: '设备名称',
|
label: '设备名称',
|
||||||
prop: 'equipmentId',
|
prop: 'equipmentId',
|
||||||
url: '/base/core-equipment/listAll',
|
url: '/base/core-equipment/listAll',
|
||||||
rules: [{ required: true, message: '设备名称不能为空', trigger: 'blur' }],
|
rules: [
|
||||||
|
{ required: true, message: '设备名称不能为空', trigger: 'blur' },
|
||||||
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
input: true,
|
input: true,
|
||||||
@ -288,9 +293,9 @@ export default {
|
|||||||
handleDelete(row) {
|
handleDelete(row) {
|
||||||
const id = row.id;
|
const id = row.id;
|
||||||
this.$modal
|
this.$modal
|
||||||
.confirm('是否确认删除记录"' + row.name + '"?')
|
.confirm('是否确认删除该巡检记录?')
|
||||||
.then(function () {
|
.then(() => {
|
||||||
return this.delete({ id });
|
return this.del({ id });
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
this.getList();
|
this.getList();
|
||||||
@ -317,14 +322,14 @@ export default {
|
|||||||
},
|
},
|
||||||
handleDetail({ id }) {
|
handleDetail({ id }) {
|
||||||
this.addOrUpdateVisible = true;
|
this.addOrUpdateVisible = true;
|
||||||
this.addOrEditTitle = "详情";
|
this.addOrEditTitle = '详情';
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.$refs.addOrUpdate.init(id, true);
|
this.$refs.addOrUpdate.init(id, true);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
handleAddDetail({ id }) {
|
handleAddDetail({ id }) {
|
||||||
this.addOrUpdateVisible = true;
|
this.addOrUpdateVisible = true;
|
||||||
this.addOrEditTitle = "添加巡检";
|
this.addOrEditTitle = '添加巡检';
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.$refs.addOrUpdate.init(id);
|
this.$refs.addOrUpdate.init(id);
|
||||||
});
|
});
|
||||||
|
@ -52,6 +52,7 @@ import { publicFormatter } from '@/utils/dict';
|
|||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import basicPageMixin from '@/mixins/lb/basicPageMixin';
|
import basicPageMixin from '@/mixins/lb/basicPageMixin';
|
||||||
import { exportMaintainMonitorExcel } from '@/api/equipment/base/maintain/record'
|
import { exportMaintainMonitorExcel } from '@/api/equipment/base/maintain/record'
|
||||||
|
import { parseTime } from '@/utils/ruoyi'
|
||||||
|
|
||||||
const remainBox = {
|
const remainBox = {
|
||||||
name: 'RemainBox',
|
name: 'RemainBox',
|
||||||
@ -99,7 +100,7 @@ const btn = {
|
|||||||
render: function (h) {
|
render: function (h) {
|
||||||
return (
|
return (
|
||||||
<el-button type="text" onClick={this.handleClick}>
|
<el-button type="text" onClick={this.handleClick}>
|
||||||
{this.injectData.label}
|
{this.injectData.name}
|
||||||
</el-button>
|
</el-button>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@ -113,16 +114,16 @@ export default {
|
|||||||
return {
|
return {
|
||||||
searchBarKeys: ['planId', 'equipmentId'],
|
searchBarKeys: ['planId', 'equipmentId'],
|
||||||
tableProps: [
|
tableProps: [
|
||||||
{
|
// {
|
||||||
prop: 'createTime',
|
// prop: 'createTime',
|
||||||
label: '添加时间',
|
// label: '添加时间',
|
||||||
fixed: true,
|
// fixed: true,
|
||||||
width: 180,
|
// width: 180,
|
||||||
filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
|
// filter: parseTime(createTime),
|
||||||
},
|
// },
|
||||||
{ prop: 'name', label: '保养计划' },
|
{ prop: 'name', label: '保养计划' },
|
||||||
{ prop: 'lineName', label: '产线' },
|
{ prop: 'lineName', label: '产线名' },
|
||||||
{ prop: 'sectionName', label: '工段' },
|
{ prop: 'sectionName', label: '工段名' },
|
||||||
{ prop: 'equipmentName', label: '设备名称' },
|
{ prop: 'equipmentName', label: '设备名称' },
|
||||||
{ prop: 'equipmentCode', label: '设备编码' },
|
{ prop: 'equipmentCode', label: '设备编码' },
|
||||||
{ prop: 'maintenancePeriod', label: '保养频率' },
|
{ prop: 'maintenancePeriod', label: '保养频率' },
|
||||||
@ -134,16 +135,16 @@ export default {
|
|||||||
{
|
{
|
||||||
prop: 'lastMaintainTime',
|
prop: 'lastMaintainTime',
|
||||||
label: '上次保养时间',
|
label: '上次保养时间',
|
||||||
filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
|
filter: parseTime,
|
||||||
},
|
},
|
||||||
{ prop: 'nextMaintainTime', label: '计划下次保养时间' },
|
{ prop: 'nextMaintainTime', label: '计划下次保养时间', filter: parseTime },
|
||||||
{
|
{
|
||||||
prop: 'remainDays',
|
prop: 'remainDays',
|
||||||
label: '距离保养时间(天)',
|
label: '距离保养时间(天)',
|
||||||
subcomponent: remainBox,
|
subcomponent: remainBox,
|
||||||
},
|
},
|
||||||
{ prop: 'opt1', label: '设备保养', subcomponent: btn },
|
{ prop: 'opt1', label: '设备保养', name: '操作', subcomponent: btn },
|
||||||
{ prop: 'opt2', label: '保养记录', subcomponent: btn },
|
{ prop: 'opt2', label: '保养记录', name: '查看详情', subcomponent: btn },
|
||||||
],
|
],
|
||||||
searchBarFormConfig: [
|
searchBarFormConfig: [
|
||||||
{
|
{
|
||||||
@ -243,15 +244,16 @@ export default {
|
|||||||
switch (action) {
|
switch (action) {
|
||||||
// 查看详情
|
// 查看详情
|
||||||
case '设备保养':
|
case '设备保养':
|
||||||
this.$router.push({ path: '/equipment/base/maintain/plan-config',query: {
|
this.$router.push({ path: '/equipment/base/maintain/record',query: {
|
||||||
equipmentId: value.equipmentId,
|
addRecord: 1,
|
||||||
equipmentName: value.equipmentName
|
row: value
|
||||||
} })
|
} })
|
||||||
break;
|
break;
|
||||||
case '保养记录':
|
case '保养记录':
|
||||||
const queryData = {
|
const queryData = {
|
||||||
equipmentId: value.equipmentId,
|
equipmentId: value.equipmentId,
|
||||||
maintainPlanId: value.id
|
maintainPlanId: value.id,
|
||||||
|
relatePlan: value.lastMaintainTime ? 1 : 2
|
||||||
}
|
}
|
||||||
this.$router.push({ path: '/equipment/base/maintain/record',query: queryData })
|
this.$router.push({ path: '/equipment/base/maintain/record',query: queryData })
|
||||||
break;
|
break;
|
||||||
|
@ -51,6 +51,7 @@
|
|||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import basicPageMixin from '@/mixins/lb/basicPageMixin';
|
import basicPageMixin from '@/mixins/lb/basicPageMixin';
|
||||||
import { deleteEqMaintainPlan } from '@/api/equipment/base/maintain/record'
|
import { deleteEqMaintainPlan } from '@/api/equipment/base/maintain/record'
|
||||||
|
import { publicFormatter } from '@/utils/dict';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'PlanConfig',
|
name: 'PlanConfig',
|
||||||
@ -95,7 +96,7 @@ export default {
|
|||||||
{ prop: 'equipmentName', label: '设备名称' },
|
{ prop: 'equipmentName', label: '设备名称' },
|
||||||
{ prop: 'maintainDuration', label: '计划保养用时(h)' },
|
{ prop: 'maintainDuration', label: '计划保养用时(h)' },
|
||||||
{ prop: 'maintenancePeriod', label: '保养频率(天/次)' },
|
{ prop: 'maintenancePeriod', label: '保养频率(天/次)' },
|
||||||
{ prop: 'maintainType', label: '保养类型' },
|
{ prop: 'maintainType', label: '保养类型', filter: publicFormatter('maintain_type') },
|
||||||
{ prop: 'remark', label: '备注' },
|
{ prop: 'remark', label: '备注' },
|
||||||
],
|
],
|
||||||
searchBarFormConfig: [
|
searchBarFormConfig: [
|
||||||
@ -106,37 +107,37 @@ export default {
|
|||||||
param: 'equipmentName',
|
param: 'equipmentName',
|
||||||
},
|
},
|
||||||
// 时间段
|
// 时间段
|
||||||
{
|
// {
|
||||||
type: 'datePicker',
|
// type: 'datePicker',
|
||||||
label: '时间段',
|
// label: '时间段',
|
||||||
dateType: 'daterange', // datetimerange
|
// dateType: 'daterange', // datetimerange
|
||||||
format: 'yyyy-MM-dd',
|
// format: 'yyyy-MM-dd',
|
||||||
valueFormat: 'yyyy-MM-dd HH:mm:ss',
|
// valueFormat: 'yyyy-MM-dd HH:mm:ss',
|
||||||
// valueFormat: 'timestamp',
|
// // valueFormat: 'timestamp',
|
||||||
rangeSeparator: '-',
|
// rangeSeparator: '-',
|
||||||
startPlaceholder: '开始日期',
|
// startPlaceholder: '开始日期',
|
||||||
endPlaceholder: '结束日期',
|
// endPlaceholder: '结束日期',
|
||||||
defaultTime: ['00:00:00', '23:59:59'],
|
// defaultTime: ['00:00:00', '23:59:59'],
|
||||||
param: 'createTime',
|
// param: 'createTime',
|
||||||
// defaultSelect: [
|
// // defaultSelect: [
|
||||||
// new Date(y, m, d)
|
// // new Date(y, m, d)
|
||||||
// .toLocaleString()
|
// // .toLocaleString()
|
||||||
// .split('/')
|
// // .split('/')
|
||||||
// .map((item, index) => {
|
// // .map((item, index) => {
|
||||||
// if (index == 1 || index == 2) return item.padStart(2, '0');
|
// // if (index == 1 || index == 2) return item.padStart(2, '0');
|
||||||
// return item;
|
// // return item;
|
||||||
// })
|
// // })
|
||||||
// .join('-'),
|
// // .join('-'),
|
||||||
// new Date(y, m, d, 23, 59, 59)
|
// // new Date(y, m, d, 23, 59, 59)
|
||||||
// .toLocaleString()
|
// // .toLocaleString()
|
||||||
// .split('/')
|
// // .split('/')
|
||||||
// .map((item, index) => {
|
// // .map((item, index) => {
|
||||||
// if (index == 1 || index == 2) return item.padStart(2, '0');
|
// // if (index == 1 || index == 2) return item.padStart(2, '0');
|
||||||
// return item;
|
// // return item;
|
||||||
// })
|
// // })
|
||||||
// .join('-'),
|
// // .join('-'),
|
||||||
// ],
|
// // ],
|
||||||
},
|
// },
|
||||||
{
|
{
|
||||||
type: 'button',
|
type: 'button',
|
||||||
btnName: '查询',
|
btnName: '查询',
|
||||||
@ -224,6 +225,17 @@ export default {
|
|||||||
rules: [{ required: true, message: '保养频率不能为空', trigger: 'blur' }],
|
rules: [{ required: true, message: '保养频率不能为空', trigger: 'blur' }],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
switch: true,
|
||||||
|
label: '启用状态',
|
||||||
|
prop: 'enabled',
|
||||||
|
bind: {
|
||||||
|
'active-value': 1,
|
||||||
|
'inactive-value': 0,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
],
|
||||||
[{ input: true, label: '备注', prop: 'remark' }],
|
[{ input: true, label: '备注', prop: 'remark' }],
|
||||||
],
|
],
|
||||||
// 是否显示弹出层
|
// 是否显示弹出层
|
||||||
@ -300,7 +312,8 @@ export default {
|
|||||||
const queryData = {
|
const queryData = {
|
||||||
equipmentId: row.equipmentId,
|
equipmentId: row.equipmentId,
|
||||||
maintainPlanId: row.id,
|
maintainPlanId: row.id,
|
||||||
relatePlan: row.enabled
|
isAdd: 1
|
||||||
|
// relatePlan: row.enabled
|
||||||
}
|
}
|
||||||
if (this.queryParams.createTime) {
|
if (this.queryParams.createTime) {
|
||||||
queryData.createTime = this.queryParams.createTime
|
queryData.createTime = this.queryParams.createTime
|
||||||
|
@ -53,7 +53,7 @@
|
|||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import basicPageMixin from '@/mixins/lb/basicPageMixin';
|
import basicPageMixin from '@/mixins/lb/basicPageMixin';
|
||||||
import Editor from '@/components/Editor';
|
import Editor from '@/components/Editor';
|
||||||
import { deleteEqMaintainLog } from '@/api/equipment/base/maintain/record';
|
import { deleteEqMaintainLog, exportMaintainLogExcel } from '@/api/equipment/base/maintain/record';
|
||||||
|
|
||||||
const timeFilter = (val) => moment(val).format('yyyy-MM-DD HH:mm:ss');
|
const timeFilter = (val) => moment(val).format('yyyy-MM-DD HH:mm:ss');
|
||||||
|
|
||||||
@ -121,14 +121,14 @@ export default {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'select',
|
type: 'select',
|
||||||
label: '保养计划',
|
label: '计划名称',
|
||||||
placeholder: '请选择保养计划',
|
placeholder: '请选择计划名称',
|
||||||
param: 'maintainPlanId',
|
param: 'maintainPlanId',
|
||||||
},
|
},
|
||||||
// 开始结束时间
|
// 开始结束时间
|
||||||
{
|
{
|
||||||
type: 'datePicker',
|
type: 'datePicker',
|
||||||
label: '时间段',
|
label: '保养开始时间',
|
||||||
dateType: 'daterange', // datetimerange
|
dateType: 'daterange', // datetimerange
|
||||||
format: 'yyyy-MM-dd',
|
format: 'yyyy-MM-dd',
|
||||||
valueFormat: 'yyyy-MM-dd HH:mm:ss',
|
valueFormat: 'yyyy-MM-dd HH:mm:ss',
|
||||||
@ -311,13 +311,16 @@ export default {
|
|||||||
this.searchBarFormConfig[0].defaultSelect =
|
this.searchBarFormConfig[0].defaultSelect =
|
||||||
this.$route.query.equipmentId ?? undefined;
|
this.$route.query.equipmentId ?? undefined;
|
||||||
this.searchBarFormConfig[1].defaultSelect =
|
this.searchBarFormConfig[1].defaultSelect =
|
||||||
Number(this.$route.query.maintainPlanId) ?? undefined;
|
this.$route.query.maintainPlanId ?? undefined;
|
||||||
this.searchBarFormConfig[2].defaultSelect =
|
this.searchBarFormConfig[2].defaultSelect =
|
||||||
this.$route.query?.createTime ?? undefined;
|
this.$route.query?.createTime ?? undefined;
|
||||||
this.searchBarFormConfig[3].defaultSelect =
|
this.searchBarFormConfig[3].defaultSelect =
|
||||||
Number(this.$route.query.relatePlan) ?? undefined;
|
Number(this.$route.query.relatePlan) ?? undefined;
|
||||||
}
|
}
|
||||||
this.getList();
|
this.getList();
|
||||||
|
if (this.$route.query.addRecord) {
|
||||||
|
this.handleAdd()
|
||||||
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
initSearchBar() {
|
initSearchBar() {
|
||||||
@ -398,6 +401,19 @@ export default {
|
|||||||
/** 新增按钮操作 */
|
/** 新增按钮操作 */
|
||||||
handleAdd() {
|
handleAdd() {
|
||||||
this.reset();
|
this.reset();
|
||||||
|
if (this.$route.query.addRecord) {
|
||||||
|
// 赋值
|
||||||
|
const tempRow = this.$route.query.row
|
||||||
|
this.form.equipmentId = tempRow.equipmentId
|
||||||
|
this.form.relatePlan = tempRow.nextMaintainTime ? 1 : 2
|
||||||
|
this.form.startTime = tempRow.nextMaintainTime
|
||||||
|
this.form.maintainPlanId = tempRow.id
|
||||||
|
}
|
||||||
|
if (this.$route.query.isAdd) {
|
||||||
|
// 赋值
|
||||||
|
this.form.equipmentId = this.$route.query.equipmentId
|
||||||
|
this.form.maintainPlanId = this.$route.query.maintainPlanId
|
||||||
|
}
|
||||||
this.open = true;
|
this.open = true;
|
||||||
this.title = '添加保养记录';
|
this.title = '添加保养记录';
|
||||||
},
|
},
|
||||||
@ -440,7 +456,7 @@ export default {
|
|||||||
handleDelete(row) {
|
handleDelete(row) {
|
||||||
const id = row.id;
|
const id = row.id;
|
||||||
this.$modal
|
this.$modal
|
||||||
.confirm('是否删除设备名称为"' + row.equipmentName + '"的数据项?')
|
.confirm('是否确认删除设备名称为"' + row.equipmentName + '"的数据项?')
|
||||||
.then(function () {
|
.then(function () {
|
||||||
return deleteEqMaintainLog(id);
|
return deleteEqMaintainLog(id);
|
||||||
})
|
})
|
||||||
@ -456,7 +472,7 @@ export default {
|
|||||||
this.info({ id }).then((response) => {
|
this.info({ id }).then((response) => {
|
||||||
this.form = response.data;
|
this.form = response.data;
|
||||||
this.open = true;
|
this.open = true;
|
||||||
this.title = '修改保养记录';
|
this.title = '查看保养记录详情';
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
/** 导出按钮操作 */
|
/** 导出按钮操作 */
|
||||||
@ -469,10 +485,10 @@ export default {
|
|||||||
.confirm('是否确认导出所有保养记录?')
|
.confirm('是否确认导出所有保养记录?')
|
||||||
.then(() => {
|
.then(() => {
|
||||||
this.exportLoading = true;
|
this.exportLoading = true;
|
||||||
return exportEquipmentTypeExcel(params);
|
return exportMaintainLogExcel(params);
|
||||||
})
|
})
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
this.$download.excel(response, '保养记录.xls');
|
this.$download.excel(response, '设备保养记录.xls');
|
||||||
this.exportLoading = false;
|
this.exportLoading = false;
|
||||||
})
|
})
|
||||||
.catch(() => {});
|
.catch(() => {});
|
||||||
|
@ -41,12 +41,12 @@
|
|||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="故障发生时间" prop="faultTime">
|
<el-form-item label="故障发生时间" prop="faultTime">
|
||||||
<span>{{ dataForm.faultTime }}</span>
|
<span>{{ parseTime(dataForm.faultTime) }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="故障级别" prop="faultLevel">
|
<el-form-item label="故障级别" prop="faultLevel">
|
||||||
<span>{{ dataForm.faultLevel }}</span>
|
<span>{{ getDictDataLabel('fault-level', dataForm.faultLevel) }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
@ -164,11 +164,11 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
<div class="drawer-body__footer">
|
<div class="drawer-body__footer">
|
||||||
<el-button style="" @click="goback()">取消</el-button>
|
<el-button style="" @click="goback()">{{ disabled ? '返回' : '取消' }}</el-button>
|
||||||
<el-button v-if="disabled" type="primary" @click="goEdit()">
|
<!-- <el-button v-if="disabled" type="primary" @click="goEdit()">
|
||||||
编辑
|
编辑
|
||||||
</el-button>
|
</el-button> -->
|
||||||
<el-button v-else type="primary" @click="dataFormSubmit()">确定</el-button>
|
<el-button v-if="!disabled" type="primary" @click="dataFormSubmit()">确定</el-button>
|
||||||
</div>
|
</div>
|
||||||
</el-drawer>
|
</el-drawer>
|
||||||
</template>
|
</template>
|
||||||
@ -179,6 +179,8 @@ import { getEqRepair, updateEqRepair } from '@/api/equipment/base/repair'
|
|||||||
import Editor from "@/components/Editor";
|
import Editor from "@/components/Editor";
|
||||||
import FileUpload from "@/components/FileUpload";
|
import FileUpload from "@/components/FileUpload";
|
||||||
import { getDictDatas } from "@/utils/dict";
|
import { getDictDatas } from "@/utils/dict";
|
||||||
|
import { parseTime } from '@/utils/ruoyi'
|
||||||
|
import { getDictDataLabel } from '@/utils/dict';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'DialogForm',
|
name: 'DialogForm',
|
||||||
|
@ -53,12 +53,12 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import moment from 'moment';
|
// import moment from 'moment';
|
||||||
import basicPageMixin from '@/mixins/lb/basicPageMixin';
|
import basicPageMixin from '@/mixins/lb/basicPageMixin';
|
||||||
import CustomDialogForm from './CustomDialogForm.vue';
|
import CustomDialogForm from './CustomDialogForm.vue';
|
||||||
import { deleteRepair } from '@/api/equipment/base/repair'
|
import { deleteRepair, exportRepairLogExcel } from '@/api/equipment/base/repair'
|
||||||
|
import { parseTime } from '@/utils/ruoyi'
|
||||||
const timeFilter = (val) => moment(val).format('yyyy-MM-DD HH:mm:ss');
|
// const timeFilter = (val) => moment(val).format('yyyy-MM-DD HH:mm:ss');
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'EquipmentRepair',
|
name: 'EquipmentRepair',
|
||||||
@ -100,14 +100,14 @@ export default {
|
|||||||
label: '添加时间',
|
label: '添加时间',
|
||||||
fixed: true,
|
fixed: true,
|
||||||
width: 180,
|
width: 180,
|
||||||
filter: timeFilter,
|
filter: parseTime,
|
||||||
},
|
},
|
||||||
{ prop: 'repairOrderNumber', label: '设备维修单号' },
|
{ prop: 'repairOrderNumber', label: '设备维修单号' },
|
||||||
{ prop: 'maintenanceStartTime', label: '开始时间', filter: timeFilter },
|
{ prop: 'maintenanceStartTime', label: '开始时间', filter: parseTime },
|
||||||
{
|
{
|
||||||
prop: 'maintenanceFinishTime',
|
prop: 'maintenanceFinishTime',
|
||||||
label: '结束时间',
|
label: '结束时间',
|
||||||
filter: timeFilter,
|
filter: parseTime,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'maintenanceStatus',
|
prop: 'maintenanceStatus',
|
||||||
@ -129,6 +129,7 @@ export default {
|
|||||||
label: '设备',
|
label: '设备',
|
||||||
placeholder: '请选择设备',
|
placeholder: '请选择设备',
|
||||||
param: 'equipmentId',
|
param: 'equipmentId',
|
||||||
|
filterable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'select',
|
type: 'select',
|
||||||
@ -417,10 +418,10 @@ export default {
|
|||||||
.confirm('是否确认导出所有维修记录?')
|
.confirm('是否确认导出所有维修记录?')
|
||||||
.then(() => {
|
.then(() => {
|
||||||
this.exportLoading = true;
|
this.exportLoading = true;
|
||||||
return exportEquipmentTypeExcel(params);
|
return exportRepairLogExcel(params);
|
||||||
})
|
})
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
this.$download.excel(response, '维修记录.xls');
|
this.$download.excel(response, '设备维修.xls');
|
||||||
this.exportLoading = false;
|
this.exportLoading = false;
|
||||||
})
|
})
|
||||||
.catch(() => {});
|
.catch(() => {});
|
||||||
|
36
src/views/equipment/base/spareParts/Config/htmls.vue
Normal file
36
src/views/equipment/base/spareParts/Config/htmls.vue
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
<!--
|
||||||
|
* @Author: zhp
|
||||||
|
* @Date: 2023-11-08 14:00:52
|
||||||
|
* @LastEditTime: 2023-11-24 09:12:36
|
||||||
|
* @LastEditors: DY
|
||||||
|
* @Description:
|
||||||
|
-->
|
||||||
|
<template>
|
||||||
|
<div v-html="content" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
injectData: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
content: ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getContent()
|
||||||
|
console.log('12', this.injectData)
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
getContent() {
|
||||||
|
this.content = this.injectData.description ?? ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
@ -60,8 +60,9 @@ import { publicFormatter } from '@/utils/dict';
|
|||||||
import Editor from '@/components/Editor';
|
import Editor from '@/components/Editor';
|
||||||
import addSparts from './addSparts.vue';
|
import addSparts from './addSparts.vue';
|
||||||
import { deleteConfig } from '@/api/equipment/base/spare-parts/config'
|
import { deleteConfig } from '@/api/equipment/base/spare-parts/config'
|
||||||
|
import htmls from './htmls.vue'
|
||||||
|
|
||||||
const timeFilter = (val) => moment(val).format('yyyy-MM-DD HH:mm:ss');
|
// const timeFilter = (val) => moment(val).format('yyyy-MM-DD HH:mm:ss');
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'EquipmentSparePartsConfig',
|
name: 'EquipmentSparePartsConfig',
|
||||||
@ -111,7 +112,7 @@ export default {
|
|||||||
{ prop: 'equipmentCode', label: '设备编码' },
|
{ prop: 'equipmentCode', label: '设备编码' },
|
||||||
{ prop: 'responsible', label: '负责人' },
|
{ prop: 'responsible', label: '负责人' },
|
||||||
// { prop: 'unit', label: '单位', filter: publicFormatter('unit_dict') },
|
// { prop: 'unit', label: '单位', filter: publicFormatter('unit_dict') },
|
||||||
{ prop: 'description', label: '描述' },
|
{ prop: 'description', label: '描述', subcomponent: htmls },
|
||||||
{ prop: 'sparePartNumber', label: '备品备件数量' },
|
{ prop: 'sparePartNumber', label: '备品备件数量' },
|
||||||
// { prop: 'remark', label: '备注' },
|
// { prop: 'remark', label: '备注' },
|
||||||
],
|
],
|
||||||
|
@ -52,7 +52,7 @@
|
|||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import basicPageMixin from '@/mixins/lb/basicPageMixin';
|
import basicPageMixin from '@/mixins/lb/basicPageMixin';
|
||||||
import { publicFormatter } from '@/utils/dict';
|
import { publicFormatter } from '@/utils/dict';
|
||||||
import { deleteSparePart } from '@/api/equipment/base/spare-parts/list'
|
import { deleteSparePart } from '@/api/equipment/base/spare-parts/list';
|
||||||
|
|
||||||
const timeFilter = (val) => moment(val).format('yyyy-MM-DD HH:mm:ss');
|
const timeFilter = (val) => moment(val).format('yyyy-MM-DD HH:mm:ss');
|
||||||
|
|
||||||
@ -95,7 +95,7 @@ export default {
|
|||||||
searchBarFormConfig: [
|
searchBarFormConfig: [
|
||||||
{
|
{
|
||||||
type: 'input',
|
type: 'input',
|
||||||
label: '关键字',
|
label: '备件名称',
|
||||||
placeholder: '请输入备件名称',
|
placeholder: '请输入备件名称',
|
||||||
param: 'name',
|
param: 'name',
|
||||||
},
|
},
|
||||||
@ -132,20 +132,33 @@ export default {
|
|||||||
input: true,
|
input: true,
|
||||||
label: '备件名称',
|
label: '备件名称',
|
||||||
prop: 'name',
|
prop: 'name',
|
||||||
rules: [{ required: true, message: '备件名称不能为空', trigger: 'blur' }],
|
rules: [
|
||||||
|
{ required: true, message: '备件名称不能为空', trigger: 'blur' },
|
||||||
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
input: true,
|
input: true,
|
||||||
label: '备件型号',
|
label: '备件编码',
|
||||||
prop: 'model',
|
prop: 'code',
|
||||||
|
url: '/base/equipment-spare-part/getCode',
|
||||||
|
rules: [
|
||||||
|
{ required: true, message: '备件编码不能为空', trigger: 'blur' },
|
||||||
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
{
|
||||||
|
input: true,
|
||||||
|
label: '备件型号',
|
||||||
|
prop: 'model',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
input: true,
|
input: true,
|
||||||
label: '规格',
|
label: '规格',
|
||||||
prop: 'specifications',
|
prop: 'specifications',
|
||||||
},
|
},
|
||||||
|
],
|
||||||
|
[
|
||||||
{
|
{
|
||||||
select: true,
|
select: true,
|
||||||
label: '供应商',
|
label: '供应商',
|
||||||
@ -155,10 +168,10 @@ export default {
|
|||||||
filterable: true,
|
filterable: true,
|
||||||
clearable: true,
|
clearable: true,
|
||||||
},
|
},
|
||||||
rules: [{ required: true, message: '供应商不能为空', trigger: 'blur' }],
|
rules: [
|
||||||
},
|
{ required: true, message: '供应商不能为空', trigger: 'blur' },
|
||||||
],
|
],
|
||||||
[
|
},
|
||||||
{
|
{
|
||||||
select: true,
|
select: true,
|
||||||
label: '物料类型',
|
label: '物料类型',
|
||||||
@ -169,8 +182,12 @@ export default {
|
|||||||
filterable: true,
|
filterable: true,
|
||||||
clearable: true,
|
clearable: true,
|
||||||
},
|
},
|
||||||
rules: [{ required: true, message: '物料类型不能为空', trigger: 'blur' }],
|
rules: [
|
||||||
|
{ required: true, message: '物料类型不能为空', trigger: 'blur' },
|
||||||
|
],
|
||||||
},
|
},
|
||||||
|
],
|
||||||
|
[
|
||||||
{
|
{
|
||||||
input: true,
|
input: true,
|
||||||
label: '使用寿命',
|
label: '使用寿命',
|
||||||
@ -184,14 +201,14 @@ export default {
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
],
|
|
||||||
[
|
|
||||||
{
|
{
|
||||||
select: true,
|
select: true,
|
||||||
label: '单位',
|
label: '单位',
|
||||||
prop: 'unit', // 数据字典
|
prop: 'unit', // 数据字典
|
||||||
options: this.getDictDatas(this.DICT_TYPE.UNIT_DICT),
|
options: this.getDictDatas(this.DICT_TYPE.UNIT_DICT),
|
||||||
},
|
},
|
||||||
|
],
|
||||||
|
[
|
||||||
{
|
{
|
||||||
input: true,
|
input: true,
|
||||||
label: '备注',
|
label: '备注',
|
||||||
|
@ -72,10 +72,10 @@ const remainBox = {
|
|||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
value() {
|
value() {
|
||||||
const temp = this.injectData[this.injectData.prop] || null
|
const temp = this.injectData[this.injectData.prop] || null;
|
||||||
if (temp) {
|
if (temp) {
|
||||||
console.log('12', temp)
|
console.log('12', temp);
|
||||||
return temp === 'Green' ? 'green' : 'red'
|
return temp === 'Green' ? 'green' : 'red';
|
||||||
}
|
}
|
||||||
return this.injectData[this.injectData.prop] || null;
|
return this.injectData[this.injectData.prop] || null;
|
||||||
},
|
},
|
||||||
@ -83,7 +83,7 @@ const remainBox = {
|
|||||||
if (this.value) {
|
if (this.value) {
|
||||||
// const v = +this.value;
|
// const v = +this.value;
|
||||||
// return v < 0 ? 'red' : v >= 0 && v < 2 ? 'yellow' : 'green';
|
// return v < 0 ? 'red' : v >= 0 && v < 2 ? 'yellow' : 'green';
|
||||||
return this.value
|
return this.value;
|
||||||
}
|
}
|
||||||
return 'unset';
|
return 'unset';
|
||||||
},
|
},
|
||||||
@ -95,8 +95,7 @@ const remainBox = {
|
|||||||
this.color
|
this.color
|
||||||
// this.color == 'Green' ? 'green' : this.color == 'Red' ? 'red' : 'yellow'
|
// this.color == 'Green' ? 'green' : this.color == 'Red' ? 'red' : 'yellow'
|
||||||
}; position:absolute; inset: 0; padding: 0 10px; display: flex; align-items: center; color: ${
|
}; position:absolute; inset: 0; padding: 0 10px; display: flex; align-items: center; color: ${
|
||||||
'unset'
|
this.color == 'red' || this.color == 'green' ? '#fff' : 'unset'
|
||||||
// this.color == 'red' ? '#fff' : 'unset'
|
|
||||||
}`}>
|
}`}>
|
||||||
{this.injectData[this.injectData.prop] || ''}
|
{this.injectData[this.injectData.prop] || ''}
|
||||||
</div>
|
</div>
|
||||||
@ -112,7 +111,10 @@ const btn = {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleClick() {
|
handleClick() {
|
||||||
this.$emit('emitData', { action: this.injectData.name, value: this.injectData });
|
this.$emit('emitData', {
|
||||||
|
action: this.injectData.name,
|
||||||
|
value: this.injectData,
|
||||||
|
});
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
render: function (h) {
|
render: function (h) {
|
||||||
@ -124,8 +126,6 @@ const btn = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'EquipmentSparePartsMonitor',
|
name: 'EquipmentSparePartsMonitor',
|
||||||
components: { addSparts },
|
components: { addSparts },
|
||||||
@ -162,7 +162,12 @@ export default {
|
|||||||
{ prop: 'responsible', label: '负责人' },
|
{ prop: 'responsible', label: '负责人' },
|
||||||
{ prop: 'color', label: '是否超期', subcomponent: remainBox },
|
{ prop: 'color', label: '是否超期', subcomponent: remainBox },
|
||||||
{ prop: 'opt1', label: '备件更换', name: '操作', subcomponent: btn },
|
{ prop: 'opt1', label: '备件更换', name: '操作', subcomponent: btn },
|
||||||
{ prop: 'opt2', label: '更换记录', name: '更新记录', subcomponent: btn }, // TODO: 是否换成按钮, 群里问
|
{
|
||||||
|
prop: 'opt2',
|
||||||
|
label: '更换记录',
|
||||||
|
name: '更新记录',
|
||||||
|
subcomponent: btn,
|
||||||
|
}, // TODO: 是否换成按钮, 群里问
|
||||||
// { prop: 'remark', label: '备注' },
|
// { prop: 'remark', label: '备注' },
|
||||||
],
|
],
|
||||||
searchBarFormConfig: [
|
searchBarFormConfig: [
|
||||||
@ -171,12 +176,14 @@ export default {
|
|||||||
label: '产线',
|
label: '产线',
|
||||||
placeholder: '请选择产线',
|
placeholder: '请选择产线',
|
||||||
param: 'lineId',
|
param: 'lineId',
|
||||||
|
filterable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'select',
|
type: 'select',
|
||||||
label: '设备',
|
label: '设备',
|
||||||
placeholder: '请选择设备',
|
placeholder: '请选择设备',
|
||||||
param: 'equipmentId',
|
param: 'equipmentId',
|
||||||
|
filterable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'button',
|
type: 'button',
|
||||||
@ -211,7 +218,9 @@ export default {
|
|||||||
input: true,
|
input: true,
|
||||||
label: '配置名称',
|
label: '配置名称',
|
||||||
prop: 'name',
|
prop: 'name',
|
||||||
rules: [{ required: true, message: '配置名称不能为空', trigger: 'blur' }],
|
rules: [
|
||||||
|
{ required: true, message: '配置名称不能为空', trigger: 'blur' },
|
||||||
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
@ -224,7 +233,9 @@ export default {
|
|||||||
filterable: true,
|
filterable: true,
|
||||||
clearable: true,
|
clearable: true,
|
||||||
},
|
},
|
||||||
rules: [{ required: true, message: '设备名称不能为空', trigger: 'blur' }],
|
rules: [
|
||||||
|
{ required: true, message: '设备名称不能为空', trigger: 'blur' },
|
||||||
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
@ -281,29 +292,29 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
eqOperation({ id }) {
|
eqOperation({ id }) {
|
||||||
this.addOrUpdateVisible = true
|
this.addOrUpdateVisible = true;
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.$refs.addOrUpdate.init(id);
|
this.$refs.addOrUpdate.init(id);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
updateLog({ id }) {
|
updateLog({ id }) {
|
||||||
this.addOrUpdateVisible = true
|
this.addOrUpdateVisible = true;
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.$refs.addOrUpdate.init(id, true);
|
this.$refs.addOrUpdate.init(id, true);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
initSearchBar() {
|
initSearchBar() {
|
||||||
// 产线列表
|
// 产线列表
|
||||||
getCorePLList().then(res => {
|
getCorePLList().then((res) => {
|
||||||
this.$set(
|
this.$set(
|
||||||
this.searchBarFormConfig[0],
|
this.searchBarFormConfig[0],
|
||||||
'selectOptions',
|
'selectOptions',
|
||||||
res.data.map((item) => ({
|
res.data.map((item) => ({
|
||||||
name: item.name,
|
name: item.name,
|
||||||
id: item.id
|
id: item.id,
|
||||||
}))
|
}))
|
||||||
);
|
);
|
||||||
})
|
});
|
||||||
this.http('/base/core-equipment/listAll', 'get').then(({ data }) => {
|
this.http('/base/core-equipment/listAll', 'get').then(({ data }) => {
|
||||||
this.$set(
|
this.$set(
|
||||||
this.searchBarFormConfig[1],
|
this.searchBarFormConfig[1],
|
||||||
@ -319,7 +330,11 @@ export default {
|
|||||||
getList() {
|
getList() {
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
// 执行查询
|
// 执行查询
|
||||||
this.http('/base/equipment-spare-part-config/monitor', 'get', this.queryParams).then((response) => {
|
this.http(
|
||||||
|
'/base/equipment-spare-part-config/monitor',
|
||||||
|
'get',
|
||||||
|
this.queryParams
|
||||||
|
).then((response) => {
|
||||||
this.list = response.data.list;
|
this.list = response.data.list;
|
||||||
this.total = response.data.total;
|
this.total = response.data.total;
|
||||||
this.loading = false;
|
this.loading = false;
|
||||||
@ -338,7 +353,7 @@ export default {
|
|||||||
name: null,
|
name: null,
|
||||||
equipmentId: null,
|
equipmentId: null,
|
||||||
description: null,
|
description: null,
|
||||||
responsible: null
|
responsible: null,
|
||||||
};
|
};
|
||||||
this.resetForm('form');
|
this.resetForm('form');
|
||||||
},
|
},
|
||||||
@ -397,7 +412,7 @@ export default {
|
|||||||
this.$modal
|
this.$modal
|
||||||
.confirm('是否确认删除记录"' + row.name + '"?')
|
.confirm('是否确认删除记录"' + row.name + '"?')
|
||||||
.then(function () {
|
.then(function () {
|
||||||
return this.delete({ id });
|
return this.del({ id });
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
this.getList();
|
this.getList();
|
||||||
|
138
src/views/equipment/monitor/SearchBar.vue
Normal file
138
src/views/equipment/monitor/SearchBar.vue
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
<!--
|
||||||
|
filename: SearchBar.vue
|
||||||
|
author: liubin
|
||||||
|
date: 2023-11-23 14:01:17
|
||||||
|
description:
|
||||||
|
-->
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="search-bar">
|
||||||
|
<div class="vertical-blue-line"></div>
|
||||||
|
<el-form
|
||||||
|
:inline="true"
|
||||||
|
ref="search-bar__form"
|
||||||
|
:model="form"
|
||||||
|
class="search-bar__form">
|
||||||
|
<el-form-item :label="'产线'" prop="productionLineId">
|
||||||
|
<el-select
|
||||||
|
size="small"
|
||||||
|
placeholder="请选择产线"
|
||||||
|
@change="getEquipmentByLineId"
|
||||||
|
v-model="form.productionLineId">
|
||||||
|
<el-option
|
||||||
|
v-for="item in listLine"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item :label="'设备'" prop="equipmentId">
|
||||||
|
<el-select
|
||||||
|
size="small"
|
||||||
|
placeholder="请选择设备"
|
||||||
|
v-model="form.equipmentId">
|
||||||
|
<el-option
|
||||||
|
v-for="item in listEq"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-button type="primary" @click="handleSearch" size="small">
|
||||||
|
查询
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'SearchBar',
|
||||||
|
model: {
|
||||||
|
prop: 'value',
|
||||||
|
event: 'change',
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
value: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
listLine: [],
|
||||||
|
listEq: [],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
form: {
|
||||||
|
set(val) {
|
||||||
|
this.emit(val);
|
||||||
|
},
|
||||||
|
get() {
|
||||||
|
return this.value;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getLine();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
emit(newValue) {
|
||||||
|
debugger;
|
||||||
|
this.$emit('update', { ...this.form, ...newValue });
|
||||||
|
},
|
||||||
|
async getLine() {
|
||||||
|
const { data, code } = await this.$axios({
|
||||||
|
url: '/base/core-production-line/listAll',
|
||||||
|
});
|
||||||
|
if (code == 0) {
|
||||||
|
this.listLine = data;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.listLine.splice(0);
|
||||||
|
},
|
||||||
|
async getEquipmentByLineId(id) {
|
||||||
|
const { data, code } = await this.$axios({
|
||||||
|
url: '/base/core-equipment/listByLine',
|
||||||
|
params: {
|
||||||
|
id,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
if (code == 0) {
|
||||||
|
this.listEq = data;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.listEq.splice(0);
|
||||||
|
},
|
||||||
|
handleSearch() {},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.search-bar {
|
||||||
|
padding: 12px 0;
|
||||||
|
font-size: 16px;
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 12px;
|
||||||
|
|
||||||
|
:deep(.el-form-item) {
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
margin-right: 0;
|
||||||
|
|
||||||
|
&:not(:last-child) {
|
||||||
|
margin-right: 18px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.vertical-blue-line {
|
||||||
|
width: 4px;
|
||||||
|
height: 18px;
|
||||||
|
background: #0b58ff;
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
</style>
|
@ -1,10 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<!-- 搜索工作栏 -->
|
<!-- 搜索工作栏 -->
|
||||||
<SearchBar
|
<SearchBarNew v-model="searchBarForm" />
|
||||||
:formConfigs="searchBarFormConfig"
|
|
||||||
ref="search-bar"
|
|
||||||
@headBtnClick="handleSearchBarBtnClick" />
|
|
||||||
|
|
||||||
<!-- 列表 -->
|
<!-- 列表 -->
|
||||||
<base-table
|
<base-table
|
||||||
@ -13,13 +10,13 @@
|
|||||||
:limit="queryParams.pageSize"
|
:limit="queryParams.pageSize"
|
||||||
:table-data="list"
|
:table-data="list"
|
||||||
@emitFun="handleEmitFun">
|
@emitFun="handleEmitFun">
|
||||||
<method-btn
|
<!-- <method-btn
|
||||||
v-if="tableBtn.length"
|
v-if="tableBtn.length"
|
||||||
slot="handleBtn"
|
slot="handleBtn"
|
||||||
label="操作"
|
label="操作"
|
||||||
:width="120"
|
:width="120"
|
||||||
:method-list="tableBtn"
|
:method-list="tableBtn"
|
||||||
@clickBtn="handleTableBtnClick" />
|
@clickBtn="handleTableBtnClick" /> -->
|
||||||
</base-table>
|
</base-table>
|
||||||
|
|
||||||
<!-- 分页组件 -->
|
<!-- 分页组件 -->
|
||||||
@ -50,22 +47,23 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import moment from 'moment';
|
|
||||||
import basicPageMixin from '@/mixins/lb/basicPageMixin';
|
import basicPageMixin from '@/mixins/lb/basicPageMixin';
|
||||||
import { publicFormatter } from '@/utils/dict';
|
import { parseTime } from '@/utils/ruoyi';
|
||||||
import { parseTime } from '@/utils/ruoyi'
|
import SearchBarNew from '../SearchBar.vue';
|
||||||
// const timeFilter = (val) => moment(val).format('yyyy-MM-DD HH:mm:ss');
|
|
||||||
|
|
||||||
|
|
||||||
const btn = {
|
const btn = {
|
||||||
name: 'tableBtn',
|
name: 'tableBtn',
|
||||||
props: ['injectData'],
|
props: ['injectData'],
|
||||||
|
components: {},
|
||||||
data() {
|
data() {
|
||||||
return {};
|
return {};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleClick() {
|
handleClick() {
|
||||||
this.$emit('emitData', { action: this.injectData.label, value: this.injectData });
|
this.$emit('emitData', {
|
||||||
|
action: this.injectData.label,
|
||||||
|
value: this.injectData,
|
||||||
|
});
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
render: function (h) {
|
render: function (h) {
|
||||||
@ -77,134 +75,62 @@ const btn = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// monitoring/equipment-monitor/realtime-page
|
||||||
export default {
|
export default {
|
||||||
name: 'StatusAndParams',
|
name: 'StatusAndParams',
|
||||||
mixins: [basicPageMixin],
|
mixins: [basicPageMixin],
|
||||||
|
components: { SearchBarNew },
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
searchBarKeys: ['equipmentName', 'recordTime'],
|
|
||||||
tableBtn: [
|
|
||||||
// this.$auth.hasPermi('equipment:spare-parts-config:update')
|
|
||||||
// ? {
|
|
||||||
// type: 'detail',
|
|
||||||
// btnName: '详情',
|
|
||||||
// }
|
|
||||||
// : undefined,
|
|
||||||
// this.$auth.hasPermi('equipment:spare-parts-config:update')
|
|
||||||
// ? {
|
|
||||||
// type: 'edit',
|
|
||||||
// btnName: '修改',
|
|
||||||
// }
|
|
||||||
// : undefined,
|
|
||||||
// this.$auth.hasPermi('equipment:spare-parts-config:delete')
|
|
||||||
// ? {
|
|
||||||
// type: 'delete',
|
|
||||||
// btnName: '删除',
|
|
||||||
// }
|
|
||||||
// : undefined,
|
|
||||||
].filter((v) => v),
|
|
||||||
tableProps: [
|
tableProps: [
|
||||||
{ prop: 'productionLine', label: '设备名称' },
|
{ prop: 'equipmentName', label: '设备名称' },
|
||||||
{ prop: 'workshopSection', label: '设备编码' },
|
{ prop: 'equipmentCode', label: '设备编码' },
|
||||||
{ prop: 'equipment', label: '投入数' },
|
{ prop: 'inQuantity', label: '投入数' },
|
||||||
{ prop: 'productionLine', label: '产出数' },
|
{ prop: 'outQuantity', label: '产出数' },
|
||||||
{ prop: 'workshopSection', label: '是否运行' },
|
{
|
||||||
{ prop: 'equipment22', label: '状态' },
|
prop: 'run',
|
||||||
// { prop: 'alarmGrade', label: '报警级别', filter: publicFormatter(this.DICT_TYPE.EQU_ALARM_LEVEL) },
|
label: '是否运行',
|
||||||
{ prop: 'productionLine', label: '是否故障' },
|
filter: (val) => (val != null ? (val ? '是' : '否') : ''),
|
||||||
{ prop: 'workshopSection', label: '生产量记录时间', filter: parseTime },
|
},
|
||||||
{ prop: 'equipment1', label: '状态记录时间', filter: parseTime },
|
{
|
||||||
|
prop: 'status',
|
||||||
|
label: '状态',
|
||||||
|
filter: (val) =>
|
||||||
|
val != null ? ['正常', '计划停机', '故障'][val] : '',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'error',
|
||||||
|
label: '是否故障',
|
||||||
|
filter: (val) => (val != null ? (val ? '是' : '否') : ''),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'quantityRecordTime',
|
||||||
|
label: '生产量记录时间',
|
||||||
|
filter: parseTime,
|
||||||
|
},
|
||||||
|
{ prop: 'statusRecordTime', label: '状态记录时间', filter: parseTime },
|
||||||
{ prop: 'opt1', label: '状态可视化', name: '查看', subcomponent: btn },
|
{ prop: 'opt1', label: '状态可视化', name: '查看', subcomponent: btn },
|
||||||
{ prop: 'opt2', label: '参数监控', name: '查看', subcomponent: btn } // TODO: 是否换成按钮, 群里问
|
{ prop: 'opt2', label: '参数监控', name: '查看', subcomponent: btn },
|
||||||
// { prop: 'remark', label: '备注' },
|
|
||||||
],
|
],
|
||||||
searchBarFormConfig: [
|
searchBarForm: {
|
||||||
{
|
productionLineId: null,
|
||||||
type: 'input',
|
equipmentId: null,
|
||||||
label: '设备名',
|
|
||||||
placeholder: '请输入设备名称',
|
|
||||||
param: 'equipmentName',
|
|
||||||
},
|
},
|
||||||
// 时间段
|
|
||||||
{
|
|
||||||
type: 'datePicker',
|
|
||||||
label: '时间段',
|
|
||||||
dateType: 'daterange', // datetimerange
|
|
||||||
// format: 'yyyy-MM-dd HH:mm:ss',
|
|
||||||
format: 'yyyy-MM-dd',
|
|
||||||
// valueFormat: 'timestamp',
|
|
||||||
valueFormat: 'yyyy-MM-dd HH:mm:ss',
|
|
||||||
rangeSeparator: '-',
|
|
||||||
startPlaceholder: '开始日期',
|
|
||||||
endPlaceholder: '结束日期',
|
|
||||||
defaultTime: ['00:00:00', '23:59:59'],
|
|
||||||
param: 'recordTime',
|
|
||||||
// defaultSelect: [
|
|
||||||
// new Date(y, m, d)
|
|
||||||
// .toLocaleString()
|
|
||||||
// .split('/')
|
|
||||||
// .map((item, index) => {
|
|
||||||
// if (index == 1 || index == 2) return item.padStart(2, '0');
|
|
||||||
// return item;
|
|
||||||
// })
|
|
||||||
// .join('-'),
|
|
||||||
// new Date(y, m, d, 23, 59, 59)
|
|
||||||
// .toLocaleString()
|
|
||||||
// .split('/')
|
|
||||||
// .map((item, index) => {
|
|
||||||
// if (index == 1 || index == 2) return item.padStart(2, '0');
|
|
||||||
// return item;
|
|
||||||
// })
|
|
||||||
// .join('-'),
|
|
||||||
// ],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'button',
|
|
||||||
btnName: '查询',
|
|
||||||
name: 'search',
|
|
||||||
color: 'primary',
|
|
||||||
},
|
|
||||||
// {
|
|
||||||
// type: 'separate',
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// type: this.$auth.hasPermi('equipment:spare-parts-config:create')
|
|
||||||
// ? 'button'
|
|
||||||
// : '',
|
|
||||||
// btnName: '新增',
|
|
||||||
// name: 'add',
|
|
||||||
// plain: true,
|
|
||||||
// color: 'success',
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// type: this.$auth.hasPermi('equipment:spare-parts-config:export')
|
|
||||||
// ? 'button'
|
|
||||||
// : '',
|
|
||||||
// btnName: '导出',
|
|
||||||
// name: 'export',
|
|
||||||
// color: 'warning',
|
|
||||||
// },
|
|
||||||
],
|
|
||||||
// 是否显示弹出层
|
// 是否显示弹出层
|
||||||
open: false,
|
open: false,
|
||||||
// 查询参数
|
// 查询参数
|
||||||
queryParams: {
|
queryParams: {
|
||||||
pageNo: 1,
|
pageNo: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
lineId: null,
|
|
||||||
equipmentId: null,
|
equipmentId: null,
|
||||||
|
productionLineId: null,
|
||||||
},
|
},
|
||||||
basePath: '/base/equipment-alarm-log',
|
list: [],
|
||||||
list: []
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
created() {
|
|
||||||
// this.getList();
|
|
||||||
},
|
|
||||||
methods: {
|
methods: {
|
||||||
handleEmitFun(val) {
|
handleEmitFun(val) {
|
||||||
console.log('你好', val)
|
console.log('你好', val);
|
||||||
if (val.action === '状态可视化') {
|
if (val.action === '状态可视化') {
|
||||||
// 状态可视化
|
// 状态可视化
|
||||||
} else {
|
} else {
|
||||||
@ -215,15 +141,19 @@ export default {
|
|||||||
getList() {
|
getList() {
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
// 执行查询
|
// 执行查询
|
||||||
this.recv(this.queryParams).then((response) => {
|
this.http(
|
||||||
|
'/monitoring/equipment-monitor/realtime-page',
|
||||||
|
'get',
|
||||||
|
this.queryParams
|
||||||
|
).then((response) => {
|
||||||
this.list = response.data.list;
|
this.list = response.data.list;
|
||||||
this.total = response.data.total;
|
this.total = response.data.total;
|
||||||
this.loading = false;
|
this.loading = false;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
successSubmit() {
|
successSubmit() {
|
||||||
this.cancel()
|
this.cancel();
|
||||||
this.getList()
|
this.getList();
|
||||||
},
|
},
|
||||||
/** 取消按钮 */
|
/** 取消按钮 */
|
||||||
cancel() {
|
cancel() {
|
||||||
@ -270,7 +200,7 @@ export default {
|
|||||||
},
|
},
|
||||||
/** 提交按钮 */
|
/** 提交按钮 */
|
||||||
submitForm() {
|
submitForm() {
|
||||||
this.$refs.addOrUpdate.dataFormSubmit()
|
this.$refs.addOrUpdate.dataFormSubmit();
|
||||||
// this.$refs['form'].validate((valid) => {
|
// this.$refs['form'].validate((valid) => {
|
||||||
// if (!valid) {
|
// if (!valid) {
|
||||||
// return;
|
// return;
|
||||||
@ -297,8 +227,8 @@ export default {
|
|||||||
const id = row.id;
|
const id = row.id;
|
||||||
this.$modal
|
this.$modal
|
||||||
.confirm('是否确认删除记录"' + row.name + '"?')
|
.confirm('是否确认删除记录"' + row.name + '"?')
|
||||||
.then(function () {
|
.then(() => {
|
||||||
return this.delete({ id });
|
return this.del({ id });
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
this.getList();
|
this.getList();
|
||||||
|
@ -61,6 +61,8 @@
|
|||||||
v-if="open"
|
v-if="open"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
v-model="queryParams.equipmentId"
|
v-model="queryParams.equipmentId"
|
||||||
|
filterable
|
||||||
|
clearable
|
||||||
placeholder="请选择一个设备">
|
placeholder="请选择一个设备">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="eq in eqList"
|
v-for="eq in eqList"
|
||||||
|
@ -94,12 +94,19 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Gantt from './chart';
|
import Gantt from './chart';
|
||||||
|
import moment from 'moment';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'SGStatus',
|
name: 'SGStatus',
|
||||||
components: {},
|
components: {},
|
||||||
props: {},
|
props: {},
|
||||||
data() {
|
data() {
|
||||||
|
const today = new Date();
|
||||||
|
const todayStart = new Date(
|
||||||
|
today.getFullYear(),
|
||||||
|
today.getMonth(),
|
||||||
|
today.getDate()
|
||||||
|
);
|
||||||
return {
|
return {
|
||||||
chart: null,
|
chart: null,
|
||||||
searchBarFormConfig: [
|
searchBarFormConfig: [
|
||||||
@ -129,6 +136,7 @@ export default {
|
|||||||
placeholder: '选择日期',
|
placeholder: '选择日期',
|
||||||
param: 'recordTime',
|
param: 'recordTime',
|
||||||
required: true,
|
required: true,
|
||||||
|
defaultSelect: moment(todayStart).format('YYYY-MM-DD HH:mm:ss'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'button',
|
type: 'button',
|
||||||
@ -369,7 +377,10 @@ export default {
|
|||||||
const { code, data } = await this.$axios({
|
const { code, data } = await this.$axios({
|
||||||
url: '/monitoring/equipment-monitor/status-series',
|
url: '/monitoring/equipment-monitor/status-series',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: this.queryParams,
|
params: {
|
||||||
|
recordTime: this.queryParams.recordTime,
|
||||||
|
equipmentId: this.queryParams.equipmentId,
|
||||||
|
},
|
||||||
});
|
});
|
||||||
if (code == 0) {
|
if (code == 0) {
|
||||||
const newEqlist = this.objectToArray(data);
|
const newEqlist = this.objectToArray(data);
|
||||||
|
@ -193,7 +193,8 @@ export default {
|
|||||||
this.$auth.hasPermi('base:order-manage:addWorkOrder')
|
this.$auth.hasPermi('base:order-manage:addWorkOrder')
|
||||||
? {
|
? {
|
||||||
type: 'add',
|
type: 'add',
|
||||||
btnName: '新增工单',
|
btnName: '新增',
|
||||||
|
showTip: '新增工单',
|
||||||
showParam: {
|
showParam: {
|
||||||
type: '|',
|
type: '|',
|
||||||
data: [
|
data: [
|
||||||
@ -219,7 +220,8 @@ export default {
|
|||||||
this.$auth.hasPermi('base:order-manage:bindWorkOrder')
|
this.$auth.hasPermi('base:order-manage:bindWorkOrder')
|
||||||
? {
|
? {
|
||||||
type: 'bind',
|
type: 'bind',
|
||||||
btnName: '绑定工单',
|
btnName: '绑定',
|
||||||
|
showTip: '绑定工单',
|
||||||
showParam: {
|
showParam: {
|
||||||
type: '|',
|
type: '|',
|
||||||
data: [
|
data: [
|
||||||
@ -245,7 +247,8 @@ export default {
|
|||||||
this.$auth.hasPermi('base:order-manage:bindWorkOrder')
|
this.$auth.hasPermi('base:order-manage:bindWorkOrder')
|
||||||
? {
|
? {
|
||||||
type: 'complete',
|
type: 'complete',
|
||||||
btnName: '完成订单',
|
btnName: '完成',
|
||||||
|
showTip: '完成订单',
|
||||||
showParam: {
|
showParam: {
|
||||||
type: '|',
|
type: '|',
|
||||||
data: [
|
data: [
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
<method-btn
|
<method-btn
|
||||||
v-if="tableBtn.length"
|
v-if="tableBtn.length"
|
||||||
slot="handleBtn"
|
slot="handleBtn"
|
||||||
:width="250"
|
:width="140"
|
||||||
label="操作"
|
label="操作"
|
||||||
:method-list="tableBtn"
|
:method-list="tableBtn"
|
||||||
@clickBtn="handleClick"
|
@clickBtn="handleClick"
|
||||||
@ -160,19 +160,52 @@ export default {
|
|||||||
this.$auth.hasPermi('base:order-completion-monitoring:orderDet')
|
this.$auth.hasPermi('base:order-completion-monitoring:orderDet')
|
||||||
? {
|
? {
|
||||||
type: 'orderDetail',
|
type: 'orderDetail',
|
||||||
btnName: '工单详情'
|
btnName: '工单',
|
||||||
|
showTip: '工单详情',
|
||||||
|
showParam: {
|
||||||
|
type: '&',
|
||||||
|
data: [
|
||||||
|
{
|
||||||
|
type: 'more',
|
||||||
|
name: 'workOrderNum',
|
||||||
|
value: 1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
: undefined,
|
: undefined,
|
||||||
this.$auth.hasPermi('base:order-completion-monitoring:qualityDet')
|
this.$auth.hasPermi('base:order-completion-monitoring:qualityDet')
|
||||||
? {
|
? {
|
||||||
type: 'qualityDetail',
|
type: 'qualityDetail',
|
||||||
btnName: '质量详情'
|
btnName: '质量',
|
||||||
|
showTip: '质量详情',
|
||||||
|
showParam: {
|
||||||
|
type: '&',
|
||||||
|
data: [
|
||||||
|
{
|
||||||
|
type: 'more',
|
||||||
|
name: 'workOrderNum',
|
||||||
|
value: 1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
: undefined,
|
: undefined,
|
||||||
this.$auth.hasPermi('base:order-completion-monitoring:sendOut')
|
this.$auth.hasPermi('base:order-completion-monitoring:sendOut')
|
||||||
? {
|
? {
|
||||||
type: 'sendOutDetail',
|
type: 'sendOutDetail',
|
||||||
btnName: '发货详情'
|
btnName: '发货',
|
||||||
|
showTip: '发货详情',
|
||||||
|
showParam: {
|
||||||
|
type: '&',
|
||||||
|
data: [
|
||||||
|
{
|
||||||
|
type: 'more',
|
||||||
|
name: 'workOrderNum',
|
||||||
|
value: 1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
: undefined
|
: undefined
|
||||||
].filter((v) => v),
|
].filter((v) => v),
|
||||||
|
Loading…
Reference in New Issue
Block a user