zhgdyun/src/views/projectFront/quality/acceptanceMoudle.vue

489 lines
15 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="panoramaPlan">
<div class="header-box">
<el-button type="primary" @click="addForm"> 新增 </el-button>
</div>
<div class="table-box">
<vue-scroll style="width: 100%; height: 550px">
<el-table class="tables" :data="tableData">
<el-table-column
prop="chargerId"
label="序号"
type="index"
></el-table-column>
<el-table-column
align="center"
prop="subsectionName"
label="分部工程名称"
></el-table-column>
<el-table-column
align="center"
prop="subentryName"
label="分项工程名称"
></el-table-column>
<el-table-column
align="center"
prop="floor"
label="巡检楼层"
></el-table-column>
<el-table-column
align="center"
prop="unit"
width="150"
label="验收单位"
>
</el-table-column>
<el-table-column
align="center"
prop="checkingPersonnel"
label="验收人员"
></el-table-column>
<el-table-column prop="status" label="验收结论">
<template slot-scope="scope">
{{ getStatus(scope.row.status) }}
</template>
</el-table-column>
<el-table-column prop="imageUrl" align="center" label="图片">
<template slot-scope="scope">
<img
:preview="
scope.row.imageUrl[0] ? scope.row.imageUrl[0].url : []
"
:src="scope.row.imageUrl[0] ? scope.row.imageUrl[0].url : []"
alt=""
width="50px"
/>
<!-- <img
:preview="scope.row.imageUrl[0] ? scope.row.imageUrl[0].url : []"
:src="scope.row.imageUrl[0] ? scope.row.imageUrl[0].url : []"
alt=""
width="50px"
/> -->
</template>
</el-table-column>
<el-table-column
align="center"
prop="acceptanceDate"
label="计划验收时间"
></el-table-column>
<el-table-column
align="center"
prop="actualAcceptanceDate"
label="实际验收时间"
></el-table-column>
<!-- 操作 -->
<el-table-column label="操作" width="220" align="center">
<template slot-scope="scope">
<el-button
type="text"
icon="el-icon-edit-outline"
@click="editData(scope.row)"
>
编辑
</el-button>
<el-button
class="delete-btn"
type="text"
icon="el-icon-delete"
@click="deleteData(scope.row)"
>
删除
</el-button>
</template>
</el-table-column>
</el-table>
</vue-scroll>
<el-pagination
class="pagerBox"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="current"
:page-sizes="$store.state.PAGESIZRS"
:page-size="size"
layout="total, sizes, prev, pager, next"
:total="Number(total)"
background
></el-pagination>
</div>
<!-- 新增弹框 -->
<el-dialog
class="dialog"
:title="dialogTitle"
:modal-append-to-body="false"
:visible.sync="dialogVisible"
width="667px"
>
<div class="dialog-content">
<vue-scroll>
<el-form
ref="form"
:model="dialogdata"
:rules="rules"
label-width="155px"
size="medium"
class="dialogFormBox"
>
<el-form-item label="分部(子分部)工程名称" prop="subsectionId">
<el-select
v-model="dialogdata.subsectionId"
@change="checkSubListData"
placeholder="请选择"
>
<el-option
v-for="(item, index) in listData"
:key="index"
:label="item.subdivisionProjectName"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="分项工程名称" prop="subentryId">
<el-select v-model="dialogdata.subentryId" placeholder="请选择">
<el-option
v-for="(item, index) in subListData"
:key="index"
:label="item.subdivisionProjectName"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="验收依据" prop="basis">
<el-input
v-model="dialogdata.basis"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="验收楼层" prop="floor">
<el-input
v-model="dialogdata.floor"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="验收单位" prop="unit">
<el-input
v-model="dialogdata.unit"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="验收人员" prop="checkingPersonnel">
<el-input
v-model="dialogdata.checkingPersonnel"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="验收结论" prop="status">
<el-select v-model="dialogdata.status" placeholder="请选择">
<el-option :value="1" label="合格"></el-option>
<el-option :value="2" label="不合格"></el-option>
</el-select>
</el-form-item>
<el-form-item label="计划验收时间" prop="acceptanceDate">
<el-date-picker
v-model="dialogdata.acceptanceDate"
type="date"
placeholder="选择日期"
value-format="yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
<el-form-item label="实际验收时间" prop="actualAcceptanceDate">
<el-date-picker
v-model="dialogdata.actualAcceptanceDate"
type="date"
placeholder="选择日期"
value-format="yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
<el-form-item label="上传图片">
<el-upload
:action="$store.state.UPLOADURL"
list-type="picture-card"
multiple
name="files"
:limit="1"
:file-list="fileList"
:on-success="handleSuccess"
:on-remove="handleRemove"
>
<i class="el-icon-plus"></i>
</el-upload>
</el-form-item>
</el-form>
</vue-scroll>
</div>
<div class="dialog-btn">
<el-button type="primary" @click="submitForm"> 确定 </el-button>
<el-button @click="dialogVisible = false"> 取消 </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
getSubdivisionAcceptanceApi, //分页查询分部分项验收
addSubdivisionAcceptanceApi, //新增
updateSubdivisionAcceptanceApi, //修改
deleteSubdivisionAcceptanceApi,
getSubdivisionProjectApi //所有分部分项工程, 以父子节点形式呈现
} from '@/assets/js/api/quality'
export default {
data() {
return {
tableData: [], //列表数据
dialogTitle: '',
dialogVisible: false,
dialogdata: {
subsectionId: '', //分部工程id
subentryId: '', //分项工程id
basis: '', //验收依据
floor: '', //验收楼层
unit: '', //验收单位
checkingPersonnel: '', //验收人员
status: '', //验收结论
imageUrl: '', //图片
acceptanceDate: '', //计划验收日期
actualAcceptanceDate: '', //实际验收日期
projectSn: ''
},
rules: {},
fileList: [],
current: 1,
size: 10,
total: 0,
projectSn: '',
listData: [], //下拉数据
subListData: []
}
},
created() {
this.projectSn = this.$store.state.projectSn
this.getData()
this.getProgressListData()
},
methods: {
//数据转换
getStatus(status) {
if (status === 1) {
return '合格'
} else {
return '不合格'
}
},
checkSubListData(val) {
console.log('一级菜单改动了 ', val)
this.listData.forEach((value) => {
if (value.id == val) {
this.subListData = value.children
if (value.children.length >= 1) {
this.dialogdata.subentryId = value.children[0].id
}
}
})
},
// 查询分部分项验收列表
getData() {
getSubdivisionAcceptanceApi({
projectSn: this.$store.state.projectSn,
size: this.size,
current: this.current
}).then((res) => {
res.result.records.map((item) => {
item.imageUrl = JSON.parse(item.imageUrl)
if (
item.imageUrl.length !== 0 &&
!item.imageUrl[0].url.includes(this.$store.state.FILEURL)
) {
item.imageUrl[0].url =
this.$store.state.FILEURL + item.imageUrl[0].url
}
})
console.log('分部分项数据', res)
this.tableData = res.result.records
this.total = res.result.total
})
},
//获取分部分项工程, 以父子节点形式呈现
getProgressListData() {
let data = {
projectSn: this.projectSn
}
getSubdivisionProjectApi(data).then((res) => {
if (res.code == 200) {
console.log('获取到的列表- 以父子节点形式呈现', res)
this.listData = res.result
// subsectionId: "", //分部工程id
// subentryId: "", //分项工程id
if (this.listData.length >= 1) {
this.dialogdata.subsectionId = this.listData[0].id
if (this.listData[0].children.length >= 1) {
this.subListData = this.listData[0].children
this.dialogdata.subentryId = this.listData[0].children[0].id
}
}
}
})
},
//新增
addForm() {
this.dialogVisible = true
this.dialogTitle = '新增质量验收'
this.dialogdata = {
subsectionId: '', //分部工程id
subentryId: '', //分项工程id
basis: '', //验收依据
floor: '', //验收楼层
unit: '', //验收单位
checkingPersonnel: '', //验收人员
status: '', //验收结论
imageUrl: '', //图片
acceptanceDate: '', //验收日期
actualAcceptanceDate: '' //实际验收日期
}
this.fileList = []
},
//编辑
editData(val) {
console.log('编辑时调用的参数 ', val)
this.dialogVisible = true
this.dialogTitle = '编辑质量验收'
this.dialogdata = JSON.parse(JSON.stringify(val))
this.listData.forEach((value) => {
if (value.id == this.dialogdata.subsectionId) {
this.subListData = value.children
}
})
this.fileList = val.imageUrl
},
//删除
deleteData(val) {
this.$confirm('此操作将永久删除, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
deleteSubdivisionAcceptanceApi({ id: val.id }).then((res) => {
this.$message({
type: 'success',
message: '删除成功!'
})
this.getData()
})
})
.catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
})
})
},
//新增或编辑提交
submitForm() {
this.processTheFile()
let params = JSON.parse(JSON.stringify(this.dialogdata))
params.projectSn = this.$store.state.projectSn
this.$refs.form.validate((valid) => {
if (valid) {
if (this.dialogTitle == '新增质量验收') {
addSubdivisionAcceptanceApi(params).then((res) => {
this.$message.success('新增成功')
this.dialogVisible = false
this.getData()
})
} else {
updateSubdivisionAcceptanceApi(params).then((res) => {
this.$message.success('编辑成功')
this.dialogVisible = false
this.getData()
})
}
}
})
},
processTheFile() {
//处理el上传的文件格式(结构)
this.dialogdata.imageUrl = []
this.fileList.map((item) => {
if (!item.response) {
this.dialogdata.imageUrl.push(item)
// console.log('符合的结构', item)
} else if (item.response) {
// console.log('不符合的结构', item)
this.dialogdata.imageUrl.push({
name: item.response.data[0].filename,
url: item.response.data[0].imageUrl
})
}
})
console.log('处理el上传的结构后', this.dialogdata.imageUrl)
this.dialogdata.imageUrl = JSON.stringify(this.dialogdata.imageUrl)
console.log('转字符串后', this.dialogdata.imageUrl)
},
handleSuccess(response, file, fileList) {
console.log('图片上传成功', fileList)
this.fileList = fileList
},
handleRemove(response, fileList) {
this.fileList = fileList
},
handleSizeChange(value) {
this.size = value
this.getData()
},
handleCurrentChange(value) {
this.current = value
this.getData()
}
}
}
</script>
<style lang="less" scoped>
.panoramaPlan {
width: 100%;
height: 100%;
background: #fff;
padding: 20px;
box-sizing: border-box;
.header-box {
margin-bottom: 20px;
padding-left: 10px;
.search-item {
display: inline-flex;
align-items: center;
white-space: nowrap;
margin-right: 20px;
/deep/.el-input {
width: 200px;
}
}
}
.delete-btn {
color: #f56c6c;
}
.dialog-content {
height: 630px;
margin-bottom: 60px;
}
.dialog-btn {
margin-left: 245px;
}
::v-deep .el-upload--picture-card {
position: absolute;
}
}
</style>