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

636 lines
18 KiB
Vue
Raw Normal View History

2022-06-08 14:51:11 +08:00
<template>
2023-03-14 18:26:52 +08:00
<div class="devfiling">
<div class="search-wrap">
<!-- <el-select v-model="devSn" style="width: 156px;margin-right: 15px" size="small" placeholder="设备名称">
2022-06-08 14:51:11 +08:00
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select> -->
2023-03-14 18:26:52 +08:00
<!-- <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="acceptanceCheckUser"
label="验收人"
align="center"
>
</el-table-column>
<el-table-column prop="deviceNo" label="设备编号" align="center">
</el-table-column>
<!-- <el-table-column prop="acceptanceCheckContent" label="验收内容" align="center">
2022-06-08 14:51:11 +08:00
</el-table-column> -->
2023-03-14 18:26:52 +08:00
<el-table-column
prop="acceptanceCheckTime"
label="验收时间"
align="center"
>
</el-table-column>
<el-table-column prop="addTime" label="添加时间" align="center">
</el-table-column>
<el-table-column prop="acceptanceCheckState" label="验收状态">
<template slot-scope="scope">
{{ scope.row.acceptanceCheckState == 1 ? '已验收' : '未验收' }}
</template>
</el-table-column>
2022-06-08 14:51:11 +08:00
2023-03-14 18:26:52 +08:00
<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="Number(total)"
background
></el-pagination>
</div>
2022-06-08 14:51:11 +08:00
2023-03-14 18:26:52 +08:00
<formDialog
v-if="showDialog"
:title="dialogTitle"
@closeDialog="closeDialog"
>
<div slot="content" class="dialog-content">
<vue-scroll style="width: 100%; height: 420px; padding-bottom: 30px">
<el-form
ref="addForm"
class="dialog-form"
label-position="right"
label-width="140px"
:model="formData"
:rules="rules"
size="medium"
>
<el-form-item label="验收人" prop="acceptanceCheckUser" required>
<el-input
:disabled="isDisabled"
placeholder="请输入验收人"
v-model="formData.acceptanceCheckUser"
></el-input>
</el-form-item>
<el-form-item label="设备编号" prop="deviceNo" required>
<el-input
:disabled="isDisabled"
placeholder="请输入设备编号"
v-model="formData.deviceNo"
></el-input>
</el-form-item>
<el-form-item label="验收时间" prop="acceptanceCheckTime" required>
<el-date-picker
value-format="yyyy-MM-dd"
:disabled="isDisabled"
:picker-options="pickerOptions"
v-model="formData.acceptanceCheckTime"
type="date"
placeholder="选择日期时间"
style="width: 100%"
>
</el-date-picker>
</el-form-item>
<el-form-item label="验收状态" prop="acceptanceCheckState" required>
<el-radio-group
:disabled="isDisabled"
v-model="formData.acceptanceCheckState"
>
<el-radio :label="1">已验收</el-radio>
<el-radio :label="2">未验收</el-radio>
</el-radio-group>
</el-form-item>
<!-- <el-form-item label="设备备案状态" prop="filingState" required>
2022-06-08 14:51:11 +08:00
<el-select v-model="formData.filingState" :disabled="isDisabled" style="width: 100%" size="small" placeholder="请选择策划记录">
<el-option
v-for="item in options2"
:key="item.id"
:label="item.statusName"
:value="item.id">
</el-option>
</el-select>
</el-form-item> -->
2023-03-14 18:26:52 +08:00
<el-form-item
label="验收内容"
prop="acceptanceCheckContent"
required
>
<el-input
type="textarea"
:disabled="isDisabled"
resize="none"
:rows="6"
v-model="formData.acceptanceCheckContent"
></el-input>
</el-form-item>
<el-form-item label="验收记录" prop="acceptanceCheckFile">
<el-upload
class="upload-demo"
v-if="!isDisabled"
:action="$store.state.UPLOADURL"
multiple
name="files"
:show-file-list="false"
:before-upload="handleBeforeUpload"
:on-success="(res) => handleUploadSuccess(res)"
:file-list="formData.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格式
2022-06-08 14:51:11 +08:00
</div>
2023-03-14 18:26:52 +08:00
</el-upload>
<div class="file-list">
<div
class="file-item"
v-for="(item, index) in formData.fileList"
:key="index"
>
<el-image
v-if="isDisabled"
style="width: 100%; height: 100%"
:src="$store.state.FILEURL + item.url"
:preview-src-list="[$store.state.FILEURL + item.url]"
>
</el-image>
<img
v-if="!isDisabled"
:src="$store.state.FILEURL + item.url"
/>
<i
v-if="!isDisabled"
class="el-icon-error"
:class="{ 'dark-close': styleType == 2 }"
@click="removeImg(index)"
></i>
</div>
</div>
</el-form-item>
</el-form>
</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>
2022-06-08 14:51:11 +08:00
</template>
<script>
import {
selectAcceptanceCheckRecordApi,
selectByIdAcceptanceCheckRecordApi,
editAcceptanceCheckRecordApi,
addAcceptanceCheckRecordApi,
2023-03-14 18:26:52 +08:00
deleteAcceptanceCheckRecordApi
} from '@/assets/js/api/towerCrane'
2022-06-08 14:51:11 +08:00
import formDialog from './../../projectLevel/workstation/compontents/formDialog.vue'
export default {
2023-03-14 18:26:52 +08:00
components: {
formDialog
},
props: ['registerId', 'devType'],
data() {
return {
devSn: '',
options: [],
options2: [
{
id: 1,
statusName: '已办理'
},
{
id: 2,
statusName: '未办理'
}
],
tableData: [],
projectSn: '',
pageNo: 1,
pageSize: 10,
total: 0,
pickerOptions: {
disabledDate(time) {
return time.getTime() < Date.now() - 8.64e7
}
},
showDialog: false,
dialogTitle: '新增验收管理',
formData: {
deviceNo: '',
acceptanceCheckState: 1,
acceptanceCheckContent: '',
acceptanceCheckTime: '',
acceptanceCheckUser: '',
acceptanceCheckFile: '',
fileList: []
},
rules: {
deviceNo: [
{ required: true, message: '请输入设备编号', trigger: 'blur' },
{ required: true, message: '请输入设备编号', trigger: 'change' }
],
acceptanceCheckContent: [
{ required: true, message: '请输入验收内容', trigger: 'blur' },
{ required: true, message: '请输入验收内容', trigger: 'change' }
],
acceptanceCheckUser: [
{ required: true, message: '请输入验收人', trigger: 'blur' },
{ required: true, message: '请输入验收人', trigger: 'change' }
],
acceptanceCheckTime: [
{
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.selectAcceptanceCheckRecord()
this.styleType = 2
console.log(this.registerId)
},
methods: {
handleBeforeUpload(file) {
console.log(file.type)
if (
file.type == 'image/png' ||
file.type == 'image/jpg' ||
file.type == 'image/jpeg'
) {
return true
} else {
return false
}
2022-06-08 14:51:11 +08:00
},
2023-03-14 18:26:52 +08:00
handleUploadSuccess(res) {
console.log(this.formData)
if ((res.status = 'SUCCESS')) {
if (!this.formData.fileList) {
this.formData.fileList = []
2022-06-08 14:51:11 +08:00
}
2023-03-14 18:26:52 +08:00
this.formData.fileList.push({
name: res.data[0].filename,
url: res.data[0].imageUrl
})
this.$forceUpdate()
}
2022-06-08 14:51:11 +08:00
},
2023-03-14 18:26:52 +08:00
removeImg(id) {
this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
// console.log(this.facilityForm.installImg)
this.formData.fileList.splice(id, 1)
this.$forceUpdate()
this.$message({
type: 'success',
message: '删除成功!'
})
})
.catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
})
})
2022-06-08 14:51:11 +08:00
},
2023-03-14 18:26:52 +08:00
selectAcceptanceCheckRecord() {
let data = {
devType: this.devType,
projectSn: this.projectSn,
pageNo: this.pageNo,
pageSize: this.pageSize
}
console.log(data)
selectAcceptanceCheckRecordApi(data).then((res) => {
console.log(res)
if (res.code == 200) {
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.fileList && data.fileList.length > 0) {
data.acceptanceCheckFile = ''
let arr = []
data.fileList.forEach((item) => {
arr.push(item.url)
2022-06-08 14:51:11 +08:00
})
2023-03-14 18:26:52 +08:00
data.acceptanceCheckFile = arr.join(',')
} else {
this.$message.error('请上传验收记录!')
return
}
console.log(data)
if (this.formType == 1) {
addAcceptanceCheckRecordApi(data).then((res) => {
console.log(res)
if (res.code == 200) {
this.$message.success('添加成功')
this.closeDialog()
this.selectAcceptanceCheckRecord()
}
2022-06-08 14:51:11 +08:00
})
2023-03-14 18:26:52 +08:00
} else if (this.formType == 2) {
editAcceptanceCheckRecordApi(data).then((res) => {
console.log(res)
if (res.code == 200) {
this.$message.success('编辑成功')
this.closeDialog()
this.selectAcceptanceCheckRecord()
}
2022-06-08 14:51:11 +08:00
})
2023-03-14 18:26:52 +08:00
}
}
})
},
resetForm() {
this.formData = {
deviceNo: '',
acceptanceCheckState: 1,
acceptanceCheckContent: '',
acceptanceCheckTime: '',
acceptanceCheckUser: '',
acceptanceCheckFile: '',
fileList: []
}
},
closeDialog() {
this.showDialog = false
this.isDisabled = false
this.formType = 1
this.dialogTitle = '新增验收管理'
this.resetForm()
},
previewData(val) {
this.showDialog = true
this.isDisabled = true
this.dialogTitle = '验收管理详情'
selectByIdAcceptanceCheckRecordApi({ 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 })
2022-06-08 14:51:11 +08:00
})
2023-03-14 18:26:52 +08:00
}
}
console.log(res)
})
console.log(val)
},
editData(val) {
this.showDialog = true
console.log(val)
selectByIdAcceptanceCheckRecordApi({ 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 = '编辑验收管理'
},
deleteData(val) {
this.$confirm('此操作将删除该条记录, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
deleteAcceptanceCheckRecordApi({ id: val.id }).then((res) => {
console.log(res)
if (res.code == 200) {
this.$message.success('删除成功!')
this.selectAcceptanceCheckRecord()
}
})
})
.catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
})
})
},
handleSizeChange(val) {
this.pageSize = val
this.selectAcceptanceCheckRecord()
},
handleCurrentChange(val) {
this.pageNo = val
this.selectAcceptanceCheckRecord()
2022-06-08 14:51:11 +08:00
}
2023-03-14 18:26:52 +08:00
}
2022-06-08 14:51:11 +08:00
}
</script>
<style lang="less" scoped>
2023-03-14 18:26:52 +08:00
.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;
2022-06-08 14:51:11 +08:00
}
2023-03-14 18:26:52 +08:00
}
.delete-btn {
color: #fe6565;
}
.dialog-content {
width: 678px;
padding: 40px 0 42px 0;
}
.dialog-form {
width: 60%;
margin: 0 auto;
margin-bottom: 60px;
/deep/.el-form-item {
margin-bottom: 16px;
2022-06-08 14:51:11 +08:00
}
2023-03-14 18:26:52 +08:00
}
.btn-box {
display: flex;
justify-content: center;
.cancle-btn {
margin-right: 80px;
2022-06-08 14:51:11 +08:00
}
2023-03-14 18:26:52 +08:00
}
.list-title {
/deep/.el-form-item__label {
text-align: left;
2022-06-08 14:51:11 +08:00
}
2023-03-14 18:26:52 +08:00
}
.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;
2022-06-08 14:51:11 +08:00
}
2023-03-14 18:26:52 +08:00
.add-item {
color: #409eff;
font-size: 14px;
margin-left: 10px;
cursor: pointer;
2022-06-08 14:51:11 +08:00
}
2023-03-14 18:26:52 +08:00
}
.tables {
min-height: auto;
}
.upload-demo {
width: 300px;
/deep/ .el-button--small {
padding: 0;
background: #eee;
border: 0;
color: #ccc;
width: 58px;
height: 40px;
font-size: 22px;
2022-06-08 14:51:11 +08:00
}
2023-03-14 18:26:52 +08:00
.dark-upImg {
background: #19263e;
2022-06-08 14:51:11 +08:00
}
2023-03-14 18:26:52 +08:00
/deep/.el-upload__tip {
margin: 0;
2022-06-08 14:51:11 +08:00
}
2023-03-14 18:26:52 +08:00
.dark-tip {
color: #fff;
2022-06-08 14:51:11 +08:00
}
2023-03-14 18:26:52 +08:00
}
.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;
2022-06-08 14:51:11 +08:00
}
}
2023-03-14 18:26:52 +08:00
}
2022-06-08 14:51:11 +08:00
}
</style>