28 changed files with 3445 additions and 720 deletions
@ -0,0 +1,3 @@ |
|||||
|
<template > |
||||
|
<router-view /> |
||||
|
</template> |
@ -0,0 +1,157 @@ |
|||||
|
<script> |
||||
|
|
||||
|
export default { |
||||
|
name: "Edit", |
||||
|
props: { |
||||
|
model: { |
||||
|
type: Object, |
||||
|
default: null |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
ruleForm: { |
||||
|
sluice: '', |
||||
|
plan: '', |
||||
|
sponsor: '', |
||||
|
code: '', |
||||
|
responsibility: '', |
||||
|
programme: '', |
||||
|
drawing: '' |
||||
|
}, |
||||
|
rules: { |
||||
|
sluice: [ |
||||
|
{ required: true, message: "请输入闸门名称", trigger: "blur" }, |
||||
|
], |
||||
|
plan: [ |
||||
|
{ required: true, message: "请输入计划名称", trigger: "blur" }, |
||||
|
], |
||||
|
sponsor: [ |
||||
|
{ required: true, message: "请选择主管单位", trigger: "blur" }, |
||||
|
], |
||||
|
code: [ |
||||
|
{ required: true, message: "请输入注册编码", trigger: "blur" }, |
||||
|
], |
||||
|
responsibility: [ |
||||
|
{ required: true, message: "请选择三个责任人", trigger: "blur" }, |
||||
|
], |
||||
|
}, |
||||
|
fileList: [] |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
handlePreview(file) { |
||||
|
console.log(file); |
||||
|
}, |
||||
|
handleExceed(files, fileList) { |
||||
|
this.$message.warning(`当前限制选择 5 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`); |
||||
|
}, |
||||
|
beforeRemove(file, fileList) { |
||||
|
return this.$confirm(`确定移除 ${ file.name }?`); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<template> |
||||
|
<div style="display:flex; flex-direction: column"> |
||||
|
<div style="display: flex; margin-bottom: 16px"> |
||||
|
<div |
||||
|
style=" |
||||
|
width: 5px; |
||||
|
height: 16px; |
||||
|
background-color: #31a08e; |
||||
|
margin-right: 8px; |
||||
|
" |
||||
|
></div> |
||||
|
<span style="font-weight: 600">基础信息</span> |
||||
|
</div> |
||||
|
<el-form |
||||
|
:model="ruleForm" |
||||
|
:rules="rules" |
||||
|
:disabled="!!model && model.eventType !== 'edit'" |
||||
|
ref="ruleForm" |
||||
|
label-width="100px" |
||||
|
> |
||||
|
<el-col :span="24"> |
||||
|
<el-form-item label-width="120px" label="水闸名称" prop="sluice"> |
||||
|
<el-input style="width: 202px" v-model="ruleForm.sluice" placeholder="请输入水闸名称"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="计划名称" prop="plan"> |
||||
|
<el-input style="width: 202px" v-model="ruleForm.plan" placeholder="请输入计划名称"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="主管单位" prop="sponsor"> |
||||
|
<el-input style="width: 202px" v-model="ruleForm.sponsor"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="注册编码" prop="code"> |
||||
|
<el-input style="width: 202px" v-model="ruleForm.code" placeholder="请输入注册编码"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="三个责任人" prop="responsibility"> |
||||
|
<el-input style="width: 202px" v-model="ruleForm.responsibility"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
|
||||
|
<el-col :span="24"> |
||||
|
<div style="display: flex; margin-bottom: 16px"> |
||||
|
<div |
||||
|
style=" |
||||
|
width: 5px; |
||||
|
height: 16px; |
||||
|
background-color: #31a08e; |
||||
|
margin-right: 8px; |
||||
|
" |
||||
|
></div> |
||||
|
<span style="font-weight: 600">详细信息</span> |
||||
|
</div> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="调度方案" prop="programme"> |
||||
|
<el-upload |
||||
|
class="upload-demo" |
||||
|
action="https://jsonplaceholder.typicode.com/posts/" |
||||
|
:on-preview="handlePreview" |
||||
|
:before-remove="beforeRemove" |
||||
|
multiple |
||||
|
accept=".doc, .docx, .pdf, .png, .jpg" |
||||
|
:limit="5" |
||||
|
:on-exceed="handleExceed" |
||||
|
:auto-upload="false" |
||||
|
:file-list="fileList"> |
||||
|
<el-button size="small" type="primary">点击上传</el-button> |
||||
|
<div slot="tip" class="el-upload__tip">只能上传doc/docx/pdf/png/JPG文件,且不能超过50m</div> |
||||
|
</el-upload> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="水闸建设图纸" prop="drawing"> |
||||
|
<el-upload |
||||
|
class="upload-demo" |
||||
|
action="https://jsonplaceholder.typicode.com/posts/" |
||||
|
:on-preview="handlePreview" |
||||
|
:before-remove="beforeRemove" |
||||
|
accept=".pdf, .png, .jpg" |
||||
|
multiple |
||||
|
:limit="5" |
||||
|
:on-exceed="handleExceed" |
||||
|
:auto-upload="false" |
||||
|
:file-list="fileList"> |
||||
|
<el-button size="small" type="primary">点击上传</el-button> |
||||
|
<div slot="tip" class="el-upload__tip">只能上传pdf/png/JPG文件,且不能超过50m</div> |
||||
|
</el-upload> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-form> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<style scoped lang="scss"> |
||||
|
|
||||
|
</style> |
@ -0,0 +1,317 @@ |
|||||
|
<!-- 巡查项目管理-水闸 --> |
||||
|
<script> |
||||
|
import Edit from './components/edit.vue' |
||||
|
import { |
||||
|
getDicts, |
||||
|
postSZInspectionProjectList, |
||||
|
postSZInspectionProject, |
||||
|
putSZInspectionProject, |
||||
|
deleteSZInspectionProject, |
||||
|
getSZInspectionProject, |
||||
|
} from "@/api/management"; |
||||
|
export default { |
||||
|
name: "record", |
||||
|
components: { |
||||
|
Edit |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
searchForm: { |
||||
|
code: '', |
||||
|
name: '', |
||||
|
status: '', |
||||
|
plan: '' |
||||
|
}, |
||||
|
dialog: { |
||||
|
title: '新增水闸调度方案', |
||||
|
dom: '', |
||||
|
visible: false |
||||
|
}, |
||||
|
mdl: null, |
||||
|
tableData: [], // 检查列表 |
||||
|
pageData: { |
||||
|
pageNum: 1, // 当前页 |
||||
|
pageSize: 10, // 请求数量 |
||||
|
pageSizes: [10, 20, 50, 100], |
||||
|
total: 0, // 总数量 |
||||
|
}, |
||||
|
}; |
||||
|
}, |
||||
|
methods: { |
||||
|
handleCurrentPageChange(page) { |
||||
|
this.pageData.pageNum = page; |
||||
|
this.getTableData(); |
||||
|
}, |
||||
|
handlePageSizeChange(pageSize) { |
||||
|
this.pageData.pageSize = pageSize; |
||||
|
this.getTableData(); |
||||
|
}, |
||||
|
// 表格筛选 |
||||
|
searchTableList() { |
||||
|
postSZInspectionProjectList({ |
||||
|
data: { |
||||
|
timeView: { |
||||
|
timeField: "create_time", |
||||
|
}, |
||||
|
type: this.searchType == 3 ? "" : this.searchType, |
||||
|
}, |
||||
|
cv: { |
||||
|
name: "name", |
||||
|
type: "like", |
||||
|
value: this.searchInput, |
||||
|
}, |
||||
|
pageSize: this.pageData.pageSize, |
||||
|
pageNum: this.pageData.pageNum, |
||||
|
}).then((res) => { |
||||
|
if (res) { |
||||
|
this.tableData = res.records; |
||||
|
this.pageData.total = res.total; |
||||
|
} |
||||
|
console.log("🚀表格数据🚀", res); |
||||
|
}); |
||||
|
}, |
||||
|
// 重置搜索 |
||||
|
resetSearch() { |
||||
|
if (!this.$refs['searchForm']) return |
||||
|
this.$refs['searchForm'].resetFields() |
||||
|
this.searchTableList(); |
||||
|
}, |
||||
|
// 新增巡查内容 |
||||
|
handleAdd() { |
||||
|
this.dialog.title = '新增水闸调度方案' |
||||
|
this.dialog.dom = 'Edit' |
||||
|
this.dialog.visible = true |
||||
|
}, |
||||
|
handleCheck(row) { |
||||
|
this.dialog.title = '查看水闸调度方案' |
||||
|
this.dialog.dom = 'Edit' |
||||
|
this.mdl = {...row} |
||||
|
this.dialog.visible = true |
||||
|
}, |
||||
|
handleEdit(row) { |
||||
|
this.dialog.title = '编辑水闸调度方案' |
||||
|
this.dialog.dom = 'Edit' |
||||
|
this.mdl = {...row, eventType: 'edit'} |
||||
|
this.dialog.visible = true |
||||
|
}, |
||||
|
handleDelete(row) { |
||||
|
this.dialog.dom = 'Edit' |
||||
|
this.mdl = {...row} |
||||
|
this.dialog.visible = true |
||||
|
}, |
||||
|
// 保存巡查项目 |
||||
|
submitForm(formName) { |
||||
|
this.$refs[formName].validate((valid) => { |
||||
|
if (valid) { |
||||
|
console.log(this.ruleForm); |
||||
|
if (this.ruleForm.id) { |
||||
|
putSZInspectionProject(this.ruleForm).then(() => { |
||||
|
this.getTableData(); |
||||
|
this.dialogVisible = false; |
||||
|
this.$message.success("更新成功"); |
||||
|
}); |
||||
|
} else { |
||||
|
postSZInspectionProject(this.ruleForm).then(() => { |
||||
|
this.getTableData(); |
||||
|
this.dialogVisible = false; |
||||
|
this.$message.success("添加成功"); |
||||
|
}); |
||||
|
} |
||||
|
} else { |
||||
|
return false; |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
// 关闭dialog |
||||
|
closeDialog() { |
||||
|
this.dialog.visible = false |
||||
|
this.mdl = null |
||||
|
}, |
||||
|
// 获取列表数据 |
||||
|
getTableData() { |
||||
|
(this.searchInput = ""), |
||||
|
(this.searchType = 3), |
||||
|
postSZInspectionProjectList({ |
||||
|
data: { |
||||
|
timeView: { |
||||
|
timeField: "create_time", |
||||
|
}, |
||||
|
}, |
||||
|
cv: { |
||||
|
name: "name", |
||||
|
type: "like", |
||||
|
}, |
||||
|
pageSize: this.pageData.pageSize, |
||||
|
pageNum: this.pageData.pageNum, |
||||
|
}).then((res) => { |
||||
|
if (res) { |
||||
|
this.tableData = res.records; |
||||
|
this.pageData.total = res.total; |
||||
|
} |
||||
|
console.log("🚀表格数据🚀", res); |
||||
|
}); |
||||
|
}, |
||||
|
}, |
||||
|
mounted() { |
||||
|
// 获取列表数据 |
||||
|
this.getTableData(); |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<template> |
||||
|
<div class="slider-right"> |
||||
|
<div class="top-title">水闸操作记录</div> |
||||
|
<div class="table-box"> |
||||
|
<el-form inline :model="searchForm" ref="searchForm" class="demo-ruleForm"> |
||||
|
<el-form-item label="注册编码:" prop="gate"> |
||||
|
<el-input v-model="searchForm.code" class="search-input" placeholder="请输入注册编码"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="计划名称:" prop="instruct"> |
||||
|
<el-input v-model="searchForm.plan" class="search-input" placeholder="请输入计划名称"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="水闸名称:" prop="number"> |
||||
|
<el-input v-model="searchForm.name" class="search-input" placeholder="请输入水闸名称"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="审批状态:" prop="number"> |
||||
|
<el-input v-model="searchForm.status" class="search-input"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item> |
||||
|
<el-button class="search-btn" type="success" @click="searchTableList()">查询</el-button> |
||||
|
<el-button @click="resetSearch()">重置</el-button> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
<el-button |
||||
|
class="search-btn" |
||||
|
style="margin-right: 16px; margin-bottom: 8px; float: right" |
||||
|
type="success" |
||||
|
@click="handleAdd()" |
||||
|
>新增</el-button |
||||
|
> |
||||
|
<el-table height="625" :data="tableData" border style="width: 100%"> |
||||
|
<el-table-column type="index" align="center" label="序号" width="100"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="name" align="center" label="注册编码"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="center" align="center" label="计划名称"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="name" align="center" label="水闸名称"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="name" align="center" label="三个责任人"> |
||||
|
</el-table-column> |
||||
|
<el-table-column |
||||
|
prop="createTime" |
||||
|
align="center" |
||||
|
sortable |
||||
|
label="创建时间" |
||||
|
> |
||||
|
</el-table-column> |
||||
|
<el-table-column |
||||
|
prop="updateTime" |
||||
|
align="center" |
||||
|
sortable |
||||
|
label="更新时间" |
||||
|
> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="address" align="center" label="操作"> |
||||
|
<template slot-scope="scope"> |
||||
|
<el-button |
||||
|
style="margin-right: 16px" |
||||
|
@click="handleCheck(scope.row)" |
||||
|
type="text" |
||||
|
size="small" |
||||
|
>查看</el-button |
||||
|
> |
||||
|
<el-button |
||||
|
style="margin-right: 16px" |
||||
|
@click="handleEdit(scope.row)" |
||||
|
type="text" |
||||
|
size="small" |
||||
|
>编辑</el-button |
||||
|
> |
||||
|
<el-popconfirm |
||||
|
confirm-button-text="确定" |
||||
|
cancel-button-text="取消" |
||||
|
icon="el-icon-info" |
||||
|
icon-color="red" |
||||
|
title="确定删除吗?" |
||||
|
@confirm="handleDelete(scope.row)" |
||||
|
> |
||||
|
<el-button |
||||
|
style="color: red" |
||||
|
type="text" |
||||
|
size="small" |
||||
|
slot="reference" |
||||
|
>删除</el-button |
||||
|
> |
||||
|
</el-popconfirm> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</el-table> |
||||
|
<el-pagination |
||||
|
background |
||||
|
class="pagination" |
||||
|
style="margin-top: 16px; margin-right: 16px; float: right" |
||||
|
:current-page="pageData.pageNum" |
||||
|
:page-sizes="pageData.pageSizes" |
||||
|
layout="total, prev, pager, next, sizes, jumper" |
||||
|
:total="pageData.total" |
||||
|
@current-change="(e) => handleCurrentPageChange(e)" |
||||
|
@size-change="(e) => handlePageSizeChange(e)" |
||||
|
> |
||||
|
</el-pagination> |
||||
|
</div> |
||||
|
<el-dialog |
||||
|
:title="dialog.title" |
||||
|
@close="closeDialog" |
||||
|
:visible.sync="dialog.visible" |
||||
|
width="50%" |
||||
|
> |
||||
|
<component :is="dialog.dom" :model="mdl"></component> |
||||
|
<div slot="footer" class="dialog-footer"> |
||||
|
<el-button size="mini" @click="closeDialog">取 消</el-button> |
||||
|
<el-button size="mini" type="primary" @click="submitForm('ruleForm')" |
||||
|
>保存</el-button |
||||
|
> |
||||
|
</div> |
||||
|
</el-dialog> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<style scoped lang="less"> |
||||
|
.top-title { |
||||
|
height: 50px; |
||||
|
background-color: white; |
||||
|
display: flex; |
||||
|
padding-left: 16px; |
||||
|
align-items: center; |
||||
|
font-weight: 600; |
||||
|
} |
||||
|
|
||||
|
.table-box { |
||||
|
width: 100%; |
||||
|
height: calc(100% - 50px - 24px); |
||||
|
margin-top: 24px; |
||||
|
padding: 16px; |
||||
|
background-color: white; |
||||
|
|
||||
|
.search-input { |
||||
|
width: 300px; |
||||
|
margin-right: 10px; |
||||
|
} |
||||
|
|
||||
|
.search-btn { |
||||
|
margin-left: 10px; |
||||
|
background-color: #37b29e; |
||||
|
border: none; |
||||
|
|
||||
|
&:hover { |
||||
|
background-color: #5ac6b9; |
||||
|
} |
||||
|
|
||||
|
&:active { |
||||
|
background-color: #2b8070; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,120 @@ |
|||||
|
<script> |
||||
|
|
||||
|
export default { |
||||
|
name: "Edit", |
||||
|
props: { |
||||
|
model: { |
||||
|
type: Object, |
||||
|
default: null |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
ruleForm: { |
||||
|
name: '', |
||||
|
number: '', |
||||
|
control: '', |
||||
|
instruct: '', |
||||
|
leftTrunk: '', |
||||
|
rightTrunk: '', |
||||
|
upstream: '', |
||||
|
downstream: '', |
||||
|
opening: '', |
||||
|
time: '' |
||||
|
}, |
||||
|
rules: { |
||||
|
name: [ |
||||
|
{ required: true, message: "请输入闸门名称", trigger: "blur" }, |
||||
|
], |
||||
|
control: [ |
||||
|
{ required: true, message: "请输入控制水位", trigger: "blur" }, |
||||
|
], |
||||
|
leftTrunk: [ |
||||
|
{ required: true, message: "请输入左干", trigger: "blur" }, |
||||
|
], |
||||
|
rightTrunk: [ |
||||
|
{ required: true, message: "请输入右干", trigger: "blur" }, |
||||
|
], |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<template> |
||||
|
<div> |
||||
|
<div style="display: flex; margin-bottom: 16px"> |
||||
|
<div |
||||
|
style=" |
||||
|
width: 5px; |
||||
|
height: 16px; |
||||
|
background-color: #31a08e; |
||||
|
margin-right: 8px; |
||||
|
" |
||||
|
></div> |
||||
|
<span style="font-weight: 600">基础信息</span> |
||||
|
</div> |
||||
|
<el-form |
||||
|
:model="ruleForm" |
||||
|
:rules="rules" |
||||
|
:disabled="!!model" |
||||
|
ref="ruleForm" |
||||
|
label-width="100px" |
||||
|
> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="闸门" prop="name"> |
||||
|
<el-input style="width: 202px" v-model="ruleForm.name"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="闸号" prop="number"> |
||||
|
<el-input style="width: 202px" v-model="ruleForm.number"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="控制水位" prop="control"> |
||||
|
<el-input style="width: 202px" v-model="ruleForm.control"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="指令号" prop="instruct"> |
||||
|
<el-input style="width: 202px" v-model="ruleForm.instruct"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="左干" prop="leftTrunk"> |
||||
|
<el-input style="width: 202px" v-model="ruleForm.leftTrunk"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="右干" prop="rightTrunk"> |
||||
|
<el-input style="width: 202px" v-model="ruleForm.rightTrunk"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="上游水位" prop="upstream"> |
||||
|
<el-input style="width: 202px" v-model="ruleForm.upstream"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="下游水位" prop="downstream"> |
||||
|
<el-input style="width: 202px" v-model="ruleForm.downstream"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="开度" prop="opening"> |
||||
|
<el-input style="width: 202px" v-model="ruleForm.opening"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="时间" prop="time"> |
||||
|
<el-input style="width: 202px" v-model="ruleForm.time"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-form> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<style scoped lang="scss"> |
||||
|
|
||||
|
</style> |
@ -0,0 +1,293 @@ |
|||||
|
<!-- 巡查项目管理-水闸 --> |
||||
|
<script> |
||||
|
import Edit from './components/edit.vue' |
||||
|
import { |
||||
|
getDicts, |
||||
|
postSZInspectionProjectList, |
||||
|
postSZInspectionProject, |
||||
|
putSZInspectionProject, |
||||
|
deleteSZInspectionProject, |
||||
|
getSZInspectionProject, |
||||
|
} from "@/api/management"; |
||||
|
export default { |
||||
|
name: "record", |
||||
|
components: { |
||||
|
Edit |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
searchForm: { |
||||
|
gate: '', |
||||
|
instruct: '', |
||||
|
number: '' |
||||
|
}, |
||||
|
dialog: { |
||||
|
title: '新增操作记录', |
||||
|
dom: '', |
||||
|
visible: false |
||||
|
}, |
||||
|
mdl: null, |
||||
|
tableData: [], // 检查列表 |
||||
|
pageData: { |
||||
|
pageNum: 1, // 当前页 |
||||
|
pageSize: 10, // 请求数量 |
||||
|
pageSizes: [10, 20, 50, 100], |
||||
|
total: 0, // 总数量 |
||||
|
}, |
||||
|
}; |
||||
|
}, |
||||
|
methods: { |
||||
|
handleCurrentPageChange(page) { |
||||
|
this.pageData.pageNum = page; |
||||
|
this.getTableData(); |
||||
|
}, |
||||
|
handlePageSizeChange(pageSize) { |
||||
|
this.pageData.pageSize = pageSize; |
||||
|
this.getTableData(); |
||||
|
}, |
||||
|
// 表格筛选 |
||||
|
searchTableList() { |
||||
|
postSZInspectionProjectList({ |
||||
|
data: { |
||||
|
timeView: { |
||||
|
timeField: "create_time", |
||||
|
}, |
||||
|
type: this.searchType == 3 ? "" : this.searchType, |
||||
|
}, |
||||
|
cv: { |
||||
|
name: "name", |
||||
|
type: "like", |
||||
|
value: this.searchInput, |
||||
|
}, |
||||
|
pageSize: this.pageData.pageSize, |
||||
|
pageNum: this.pageData.pageNum, |
||||
|
}).then((res) => { |
||||
|
if (res) { |
||||
|
this.tableData = res.records; |
||||
|
this.pageData.total = res.total; |
||||
|
} |
||||
|
console.log("🚀表格数据🚀", res); |
||||
|
}); |
||||
|
}, |
||||
|
// 重置搜索 |
||||
|
resetSearch() { |
||||
|
if (!this.$refs['searchForm']) return |
||||
|
this.$refs['searchForm'].resetFields() |
||||
|
this.searchTableList(); |
||||
|
}, |
||||
|
// 新增巡查内容 |
||||
|
handleAdd() { |
||||
|
this.dialog.dom = 'Edit' |
||||
|
this.dialog.visible = true |
||||
|
}, |
||||
|
handleCheck(row) { |
||||
|
this.dialog.dom = 'Edit' |
||||
|
this.mdl = {...row} |
||||
|
this.dialog.visible = true |
||||
|
}, |
||||
|
// 保存巡查项目 |
||||
|
submitForm(formName) { |
||||
|
this.$refs[formName].validate((valid) => { |
||||
|
if (valid) { |
||||
|
console.log(this.ruleForm); |
||||
|
if (this.ruleForm.id) { |
||||
|
putSZInspectionProject(this.ruleForm).then(() => { |
||||
|
this.getTableData(); |
||||
|
this.dialogVisible = false; |
||||
|
this.$message.success("更新成功"); |
||||
|
}); |
||||
|
} else { |
||||
|
postSZInspectionProject(this.ruleForm).then(() => { |
||||
|
this.getTableData(); |
||||
|
this.dialogVisible = false; |
||||
|
this.$message.success("添加成功"); |
||||
|
}); |
||||
|
} |
||||
|
} else { |
||||
|
console.log("校验不通过"); |
||||
|
return false; |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
// 关闭dialog |
||||
|
closeDialog() { |
||||
|
this.dialog.visible = false |
||||
|
this.mdl = null |
||||
|
}, |
||||
|
// 获取列表数据 |
||||
|
getTableData() { |
||||
|
(this.searchInput = ""), |
||||
|
(this.searchType = 3), |
||||
|
postSZInspectionProjectList({ |
||||
|
data: { |
||||
|
timeView: { |
||||
|
timeField: "create_time", |
||||
|
}, |
||||
|
}, |
||||
|
cv: { |
||||
|
name: "name", |
||||
|
type: "like", |
||||
|
}, |
||||
|
pageSize: this.pageData.pageSize, |
||||
|
pageNum: this.pageData.pageNum, |
||||
|
}).then((res) => { |
||||
|
if (res) { |
||||
|
this.tableData = res.records; |
||||
|
this.pageData.total = res.total; |
||||
|
} |
||||
|
console.log("🚀表格数据🚀", res); |
||||
|
}); |
||||
|
}, |
||||
|
}, |
||||
|
mounted() { |
||||
|
// 获取列表数据 |
||||
|
this.getTableData(); |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<template> |
||||
|
<div class="slider-right"> |
||||
|
<div class="top-title">水闸操作记录</div> |
||||
|
<div class="table-box"> |
||||
|
<el-form inline :model="searchForm" ref="searchForm" class="demo-ruleForm"> |
||||
|
<el-form-item label="闸门:" prop="gate"> |
||||
|
<el-input v-model="searchForm.gate" class="search-input" placeholder="请输入闸门"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="指令号:" prop="instruct"> |
||||
|
<el-input v-model="searchForm.instruct" class="search-input" placeholder="请输入指令号"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="闸号:" prop="number"> |
||||
|
<el-input v-model="searchForm.number" class="search-input" placeholder="请输入闸号"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item> |
||||
|
<el-button class="search-btn" type="success" @click="searchTableList()">查询</el-button> |
||||
|
<el-button @click="resetSearch()">重置</el-button> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
<el-button |
||||
|
class="search-btn" |
||||
|
style="margin-right: 16px; margin-bottom: 8px; float: right" |
||||
|
type="success" |
||||
|
@click="handleAdd()" |
||||
|
>新增</el-button |
||||
|
> |
||||
|
<el-table height="625" :data="tableData" border style="width: 100%"> |
||||
|
<el-table-column type="index" align="center" label="序号"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="name" align="center" label="闸门" min-width="150"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="name" align="center" label="指令号" min-width="120"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="name" align="center" label="控制水位(m)" min-width="120"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="name" align="center" label="左干(m³/s)" min-width="120"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="name" align="center" label="右干(m³/s)" min-width="120"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="name" align="center" label="上游水位(m)" min-width="120"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="name" align="center" label="下游水位(m)" min-width="120"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="name" align="center" label="闸号" min-width="150"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="name" align="center" label="操作人" min-width="120"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="name" align="center" label="监护人" min-width="120"> |
||||
|
</el-table-column> |
||||
|
<el-table-column |
||||
|
min-width="200" |
||||
|
prop="createTime" |
||||
|
align="center" |
||||
|
sortable |
||||
|
label="创建时间" |
||||
|
> |
||||
|
</el-table-column> |
||||
|
<el-table-column |
||||
|
min-width="200" |
||||
|
prop="updateTime" |
||||
|
align="center" |
||||
|
sortable |
||||
|
label="更新时间" |
||||
|
> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="address" align="center" label="操作" fixed="right"> |
||||
|
<template slot-scope="scope"> |
||||
|
<el-button |
||||
|
style="margin-right: 16px" |
||||
|
@click="handleCheck(scope.row)" |
||||
|
type="text" |
||||
|
size="small" |
||||
|
> |
||||
|
查看 |
||||
|
</el-button> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</el-table> |
||||
|
<el-pagination |
||||
|
background |
||||
|
class="pagination" |
||||
|
style="margin-top: 16px; margin-right: 16px; float: right" |
||||
|
:current-page="pageData.pageNum" |
||||
|
:page-sizes="pageData.pageSizes" |
||||
|
layout="total, prev, pager, next, sizes, jumper" |
||||
|
:total="pageData.total" |
||||
|
@current-change="(e) => handleCurrentPageChange(e)" |
||||
|
@size-change="(e) => handlePageSizeChange(e)" |
||||
|
> |
||||
|
</el-pagination> |
||||
|
</div> |
||||
|
<el-dialog |
||||
|
:title="dialog.title" |
||||
|
@close="closeDialog" |
||||
|
:visible.sync="dialog.visible" |
||||
|
width="50%" |
||||
|
> |
||||
|
<component :is="dialog.dom" :model="mdl"></component> |
||||
|
<div slot="footer" class="dialog-footer"> |
||||
|
<el-button size="mini" @click="closeDialog">取 消</el-button> |
||||
|
<el-button size="mini" type="primary" @click="submitForm('ruleForm')" |
||||
|
>保存</el-button |
||||
|
> |
||||
|
</div> |
||||
|
</el-dialog> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<style scoped lang="less"> |
||||
|
.top-title { |
||||
|
height: 50px; |
||||
|
background-color: white; |
||||
|
display: flex; |
||||
|
padding-left: 16px; |
||||
|
align-items: center; |
||||
|
font-weight: 600; |
||||
|
} |
||||
|
|
||||
|
.table-box { |
||||
|
width: 100%; |
||||
|
height: calc(100% - 50px - 24px); |
||||
|
margin-top: 24px; |
||||
|
padding: 16px; |
||||
|
background-color: white; |
||||
|
|
||||
|
.search-input { |
||||
|
width: 300px; |
||||
|
margin-right: 10px; |
||||
|
} |
||||
|
|
||||
|
.search-btn { |
||||
|
margin-left: 10px; |
||||
|
background-color: #37b29e; |
||||
|
border: none; |
||||
|
|
||||
|
&:hover { |
||||
|
background-color: #5ac6b9; |
||||
|
} |
||||
|
|
||||
|
&:active { |
||||
|
background-color: #2b8070; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,222 @@ |
|||||
|
<!-- 调度运用管理-水闸 --> |
||||
|
<script> |
||||
|
import { |
||||
|
getDicts, |
||||
|
postSZInspectionProjectList, |
||||
|
} from "@/api/management"; |
||||
|
import { |
||||
|
getRunSzDeviceRecord |
||||
|
} from "@/api/sluice"; |
||||
|
export default { |
||||
|
name: "utilize", |
||||
|
data() { |
||||
|
return { |
||||
|
searchInput: "", |
||||
|
searchType: 3, |
||||
|
examType: [], // 检查类型 |
||||
|
tableData: [], // 检查列表 |
||||
|
pageData: { |
||||
|
pageNum: 1, // 当前页 |
||||
|
pageSize: 10, // 请求数量 |
||||
|
pageSizes: [10, 20, 50, 100], |
||||
|
total: 0, // 总数量 |
||||
|
}, |
||||
|
}; |
||||
|
}, |
||||
|
methods: { |
||||
|
handleGoPlan(row) { |
||||
|
this.$router.push({ |
||||
|
path: "plan", |
||||
|
query: { id: row.id }, |
||||
|
}); |
||||
|
}, |
||||
|
handleGoRecord(row) { |
||||
|
this.$router.push({ |
||||
|
path: "record", |
||||
|
query: { id: row.id }, |
||||
|
}); |
||||
|
}, |
||||
|
handleCurrentPageChange(page) { |
||||
|
this.pageData.pageNum = page; |
||||
|
this.getTableData(); |
||||
|
}, |
||||
|
handlePageSizeChange(pageSize) { |
||||
|
this.pageData.pageSize = pageSize; |
||||
|
this.getTableData(); |
||||
|
}, |
||||
|
// 表格筛选 |
||||
|
searchTableList() { |
||||
|
postSZInspectionProjectList({ |
||||
|
data: { |
||||
|
timeView: { |
||||
|
timeField: "create_time", |
||||
|
}, |
||||
|
type: this.searchType == 3 ? "" : this.searchType, |
||||
|
}, |
||||
|
cv: { |
||||
|
name: "name", |
||||
|
type: "like", |
||||
|
value: this.searchInput, |
||||
|
}, |
||||
|
pageSize: this.pageData.pageSize, |
||||
|
pageNum: this.pageData.pageNum, |
||||
|
}).then((res) => { |
||||
|
if (res) { |
||||
|
this.tableData = res.records; |
||||
|
this.pageData.total = res.total; |
||||
|
} |
||||
|
console.log("🚀表格数据🚀", res); |
||||
|
}); |
||||
|
}, |
||||
|
// 获取列表数据 |
||||
|
getTableData() { |
||||
|
(this.searchInput = ""), |
||||
|
(this.searchType = 3), |
||||
|
getRunSzDeviceRecord({ |
||||
|
data: { |
||||
|
timeView: { |
||||
|
timeField: "create_time", |
||||
|
}, |
||||
|
}, |
||||
|
cv: { |
||||
|
name: "name", |
||||
|
type: "like", |
||||
|
}, |
||||
|
pageSize: this.pageData.pageSize, |
||||
|
pageNum: this.pageData.pageNum, |
||||
|
}).then((res) => { |
||||
|
if (res) { |
||||
|
this.tableData = res.records; |
||||
|
this.pageData.total = res.total; |
||||
|
} |
||||
|
console.log("🚀表格数据🚀", res); |
||||
|
}); |
||||
|
}, |
||||
|
}, |
||||
|
mounted() { |
||||
|
// 获取列表数据 |
||||
|
this.getTableData(); |
||||
|
// 获取巡查类型 |
||||
|
getDicts("xs_classfy").then((res) => { |
||||
|
this.examType = res.data; |
||||
|
}); |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<template> |
||||
|
<div class="slider-right"> |
||||
|
<div class="top-title">基础信息管理</div> |
||||
|
<div class="table-box"> |
||||
|
<div class="top-search"> |
||||
|
<span>水闸名称:</span> |
||||
|
<el-input |
||||
|
class="search-input" |
||||
|
v-model="searchInput" |
||||
|
placeholder="请输入水闸名称" |
||||
|
/> |
||||
|
<span>巡查类型:</span> |
||||
|
<el-select v-model="searchType" placeholder="请选择"> |
||||
|
<el-option |
||||
|
v-for="item in examType" |
||||
|
:label="item.dictLabel" |
||||
|
:value="item.dictValue" |
||||
|
:key="item.id" |
||||
|
></el-option> |
||||
|
<el-option label="全部" :value="3"></el-option> |
||||
|
</el-select> |
||||
|
<el-button class="search-btn" type="success" @click="searchTableList()" |
||||
|
>搜索</el-button |
||||
|
> |
||||
|
</div> |
||||
|
<el-table height="625" :data="tableData" border> |
||||
|
<el-table-column type="index" align="center" label="序号" width="100"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="name" align="center" label="水闸名称"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="name" align="center" label="水闸名代码"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="name" align="center" label="管理单位"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="name" align="center" label="行政主管部门"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="createTime" align="center" label="最近巡查回见"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="address" align="center" label="操作"> |
||||
|
<template slot-scope="scope"> |
||||
|
<el-button |
||||
|
style="margin-right: 16px" |
||||
|
@click="handleGoPlan(scope.row)" |
||||
|
type="text" |
||||
|
size="small" |
||||
|
>计划管理</el-button |
||||
|
> |
||||
|
<el-button |
||||
|
style="margin-right: 16px" |
||||
|
@click="handleGoRecord(scope.row)" |
||||
|
type="text" |
||||
|
size="small" |
||||
|
>巡查记录</el-button |
||||
|
> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</el-table> |
||||
|
<el-pagination |
||||
|
background |
||||
|
class="pagination" |
||||
|
style="margin-top: 16px; margin-right: 16px; float: right" |
||||
|
:current-page="pageData.pageNum" |
||||
|
:page-sizes="pageData.pageSizes" |
||||
|
layout="total, prev, pager, next, sizes, jumper" |
||||
|
:total="pageData.total" |
||||
|
@current-change="(e) => handleCurrentPageChange(e)" |
||||
|
@size-change="(e) => handlePageSizeChange(e)" |
||||
|
> |
||||
|
</el-pagination> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<style scoped lang="less"> |
||||
|
.top-title { |
||||
|
height: 50px; |
||||
|
background-color: white; |
||||
|
display: flex; |
||||
|
padding-left: 16px; |
||||
|
align-items: center; |
||||
|
font-weight: 600; |
||||
|
} |
||||
|
|
||||
|
.table-box { |
||||
|
width: 100%; |
||||
|
height: calc(100% - 50px - 24px); |
||||
|
margin-top: 24px; |
||||
|
padding: 16px; |
||||
|
background-color: white; |
||||
|
|
||||
|
.top-search { |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
margin-bottom: 8px; |
||||
|
|
||||
|
.search-input { |
||||
|
width: 300px; |
||||
|
margin-right: 10px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.search-btn { |
||||
|
margin-left: 10px; |
||||
|
background-color: #37b29e; |
||||
|
border: none; |
||||
|
|
||||
|
&:hover { |
||||
|
background-color: #5ac6b9; |
||||
|
} |
||||
|
|
||||
|
&:active { |
||||
|
background-color: #2b8070; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,3 @@ |
|||||
|
<template > |
||||
|
<router-view /> |
||||
|
</template> |
@ -0,0 +1,258 @@ |
|||||
|
<!-- 调度运用管理-水闸 --> |
||||
|
<script> |
||||
|
import {getDicts} from "@/api/management"; |
||||
|
import { getAreasData } from "@/api/areas/index"; |
||||
|
import { getRunProjectList } from "@/api/sluice/index"; |
||||
|
let that |
||||
|
export default { |
||||
|
name: "sluice", |
||||
|
data() { |
||||
|
return { |
||||
|
searchForm: { |
||||
|
adcd: '', |
||||
|
wagaType: -1, |
||||
|
wagaName: '' |
||||
|
}, |
||||
|
searchInput: "", |
||||
|
searchType: 3, |
||||
|
sluiceType: [], // 检查类型 |
||||
|
areasOptions: [], // 检查类型 |
||||
|
adcdOptions: [], // 检查类型 |
||||
|
areasOptionProps: { |
||||
|
emitPath: false, |
||||
|
checkStrictly: true, //选择任意一级 |
||||
|
}, |
||||
|
tableData: [], // 检查列表 |
||||
|
pageData: { |
||||
|
pageNum: 1, // 当前页 |
||||
|
pageSize: 10, // 请求数量 |
||||
|
pageSizes: [10, 20, 50, 100], |
||||
|
total: 0, // 总数量 |
||||
|
}, |
||||
|
}; |
||||
|
}, |
||||
|
created() { |
||||
|
that = this |
||||
|
}, |
||||
|
filters: { |
||||
|
// 过滤类型 |
||||
|
filterSluice (price) { |
||||
|
const data = that.sluiceType.filter((res) => res.dictValue == price) |
||||
|
return data[0] ? data[0].dictLabel : '/' |
||||
|
}, |
||||
|
// 过滤区域 |
||||
|
filterAdcd (price) { |
||||
|
let name = '' |
||||
|
if (that.adcdOptions.filter((res) => res.id == price)[0]) { |
||||
|
name = that.adcdOptions.filter((res) => res.id == price)[0].name |
||||
|
} |
||||
|
return name |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
handleGoManage(row) { |
||||
|
this.$router.push({ |
||||
|
path: "manage", |
||||
|
query: { wagaCode: row.wagaCode }, |
||||
|
}); |
||||
|
}, |
||||
|
handleCurrentPageChange(page) { |
||||
|
this.pageData.pageNum = page; |
||||
|
this.getTableData(); |
||||
|
}, |
||||
|
handlePageSizeChange(pageSize) { |
||||
|
this.pageData.pageSize = pageSize; |
||||
|
this.getTableData(); |
||||
|
}, |
||||
|
search() { |
||||
|
this.pageData.pageNum = 1; |
||||
|
this.getTableData(); |
||||
|
}, |
||||
|
// 重置搜索 |
||||
|
resetSearch() { |
||||
|
this.pageData.pageNum = 1; |
||||
|
if (!this.$refs['searchForm']) return |
||||
|
this.$refs['searchForm'].resetFields() |
||||
|
this.getTableData(); |
||||
|
}, |
||||
|
// 获取列表数据 |
||||
|
getTableData() { |
||||
|
getRunProjectList({ |
||||
|
data: { |
||||
|
timeView: { |
||||
|
timeField: "create_time", |
||||
|
}, |
||||
|
adcd: this.searchForm.adcd, |
||||
|
wagaType: this.searchForm.wagaType == -1 ? "" : this.searchForm.wagaType, |
||||
|
wagaName: this.searchForm.wagaName |
||||
|
}, |
||||
|
cv: { |
||||
|
name: "name", |
||||
|
type: "like", |
||||
|
}, |
||||
|
pageSize: this.pageData.pageSize, |
||||
|
pageNum: this.pageData.pageNum, |
||||
|
}).then((res) => { |
||||
|
if (res) { |
||||
|
this.tableData = res.records; |
||||
|
this.pageData.total = res.total; |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
// 获取地区树数据 |
||||
|
getTreeData() { |
||||
|
getAreasData().then((items) => { |
||||
|
this.adcdOptions = items.data |
||||
|
if (items?.data) { |
||||
|
let res = []; |
||||
|
let getChildren = (res, pid) => { |
||||
|
for (const i of items.data) { |
||||
|
if (i.parentid === pid) { |
||||
|
const newItem = { |
||||
|
label: i.name, |
||||
|
value: i.id, |
||||
|
}; |
||||
|
if (i.layer != 3) newItem.children = []; |
||||
|
res.push(newItem); |
||||
|
getChildren(newItem.children, newItem.value); |
||||
|
} |
||||
|
} |
||||
|
}; |
||||
|
getChildren(res, items.data[0].parentid); |
||||
|
this.areasOptions = res; |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
}, |
||||
|
async mounted () { |
||||
|
// 获取水闸类型 |
||||
|
getDicts("sluice_type").then((res) => { |
||||
|
this.sluiceType = res.data; |
||||
|
}); |
||||
|
console.log(123) |
||||
|
await this.getTreeData(); |
||||
|
// 获取列表数据 |
||||
|
await this.getTableData(); |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<template> |
||||
|
<div class="slider-right"> |
||||
|
<div class="top-title">基础信息管理</div> |
||||
|
<div class="table-box"> |
||||
|
<el-form inline :model="searchForm" ref="searchForm" class="demo-ruleForm"> |
||||
|
<el-form-item label="区域选择:" prop="adcd"> |
||||
|
<el-cascader |
||||
|
:options="areasOptions" |
||||
|
v-model="searchForm.adcd" |
||||
|
:props="areasOptionProps" |
||||
|
placeholder="请选择" |
||||
|
clearable |
||||
|
size="small" |
||||
|
> |
||||
|
</el-cascader> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="水闸类型:" prop="wagaType"> |
||||
|
<el-select v-model="searchForm.wagaType" placeholder="请选择"> |
||||
|
<el-option |
||||
|
v-for="item in sluiceType" |
||||
|
:label="item.dictLabel" |
||||
|
:value="item.dictValue" |
||||
|
:key="item.id" |
||||
|
></el-option> |
||||
|
<el-option label="全部" :value="-1"></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="水闸名称:" prop="wagaName"> |
||||
|
<el-input v-model="searchForm.wagaName" class="search-input" placeholder="请输入水闸名称"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item> |
||||
|
<el-button class="search-btn" type="success" @click="search()">查询</el-button> |
||||
|
<el-button @click="resetSearch()">重置</el-button> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
<el-table height="625" :data="tableData" border> |
||||
|
<el-table-column type="index" align="center" label="序号" width="100"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="wagaCode" align="center" label="水闸编码"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="wagaName" align="center" label="水闸名称"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="waterAdministrativeDepartment" align="center" label="水闸类型"> |
||||
|
<template slot-scope="scope"> |
||||
|
{{ scope.row.waterAdministrativeDepartment | filterSluice }} |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="name" align="center" label="区域"> |
||||
|
<template slot-scope="scope"> |
||||
|
{{ scope.row.adcd | filterAdcd }} |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="engineeringManagementUnit" align="center" label="管理机构"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="address" align="center" label="操作"> |
||||
|
<template slot-scope="scope"> |
||||
|
<el-button |
||||
|
style="margin-right: 16px" |
||||
|
@click="handleGoManage(scope.row)" |
||||
|
type="text" |
||||
|
size="small" |
||||
|
>动态监测管理</el-button |
||||
|
> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</el-table> |
||||
|
<el-pagination |
||||
|
background |
||||
|
class="pagination" |
||||
|
style="margin-top: 16px; margin-right: 16px; float: right" |
||||
|
:current-page="pageData.pageNum" |
||||
|
:page-sizes="pageData.pageSizes" |
||||
|
layout="total, prev, pager, next, sizes, jumper" |
||||
|
:total="pageData.total" |
||||
|
@current-change="(e) => handleCurrentPageChange(e)" |
||||
|
@size-change="(e) => handlePageSizeChange(e)" |
||||
|
> |
||||
|
</el-pagination> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<style scoped lang="less"> |
||||
|
.top-title { |
||||
|
height: 50px; |
||||
|
background-color: white; |
||||
|
display: flex; |
||||
|
padding-left: 16px; |
||||
|
align-items: center; |
||||
|
font-weight: 600; |
||||
|
} |
||||
|
|
||||
|
.table-box { |
||||
|
width: 100%; |
||||
|
height: calc(100% - 50px - 24px); |
||||
|
margin-top: 24px; |
||||
|
padding: 16px; |
||||
|
background-color: white; |
||||
|
|
||||
|
.search-input { |
||||
|
width: 300px; |
||||
|
margin-right: 10px; |
||||
|
} |
||||
|
|
||||
|
.search-btn { |
||||
|
margin-left: 10px; |
||||
|
background-color: #37b29e; |
||||
|
border: none; |
||||
|
|
||||
|
&:hover { |
||||
|
background-color: #5ac6b9; |
||||
|
} |
||||
|
|
||||
|
&:active { |
||||
|
background-color: #2b8070; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,208 @@ |
|||||
|
<script> |
||||
|
import { getDicts, getSZDevice } from "@/api/management"; |
||||
|
export default { |
||||
|
name: "Edit", |
||||
|
props: { |
||||
|
model: { |
||||
|
type: Object, |
||||
|
default: null |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
xcDeviceType:[], |
||||
|
xcWarnningType:[], |
||||
|
xcWarnningLevelType:[], |
||||
|
sluiceType:[], |
||||
|
ruleForm: { |
||||
|
type: '', |
||||
|
name: '', |
||||
|
deviceId: '', |
||||
|
message: '', |
||||
|
warningType: '', |
||||
|
warningLevel: '', |
||||
|
reportInterval: '', |
||||
|
minThreshold: 0, |
||||
|
maxThreshold: 0, |
||||
|
}, |
||||
|
rules: { |
||||
|
type: [ |
||||
|
{ required: true, message: "请选择设备类型", trigger: "blur" }, |
||||
|
], |
||||
|
name: [ |
||||
|
{ required: true, message: "请选择设备名称", trigger: "blur" }, |
||||
|
], |
||||
|
message: [ |
||||
|
{ required: true, message: "请输入设备信息", trigger: "blur" }, |
||||
|
], |
||||
|
reportInterval: [ |
||||
|
{ required: true, message: "请输入自动预警上报间隔", trigger: "blur" }, |
||||
|
], |
||||
|
Threshold: [ |
||||
|
{ validator: this.validateThresholds }, |
||||
|
], |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
validateThresholds(rule, value, callback) { |
||||
|
if (this.ruleForm.minThreshold > this.ruleForm.maxThreshold) { |
||||
|
callback(new Error('最小阈值必须小于最大阈值')); |
||||
|
} else { |
||||
|
callback() |
||||
|
} |
||||
|
}, |
||||
|
submitForm(callback) { |
||||
|
this.$refs.ruleForm.validate((valid) => { |
||||
|
if (valid) { |
||||
|
callback({ |
||||
|
...this.ruleForm |
||||
|
}) |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
}, |
||||
|
async mounted() { |
||||
|
// 获取预警类型 |
||||
|
getDicts("xc_warnning_type").then((res) => { |
||||
|
this.xcWarnningType = res.data; |
||||
|
}); |
||||
|
// 获取预警级别 |
||||
|
getDicts("xc_warnning_level").then((res) => { |
||||
|
this.xcWarnningLevelType = res.data; |
||||
|
}); |
||||
|
// 获取设备类型 |
||||
|
getDicts("xc_device_type").then((res) => { |
||||
|
this.xcDeviceType = res.data; |
||||
|
}); |
||||
|
if (this.model) { |
||||
|
const data = await getSZDevice(this.model.id) |
||||
|
this.ruleForm.type = data.data.type + '' |
||||
|
this.ruleForm.name = data.data.name |
||||
|
this.ruleForm.deviceId = data.data.deviceId |
||||
|
this.ruleForm.message = data.data.message |
||||
|
this.ruleForm.warningType = data.data.warningType |
||||
|
this.ruleForm.warningLevel = data.data.warningLevel |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<template> |
||||
|
<div style="display:flex; flex-direction: column"> |
||||
|
<div style="display: flex; margin-bottom: 16px"> |
||||
|
<div |
||||
|
style=" |
||||
|
width: 5px; |
||||
|
height: 16px; |
||||
|
background-color: #31a08e; |
||||
|
margin-right: 8px; |
||||
|
" |
||||
|
></div> |
||||
|
<span style="font-weight: 600">基础信息</span> |
||||
|
</div> |
||||
|
<el-form |
||||
|
:model="ruleForm" |
||||
|
:rules="rules" |
||||
|
:disabled="!!model && model.eventType !== 'edit'" |
||||
|
ref="ruleForm" |
||||
|
label-width="100px" |
||||
|
> |
||||
|
<el-col :span="24"> |
||||
|
<el-form-item label-width="120px" label="设备类型" prop="name"> |
||||
|
<el-select v-model="ruleForm.type" placeholder="请选择"> |
||||
|
<el-option |
||||
|
v-for="item in xcDeviceType" |
||||
|
:label="item.dictLabel" |
||||
|
:value="item.dictValue" |
||||
|
:key="item.id" |
||||
|
></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="设备名称" prop="name"> |
||||
|
<el-input style="width: 202px" v-model="ruleForm.name" placeholder="请输入"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="设备id" prop="number"> |
||||
|
<el-input disabled style="width: 202px" v-model="ruleForm.deviceId"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="24"> |
||||
|
<el-form-item label-width="120px" label="设备信息" prop="message"> |
||||
|
<el-input |
||||
|
style="width: 502px" |
||||
|
v-model="ruleForm.message" |
||||
|
type="textarea" |
||||
|
resize="none" |
||||
|
rows="3" |
||||
|
placeholder="请输入" |
||||
|
maxlength="30" |
||||
|
></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="预警类型" prop="warningType"> |
||||
|
<el-select v-model="ruleForm.warningType" placeholder="请选择"> |
||||
|
<el-option |
||||
|
v-for="item in xcWarnningType" |
||||
|
:label="item.dictLabel" |
||||
|
:value="item.dictValue" |
||||
|
:key="item.id" |
||||
|
></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="预警级别" prop="warningLevel"> |
||||
|
<el-select v-model="ruleForm.warningLevel" placeholder="请选择"> |
||||
|
<el-option |
||||
|
v-for="item in xcWarnningLevelType" |
||||
|
:label="item.dictLabel" |
||||
|
:value="item.dictValue" |
||||
|
:key="item.id" |
||||
|
></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="24"> |
||||
|
<div style="display: flex; margin-bottom: 16px"> |
||||
|
<div |
||||
|
style=" |
||||
|
width: 5px; |
||||
|
height: 16px; |
||||
|
background-color: #31a08e; |
||||
|
margin-right: 8px; |
||||
|
" |
||||
|
></div> |
||||
|
<span style="font-weight: 600">阀值信息</span> |
||||
|
</div> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="200px" label="自动预警上报间隔(分钟)" prop="reportInterval"> |
||||
|
<el-input style="width: 202px" v-model="ruleForm.reportInterval"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="预警阈值" prop="Threshold"> |
||||
|
<el-col :span="8"> |
||||
|
<el-form-item label-width="30px" label=">="> |
||||
|
<el-input style="width: 100px" v-model="ruleForm.minThreshold"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="8"> |
||||
|
<el-form-item label-width="32px" label="<="> |
||||
|
<el-input style="width: 100px" v-model="ruleForm.maxThreshold"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-form> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<style scoped lang="scss"> |
||||
|
|
||||
|
</style> |
@ -0,0 +1,367 @@ |
|||||
|
<!-- 巡查项目管理-水闸 --> |
||||
|
<script> |
||||
|
import Edit from './components/edit.vue' |
||||
|
import { |
||||
|
getDicts, |
||||
|
postSZDeviceList, |
||||
|
postSZDevice, |
||||
|
putSZDevice, |
||||
|
delSZDevice |
||||
|
} from "@/api/management"; |
||||
|
let that |
||||
|
export default { |
||||
|
name: "manage", |
||||
|
components: { |
||||
|
Edit |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
xcWarnningType: [], |
||||
|
xcWarnningLevelType: [], |
||||
|
xcDeviceType: [], |
||||
|
searchForm: { |
||||
|
type: -1, |
||||
|
warningLevel: '', |
||||
|
name: '' |
||||
|
}, |
||||
|
dialog: { |
||||
|
title: '新增操作记录', |
||||
|
dom: '', |
||||
|
visible: false |
||||
|
}, |
||||
|
mdl: null, |
||||
|
tableData: [], // 检查列表 |
||||
|
pageData: { |
||||
|
pageNum: 1, // 当前页 |
||||
|
pageSize: 10, // 请求数量 |
||||
|
pageSizes: [10, 20, 50, 100], |
||||
|
total: 0, // 总数量 |
||||
|
}, |
||||
|
}; |
||||
|
}, |
||||
|
methods: { |
||||
|
handleCurrentPageChange(page) { |
||||
|
this.pageData.pageNum = page; |
||||
|
this.getTableData(); |
||||
|
}, |
||||
|
handlePageSizeChange(pageSize) { |
||||
|
this.pageData.pageSize = pageSize; |
||||
|
this.getTableData(); |
||||
|
}, |
||||
|
search() { |
||||
|
this.pageData.pageNum = 1; |
||||
|
this.getTableData(); |
||||
|
}, |
||||
|
handleRecord(row) { |
||||
|
this.$router.push({ |
||||
|
path: "record", |
||||
|
query: {id: row.id}, |
||||
|
}); |
||||
|
}, |
||||
|
// 重置搜索 |
||||
|
resetSearch() { |
||||
|
this.pageData.pageNum = 1; |
||||
|
if (!this.$refs['searchForm']) return |
||||
|
this.$refs['searchForm'].resetFields() |
||||
|
this.getTableData(); |
||||
|
}, |
||||
|
// 新增巡查内容 |
||||
|
handleAdd() { |
||||
|
this.dialog.dom = 'Edit' |
||||
|
this.dialog.visible = true |
||||
|
}, |
||||
|
handleCheck(row) { |
||||
|
this.dialog.dom = 'Edit' |
||||
|
this.mdl = {...row} |
||||
|
this.dialog.visible = true |
||||
|
}, |
||||
|
handleEdit(row) { |
||||
|
this.dialog.dom = 'Edit' |
||||
|
this.mdl = { |
||||
|
eventType: 'edit', |
||||
|
...row |
||||
|
} |
||||
|
this.dialog.visible = true |
||||
|
}, |
||||
|
async handleDelete(row) { |
||||
|
await delSZDevice(row.id) |
||||
|
this.$message.success('删除成功') |
||||
|
this.getTableData() |
||||
|
}, |
||||
|
// 保存巡查项目 |
||||
|
submitForm () { |
||||
|
this.$refs.component.submitForm(async (from) => { |
||||
|
if (this.mdl) { |
||||
|
await putSZDevice({ |
||||
|
id: this.mdl.id, |
||||
|
...from, |
||||
|
wagaCode: this.$route.query.wagaCode |
||||
|
}) |
||||
|
this.closeDialog() |
||||
|
this.getTableData() |
||||
|
} else { |
||||
|
await postSZDevice({ |
||||
|
...from, |
||||
|
wagaCode: this.$route.query.wagaCode |
||||
|
}) |
||||
|
this.$message.success('新增成功') |
||||
|
this.closeDialog() |
||||
|
this.getTableData() |
||||
|
} |
||||
|
}) |
||||
|
|
||||
|
}, |
||||
|
// 关闭dialog |
||||
|
closeDialog() { |
||||
|
this.dialog.visible = false |
||||
|
this.mdl = null |
||||
|
}, |
||||
|
// 获取列表数据 |
||||
|
getTableData() { |
||||
|
postSZDeviceList({ |
||||
|
data: { |
||||
|
timeView: { |
||||
|
timeField: "create_time", |
||||
|
}, |
||||
|
type: this.searchForm.type === -1 ? '' : this.searchForm.type, |
||||
|
name: this.searchForm.name, |
||||
|
wagaCode: this.$route.query.wagaCode |
||||
|
}, |
||||
|
cv: { |
||||
|
name: "name", |
||||
|
type: "like", |
||||
|
}, |
||||
|
pageSize: this.pageData.pageSize, |
||||
|
pageNum: this.pageData.pageNum, |
||||
|
}).then((res) => { |
||||
|
if (res) { |
||||
|
this.tableData = res.records; |
||||
|
this.pageData.total = res.total; |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
}, |
||||
|
created() { |
||||
|
that = this |
||||
|
}, |
||||
|
filters: { |
||||
|
// 过滤预警类型 |
||||
|
filterwarnningType (price) { |
||||
|
const data = that.xcWarnningType.filter((res) => res.dictValue == price) |
||||
|
return data[0] ? data[0].dictLabel : '/' |
||||
|
}, |
||||
|
// 过滤预警级别 |
||||
|
filterwarnningLevel (price) { |
||||
|
const data = that.xcWarnningLevelType.filter((res) => res.dictValue == price) |
||||
|
return data[0] ? data[0].dictLabel : '/' |
||||
|
}, |
||||
|
// 过滤设备级别 |
||||
|
filterdeviceType (price) { |
||||
|
const data = that.xcDeviceType.filter((res) => res.dictValue == price) |
||||
|
return data[0] ? data[0].dictLabel : '/' |
||||
|
} |
||||
|
}, |
||||
|
async mounted() { |
||||
|
// 获取预警类型 |
||||
|
getDicts("xc_warnning_type").then((res) => { |
||||
|
this.xcWarnningType = res.data; |
||||
|
}); |
||||
|
// 获取预警级别 |
||||
|
getDicts("xc_warnning_level").then((res) => { |
||||
|
this.xcWarnningLevelType = res.data; |
||||
|
}); |
||||
|
// 获取设备类型 |
||||
|
getDicts("xc_device_type").then((res) => { |
||||
|
this.xcDeviceType = res.data; |
||||
|
}); |
||||
|
// 获取列表数据 |
||||
|
await this.getTableData(); |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<template> |
||||
|
<div class="slider-right"> |
||||
|
<div class="top-title">水闸动态监测管理</div> |
||||
|
<div class="table-box"> |
||||
|
<el-form inline :model="searchForm" ref="searchForm" class="demo-ruleForm"> |
||||
|
<el-form-item label="设备类型:" prop="type"> |
||||
|
<el-select v-model="searchForm.type" placeholder="请选择"> |
||||
|
<el-option |
||||
|
v-for="item in xcDeviceType" |
||||
|
:label="item.dictLabel" |
||||
|
:value="item.dictValue" |
||||
|
:key="item.id" |
||||
|
></el-option> |
||||
|
<el-option label="全部" :value="-1"></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="预警级别:" prop="warningLevel"> |
||||
|
<el-select v-model="searchForm.warningLevel" placeholder="请选择"> |
||||
|
<el-option |
||||
|
v-for="item in xcWarnningLevelType" |
||||
|
:label="item.dictLabel" |
||||
|
:value="item.dictValue" |
||||
|
:key="item.id" |
||||
|
></el-option> |
||||
|
<el-option label="全部" :value="-1"></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="设备名称:" prop="name"> |
||||
|
<el-input v-model="searchForm.name" class="search-input" placeholder="请输入设备名称"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item> |
||||
|
<el-button class="search-btn" type="success" @click="search()">查询</el-button> |
||||
|
<el-button @click="resetSearch()">重置</el-button> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
<el-button |
||||
|
class="search-btn" |
||||
|
style="margin-right: 16px; margin-bottom: 8px; float: right" |
||||
|
type="success" |
||||
|
@click="handleAdd()" |
||||
|
>新增 |
||||
|
</el-button |
||||
|
> |
||||
|
<el-table height="625" :data="tableData" border style="width: 100%"> |
||||
|
<el-table-column type="index" align="center" label="序号"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="name" align="center" label="设备名称"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="type" align="center" label="设备类型"> |
||||
|
<template slot-scope="scope"> |
||||
|
{{ scope.row.type | filterdeviceType }} |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="warningType" align="center" label="预警类型"> |
||||
|
<template slot-scope="scope"> |
||||
|
{{ scope.row.warningType | filterwarnningType }} |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="warningLevel" align="center" label="预警等级"> |
||||
|
<template slot-scope="scope"> |
||||
|
{{ scope.row.warningLevel | filterwarnningLevel }} |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column |
||||
|
min-width="200" |
||||
|
prop="createTime" |
||||
|
align="center" |
||||
|
sortable |
||||
|
label="预警时间" |
||||
|
> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="address" align="center" label="操作" min-width="200"> |
||||
|
<template slot-scope="scope"> |
||||
|
<el-button |
||||
|
style="margin-right: 16px" |
||||
|
@click="handleCheck(scope.row)" |
||||
|
type="text" |
||||
|
size="small" |
||||
|
> |
||||
|
查看 |
||||
|
</el-button> |
||||
|
<el-button |
||||
|
style="margin-right: 16px" |
||||
|
@click="handleEdit(scope.row)" |
||||
|
type="text" |
||||
|
size="small" |
||||
|
> |
||||
|
编辑 |
||||
|
</el-button> |
||||
|
<el-button |
||||
|
style="margin-right: 16px" |
||||
|
@click="handleRecord(scope.row)" |
||||
|
type="text" |
||||
|
size="small" |
||||
|
> |
||||
|
历史记录 |
||||
|
</el-button> |
||||
|
<el-popconfirm |
||||
|
confirm-button-text="确定" |
||||
|
cancel-button-text="取消" |
||||
|
icon="el-icon-info" |
||||
|
icon-color="red" |
||||
|
title="确定删除吗?" |
||||
|
@confirm="handleDelete(scope.row)" |
||||
|
> |
||||
|
<el-button |
||||
|
style="color: red" |
||||
|
type="text" |
||||
|
size="small" |
||||
|
slot="reference" |
||||
|
>删除 |
||||
|
</el-button |
||||
|
> |
||||
|
</el-popconfirm> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</el-table> |
||||
|
<el-pagination |
||||
|
background |
||||
|
class="pagination" |
||||
|
style="margin-top: 16px; margin-right: 16px; float: right" |
||||
|
:current-page="pageData.pageNum" |
||||
|
:page-sizes="pageData.pageSizes" |
||||
|
layout="total, prev, pager, next, sizes, jumper" |
||||
|
:total="pageData.total" |
||||
|
@current-change="(e) => handleCurrentPageChange(e)" |
||||
|
@size-change="(e) => handlePageSizeChange(e)" |
||||
|
> |
||||
|
</el-pagination> |
||||
|
</div> |
||||
|
<el-dialog |
||||
|
:title="dialog.title" |
||||
|
@close="closeDialog" |
||||
|
:visible.sync="dialog.visible" |
||||
|
width="50%" |
||||
|
> |
||||
|
<component v-if="dialog.visible" :is="dialog.dom" ref="component" :model="mdl"></component> |
||||
|
<div slot="footer" class="dialog-footer"> |
||||
|
<el-button size="mini" @click="closeDialog">取 消</el-button> |
||||
|
<el-button size="mini" type="primary" @click="submitForm" |
||||
|
>保存 |
||||
|
</el-button |
||||
|
> |
||||
|
</div> |
||||
|
</el-dialog> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<style scoped lang="less"> |
||||
|
.top-title { |
||||
|
height: 50px; |
||||
|
background-color: white; |
||||
|
display: flex; |
||||
|
padding-left: 16px; |
||||
|
align-items: center; |
||||
|
font-weight: 600; |
||||
|
} |
||||
|
|
||||
|
.table-box { |
||||
|
width: 100%; |
||||
|
height: calc(100% - 50px - 24px); |
||||
|
margin-top: 24px; |
||||
|
padding: 16px; |
||||
|
background-color: white; |
||||
|
|
||||
|
.search-input { |
||||
|
width: 300px; |
||||
|
margin-right: 10px; |
||||
|
} |
||||
|
|
||||
|
.search-btn { |
||||
|
margin-left: 10px; |
||||
|
background-color: #37b29e; |
||||
|
border: none; |
||||
|
|
||||
|
&:hover { |
||||
|
background-color: #5ac6b9; |
||||
|
} |
||||
|
|
||||
|
&:active { |
||||
|
background-color: #2b8070; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,120 @@ |
|||||
|
<script> |
||||
|
|
||||
|
export default { |
||||
|
name: "Edit", |
||||
|
props: { |
||||
|
model: { |
||||
|
type: Object, |
||||
|
default: null |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
ruleForm: { |
||||
|
name: '', |
||||
|
number: '', |
||||
|
control: '', |
||||
|
instruct: '', |
||||
|
leftTrunk: '', |
||||
|
rightTrunk: '', |
||||
|
upstream: '', |
||||
|
downstream: '', |
||||
|
opening: '', |
||||
|
time: '' |
||||
|
}, |
||||
|
rules: { |
||||
|
name: [ |
||||
|
{ required: true, message: "请输入闸门名称", trigger: "blur" }, |
||||
|
], |
||||
|
control: [ |
||||
|
{ required: true, message: "请输入控制水位", trigger: "blur" }, |
||||
|
], |
||||
|
leftTrunk: [ |
||||
|
{ required: true, message: "请输入左干", trigger: "blur" }, |
||||
|
], |
||||
|
rightTrunk: [ |
||||
|
{ required: true, message: "请输入右干", trigger: "blur" }, |
||||
|
], |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<template> |
||||
|
<div> |
||||
|
<div style="display: flex; margin-bottom: 16px"> |
||||
|
<div |
||||
|
style=" |
||||
|
width: 5px; |
||||
|
height: 16px; |
||||
|
background-color: #31a08e; |
||||
|
margin-right: 8px; |
||||
|
" |
||||
|
></div> |
||||
|
<span style="font-weight: 600">基础信息</span> |
||||
|
</div> |
||||
|
<el-form |
||||
|
:model="ruleForm" |
||||
|
:rules="rules" |
||||
|
:disabled="!!model" |
||||
|
ref="ruleForm" |
||||
|
label-width="100px" |
||||
|
> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="闸门" prop="name"> |
||||
|
<el-input style="width: 202px" v-model="ruleForm.name"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="闸号" prop="number"> |
||||
|
<el-input style="width: 202px" v-model="ruleForm.number"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="控制水位" prop="control"> |
||||
|
<el-input style="width: 202px" v-model="ruleForm.control"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="指令号" prop="instruct"> |
||||
|
<el-input style="width: 202px" v-model="ruleForm.instruct"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="左干" prop="leftTrunk"> |
||||
|
<el-input style="width: 202px" v-model="ruleForm.leftTrunk"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="右干" prop="rightTrunk"> |
||||
|
<el-input style="width: 202px" v-model="ruleForm.rightTrunk"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="上游水位" prop="upstream"> |
||||
|
<el-input style="width: 202px" v-model="ruleForm.upstream"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="下游水位" prop="downstream"> |
||||
|
<el-input style="width: 202px" v-model="ruleForm.downstream"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="开度" prop="opening"> |
||||
|
<el-input style="width: 202px" v-model="ruleForm.opening"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label-width="120px" label="时间" prop="time"> |
||||
|
<el-input style="width: 202px" v-model="ruleForm.time"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-form> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<style scoped lang="scss"> |
||||
|
|
||||
|
</style> |
@ -0,0 +1,219 @@ |
|||||
|
<!-- 巡查项目管理-水闸 --> |
||||
|
<script> |
||||
|
import { |
||||
|
getRunSzDeviceRecordList |
||||
|
} from "@/api/sluice"; |
||||
|
import { |
||||
|
getDicts |
||||
|
} from "@/api/management"; |
||||
|
let that = this |
||||
|
export default { |
||||
|
name: "record", |
||||
|
data() { |
||||
|
return { |
||||
|
xcWarnningType: [], |
||||
|
xcWarnningLevelType: [], |
||||
|
searchForm: { |
||||
|
warningType: -1, |
||||
|
warningLevel: -1, |
||||
|
warningTime: null, |
||||
|
}, |
||||
|
mdl: null, |
||||
|
tableData: [], // 检查列表 |
||||
|
pageData: { |
||||
|
pageNum: 1, // 当前页 |
||||
|
pageSize: 10, // 请求数量 |
||||
|
pageSizes: [10, 20, 50, 100], |
||||
|
total: 0, // 总数量 |
||||
|
}, |
||||
|
}; |
||||
|
}, |
||||
|
methods: { |
||||
|
handleCurrentPageChange(page) { |
||||
|
this.pageData.pageNum = page; |
||||
|
this.getTableData(); |
||||
|
}, |
||||
|
handlePageSizeChange(pageSize) { |
||||
|
this.pageData.pageSize = pageSize; |
||||
|
this.getTableData(); |
||||
|
}, |
||||
|
search() { |
||||
|
console.log(this.searchForm) |
||||
|
this.pageData.pageNum = 1; |
||||
|
this.getTableData(); |
||||
|
}, |
||||
|
// 重置搜索 |
||||
|
resetSearch() { |
||||
|
this.pageData.pageNum = 1; |
||||
|
if (!this.$refs['searchForm']) return |
||||
|
this.$refs['searchForm'].resetFields() |
||||
|
this.getTableData(); |
||||
|
}, |
||||
|
// 获取列表数据 |
||||
|
getTableData() { |
||||
|
getRunSzDeviceRecordList({ |
||||
|
data: { |
||||
|
warningLevel: this.searchForm.warningLevel === -1 ? '' : this.searchForm.warningLevel, |
||||
|
warningType: this.searchForm.warningType === -1 ? '' : this.searchForm.warningType, |
||||
|
warningEndTime: this.searchForm.warningTime[0] ? this.searchForm.warningTime[0] : '', |
||||
|
warningStartTime: this.searchForm.warningTime[1] ? this.searchForm.warningTime[1] : '', |
||||
|
}, |
||||
|
cv: { |
||||
|
name: "name", |
||||
|
type: "like", |
||||
|
}, |
||||
|
pageSize: this.pageData.pageSize, |
||||
|
pageNum: this.pageData.pageNum, |
||||
|
}).then((res) => { |
||||
|
if (res) { |
||||
|
this.tableData = res.records; |
||||
|
this.pageData.total = res.total; |
||||
|
} |
||||
|
console.log("🚀表格数据🚀", res); |
||||
|
}); |
||||
|
}, |
||||
|
}, |
||||
|
created() { |
||||
|
that = this |
||||
|
}, |
||||
|
filters: { |
||||
|
// 过滤预警类型 |
||||
|
filterwarnningType (price) { |
||||
|
const data = that.xcWarnningType.filter((res) => res.dictValue == price) |
||||
|
return data[0] ? data[0].dictLabel : '/' |
||||
|
}, |
||||
|
// 过滤预警级别 |
||||
|
filterwarnningLevel (price) { |
||||
|
const data = that.xcWarnningLevelType.filter((res) => res.dictValue == price) |
||||
|
return data[0] ? data[0].dictLabel : '/' |
||||
|
} |
||||
|
}, |
||||
|
async mounted() { |
||||
|
// 获取预警类型 |
||||
|
getDicts("xc_warnning_type").then((res) => { |
||||
|
this.xcWarnningType = res.data; |
||||
|
}); |
||||
|
// 获取预警级别 |
||||
|
getDicts("xc_warnning_level").then((res) => { |
||||
|
this.xcWarnningLevelType = res.data; |
||||
|
}); |
||||
|
// 获取列表数据 |
||||
|
await this.getTableData(); |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<template> |
||||
|
<div class="slider-right"> |
||||
|
<div class="top-title">水闸动态监测历史记录</div> |
||||
|
<div class="table-box"> |
||||
|
<el-form inline :model="searchForm" ref="searchForm" class="demo-ruleForm"> |
||||
|
<el-form-item label="预警类型:" prop="warningType"> |
||||
|
<el-select v-model="searchForm.warningType" placeholder="请选择"> |
||||
|
<el-option |
||||
|
v-for="item in xcWarnningType" |
||||
|
:label="item.dictLabel" |
||||
|
:value="item.dictValue" |
||||
|
:key="item.id" |
||||
|
></el-option> |
||||
|
<el-option label="全部" :value="-1"></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="预警级别:" prop="warningLevel"> |
||||
|
<el-select v-model="searchForm.warningLevel" placeholder="请选择"> |
||||
|
<el-option |
||||
|
v-for="item in xcWarnningLevelType" |
||||
|
:label="item.dictLabel" |
||||
|
:value="item.dictValue" |
||||
|
:key="item.id" |
||||
|
></el-option> |
||||
|
<el-option label="全部" :value="-1"></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="预警时间:" prop="warningTime"> |
||||
|
<el-time-picker |
||||
|
is-range |
||||
|
v-model="searchForm.warningTime" |
||||
|
value-format="timestamp" |
||||
|
range-separator="·" |
||||
|
start-placeholder="开始时间" |
||||
|
end-placeholder="结束时间" |
||||
|
placeholder="选择时间范围"> |
||||
|
</el-time-picker> |
||||
|
</el-form-item> |
||||
|
<el-form-item> |
||||
|
<el-button class="search-btn" type="success" @click="search()">查询</el-button> |
||||
|
<el-button @click="resetSearch()">重置</el-button> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
<el-table height="625" :data="tableData" border style="width: 100%"> |
||||
|
<el-table-column type="index" align="center" label="序号"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="warningType" align="center" label="预警类型"> |
||||
|
<template slot-scope="scope"> |
||||
|
{{ scope.row.warningType | filterwarnningType }} |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="warningLevel" align="center" label="预警等级"> |
||||
|
<template slot-scope="scope"> |
||||
|
{{ scope.row.warningLevel | filterwarnningLevel }} |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="warningData" align="center" label="预警数据"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="warningTime" align="center" label="预警时间"> |
||||
|
</el-table-column> |
||||
|
</el-table> |
||||
|
<el-pagination |
||||
|
background |
||||
|
class="pagination" |
||||
|
style="margin-top: 16px; margin-right: 16px; float: right" |
||||
|
:current-page="pageData.pageNum" |
||||
|
:page-sizes="pageData.pageSizes" |
||||
|
layout="total, prev, pager, next, sizes, jumper" |
||||
|
:total="pageData.total" |
||||
|
@current-change="(e) => handleCurrentPageChange(e)" |
||||
|
@size-change="(e) => handlePageSizeChange(e)" |
||||
|
> |
||||
|
</el-pagination> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<style scoped lang="less"> |
||||
|
.top-title { |
||||
|
height: 50px; |
||||
|
background-color: white; |
||||
|
display: flex; |
||||
|
padding-left: 16px; |
||||
|
align-items: center; |
||||
|
font-weight: 600; |
||||
|
} |
||||
|
|
||||
|
.table-box { |
||||
|
width: 100%; |
||||
|
height: calc(100% - 50px - 24px); |
||||
|
margin-top: 24px; |
||||
|
padding: 16px; |
||||
|
background-color: white; |
||||
|
|
||||
|
.search-input { |
||||
|
width: 300px; |
||||
|
margin-right: 10px; |
||||
|
} |
||||
|
|
||||
|
.search-btn { |
||||
|
margin-left: 10px; |
||||
|
background-color: #37b29e; |
||||
|
border: none; |
||||
|
|
||||
|
&:hover { |
||||
|
background-color: #5ac6b9; |
||||
|
} |
||||
|
|
||||
|
&:active { |
||||
|
background-color: #2b8070; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,352 @@ |
|||||
|
<template> |
||||
|
<div class="report-page"> |
||||
|
<div class="sticky-top flex justify-between"> |
||||
|
<el-button type="primary" @click="handleDownPdf">下载报告</el-button> |
||||
|
<el-button @click="$router.go(-1)">返回</el-button> |
||||
|
</div> |
||||
|
<div class="flex justify-center mt-16"> |
||||
|
<div class="p-20" ref="pdfRef"> |
||||
|
<div class="table-box border-l-t font-14"> |
||||
|
<div class="text-center font-16 border-b-r p-10"> |
||||
|
{{ formData.name }} |
||||
|
</div> |
||||
|
<div class="flex border-l-t w-full"> |
||||
|
<div class="flex flex-1"> |
||||
|
<div class="label border-b-r p-10 w-100">巡查时间</div> |
||||
|
<div class="value border-b-r flex-1 p-10"> |
||||
|
{{ formData.startTime }}-{{ formData.doneTime }} |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="flex flex-1"> |
||||
|
<div class="label border-b-r p-10 w-100">天气</div> |
||||
|
<div class="value border-b-r flex-1 p-10"> |
||||
|
{{ formData.weather || "-" }} |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="flex border-l-t w-full"> |
||||
|
<div class="flex flex-1"> |
||||
|
<div class="label border-b-r p-10 w-100">检查人员</div> |
||||
|
<div class="value border-b-r flex-1 p-10"> |
||||
|
{{ formData.patrolName || "-" }} |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="flex border-l-t w-full"> |
||||
|
<div class="flex flex-1"> |
||||
|
<div class="label border-b-r p-10 w-100">管理单位</div> |
||||
|
<div class="value border-b-r flex-1 p-10"> |
||||
|
{{ formData.engineeringManagementUnit }} |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="flex flex-1"> |
||||
|
<div class="label border-b-r p-10 w-100">水闸名称</div> |
||||
|
<div class="value border-b-r flex-1 p-10"> |
||||
|
{{ formData.wagaName || "-" }} |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="flex border-l-t w-full"> |
||||
|
<div |
||||
|
class="flex-1 border-b-r p-10 w-full flex justify-center items-center" |
||||
|
> |
||||
|
检查内容 |
||||
|
</div> |
||||
|
<div class="w-300"> |
||||
|
<div class="label border-b-r p-6 text-center">问题等级</div> |
||||
|
<div class="flex flex-shrink-0"> |
||||
|
<div class="flex-1 border-b-r p-6 text-center">无</div> |
||||
|
<div class="flex-1 border-b-r p-6 text-center">一般</div> |
||||
|
<div class="flex-1 border-b-r p-6 text-center">较重</div> |
||||
|
<div class="flex-1 border-b-r p-6 text-center">严重</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="border-l-t w-full"> |
||||
|
<div v-for="(item, index) in problemList" :key="index" class="flex"> |
||||
|
<div class="w-p-10 border-b-r"> |
||||
|
<div class="flex items-center p-10">{{ item.projectName }}</div> |
||||
|
</div> |
||||
|
<div class="w-p-90"> |
||||
|
<div |
||||
|
v-for="(item2, index2) in item.children" |
||||
|
:key="index2 + '0'" |
||||
|
class="w-full flex" |
||||
|
> |
||||
|
<div class="flex-1 border-b-r p-10">{{ item2.content }}</div> |
||||
|
<div class="w-300 flex flex-shrink-0"> |
||||
|
<div |
||||
|
class="flex-1 border-b-r p-10 flex justify-center items-center" |
||||
|
> |
||||
|
<i class="el-icon-check" v-if="item2.level === '0'"></i> |
||||
|
</div> |
||||
|
<div |
||||
|
class="flex-1 border-b-r p-10 flex justify-center items-center" |
||||
|
> |
||||
|
<i class="el-icon-check" v-if="item2.level === '1'"></i> |
||||
|
</div> |
||||
|
<div |
||||
|
class="flex-1 border-b-r p-10 flex justify-center items-center" |
||||
|
> |
||||
|
<i class="el-icon-check" v-if="item2.level === '2'"></i> |
||||
|
</div> |
||||
|
<div |
||||
|
class="flex-1 border-b-r p-10 flex justify-center items-center" |
||||
|
> |
||||
|
<i class="el-icon-check" v-if="item2.level === '3'"></i> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="border-l-t w-full"> |
||||
|
<div class="flex"> |
||||
|
<div class="w-p-10 border-b-r"> |
||||
|
<div class="flex items-center p-10">问题描述</div> |
||||
|
</div> |
||||
|
<div class="w-p-90 border-b-r p-10"> |
||||
|
{{ |
||||
|
formData.describeTotal && formData.describeTotal.slice(0, -1) |
||||
|
}} |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="border-l-t w-full"> |
||||
|
<div class="flex"> |
||||
|
<div class="w-p-10 border-b-r"> |
||||
|
<div class="flex items-center p-10">现场记录情况</div> |
||||
|
</div> |
||||
|
<div class="w-p-90 border-b-r p-10"> |
||||
|
<el-image |
||||
|
v-for="item in formData.pictures" |
||||
|
:src="item" |
||||
|
style="width: auto" |
||||
|
class="mb-10 mr-10" |
||||
|
:preview-src-list="[item]" |
||||
|
> |
||||
|
<template #error> |
||||
|
<div |
||||
|
class="w-full flex justify-center items-center" |
||||
|
style=" |
||||
|
height: 100px; |
||||
|
border: 1px solid #f0f0f0; |
||||
|
font-style: italic; |
||||
|
color: #ccc; |
||||
|
padding: 10px; |
||||
|
" |
||||
|
> |
||||
|
图片加载失败 |
||||
|
</div> |
||||
|
</template> |
||||
|
</el-image> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="w-full" style="height: 200px"> |
||||
|
<!-- 占位 --> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
import html2canvas from "html2canvas"; |
||||
|
import { jsPDF } from "jspdf"; |
||||
|
import { |
||||
|
getEnableSuperviseWayData, |
||||
|
getSuperviseEngineeringReportDetailsData, |
||||
|
} from "@/api/sluice"; |
||||
|
|
||||
|
import { Loading } from "element-ui"; |
||||
|
export default { |
||||
|
data() { |
||||
|
return { |
||||
|
problemList: [], |
||||
|
formData: {}, |
||||
|
loadingInstance: null, |
||||
|
}; |
||||
|
}, |
||||
|
created() { |
||||
|
this.initData(); |
||||
|
}, |
||||
|
methods: { |
||||
|
// 初始化数据 |
||||
|
async initData() { |
||||
|
const enableData = await getEnableSuperviseWayData({ |
||||
|
wayId: this.$route.query.wayId, |
||||
|
}); |
||||
|
if (enableData) { |
||||
|
let list = []; |
||||
|
enableData.data?.itemList?.forEach((item, index) => { |
||||
|
if (index === 0) { |
||||
|
list.push({ |
||||
|
id: item.id, |
||||
|
projectId: item.projectId, |
||||
|
projectName: item.projectName, |
||||
|
problemDescribe: "", |
||||
|
siteSituationRecords: "", |
||||
|
siteSituationRecordsArr: [], |
||||
|
children: [{ ...item, level: null }], |
||||
|
}); |
||||
|
} else { |
||||
|
let exitItem = list.find((v) => v.projectId === item.projectId); |
||||
|
if (!exitItem) { |
||||
|
list.push({ |
||||
|
id: item.id, |
||||
|
projectId: item.projectId, |
||||
|
projectName: item.projectName, |
||||
|
problemDescribe: "", |
||||
|
siteSituationRecords: "", |
||||
|
siteSituationRecordsArr: [], |
||||
|
children: [{ ...item, level: null }], |
||||
|
}); |
||||
|
} else { |
||||
|
exitItem.children.push({ |
||||
|
...item, |
||||
|
level: null, |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
}); |
||||
|
this.problemList = list; |
||||
|
console.log("this.problemList >>>>> ", this.problemList); |
||||
|
} |
||||
|
|
||||
|
const detailRes = await getSuperviseEngineeringReportDetailsData( |
||||
|
this.$route.query.id |
||||
|
); |
||||
|
if (detailRes?.data && this.problemList.length) { |
||||
|
const { data } = detailRes; |
||||
|
this.formData = { ...data }; |
||||
|
this.formData.problemList = []; |
||||
|
this.formData.pictures = []; |
||||
|
// 产品说描述拼接一起 |
||||
|
this.formData.describeTotal = ""; |
||||
|
const { engineeringList, problemList } = data; |
||||
|
this.problemList.forEach((item) => { |
||||
|
let exitItem = engineeringList.find( |
||||
|
(v) => v.projectId === item.projectId |
||||
|
); |
||||
|
if (exitItem) { |
||||
|
item.newId = item.id === exitItem.id ? null : exitItem.id; |
||||
|
item.problemDescribe = exitItem.problemDescribe; |
||||
|
if (item.problemDescribe) { |
||||
|
this.formData.describeTotal += item.problemDescribe + ","; |
||||
|
} |
||||
|
item.siteSituationRecords = exitItem.siteSituationRecords; |
||||
|
item.siteSituationRecordsArr = exitItem.siteSituationRecords |
||||
|
? exitItem.siteSituationRecords.split(",") |
||||
|
: []; |
||||
|
if (item.siteSituationRecordsArr.length > 0) { |
||||
|
this.formData.pictures.push(...item.siteSituationRecordsArr); |
||||
|
} |
||||
|
item.children.forEach((item2) => { |
||||
|
let exitItem2 = problemList.find( |
||||
|
(v) => v.projectItemId === item2.id |
||||
|
); |
||||
|
if (exitItem2) { |
||||
|
item2.level = exitItem2.level; |
||||
|
item2.newId = item2.id === exitItem2.id ? null : exitItem2.id; |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
}, |
||||
|
// 下载报告 |
||||
|
handleDownPdf() { |
||||
|
this.loadingInstance = Loading.service({ |
||||
|
lock: true, |
||||
|
text: "正在生成PDF中...", |
||||
|
spinner: "el-icon-loading", |
||||
|
background: "rgba(0, 0, 0, 0.7)", |
||||
|
}); |
||||
|
// A4纸pdf宽高 |
||||
|
const PDF_W = 592.28; |
||||
|
const PDF_H = 841.89; |
||||
|
html2canvas(this.$refs.pdfRef, { |
||||
|
useCORS: true, |
||||
|
scale: 2, |
||||
|
}) |
||||
|
.then((canvas) => { |
||||
|
const width = canvas.width; |
||||
|
const height = canvas.height; |
||||
|
const pageHeight = (width / PDF_W) * PDF_H; |
||||
|
let leftHeight = height; |
||||
|
let position = 0; |
||||
|
var pageData = canvas.toDataURL("image/jpeg", 1.0); |
||||
|
|
||||
|
const imgWidth = PDF_W; |
||||
|
const imgHeight = (PDF_W / width) * height; |
||||
|
|
||||
|
let pdf = new jsPDF(undefined, "pt", "a4"); |
||||
|
if (height < pageHeight) { |
||||
|
pdf.addImage(pageData, "JPEG", 0, position, imgWidth, imgHeight); |
||||
|
} else { |
||||
|
while (leftHeight > 0) { |
||||
|
pdf.addImage(pageData, "JPEG", 0, position, imgWidth, imgHeight); |
||||
|
leftHeight -= pageHeight; |
||||
|
position -= PDF_H; |
||||
|
if (leftHeight > 0) { |
||||
|
pdf.addPage(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
let save = pdf.save("demo.pdf"); |
||||
|
this.loadingInstance.close(); |
||||
|
}) |
||||
|
.catch((e) => { |
||||
|
console.log("e >>>>> ", e); |
||||
|
this.loadingInstance.close(); |
||||
|
}); |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
<style scoped lang="scss"> |
||||
|
.report-page { |
||||
|
background-color: #fff; |
||||
|
height: 100%; |
||||
|
overflow: auto; |
||||
|
.table-box { |
||||
|
width: 1184px; |
||||
|
} |
||||
|
.sticky-top { |
||||
|
position: sticky; |
||||
|
top: 0; |
||||
|
background-color: #fff; |
||||
|
padding: 10px 24px; |
||||
|
} |
||||
|
} |
||||
|
.border-l-t { |
||||
|
border-left: 1px solid #ccc; |
||||
|
border-top: 1px solid #ccc; |
||||
|
} |
||||
|
.border-b-r { |
||||
|
border-bottom: 1px solid #ccc; |
||||
|
border-right: 1px solid #ccc; |
||||
|
} |
||||
|
.w-100 { |
||||
|
width: 100px; |
||||
|
} |
||||
|
.w-300 { |
||||
|
width: 300px; |
||||
|
} |
||||
|
.w-p-10 { |
||||
|
width: 10%; |
||||
|
} |
||||
|
.w-p-50 { |
||||
|
width: 50%; |
||||
|
} |
||||
|
.w-p-40 { |
||||
|
width: 40%; |
||||
|
} |
||||
|
.w-p-60 { |
||||
|
width: 60%; |
||||
|
} |
||||
|
.w-p-90 { |
||||
|
width: 90%; |
||||
|
} |
||||
|
</style> |
File diff suppressed because it is too large
Loading…
Reference in new issue