<template>
|
<div class="notice">
|
<el-dialog
|
v-model="dialogVisible"
|
:title="state.title"
|
width="75%"
|
:before-close="handleClose"
|
:close-on-press-escape="false"
|
:close-on-click-modal="false"
|
>
|
<el-form :model="state.form" size="default" ref="superRef" :rules="state.formRules" label-width="150px">
|
<el-form-item v-if="state.isAdmin" label="企业:" prop="companyId">
|
<el-select v-model="state.form.companyId" placeholder="请选择" :disabled="state.title =='查看'" clearable @change="getDeptList">
|
<el-option
|
v-for="item in state.companyList"
|
:key="item.id"
|
:label="item.name"
|
:value="item.id">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-row>
|
<el-col :span="8">
|
<el-form-item label="设备名称:" prop="deviceName">
|
<el-input v-model.trim="state.form.deviceName" :disabled="state.title =='查看'"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="设备编号:" prop="deviceNumber">
|
<el-input v-model.trim="state.form.deviceNumber" :disabled="state.title =='查看'"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="表单编号:" prop="number">
|
<el-input v-model.trim="state.form.number" :disabled="state.title =='查看'"></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
<el-table :data="state.maintainList" :border="true" class="customedTable" :span-method="objectSpanMethod" style="margin-bottom: 30px">
|
<el-table-column label="保养内容" align="center" width="100">
|
<template #default="scope">
|
保养内容
|
</template>
|
</el-table-column>
|
<el-table-column label="标准" prop="standard" align="center">
|
<template #default="scope">
|
<p style="margin: 0;text-align: left">{{scope.row.standard}}</p>
|
</template>
|
</el-table-column>
|
<el-table-column label="保养等级" prop="level" align="center"/>
|
<el-table-column label="结论" prop="conclusion" align="center">
|
<template #default="scope">
|
<el-input
|
v-model.trim="scope.row.conclusion"
|
size="large"
|
type="textarea"
|
style="width: 100%"
|
:readonly="state.title =='查看'"
|
>
|
</el-input>
|
</template>
|
</el-table-column>
|
<el-table-column label="整改措施" prop="rectificationMeasures" align="center">
|
<template #default="scope">
|
<el-input
|
v-model.trim="scope.row.rectificationMeasures"
|
size="large"
|
type="textarea"
|
style="width: 100%"
|
:readonly="state.title =='查看'"
|
>
|
</el-input>
|
</template>
|
</el-table-column>
|
</el-table>
|
<el-form-item label="设备保养验收结论:" prop="conclusion">
|
<el-input v-model.trim="state.form.conclusion" type="textarea" :autosize="{ minRows: 2 }" :readonly="state.title =='查看'"></el-input>
|
</el-form-item>
|
一级保养
|
<el-row>
|
<el-col :span="6">
|
<el-form-item label="操作工:" prop="operatorsOne">
|
<el-select clearable v-model="state.form.operatorsOne" :disabled="state.title =='查看'" value-key="userId" filterable multiple placeholder="操作工" style="width: 100%">
|
<el-option
|
v-for="item in state.userList"
|
:key="item.userId"
|
:label="item.name"
|
:value="item"
|
/>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="日期:" prop="operateDateOne">
|
<el-date-picker
|
v-model="state.form.operateDateOne"
|
type="date"
|
value-format="YYYY-MM-DD"
|
placeholder="请选择日期"
|
:disabled="state.title =='查看'"
|
/>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="检查:" prop="checkersOne">
|
<el-select clearable v-model="state.form.checkersOne" :disabled="state.title =='查看'" value-key="userId" filterable multiple placeholder="检查" style="width: 100%">
|
<el-option
|
v-for="item in state.userList"
|
:key="item.userId"
|
:label="item.name"
|
:value="item"
|
/>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="日期:" prop="checkDateOne">
|
<el-date-picker
|
v-model="state.form.checkDateOne"
|
type="date"
|
value-format="YYYY-MM-DD"
|
placeholder="请选择日期"
|
:disabled="state.title =='查看'"
|
/>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
二级保养
|
<el-row>
|
<el-col :span="6">
|
<el-form-item label="操作工:" prop="operatorsTwo">
|
<el-select clearable v-model="state.form.operatorsTwo" :disabled="state.title =='查看'" value-key="userId" filterable multiple placeholder="操作工" style="width: 100%">
|
<el-option
|
v-for="item in state.userList"
|
:key="item.userId"
|
:label="item.name"
|
:value="item"
|
/>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="日期:" prop="operateDateTwo">
|
<el-date-picker
|
v-model="state.form.operateDateTwo"
|
type="date"
|
value-format="YYYY-MM-DD"
|
placeholder="请选择日期"
|
:disabled="state.title =='查看'"
|
/>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="检查:" prop="checkersTwo">
|
<el-select clearable v-model="state.form.checkersTwo" :disabled="state.title =='查看'" value-key="userId" filterable multiple placeholder="检查" style="width: 100%">
|
<el-option
|
v-for="item in state.userList"
|
:key="item.userId"
|
:label="item.name"
|
:value="item"
|
/>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="日期:" prop="checkDateTwo">
|
<el-date-picker
|
v-model="state.form.checkDateTwo"
|
type="date"
|
value-format="YYYY-MM-DD"
|
placeholder="请选择日期"
|
:disabled="state.title =='查看'"
|
/>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
</el-form>
|
<template #footer v-if="state.title !='查看'">
|
<span class="dialog-footer">
|
<el-button @click="handleClose" size="default">取 消</el-button>
|
<el-button type="primary" @click="onSubmit" size="default" v-preReClick>确认</el-button>
|
</span>
|
</template>
|
</el-dialog>
|
</div>
|
</template>
|
<script setup>
|
import {reactive, ref, toRefs, defineEmits, nextTick, onMounted} from 'vue'
|
import {ElMessage} from "element-plus";
|
import {Base64} from "js-base64"
|
import {getToken} from "@/utils/auth";
|
import {
|
addInternalAuditCheck, getInternalAuditCheckInfo,
|
updateInternalAuditCheck
|
} from "@/api/innerReview/meetingReview";
|
import {getDepart} from "@/api/orgStructure/depart";
|
import {listUser} from "@/api/system/user";
|
import {getMaintenanceServiceDetail, updateMaintenanceService} from "@/api/infrastructureMng/ledger";
|
|
const emit = defineEmits(["getList"]);
|
const dialogVisible = ref(false)
|
const superRef = ref()
|
const checkFiles = (rule, value, callback) => {
|
if (state.fileList.length == 0) {
|
callback(new Error('请上传文件'))
|
} else {
|
callback()
|
}
|
}
|
const state = reactive({
|
title: '',
|
form: {
|
id: null,
|
companyId: null,
|
deviceName: '',
|
deviceNumber: '',
|
number: '',
|
annualMaintenanceServiceContentList: [],
|
annualMaintenanceServiceUserList: [],
|
conclusion: '',
|
operatorsOne: [],
|
operateDateOne: '',
|
checkersOne: [],
|
checkDateOne: '',
|
operatorsTwo: [],
|
operateDateTwo: '',
|
checkersTwo: [],
|
checkDateTwo: '',
|
delServiceUserIds: []
|
},
|
oldServiceUsers: [],
|
maintainList: [
|
{
|
id: null,
|
serviceType: 1,
|
standard: '1、设备内外清洁,无黄油、油垢、锈蚀,油质符合要求。',
|
level: '一、二级',
|
conclusion: '',
|
rectificationMeasures: ''
|
},{
|
id: null,
|
serviceType: 2,
|
standard: '2、根据设备情况、进行部分零件拆解、清洗、修复。对各紧固零件进行检查、修复,各部配合间隙进行适当调整。',
|
level: '一、二级',
|
conclusion: '',
|
rectificationMeasures: ''
|
},{
|
id: null,
|
serviceType: 3,
|
standard: '3、清洗毛毡、油线、滤油器;清理油路、管道、加足润滑油和润滑脂,补齐各种缺欠,保持无黄袍。',
|
level: '一、二级',
|
conclusion: '',
|
rectificationMeasures: ''
|
},{
|
id: null,
|
serviceType: 4,
|
standard: '4、对设备所有二操纵机构,各种挡铁、限位开关调修至灵敏可靠,将各种防尘、防屑、装置清洗修复至完整好用。',
|
level: '一、二级',
|
conclusion: '',
|
rectificationMeasures: ''
|
},{
|
id: null,
|
serviceType: 5,
|
standard: '5、各润滑部位进行全部清洗,结合换油周期进行换油,油质油量符合要求。',
|
level: '二级',
|
conclusion: '',
|
rectificationMeasures: ''
|
},{
|
id: null,
|
serviceType: 6,
|
standard: '6、检查设备的技术状况,调整安装水平,根据设备的使用情况进行全部或部分解体检查、清洗,调整各部分的配合精度。',
|
level: '二级',
|
conclusion: '',
|
rectificationMeasures: ''
|
},{
|
id: null,
|
serviceType: 7,
|
standard: '7、修复或更换磨损部件、零件,并为下一次二保或大修做好备件资料准备。',
|
level: '二级',
|
conclusion: '',
|
rectificationMeasures: ''
|
},{
|
id: null,
|
serviceType: 8,
|
standard: '8、零部件完整,随机附件基本齐全并保管好。',
|
level: '二级',
|
conclusion: '',
|
rectificationMeasures: ''
|
}
|
],
|
formRules:{
|
companyId: [{ required: true, message: '请选择企业', trigger: 'blur' }],
|
deviceName: [{ required: true, message: '请填写设备名称', trigger: 'blur' }],
|
deviceNumber: [{ required: true, message: '请填写设备编号', trigger: 'blur' }],
|
number: [{ required: true, message: '请填写表单编号', trigger: 'blur' }]
|
},
|
isAdmin: false,
|
companyList: [],
|
userList: []
|
})
|
onMounted(() => {
|
|
});
|
|
const openDialog = async (type, value,companyId, isAdmin, companyList) => {
|
state.isAdmin = isAdmin
|
if(isAdmin){
|
state.companyList = companyList
|
}
|
await getUserList(companyId)
|
state.title = type === 'add' ? '新增' : type ==='edit' ? '编辑' : '查看'
|
state.form.companyId = companyId
|
if(state.title == '编辑'||state.title == '查看'){
|
await getInfo(value.id)
|
}
|
dialogVisible.value = true
|
}
|
|
const objectSpanMethod = ({row, column, rowIndex, columnIndex,}) => {
|
if (columnIndex === 0) {
|
if (rowIndex === 0) {
|
return {
|
rowspan: state.maintainList.length,
|
colspan: 1
|
}
|
} else {
|
return {
|
rowspan: 0,
|
colspan: 0
|
}
|
}
|
}
|
}
|
|
const onSubmit = async () => {
|
const valid = await superRef.value.validate();
|
if(valid){
|
const data = JSON.parse(JSON.stringify(state.form))
|
data.operatorsOne = data.operatorsOne.map(i=>{
|
return {
|
id: i.id || null,
|
annualMaintenanceServiceId: i.annualMaintenanceServiceId || null,
|
userId: i.userId,
|
userName: i.name,
|
userType: 1,
|
checkDate: data.operateDateOne
|
}
|
})
|
data.checkersOne = data.checkersOne.map(i=>{
|
return {
|
id: i.id || null,
|
annualMaintenanceServiceId: i.annualMaintenanceServiceId || null,
|
userId: i.userId,
|
userName: i.name,
|
userType: 2,
|
checkDate: data.checkDateOne
|
}
|
})
|
data.operatorsTwo = data.operatorsTwo.map(i=>{
|
return {
|
id: i.id || null,
|
annualMaintenanceServiceId: i.annualMaintenanceServiceId || null,
|
userId: i.userId,
|
userName: i.name,
|
userType: 3,
|
checkDate: data.operateDateTwo
|
}
|
})
|
data.checkersTwo = data.checkersTwo.map(i=>{
|
return {
|
id: i.id || null,
|
annualMaintenanceServiceId: i.annualMaintenanceServiceId || null,
|
userId: i.userId,
|
userName: i.name,
|
userType: 4,
|
checkDate: data.checkDateTwo
|
}
|
})
|
data.annualMaintenanceServiceUserList = [...data.operatorsOne,...data.checkersOne,...data.operatorsTwo,...data.checkersTwo]
|
data.delServiceUserIds = state.oldServiceUsers.filter(i =>!data.annualMaintenanceServiceUserList.some(item=>item.id == i.id)).map(i=>i.id)
|
data.annualMaintenanceServiceContentList = state.maintainList.map(item=>{
|
return {
|
id: item.id,
|
serviceType: item.serviceType,
|
conclusion: item.conclusion,
|
rectificationMeasures: item.rectificationMeasures
|
}
|
})
|
delete data.operatorsOne
|
delete data.checkersOne
|
delete data.operatorsTwo
|
delete data.checkersTwo
|
delete data.operateDateOne
|
delete data.checkDateOne
|
delete data.operateDateTwo
|
delete data.checkDateTwo
|
if(state.title == '新增'){
|
delete data.id
|
const res = await updateMaintenanceService(data)
|
if(res.code == 200){
|
ElMessage.success(res.message)
|
emit('getList')
|
handleClose()
|
dialogVisible.value = false;
|
}else{
|
ElMessage.warning(res.message)
|
}
|
}else{
|
const res = await updateMaintenanceService(data)
|
if(res.code == 200){
|
ElMessage.success(res.message)
|
emit('getList')
|
handleClose()
|
dialogVisible.value = false;
|
}else{
|
ElMessage.warning(res.message)
|
}
|
}
|
}
|
}
|
|
const getInfo = async (id)=> {
|
const res = await getMaintenanceServiceDetail({id: id})
|
if(res.code == 200){
|
Object.keys(state.form).forEach(key => {
|
if (key in res.data) {
|
state.form[key] = res.data[key]
|
}
|
})
|
state.oldServiceUsers = state.form.annualMaintenanceServiceUserList?.map(item=>{
|
return {
|
id: item.id,
|
annualMaintenanceServiceId: item.annualMaintenanceServiceId,
|
userId: item.userId,
|
name: item.userName,
|
userType: item.userType,
|
checkDate: item.checkDate.substring(0,10)
|
}
|
})
|
state.form.operatorsOne = state.oldServiceUsers.filter(i=>i.userType == 1)
|
state.form.checkersOne = state.oldServiceUsers.filter(i=>i.userType == 2)
|
state.form.operatorsTwo = state.oldServiceUsers.filter(i=>i.userType == 3)
|
state.form.checkersTwo = state.oldServiceUsers.filter(i=>i.userType == 4)
|
state.form.operateDateOne = state.form.operatorsOne[0].checkDate || ''
|
state.form.checkDateOne = state.form.checkersOne[0].checkDate || ''
|
state.form.operateDateTwo = state.form.operatorsTwo[0].checkDate || ''
|
state.form.checkDateTwo = state.form.checkersTwo[0].checkDate || ''
|
state.maintainList = state.maintainList.map(item=>{
|
return {
|
id: state.form.annualMaintenanceServiceContentList.find(i=>i.serviceType == item.serviceType)?.id,
|
serviceType: item.serviceType,
|
standard: item.standard,
|
level: item.level,
|
conclusion: state.form.annualMaintenanceServiceContentList.find(i=>i.serviceType == item.serviceType)?.conclusion,
|
rectificationMeasures: state.form.annualMaintenanceServiceContentList.find(i=>i.serviceType == item.serviceType)?.rectificationMeasures,
|
}
|
})
|
}else{
|
ElMessage.warning(res.message)
|
}
|
}
|
|
const getDeptList = async ()=>{
|
state.form.operatorsOne = []
|
state.form.checkersOne = []
|
state.form.operatorsTwo = []
|
state.form.checkersTwo = []
|
await getUserList(state.form.companyId)
|
}
|
|
|
const getUserList = async (companyId)=> {
|
const res = await listUser({pageIndex: 1,pageSize: 999,companyId: companyId})
|
if(res.code == 200){
|
state.userList = res.data.list?res.data.list.map(item=>{
|
const user = item.id
|
const {id, ...data} = item
|
return {
|
...data,
|
userId: user
|
}
|
}):[]
|
}else{
|
ElMessage.warning(res.message)
|
}
|
}
|
|
const handleClose = () => {
|
state.form = {
|
id: null,
|
companyId: null,
|
deviceName: '',
|
deviceNumber: '',
|
number: '',
|
annualMaintenanceServiceContentList: [],
|
annualMaintenanceServiceUserList: [],
|
conclusion: '',
|
operatorsOne: [],
|
operateDateOne: '',
|
checkersOne: [],
|
checkDateOne: '',
|
operatorsTwo: [],
|
operateDateTwo: '',
|
checkersTwo: [],
|
checkDateTwo: '',
|
delServiceUserIds: []
|
}
|
state.maintainList = state.maintainList.map(i=>{
|
return {
|
serviceType: i.serviceType,
|
standard: i.standard,
|
level: i.level,
|
conclusion: '',
|
rectificationMeasures: ''
|
}
|
})
|
superRef.value.clearValidate();
|
superRef.value.resetFields()
|
dialogVisible.value = false;
|
}
|
|
defineExpose({
|
openDialog
|
});
|
|
</script>
|
|
<style scoped lang="scss">
|
.notice{
|
:deep(.el-form .el-form-item__label) {
|
font-size: 15px;
|
}
|
.file {
|
display: flex;
|
flex-direction: column;
|
align-items: flex-start;
|
}
|
}
|
</style>
|
<style lang="scss">
|
.customedTable{
|
.el-table__cell{
|
padding: 2px 0 !important;
|
font-size: 14px !important;
|
}
|
.cell{
|
padding: 0 2px !important;
|
font-size: 14px !important;
|
}
|
}
|
</style>
|