zhgdyun/src/views/projectFront/towerCrane/supervisionStation.vue
2022-06-08 14:51:11 +08:00

723 lines
30 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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