projects/mes-dy #109

Merged
gtz217 merged 4 commits from projects/mes-dy into projects/mes-test 2023-11-24 09:19:28 +08:00
13 changed files with 179 additions and 51 deletions
Showing only changes of commit 9041428003 - Show all commits

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

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

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

@ -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: [
@ -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');
@ -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',
@ -417,10 +417,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: '' },
], ],