zhgdyun/src/views/projectFront/towerCrane/supervisionStation.vue

723 lines
30 KiB
Vue
Raw Normal View History

2022-06-08 14:51:11 +08:00
<template>
<div class="devfiling">
<div class="search-wrap">
<!-- <el-select v-model="devSn" style="width: 156px;margin-right: 15px" size="small" placeholder="设备名称">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select> -->
<!-- <el-button type="primary" size="small" @click="selectSchemeRecord">查询</el-button> -->
<el-button type="primary" size="small" icon="el-icon-plus" @click="showDialog = true">新增</el-button>
</div>
<div class="devfilling-table-wrap">
<el-table
class="tables"
:data="tableData"
height="400"
style="width: 100%;">
<el-table-column prop="monitorUser" label="监控人员" align="center">
</el-table-column>
<el-table-column prop="monitorAddr" label="监控地点" align="center">
</el-table-column>
<el-table-column prop="monitorContent" label="监控内容" align="center">
</el-table-column>
<!-- <el-table-column prop="safeProtectPrepare" label="安全防护用品准备情况" align="center">
</el-table-column> -->
<el-table-column prop="taskStartTime" label="作业开始时间" align="center">
</el-table-column>
<el-table-column prop="taskEndTime" label="作业结束时间" align="center">
</el-table-column>
<el-table-column prop="taskProcess" label="作业过程" align="center">
</el-table-column>
<el-table-column prop="addTime" label="添加时间" align="center">
</el-table-column>
<el-table-column width="200" label="操作">
<template slot-scope="scope">
<el-button
type="text"
size="mini"
class="primary-btn"
icon="el-icon-document"
@click="previewData(scope.row)"
>详细</el-button>
<el-button
type="text"
size="mini"
class="primary-btn"
icon="el-icon-edit-outline"
@click="editData(scope.row)"
>编辑</el-button>
<el-button
size="mini"
type="text"
class="delete-btn"
icon="el-icon-delete"
@click="deleteData(scope.row)"
>删除</el-button>
</template>
</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"
:total="total"
background
></el-pagination>
</div>
<formDialog v-if="showDialog" :title="dialogTitle" @closeDialog="closeDialog">
<div slot="content" class="dialog-content">
<vue-scroll style="width: 100%;height: 620px; padding-bottom: 30px;">
<el-form
ref="addForm"
class="dialog-form"
label-position="right"
label-width="168px"
:model="formData"
:rules="rules"
size="medium">
<el-form-item label="监控人员" prop="monitorUser" required>
<el-input :disabled="isDisabled" placeholder="请输入监控人员" v-model="formData.monitorUser"></el-input>
</el-form-item>
<el-form-item label="监控内容" prop="monitorContent" required>
<el-input :disabled="isDisabled" placeholder="请输入监控内容" v-model="formData.monitorContent"></el-input>
</el-form-item>
<el-form-item label="监控地点" prop="monitorAddr" required>
<el-input :disabled="isDisabled" placeholder="请输入监控地点" v-model="formData.monitorAddr"></el-input>
</el-form-item>
<el-form-item label="辅助人员列表">
<el-button v-if="!isDisabled" size="small" type="primary" @click="showInnerDialog(2)">添加</el-button>
</el-form-item>
<div class="form-table">
<el-table
class="tables"
:data="formData.auxiliaryList"
height="180"
style="width: 100%;">
<el-table-column prop="operatorName" label="姓名" align="center">
</el-table-column>
<el-table-column prop="workTypeName" label="工种" align="center">
</el-table-column>
<el-table-column prop="sex" label="性别" align="center">
</el-table-column>
<!-- <el-table-column prop="type" label="人员类型" align="center">
</el-table-column> -->
<el-table-column prop="alidityTime" label="证件有效期" align="center">
</el-table-column>
<el-table-column label="操作" v-if="!isDisabled">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
class="delete-btn"
icon="el-icon-delete"
@click="deletePeople(scope)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
</div>
<el-form-item label="安全防护用品准备情况" prop="safeProtectPrepare" required>
<el-input :disabled="isDisabled" placeholder="请输入安全防护用品准备情况" v-model="formData.safeProtectPrepare"></el-input>
</el-form-item>
<el-form-item label="作业过程" prop="taskProcess" required>
<el-input :disabled="isDisabled" placeholder="请输入作业过程" v-model="formData.taskProcess"></el-input>
</el-form-item>
<el-form-item label="作业开始时间" prop="taskStartTime" required>
<el-date-picker
value-format="yyyy-MM-dd"
:disabled="isDisabled"
:picker-options="pickerOptions"
v-model="formData.taskStartTime"
type="date"
placeholder="选择日期时间"
style="width: 100%"
>
</el-date-picker>
</el-form-item>
<el-form-item label="作业结束时间" prop="taskEndTime" required>
<el-date-picker
value-format="yyyy-MM-dd"
:disabled="isDisabled"
:picker-options="pickerOptions"
v-model="formData.taskEndTime"
type="date"
placeholder="选择日期时间"
style="width: 100%"
>
</el-date-picker>
</el-form-item>
<el-form-item label="作业人员列表">
<el-button v-if="!isDisabled" size="small" type="primary" @click="showInnerDialog(1)">添加</el-button>
</el-form-item>
<div class="form-table">
<el-table
class="tables"
:data="formData.operatorList"
height="180"
style="width: 100%;">
<el-table-column prop="operatorName" label="姓名" align="center">
</el-table-column>
<el-table-column prop="sex" label="性别" align="center">
</el-table-column>
<el-table-column prop="workTypeName" label="工种" align="center">
</el-table-column>
<!-- <el-table-column prop="type" label="人员类型" align="center">
</el-table-column> -->
<el-table-column prop="alidityTime" label="证件有效期" align="center">
</el-table-column>
<el-table-column label="操作" v-if="!isDisabled">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
class="delete-btn"
icon="el-icon-delete"
@click="deletePeople(scope)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
</div>
<el-form-item label="实施方案符合性" prop="implementPlan" required>
<el-input type="textarea" :disabled="isDisabled" resize="none" :rows="6" v-model="formData.implementPlan"></el-input>
</el-form-item>
</el-form>
<el-dialog
:class="{'dark-dialog': styleType == 2}"
width="40%"
title="新增人员"
class="inner-dialog"
:close-on-click-modal="false"
@close="closeInnerDialog"
:visible.sync="innerVisible"
append-to-body>
<div class="add-form">
<el-form
ref="addPeopleForm"
class="dialog-form"
label-position="right"
label-width="140px"
:model="peopleList"
:rules="rules2"
size="medium">
<el-form-item label="姓名" prop="operatorName" required>
<el-input placeholder="请输入姓名" v-model="peopleList.operatorName"></el-input>
</el-form-item>
<el-form-item label="性别" prop="sex" required>
<el-radio-group v-model="peopleList.sex">
<el-radio label="男"></el-radio>
<el-radio label="女"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="工种" prop="workTypeName" required>
<el-input placeholder="请输入工种" v-model="peopleList.workTypeName"></el-input>
</el-form-item>
<el-form-item label="证件有效期" prop="alidityTime" required>
<el-date-picker
value-format="yyyy-MM-dd"
v-model="peopleList.alidityTime"
type="date"
placeholder="请选择证件有效期"
style="width: 100%"
>
</el-date-picker>
</el-form-item>
<el-form-item label="证件文件" prop="certificateFile">
<el-upload
class="upload-demo"
:action="$store.state.UPLOADURL"
multiple
name="files"
:show-file-list="false"
:before-upload="handleBeforeUpload"
:on-success="(res)=>handleUploadSuccess(res)"
:file-list="peopleList.fileList">
<el-button size="small" type="primary" :class="{'dark-upImg': styleType == 2}"><i class="el-icon-picture-outline"></i></el-button>
<div slot="tip" class="el-upload__tip" :class="{'dark-tip': styleType == 2}">支持jpgpngjpeg格式</div>
</el-upload>
<div class="file-list">
<div class="file-item" v-for="(item,index) in peopleList.fileList" :key="index">
<img :src="$store.state.FILEURL+item.url"/>
<i class="el-icon-error" :class="{'dark-close': styleType == 2}" @click="removeImg(index)"></i>
</div>
</div>
</el-form-item>
</el-form>
<div class="btn-box">
<el-button class="cancle-btn cancleBtn" size="small" icon="el-icon-circle-close" @click="closeInnerDialog">取消</el-button>
<el-button type="primary" icon="el-icon-circle-check" size="small" @click="addPeople">确定</el-button>
</div>
</div>
</el-dialog>
</vue-scroll>
<div class="btn-box" v-if="!isDisabled">
<el-button class="cancle-btn cancleBtn" size="small" icon="el-icon-circle-close" @click="closeDialog">取消</el-button>
<el-button type="primary" icon="el-icon-circle-check" size="small" @click="submitForm">确定</el-button>
</div>
</div>
</formDialog>
</div>
</template>
<script>
import {
selectSuperviseSideStationApi,
selectByIdSuperviseSideStationApi,
editSuperviseSideStationApi,
addSuperviseSideStationApi,
deleteSuperviseSideStationApi,
} from "@/assets/js/api/towerCrane";
import formDialog from './../../projectLevel/workstation/compontents/formDialog.vue'
export default {
components: {
formDialog
},
props:['registerId','devType'],
data(){
return {
peopleList:{
alidityTime: "",
certificateFile: "",
operatorName: "",
sex: "男",
workTypeName: "",
fileList:[]
},
devSn: "",
innerVisible: false,
tableData: [],
projectSn: "",
pageNo: 1,
pageSize: 10,
total: 0,
pickerOptions: {
disabledDate(time) {
return time.getTime() < Date.now() - 8.64e7;
},
},
showDialog: false,
dialogTitle: "新增监督旁站",
formData:{
auxiliaryList:[],
implementPlan: "",
monitorAddr: "",
monitorContent: "",
monitorUser: "",
operatorList: [],
safeProtectPrepare: "",
taskEndTime: "",
taskProcess: "",
taskStartTime: ""
},
rules: {
implementPlan: [{ required: true,message: "请输入实施方案符合性",trigger: "blur" },
{ required: true,message: "请输入实施方案符合性",trigger: "change" }],
monitorAddr: [{ required: true,message: "请输入监控地点",trigger: "blur" },
{ required: true,message: "请输入监控地点",trigger: "change" }],
monitorContent: [{ required: true,message: "请输入监控内容",trigger: "blur" },
{ required: true,message: "请输入监控内容",trigger: "change" }],
monitorUser: [{ required: true,message: "请输入监控人员",trigger: "blur" },
{ required: true,message: "请输入监控人员",trigger: "change" }],
safeProtectPrepare: [{ required: true,message: "请输入安全防护用品准备情况",trigger: "blur" },
{ required: true,message: "请输入安全防护用品准备情况",trigger: "change" }],
taskProcess: [{ required: true,message: "请输入作业过程",trigger: "blur" },
{ required: true,message: "请输入作业过程",trigger: "change" }],
taskStartTime: [{ type: 'string',required: true,message: "请选择作业开始时间",trigger: "blur" },
{ type: 'string',required: true,message: "请选择作业开始时间",trigger: "change" }],
taskEndTime: [{ type: 'string',required: true,message: "请选择作业结束时间",trigger: "blur" },
{ type: 'string',required: true,message: "请选择作业结束时间",trigger: "change" }]
},
rules2: {
workTypeName: [{ required: true,message: "请输入工种",trigger: "blur" },
{ required: true,message: "请输入工种",trigger: "change" }],
operatorName: [{ required: true,message: "请输入姓名",trigger: "blur" },
{ required: true,message: "请输入姓名",trigger: "change" }],
alidityTime: [{ type: 'string',required: true,message: "请选择证件有效期",trigger: "blur" },
{ type: 'string',required: true,message: "请选择证件有效期",trigger: "change" }]
},
isDisabled: false,
formType: 1, //1、新增 2、编辑
styleType: 1
}
},
created(){
this.projectSn = this.$store.state.projectSn;
this.userId = this.$store.state.userInfo.userId
this.selectSuperviseSideStation()
this.styleType = this.$store.state.userInfo.styleType
console.log(this.registerId)
},
methods: {
addPeople(){
this.$refs['addPeopleForm'].validate((valid) => {
if(valid){
let data = this.peopleList
if(data.fileList&&data.fileList.length>0){
data.certificateFile = ""
let arr = []
data.fileList.forEach(item=>{
arr.push(item.url)
})
data.certificateFile = arr.join(',')
} else {
this.$message.error("请上传证件文件!")
return;
}
console.log(data, this.formData)
if(data.type == 2){
this.formData.auxiliaryList.push(data)
} else if(data.type == 1){
this.formData.operatorList.push(data)
}
this.closeInnerDialog()
}
})
},
handleBeforeUpload(file){
console.log(file.type)
if(file.type == "image/png" || file.type == "image/jpg" || file.type == "image/jpeg"){
return true;
} else {
return false;
}
},
handleUploadSuccess(res){
console.log(this.peopleList)
if(res.status = "SUCCESS"){
if(!this.peopleList.fileList){
this.peopleList.fileList = []
}
this.peopleList.fileList.push({
name: res.data[0].filename,
url: res.data[0].imageUrl
})
this.$forceUpdate()
}
},
removeImg(id){
this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
// console.log(this.facilityForm.installImg)
this.peopleList.fileList.splice(id,1)
this.$forceUpdate()
this.$message({
type: 'success',
message: '删除成功!'
});
}).catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
});
});
},
closeInnerDialog(){
this.innerVisible = false
this.peopleList = {
alidityTime: "",
certificateFile: "",
operatorName: "",
sex: "男",
workTypeName: "",
fileList:[]
}
},
showInnerDialog(type){
// console.log(id)
this.innerVisible = true
this.peopleList.type = type
},
selectSuperviseSideStation(){
let data = {
devType: this.devType,
projectSn: this.projectSn,
pageNo: this.pageNo,
pageSize: this.pageSize
}
console.log(data)
selectSuperviseSideStationApi(data).then(res=>{
console.log(res)
if(res.code == 200 && res.result){
this.tableData = res.result.records
this.total = res.result.total
}
})
},
submitForm(){
this.$refs['addForm'].validate((valid) => {
console.log(valid)
if(valid){
let data = this.formData
data.projectSn = this.projectSn
data.registerId = this.registerId
if(data.taskEndTime.split('-').join('')<data.taskStartTime.split('-').join('')){
this.$message.error('作业开始时间必须早于作业结束时间!')
return;
}
console.log(data)
if(this.formType == 1){
addSuperviseSideStationApi(data).then(res=>{
console.log(res)
if(res.code == 200){
this.$message.success("添加成功")
this.closeDialog()
this.selectSuperviseSideStation()
}
})
} else if(this.formType == 2){
editSuperviseSideStationApi(data).then(res=>{
console.log(res)
if(res.code == 200){
this.$message.success("编辑成功")
this.closeDialog()
this.selectSuperviseSideStation()
}
})
}
}
})
},
resetForm(){
this.formData = {
auxiliaryList:[],
implementPlan: "",
monitorAddr: "",
monitorContent: "",
monitorUser: "",
operatorList: [],
safeProtectPrepare: "",
taskEndTime: "",
taskProcess: "",
taskStartTime: ""
}
},
closeDialog(){
this.showDialog = false
this.isDisabled = false
this.formType = 1
this.dialogTitle = "新增监督旁站"
this.resetForm()
},
previewData(val){
this.showDialog = true
this.isDisabled = true
this.dialogTitle = "监督旁站详情"
selectByIdSuperviseSideStationApi({id: val.id}).then(res=>{
if(res.code == 200){
this.formData = res.result
if(this.formData.acceptanceCheckFile){
let arr = this.formData.acceptanceCheckFile.split(',')
this.formData.fileList = []
arr.forEach(item=>{
this.formData.fileList.push({url: item})
})
}
}
console.log(res)
})
console.log(val)
},
editData(val){
this.showDialog = true
console.log(val)
selectByIdSuperviseSideStationApi({id: val.id}).then(res=>{
if(res.code == 200){
this.formData = res.result
if(this.formData.acceptanceCheckFile){
let arr = this.formData.acceptanceCheckFile.split(',')
this.formData.fileList = []
arr.forEach(item=>{
this.formData.fileList.push({url: item})
})
}
}
console.log(res)
})
this.formType = 2
this.dialogTitle = "编辑监督旁站"
},
deletePeople(val){
console.log(val)
this.$confirm('此操作将删除该条记录, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
if(val.row.type == 2){
this.formData.auxiliaryList.splice(val.$index,1)
} else if(val.row.type == 1){
this.formData.operatorList.splice(val.$index,1)
}
}).catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
});
});
},
deleteData(val){
this.$confirm('此操作将删除该条记录, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteSuperviseSideStationApi({id: val.id}).then(res=>{
console.log(res)
if(res.code == 200){
this.$message.success("删除成功!")
this.selectSuperviseSideStation()
}
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
});
});
},
handleSizeChange(val) {
this.pageSize = val;
this.selectSuperviseSideStation();
},
handleCurrentChange(val) {
this.pageNo = val;
this.selectSuperviseSideStation();
},
}
}
</script>
<style lang="less" scoped>
.devfiling{
width: 100%;
height: 100%;
.pagerBox{
margin-top: 20px;
}
.search-wrap{
margin-top: 10px;
margin-bottom: 10px;
margin-left: 12px;
}
.primary-btn{
color: #9297A2;
/deep/i{
color: #88E7F0;
}
}
.delete-btn{
color: #FE6565;
}
.dialog-content{
width: 800px;
padding: 40px 0 42px 0;
}
.dialog-form{
width: 70%;
margin: 0 auto;
margin-bottom: 60px;
/deep/.el-form-item{
margin-bottom: 22px;
}
}
.list-title{
/deep/.el-form-item__label{
text-align: left;
}
}
.form-list{
display: flex;
align-items: center;
padding-left: 20px;
margin-bottom: 20px;
.deelet-btn{
margin-left: 10px;
color: #FE6565;
cursor: pointer;
font-size: 20px;
}
.add-item{
color: #409EFF;
font-size: 14px;
margin-left: 10px;
cursor: pointer;
}
}
.tables{
min-height: auto;
}
.form-table{
margin-bottom: 10px;
}
}
.upload-demo{
width: 300px;
/deep/ .el-button--small{
padding: 0;
background: #eee;
border: 0;
color: #ccc;
width: 58px;
height: 40px;
font-size: 22px;
}
.dark-upImg{
// background: #19263E;
}
/deep/.el-upload__tip{
margin: 0;
}
.dark-tip{
// color: #fff;
}
}
.file-list{
display: flex;
align-items: center;
.file-item{
width: 58px;
height: 50px;
position: relative;
margin-right: 6px;
img{
width: 100%;
height: 100%;
}
i{
position: absolute;
right: -6px;
top: -6px;
cursor: pointer;
}
}
}
.add-form{
width: 80%;
margin: 0 auto;
}
.btn-box{
display: flex;
justify-content: center;
.cancle-btn{
margin-right: 80px;
}
}
</style>