zhgdyun/src/views/projectFront/tunnelPositioning/tunnelConfiguration.vue
2025-06-09 09:51:51 +08:00

482 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="content">
<div class="search-box">
<el-button type="primary" size="medium" @click="addTunnel">新增隧道</el-button>
<!-- <el-button type="warning" plain size="medium" @click="refresh">刷新</el-button> -->
</div>
<div class="table-box">
<el-table :data="tableData" class="tables" height="560" style="width: 100%">
<el-table-column align="center" label="隧道名称" prop="tunnelName"></el-table-column>
<el-table-column align="center" label="隧道方向" prop="direction">
<template slot-scope="scoped">{{ scoped.row.direction == 1 ? '从左到右' : '从右到左' }}</template>
</el-table-column>
<el-table-column align="center" label="隧道ID" prop="tunnelId"> </el-table-column>
<el-table-column align="center" label="隧道长度m" prop="tunnelLength"> </el-table-column>
<el-table-column align="center" label="施工进度m" prop="constructionProgressBegin">
<template slot-scope="scoped">{{ scoped.row.constructionProgressBegin }}/{{ scoped.row.constructionProgressEnd }}</template>
</el-table-column>
<el-table-column align="center" label="隧道图" prop="createTime">
<template slot-scope="scoped">
<img
v-if="scoped.row.planarGraph"
:src="$store.state.FILEURL + JSON.parse(scoped.row.planarGraph)[0].url"
:preview="$store.state.FILEURL + JSON.parse(scoped.row.planarGraph)[0].url"
class="tunnel-img"
/>
<span v-else>暂无</span>
</template>
</el-table-column>
<el-table-column align="center" label="操作">
<template slot-scope="scoped">
<!-- <el-button type="text" @click="editTunnel(scoped.row)">编辑</el-button>
<el-button type="text" @click="deleteTunnel(scoped.row)">删除</el-button> -->
<div class="tableBtns">
<div @click="editTunnel(scoped.row)" class="operationText">
<img src="@/assets/images/icon-edit.png" width="15px" height="15px" />
<span>编辑</span>
</div>
<div @click="deleteTunnel(scoped.row)" class="operationText">
<img src="@/assets/images/icon-delete.png" width="15px" height="15px" />
<span>删除</span>
</div>
</div>
</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>
<!-- 新增隧道弹框 -->
<el-dialog :modal-append-to-body="false" @close="close" :title="title" :visible.sync="tunnelDialog" width="667px">
<div class="dialog_content">
<el-form size="medium" ref="addEditForm" :model="addEditForm" :rules="addEditRules" label-width="90px" class="dialogFormBox">
<el-form-item label="隧道名称" prop="tunnelName">
<el-input v-model="addEditForm.tunnelName" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="隧道方向" prop="direction">
<el-radio-group v-model="addEditForm.direction">
<el-radio :label="1">从左到右</el-radio>
<el-radio :label="2">从右到左</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="隧道ID" prop="tunnelId">
<el-input v-model="addEditForm.tunnelId" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label-width="115px" label="隧道长度m" prop="tunnelLength" style="margin-left: -15px">
<el-input style="margin-left: -10px" v-model="addEditForm.tunnelLength" placeholder="请输入" type="number"></el-input>
</el-form-item>
<el-form-item label-width="115px" label="施工进度m" prop="constructionProgressBegin" style="margin-left: -15px">
<el-input class="smallInput1" type="number" v-model="addEditForm.constructionProgressBegin"></el-input>/
<el-input class="smallInput2" type="number" v-model="addEditForm.constructionProgressEnd"></el-input>
</el-form-item>
<el-form-item class="labeInput" label="Y值随机范围px" prop="yvalueRandomRangeStart" style="margin-left: -10px">
<el-input
style="margin-left: -10px"
class="smallInput1"
v-model="addEditForm.yvalueRandomRangeStart"
@change="inputNumber"
type="number"
></el-input>
-
<el-input class="smallInput2" v-model="addEditForm.yvalueRandomRangeEnd" @change="inputNumber2" type="number"></el-input>
</el-form-item>
<el-form-item label-width="155px" label="矫正人员图标x方向" prop="correctorIconXDirection" style="margin-left: -55px">
<el-input
oninput="if(value<=0)value=''"
style="margin-left: -10px"
v-model="addEditForm.correctorIconXDirection"
placeholder="请输入"
type="number"
></el-input>
</el-form-item>
<el-form-item label="比例尺" prop="scale">
<el-input v-model="addEditForm.scale" placeholder="请输入" type="number"></el-input>
</el-form-item>
<!-- 隧道图 -->
<el-form-item label="隧道图" prop="tunnelGraph">
<el-upload
:action="$store.state.UPLOADURL"
:show-file-list="false"
:limit="1"
name="files"
:file-list="fileList"
:on-success="handleSuccess"
>
<div class="tunnel-img-box" v-if="fileList.length > 0">
<img :src="$store.state.FILEURL + fileList[0].url" class="tunnel-img" />
<i class="el-icon-circle-close close-img" @click.stop="handleRemove"></i>
</div>
<el-button v-else type="primary" size="medium">上传隧道图</el-button>
</el-upload>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="addEditForm.remark" placeholder="请输入" clearable=""></el-input>
</el-form-item>
<div class="dialog-footer">
<el-button class="cancleBtn" @click="tunnelDialog = false" icon="el-icon-circle-close" size="medium">取消 </el-button>
<el-button type="primary" icon="el-icon-circle-check" @click="submit" size="medium">确定 </el-button>
</div>
</el-form>
</div>
</el-dialog>
</div>
</template>
<script>
import {
addLocationTunnelApi, //隧道列表
deleteLocationTunnelApi,
editLocationTunnelApi,
getLocationTunnelPageApi,
getRealTimeLocationWorkerApi, //查询实时定位人数
getcountRealTimeLocationWorkerApi //查询实时定位班组人员
} from '@/assets/js/api/tunnelPositioning'
export default {
data() {
return {
projectSn: '',
tableData: [],
pageNo: 1,
pageSize: 10,
total: 0,
tunnelDialog: false,
addEditForm: {
tunnelName: '',
direction: 1,
tunnelId: '',
tunnelLength: '',
constructionProgressBegin: '',
constructionProgressEnd: '',
yvalueRandomRangeStart: null,
yvalueRandomRangeEnd: null,
remark: '',
planarGraph: '',
id: '',
correctorIconXDirection: '',
scale: undefined
},
addEditRules: {
tunnelName: [
{
required: true,
message: '必填',
trigger: 'change'
}
],
direction: [
{
required: true,
message: '必填',
trigger: 'change'
}
],
correctorIconXDirection: [
{
required: true,
message: '必填',
trigger: 'change'
}
],
scale: [
{
required: true,
message: '必填',
trigger: 'change'
}
],
tunnelId: [
{
required: true,
message: '必填',
trigger: 'change'
}
],
tunnelLength: [
{
required: true,
message: '必填',
trigger: 'change'
}
],
constructionProgressBegin: [
{
required: true,
message: '必填',
trigger: 'change'
}
],
yvalueRandomRangeStart: [
{
required: true,
message: '必填',
trigger: 'change'
}
]
},
title: '',
fileList: []
}
},
created() {
this.projectSn = this.$store.state.projectSn
this.getTunnrlData()
},
methods: {
quertData() {
this.pageNo = 1
this.pageSize = 10
this.getTunnrlData()
},
refresh() {
this.pageNo = 1
this.pageSize = 10
this.total = 0
this.getTunnrlData()
},
getTunnrlData() {
let data = {
pageNo: this.pageNo,
pageSize: this.pageSize,
projectSn: this.projectSn
}
getLocationTunnelPageApi(data).then(res => {
console.log(res)
if (res.code == 200 && res.result) {
this.tableData = res.result.records
console.log(this.tableData)
this.total = res.result.total
}
})
},
addTunnel() {
this.title = '新增隧道'
this.tunnelDialog = true
this.fileList = []
this.addEditForm = {
tunnelName: '',
direction: 1,
tunnelId: '',
tunnelLength: '',
constructionProgressBegin: '',
constructionProgressEnd: '',
yvalueRandomRangeStart: '',
yvalueRandomRangeEnd: '',
remark: '',
planarGraph: '',
id: ''
}
this.$nextTick(() => {
this.$refs.addEditForm.clearValidate()
})
},
//编辑隧道
editTunnel(obj) {
this.tunnelDialog = true
this.title = '编辑隧道'
this.addEditForm = JSON.parse(JSON.stringify(obj))
this.fileList = this.addEditForm.planarGraph ? JSON.parse(this.addEditForm.planarGraph) : []
},
deleteTunnel(obj) {
this.$confirm('此操作将永久删除, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
deleteLocationTunnelApi({ id: obj.id }).then(result => {
if (result.success) {
this.$message.success(result.message)
this.addEditForm.id = ''
this.refresh()
}
})
})
.catch(() => {})
},
//新增/编辑
submit() {
let params = JSON.parse(JSON.stringify(this.addEditForm))
params.projectSn = this.projectSn
this.$refs.addEditForm.validate(valid => {
if (valid) {
if (this.title == '新增隧道') {
addLocationTunnelApi(params).then(result => {
if (result.success) {
this.$message.success(result.message)
this.refresh()
}
})
} else if (this.title == '编辑隧道') {
editLocationTunnelApi(params).then(result => {
if (result.success) {
this.$message.success(result.message)
this.refresh()
}
})
}
this.tunnelDialog = false
} else {
return false
}
})
},
handleSuccess(response, file, fileList) {
this.addEditForm.planarGraph = []
fileList.map(item => {
if (!item.response) {
this.addEditForm.planarGraph.push(item)
// console.log('符合的结构', item)
} else if (item.response) {
// console.log('不符合的结构', item)
this.addEditForm.planarGraph.push({
name: item.response.data[0].filename,
url: item.response.data[0].imageUrl
})
}
})
this.fileList = this.addEditForm.planarGraph
this.addEditForm.planarGraph = JSON.stringify(this.addEditForm.planarGraph)
},
handleRemove() {
this.fileList = []
this.addEditForm.planarGraph = ''
},
close() {
this.$nextTick(() => {
this.$refs.addEditForm.clearValidate()
})
},
inputNumber(value) {
console.log('输入框的值---', value, this.addEditForm.yvalueRandomRangeEnd)
// if (value >= 310 && value <= 530) {
// this.addEditForm.yvalueRandomRangeStart = value;
// } else {
// this.$message.error('请输入符合范围内的数值:310-530')
// this.addEditForm.yvalueRandomRangeStart = ''
// }
if (this.addEditForm.yvalueRandomRangeEnd == '' || value < this.addEditForm.yvalueRandomRangeEnd) {
this.addEditForm.yvalueRandomRangeStart = value
} else {
this.$message.error('请输入正确的范围数值')
this.addEditForm.yvalueRandomRangeStart = ''
}
},
inputNumber2(value) {
if (value > this.addEditForm.yvalueRandomRangeStart) {
this.addEditForm.yvalueRandomRangeEnd = value
} else {
this.$message.error('请输入正确的范围数值')
this.addEditForm.yvalueRandomRangeEnd = ''
}
},
handleSizeChange(value) {
this.pageSize = value
this.getTunnrlData()
},
handleCurrentChange(value) {
this.pageNo = value
this.getTunnrlData()
}
}
}
</script>
<style lang="less" scoped>
.content {
display: flex;
flex-direction: column;
height: 100%;
.search-box {
background: #fff;
padding: 25px;
margin-bottom: 14px;
.search-item {
display: inline-block;
margin-right: 26px;
}
}
.table-box {
flex: 1;
background: #fff;
/deep/.el-table {
td {
vertical-align: top;
}
.cell {
padding-left: 44px;
}
}
.f-2 {
display: flex;
flex-wrap: wrap;
.table-item {
width: 50%;
}
}
}
}
.smallInput1 {
width: 110px !important;
margin-left: -10px;
/deep/.el-input__inner {
width: 100%;
display: inline-block;
}
}
.smallInput2 {
width: 195px !important;
/deep/.el-input__inner {
width: 100%;
display: inline-block;
}
}
.labeInput {
/deep/.el-form-item__label {
width: 150px !important;
margin-left: -40px;
}
}
::v-deep .el-input__inner {
line-height: 1px !important;
}
::v-deep .el-upload .el-upload-list__item {
display: none;
}
.tunnel-img-box {
position: relative;
}
.tunnel-img {
width: auto;
height: 60px;
cursor: pointer;
}
.close-img {
position: absolute;
right: -8px;
top: -8px;
font-size: 16px;
color: red;
cursor: pointer;
}
</style>