zhgdyun/src/views/projectFront/towerCrane/acceptanceManage.vue
2023-03-14 18:26:52 +08:00

636 lines
18 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="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">
</el-table-column> -->
<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>
<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>
<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>
<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> -->
<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格式
</div>
</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>
</template>
<script>
import {
selectAcceptanceCheckRecordApi,
selectByIdAcceptanceCheckRecordApi,
editAcceptanceCheckRecordApi,
addAcceptanceCheckRecordApi,
deleteAcceptanceCheckRecordApi
} from '@/assets/js/api/towerCrane'
import formDialog from './../../projectLevel/workstation/compontents/formDialog.vue'
export default {
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
}
},
handleUploadSuccess(res) {
console.log(this.formData)
if ((res.status = 'SUCCESS')) {
if (!this.formData.fileList) {
this.formData.fileList = []
}
this.formData.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.formData.fileList.splice(id, 1)
this.$forceUpdate()
this.$message({
type: 'success',
message: '删除成功!'
})
})
.catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
})
})
},
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)
})
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()
}
})
} else if (this.formType == 2) {
editAcceptanceCheckRecordApi(data).then((res) => {
console.log(res)
if (res.code == 200) {
this.$message.success('编辑成功')
this.closeDialog()
this.selectAcceptanceCheckRecord()
}
})
}
}
})
},
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 })
})
}
}
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()
}
}
}
</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: 678px;
padding: 40px 0 42px 0;
}
.dialog-form {
width: 60%;
margin: 0 auto;
margin-bottom: 60px;
/deep/.el-form-item {
margin-bottom: 16px;
}
}
.btn-box {
display: flex;
justify-content: center;
.cancle-btn {
margin-right: 80px;
}
}
.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;
}
.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;
}
}
}
}
</style>