Compare commits

...

10 Commits

34 changed files with 895 additions and 499 deletions

View File

@ -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'
})
}

View File

@ -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'
})
}

View File

@ -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);
}, },

View File

@ -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

View File

@ -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,

View File

@ -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' }],
}, },
], ],
], ],

View File

@ -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">

View File

@ -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',

View File

@ -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

View File

@ -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(() => { });
} }
}, },
}; };

View File

@ -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;
.normalButton { transition: all 0.3s;
background-color: none; border: none;
&.activeButton,
&:hover {
background: #0b58ff;
color: #fff;
}
} }
</style> </style>

View File

@ -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 {

View File

@ -28,59 +28,96 @@
<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,
exportURL: exportEqAnalysisExcel, exportURL: exportEqAnalysisExcel,
}, },
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>

View File

@ -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: [],
}, },
// //

View File

@ -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();

View File

@ -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,

View File

@ -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();

View File

@ -105,6 +105,7 @@ export default {
label: '设备', label: '设备',
placeholder: '请选择设备', placeholder: '请选择设备',
param: 'equipmentId', param: 'equipmentId',
filterable: true
}, },
// //
{ {

View File

@ -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);
}); });

View File

@ -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;

View File

@ -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

View File

@ -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(() => {});

View File

@ -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',

View File

@ -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(() => {});

View 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>

View File

@ -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: '' },
], ],

View File

@ -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: '备注',

View File

@ -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();

View 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>

View File

@ -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();

View File

@ -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"

View File

@ -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);

View File

@ -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: [

View File

@ -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),