455 lines
13 KiB
Vue
Raw Normal View History

2022-06-08 14:51:11 +08:00
<template>
<!-- 设备维保 -->
<vue-scroll style="height: 100%">
<div class="alarmInfo">
<div class="title whiteBlock">
<el-form :inline="true" size="medium" class="demo-form-inline">
<!-- <el-form-item label="设备编号">
<el-input
v-model="formInline.user"
placeholder="请输入设备编号"
></el-input>
</el-form-item> -->
<el-form-item :label="$t('message.lifter.devName')">
<el-select
v-model="devSn"
:placeholder="
$t('message.lifter.pleaseSelect') + $t('message.lifter.devName')
"
clearable
>
<el-option
:label="item.devName"
:value="item.devSn"
v-for="(item, index) in towerList"
:key="index"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="维保日期">
2022-06-08 14:51:11 +08:00
<el-date-picker
@change="getTime"
2022-06-08 14:51:11 +08:00
v-model="time"
type="daterange"
value-format="yyyy-MM-dd"
:range-separator="$t('message.lifter.to')"
:start-placeholder="$t('message.lifter.startDate')"
:end-placeholder="$t('message.lifter.deadline')"
>
</el-date-picker>
</el-form-item>
2022-06-08 14:51:11 +08:00
<el-form-item>
<el-button type="primary" @click="getMaintenanceList" plain>{{
2023-03-14 16:05:42 +08:00
$t('message.lifter.demand')
2022-06-08 14:51:11 +08:00
}}</el-button>
<el-button type="warning" plain @click="refresh">{{
2023-03-14 16:05:42 +08:00
$t('message.lifter.refresh')
2022-06-08 14:51:11 +08:00
}}</el-button>
<el-button type="primary" @click="addMaintenanceBtn">{{
2023-03-14 16:05:42 +08:00
$t('message.videoManage.add')
2022-06-08 14:51:11 +08:00
}}</el-button>
</el-form-item>
</el-form>
</div>
<div class="content whiteBlock">
<el-table
:data="tableData"
class="tables"
style="width: 100%"
height="600px"
>
<el-table-column prop="devName" :label="$t('message.lifter.devName')">
</el-table-column>
<el-table-column prop="devSn" :label="$t('message.lifter.devNumber')">
</el-table-column>
<el-table-column
prop="maintenanceUnit"
:label="$t('message.lifter.maintenanceUnit')"
>
</el-table-column>
<el-table-column
prop="personLiable"
:label="$t('message.lifter.maintenanceSupervisor')"
>
</el-table-column>
<el-table-column
prop="maintenanceTime"
:label="$t('message.lifter.maintenanceTime')"
>
</el-table-column>
<!-- <el-table-column prop="date" :label="$t('message.lifter.reportTime')"> </el-table-column> -->
<el-table-column
prop="maintenanceStatus"
:label="$t('message.lifter.maintenanceState')"
>
<template slot-scope="scope">
2023-03-14 16:05:42 +08:00
{{ scope.row.maintenanceStatus == 1 ? '正常' : '不正常' }}
2022-06-08 14:51:11 +08:00
</template>
</el-table-column>
<el-table-column prop="maintenanceImage" label="维保照片">
<template slot-scope="scope">
<img
:src="fileUrl + scope.row.maintenanceImage"
style="width: 40px; heigth: auto"
/>
</template>
</el-table-column>
<!-- <el-table-column
prop="maintenanceRecord"
:label="$t('message.lifter.maintenanceRecord')"
>
</el-table-column> -->
<el-table-column prop="remark" :label="$t('message.lifter.describe')">
</el-table-column>
</el-table>
<el-pagination
class="pagerBox"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="pageNo"
:page-sizes="$store.state.PAGESIZRS"
:page-size="pageSize"
layout="total, sizes, prev, pager, next"
2023-03-14 16:05:42 +08:00
:total="Number(total)"
2022-06-08 14:51:11 +08:00
background
></el-pagination>
</div>
<el-dialog
:modal-append-to-body="false"
title="新增维保信息"
:visible.sync="dialogVisible"
:before-close="handleClose"
width="667px"
>
<div class="dialog_content">
<el-form
:model="maintenanceForm"
ref="maintenanceForm"
label-width="120px"
class="demo-ruleForm"
2023-03-14 16:05:42 +08:00
:rules="rules"
size="medium"
2022-06-08 14:51:11 +08:00
>
<el-form-item label="维保设备" prop="devSn">
<el-select
v-model="maintenanceForm.devSn"
:placeholder="
$t('message.lifter.pleaseSelect') +
$t('message.lifter.devName')
"
style="width: 100%"
>
<el-option
:label="item.devName"
clearable
:value="item.devSn"
v-for="(item, index) in towerList"
:key="index"
style="width: 100%"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="维保后状态" prop="maintenanceStatus">
<el-select
v-model="maintenanceForm.maintenanceStatus"
:placeholder="
$t('message.lifter.pleaseSelect') +
$t('message.lifter.devName')
"
style="width: 100%"
>
<el-option label="正常" :value="1"></el-option>
<el-option label="不正常" :value="0"></el-option>
</el-select>
</el-form-item>
<el-form-item label="维保时间" prop="maintenanceTime">
<el-date-picker
value-format="yyyy-MM-dd HH:mm:ss"
v-model="maintenanceForm.maintenanceTime"
type="datetime"
placeholder="选择日期时间"
style="width: 100%"
>
</el-date-picker>
</el-form-item>
<el-form-item label="维保人" prop="personLiable">
<el-input
v-model="maintenanceForm.personLiable"
placeholder="请输入"
></el-input>
<!-- <el-select
v-model="maintenanceForm.personLiable"
:placeholder="
$t('message.lifter.pleaseSelect') +
$t('message.lifter.devName')
"
style="width: 100%"
>
<el-option
:label="item.workerName"
:value="item.id"
v-for="(item, index) in managementInfoList"
:key="index"
></el-option>
</el-select> -->
</el-form-item>
<el-form-item label="维保单位" prop="maintenanceUnit">
<el-input
v-model="maintenanceForm.maintenanceUnit"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="描述" prop="remark">
<el-input
v-model="maintenanceForm.remark"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="上传图片" prop="maintenanceImage">
<el-upload
:action="uploadUrl"
list-type="picture-card"
name="files"
:show-file-list="false"
:on-success="handleAvatarSuccess"
>
<img
v-if="maintenanceForm.maintenanceImage"
:src="fileUrl + maintenanceForm.maintenanceImage"
style="width: 100%; height: 100%"
/>
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
2023-03-14 16:05:42 +08:00
<el-button @click="dialogVisible = false" size="medium"
> </el-button
>
<el-button type="primary" @click="saveBtn" size="medium"
> </el-button
>
2022-06-08 14:51:11 +08:00
</span>
</div>
</el-dialog>
</div>
</vue-scroll>
</template>
<script>
import {
getTowerListApi,
getMaintenanceListApi,
getManagementInfoListApi,
2023-03-14 16:05:42 +08:00
addMaintenanceRecordApi
} from '@/assets/js/api/towerCrane'
2022-06-08 14:51:11 +08:00
export default {
data() {
return {
2023-03-14 16:05:42 +08:00
projectSn: '',
2022-06-08 14:51:11 +08:00
towerList: [],
2023-03-14 16:05:42 +08:00
devSn: '',
2022-06-08 14:51:11 +08:00
time: [],
pageNo: 1,
pageSize: 10,
total: 0,
tableData: [],
2023-03-14 16:05:42 +08:00
uploadUrl: '',
fileUrl: '',
2022-06-08 14:51:11 +08:00
dialogVisible: false,
managementInfoList: [],
maintenanceForm: {
2023-03-14 16:05:42 +08:00
devSn: '',
2022-06-08 14:51:11 +08:00
devType: 1,
2023-03-14 16:05:42 +08:00
maintenanceTime: '',
maintenanceStatus: '',
personLiable: '',
maintenanceUnit: '',
remark: '',
maintenanceImage: ''
2022-06-08 14:51:11 +08:00
},
rules: {
2023-03-14 16:05:42 +08:00
devSn: [{ required: true, message: '请选择设备', trigger: 'change' }],
2022-06-08 14:51:11 +08:00
maintenanceStatus: [
{
required: true,
2023-03-14 16:05:42 +08:00
message: '请选择设备维保后状态',
trigger: 'change'
}
2022-06-08 14:51:11 +08:00
],
maintenanceTime: [
2023-03-14 16:05:42 +08:00
{ required: true, message: '请选择维保时间', trigger: 'change' }
2022-06-08 14:51:11 +08:00
],
personLiable: [
2023-03-14 16:05:42 +08:00
{ required: true, message: '请选择维保人', trigger: 'change' }
2022-06-08 14:51:11 +08:00
],
maintenanceImage: [
2023-03-14 16:05:42 +08:00
{ required: true, message: '请上传图片', trigger: 'change' }
]
},
maintenanceEndTime: '',
maintenanceStartTime: '',
time: [],
2023-03-14 16:05:42 +08:00
}
2022-06-08 14:51:11 +08:00
},
created() {
2023-03-14 16:05:42 +08:00
this.projectSn = this.$store.state.projectSn
this.uploadUrl = this.$store.state.UPLOADURL
this.fileUrl = this.$store.state.FILEURL
this.getTowerList()
this.getMaintenanceList()
2022-06-08 14:51:11 +08:00
},
methods: {
//选择时间
getTime(val) {
if (val || val.length > 0) {
this.maintenanceEndTime = val[1];
this.maintenanceStartTime = val[0];
} else {
this.maintenanceEndTime = "";
this.maintenanceStartTime = "";
}
},
2022-06-08 14:51:11 +08:00
//获取设备下拉
getTowerList() {
let data = {
2023-03-14 16:05:42 +08:00
projectSn: this.projectSn
}
2022-06-08 14:51:11 +08:00
getTowerListApi(data).then((res) => {
if (res.code == 200) {
2023-03-14 16:05:42 +08:00
this.towerList = res.result
2022-06-08 14:51:11 +08:00
}
2023-03-14 16:05:42 +08:00
})
2022-06-08 14:51:11 +08:00
},
//获取维保列表
getMaintenanceList() {
let data = {
devType: 1,
projectSn: this.projectSn,
devSn: this.devSn,
pageNo: this.pageNo,
pageSize: this.pageSize,
maintenanceStartTime: this.maintenanceStartTime,
maintenanceEndTime: this.maintenanceEndTime,
2023-03-14 16:05:42 +08:00
}
2022-06-08 14:51:11 +08:00
getMaintenanceListApi(data).then((res) => {
if (res.code == 200) {
2023-03-14 16:05:42 +08:00
this.tableData = res.result.records
this.total = res.result.total
2022-06-08 14:51:11 +08:00
}
2023-03-14 16:05:42 +08:00
})
2022-06-08 14:51:11 +08:00
},
//刷新
refresh() {
2023-03-14 16:05:42 +08:00
this.devSn = ''
this.pageNo = 1
this.pageSize = 10
this.getMaintenanceList()
this.time=[]
2022-06-08 14:51:11 +08:00
},
//新增按钮
addMaintenanceBtn() {
2023-03-14 16:05:42 +08:00
this.dialogVisible = true
this.getManagementInfoList()
2023-03-14 18:26:52 +08:00
this.maintenanceForm = {
devSn: '',
devType: 1,
maintenanceTime: '',
maintenanceStatus: '',
personLiable: '',
maintenanceUnit: '',
remark: '',
maintenanceImage: ''
}
2022-06-08 14:51:11 +08:00
setTimeout(() => {
2023-03-14 16:05:42 +08:00
this.$refs.maintenanceForm.clearValidate()
}, 200)
2022-06-08 14:51:11 +08:00
},
//关闭弹窗前
handleClose() {
2023-03-14 16:05:42 +08:00
this.dialogVisible = false
2022-06-08 14:51:11 +08:00
},
// 文件上传成功
handleAvatarSuccess(file) {
if (file.data.length > 0) {
2023-03-14 16:05:42 +08:00
this.maintenanceForm.maintenanceImage = file.data[0].imageUrl
2022-06-08 14:51:11 +08:00
}
},
//获取维保人
getManagementInfoList() {
let data = {
2023-03-14 16:05:42 +08:00
projectSn: this.projectSn
}
2022-06-08 14:51:11 +08:00
getManagementInfoListApi(data).then((res) => {
if (res.code == 200) {
2023-03-14 16:05:42 +08:00
this.managementInfoList = res.result
2022-06-08 14:51:11 +08:00
}
2023-03-14 16:05:42 +08:00
})
2022-06-08 14:51:11 +08:00
},
//保存按钮
saveBtn() {
2023-03-14 16:05:42 +08:00
this.$refs['maintenanceForm'].validate((valid) => {
2022-06-08 14:51:11 +08:00
if (valid) {
2023-03-14 16:05:42 +08:00
let data = this.maintenanceForm
data.projectSn = this.projectSn
2022-06-08 14:51:11 +08:00
addMaintenanceRecordApi(data).then((res) => {
if (res.code == 200) {
2023-03-14 16:05:42 +08:00
this.dialogVisible = false
this.getMaintenanceList()
2022-06-08 14:51:11 +08:00
}
2023-03-14 16:05:42 +08:00
})
2022-06-08 14:51:11 +08:00
} else {
2023-03-14 16:05:42 +08:00
return false
2022-06-08 14:51:11 +08:00
}
2023-03-14 16:05:42 +08:00
})
2022-06-08 14:51:11 +08:00
},
handleSizeChange(val) {
2023-03-14 16:05:42 +08:00
this.pageSize = val
this.getMaintenanceList()
2022-06-08 14:51:11 +08:00
},
handleCurrentChange(val) {
2023-03-14 16:05:42 +08:00
this.pageNo = val
this.getMaintenanceList()
}
}
}
2022-06-08 14:51:11 +08:00
</script>
<style lang="less" scoped>
.alarmInfo {
width: 100%;
height: 100%;
.title {
// background-color: #ffffff;
padding: 0 20px;
padding-top: 17px;
height: 70px;
box-sizing: border-box;
}
.content {
margin-top: 10px;
box-sizing: border-box;
width: 100%;
height: 720px;
// background-color: #ffffff;
}
}
.demo-ruleForm {
width: 90%;
}
2023-03-14 16:05:42 +08:00
.dialog_content {
2022-06-08 14:51:11 +08:00
margin: 0 20px;
}
2023-03-14 16:05:42 +08:00
.dialog-footer {
display: flex;
justify-content: flex-end;
2022-06-08 14:51:11 +08:00
}
</style>