2024-01-24 18:40:54 +08:00

3235 lines
108 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="foundationPit-config">
<div class="left-menu">
<div class="menu-title">
<!-- 高边坡列表 -->
钢结构列表
</div>
<div class="add-btn">
<!-- 新增高边坡 -->
<el-button icon="el-icon-circle-plus-outline" @click="addProject">新增钢结构</el-button>
</div>
<vue-scroll style="height: calc(100% - 120px)">
<div class="menu-box" v-if="deepExcavationList.length > 0">
<div
class="menu-item"
:class="{ 'active-item': activeDeep == index }"
v-for="(item, index) in deepExcavationList"
:key="index"
@click="checkDeep(item, index)"
>
<div class="menu-h2">{{ item.slopeName }}</div>
<!-- 安全等级 -->
<p>
{{ $t('message.deepFoundConfig.saveLv') }}{{
filterLeave(item.safetyLevel)
}}
</p>
<!-- 完工状态 进行中 修复-->
<p>
{{ $t('message.deepFoundConfig.finishStatus') }}
<span
:class="{
'status-underway': item.status == 1,
'status-finish': item.status == 0
}"
>{{ projectStatusEnum[item.status] }}</span
>
</p>
<!-- 测点分布 -->
<el-button type="text" @click="showMap(item)">{{
$t('message.deepFoundConfig.pointDistribution')
}}</el-button>
<div class="actions-box">
<el-button type="text">
<i class="el-icon-edit" @click="editProject(item)"></i>
</el-button>
<el-button type="text">
<i
class="el-icon-delete"
@click="deleteDeepExcavation(item)"
></i>
</el-button>
</div>
</div>
</div>
<div class="no-data" v-else>
<img src="@/assets/images/noData2.png" />
<!-- 暂无数据 -->
<p>{{ $t('message.deepFoundConfig.noData') }}</p>
</div>
</vue-scroll>
</div>
<div class="foundationPit-content">
<div class="foundationPit-table">
<div class="table-title">
<!-- 监测信息 -->
{{ $t('message.deepFoundConfig.monitorInfo') }}
</div>
<el-table class="tables" :data="tableData" height="550">
<!-- 监测内容 -->
<el-table-column
prop="monitorTypeName"
:label="$t('message.deepFoundConfig.monitorContent')"
>
<!-- <template slot-scope="scope">
<div class="a-detail" @click="previewDetail(scope.row)">{{scope.row.projectName}}</div>
</template>-->
</el-table-column>
<!-- 测点数量 -->
<el-table-column
prop="measurePointNum"
:label="$t('message.deepFoundConfig.pointNum')"
>
<template slot-scope="scope">
<span style="color: rgba(42, 46, 63, 0.6)">{{
scope.row.measurePointNum
}}</span>
</template>
</el-table-column>
<!-- 操作 -->
<el-table-column :label="$t('message.deepFoundConfig.actions')">
<template slot-scope="scope">
<el-button
type="text"
class="detail-btn"
style="margin-right: 58px"
size="small"
@click="previewDetail(scope.row, 1)"
>
<img
style="margin-right: 6px; width: 12px; height: 10px"
src="@/assets/images/deepFoundationPitManage/addressManger.png"
/>
<!-- 测点管理 -->
{{ $t('message.deepFoundConfig.pointManage') }}
</el-button>
<el-button
type="text"
class="detail-btn"
size="small"
@click="previewDetail(scope.row, 2)"
>
<img
style="margin-right: 6px; width: 12px; height: 10px"
src="@/assets/images/deepFoundationPitManage/chart.png"
/>
<!-- 实时数据 -->
{{ $t('message.deepFoundConfig.realData') }}
</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
class="pagerBox"
@size-change="SizeChange"
@current-change="CurrentChange"
:current-page="pagInfo.pageNo"
:page-sizes="$store.state.PAGESIZRS"
:page-size="pagInfo.pageSize"
layout="total, sizes, prev, pager, next"
:total="Number(pagInfo.total)"
background
></el-pagination>
</div>
<!-- 添加高边坡 编辑高边坡-->
<el-dialog
class="dialog dialog-center"
:title="
formType == 1
? $t('message.deepFoundConfig.addDeepFound')
: $t('message.deepFoundConfig.editDeepFound')
"
:modal-append-to-body="false"
:visible.sync="dialogVisible"
width="55%"
@close="closeDialog"
>
<div class="dialog-content">
<vue-scroll>
<el-form
ref="form"
:model="dialogdata"
:rules="rules"
label-width="136px"
size="medium"
class="dialogFormBox"
>
<!-- 高边坡名称 -->
<el-form-item
label="钢结构名称"
prop="slopeName"
>
<el-input
v-model="dialogdata.slopeName"
:placeholder="$t('message.deepFoundConfig.placeholderText')"
></el-input>
</el-form-item>
<!-- <el-form-item label="监测设备" prop="projectAddress">
<el-input
v-model="dialogdata.projectAddress"
placeholder=""
disabled
>
<el-button slot="append" @click="innerVisible = true">选择</el-button>
</el-input>
</el-form-item>-->
<!-- 开工日期 -->
<el-form-item
:label="$t('message.deepFoundConfig.startBuilTime')"
prop="startDate"
>
<el-date-picker
v-model="dialogdata.startDate"
type="date"
value-format="yyyy-MM-dd"
:placeholder="$t('message.deepFoundConfig.changeTime')"
></el-date-picker>
</el-form-item>
<!-- 完工日期 -->
<el-form-item
:label="$t('message.deepFoundConfig.finishBuildTime')"
prop="endDate"
>
<el-date-picker
v-model="dialogdata.endDate"
value-format="yyyy-MM-dd"
type="date"
:placeholder="$t('message.deepFoundConfig.changeTime')"
></el-date-picker>
</el-form-item>
<!-- 安全等级 -->
<!-- <el-form-item
:label="$t('message.deepFoundConfig.saveLv')"
prop="safetyLevel"
>
<el-select
v-model="dialogdata.safetyLevel"
:placeholder="$t('message.deepFoundConfig.placeholderText2')"
>
<el-option
v-for="item in $t('message.deepFoundConfig.safeLvList')"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item> -->
<!-- 高边坡深度 -->
<!-- <el-form-item
:label="$t('message.deepFoundConfig.deepFoundDepth') + '(m)'"
prop="foundationDitchDepth"
>
<el-input
v-model="dialogdata.foundationDitchDepth"
:placeholder="$t('message.deepFoundConfig.placeholderText')"
onkeyup="if(isNaN(value))execCommand('undo')"
onafterpaste="if(isNaN(value))execCommand('undo')"
></el-input>
</el-form-item> -->
<!-- 高边坡周长 设置只能输入正数-->
<!-- <el-form-item
:label="
$t('message.deepFoundConfig.deepFoundPerimeter') + '(m)'
"
prop="foundationDitchGirth"
>
<el-input
v-model="dialogdata.foundationDitchGirth"
:placeholder="$t('message.deepFoundConfig.placeholderText')"
onkeyup="if(isNaN(value))execCommand('undo')"
onafterpaste="if(isNaN(value))execCommand('undo')"
></el-input>
</el-form-item> -->
<!-- 支护形式 -->
<!-- <el-form-item
:label="$t('message.deepFoundConfig.shoringType')"
prop="supportPattern"
>
<el-input
v-model="dialogdata.supportPattern"
:placeholder="$t('message.deepFoundConfig.placeholderText')"
></el-input>
</el-form-item> -->
<!-- 监测负责人 -->
<el-form-item
:label="$t('message.deepFoundConfig.monitorDutyPeople')"
prop="surveyDirectorName"
>
<el-input
v-model="dialogdata.surveyDirectorName"
:placeholder="$t('message.deepFoundConfig.placeholderText')"
></el-input>
</el-form-item>
<!-- 监测人员 -->
<el-form-item
:label="$t('message.deepFoundConfig.monitorPeople')"
prop="surveyPersonnelName"
>
<el-input
v-model="dialogdata.surveyPersonnelName"
:placeholder="$t('message.deepFoundConfig.placeholderText')"
></el-input>
</el-form-item>
<!-- 当前开挖深度 -->
<!-- <el-form-item
:label="$t('message.deepFoundConfig.currentDepth') + '(m)'"
prop="excavationDepth"
>
<el-input
v-model="dialogdata.excavationDepth"
:placeholder="$t('message.deepFoundConfig.placeholderText')"
onkeyup="if(isNaN(value))execCommand('undo')"
onafterpaste="if(isNaN(value))execCommand('undo')"
></el-input>
</el-form-item> -->
<!-- 底板浇策时间 -->
<!-- <el-form-item
:label="$t('message.deepFoundConfig.floorBuildTime')"
prop="floorPourTime"
>
<el-date-picker
v-model="dialogdata.floorPourTime"
value-format="yyyy-MM-dd"
type="date"
:placeholder="$t('message.deepFoundConfig.floorBuildTime')"
></el-date-picker>
</el-form-item> -->
<!-- 监测方案 -->
<div style="display: flex">
<el-form-item
:label="$t('message.deepFoundConfig.monitorPlan')"
>
<el-upload
class="upload-demo"
name="files"
:action="$store.state.UPLOADURL"
:on-remove="
(file, fileList) => handleRemove(file, fileList, 1)
"
:multiple="false"
:on-success="(res, file) => handleSuccess(res, file, 1)"
:file-list="surveySchemeList"
accept=".doc, .docx, .xls, .xlsx, .ppt, .pptx, .pdf"
>
<el-button size="medium" type="primary">
<!-- 点击上传 -->
{{ $t('message.deepFoundConfig.upload') }}
</el-button>
</el-upload>
</el-form-item>
<!-- 地勘报告 -->
<el-form-item
:label="$t('message.deepFoundConfig.geologicalReport')"
>
<el-upload
class="upload-demo"
name="files"
:action="$store.state.UPLOADURL"
:on-remove="
(file, fileList) => handleRemove(file, fileList, 2)
"
:multiple="false"
:on-success="(res, file) => handleSuccess(res, file, 2)"
:file-list="prospectingReportList"
accept=".doc, .docx, .xls, .xlsx, .ppt, .pptx, .pdf"
>
<el-button size="medium" type="primary">
<!-- 点击上传 -->
{{ $t('message.deepFoundConfig.upload') }}
</el-button>
</el-upload>
</el-form-item>
</div>
<div style="display: flex">
<!-- 高边坡设计图纸 -->
<el-form-item
label="钢结构设计图纸"
:style="{ width: formType == 1 ? '50%' : '100%' }"
>
<div
class="img_box"
v-for="(item, index) in deviseDrawingList"
:key="index"
>
<el-image
:src="item.url"
:preview-src-list="[item.url]"
></el-image>
<i
class="el-icon-error"
@click="deviseDrawingList.splice(index, 1)"
></i>
</div>
<el-upload
:action="$store.state.UPLOADURL"
name="files"
style="display: inline"
list-type="picture-card"
accept=".png, .jpg, .jpeg"
:on-preview="handlePictureCardPreview"
:show-file-list="false"
:before-upload="handleBeforeUpload"
:on-remove="
(file, fileList) => handleRemove(file, fileList, 3)
"
:on-success="(res, file) => handleSuccess(res, file, 3)"
:file-list="deviseDrawingList"
>
<i class="el-icon-plus"></i>
</el-upload>
</el-form-item>
<!-- 监测内容 -->
<el-form-item
:label="$t('message.deepFoundConfig.monitorContent')"
required
v-if="formType == 1"
>
<!-- 全选 -->
<el-checkbox
:indeterminate="isIndeterminate"
v-model="checkAll"
@change="handleCheckAllChange"
>{{ $t('message.deepFoundConfig.allCheck') }}</el-checkbox
>
<el-checkbox-group
class="check_group"
v-model="checkedContent"
@change="handleCheckedCitiesChange"
>
<el-checkbox
v-for="(item, index) in contentList"
:label="item.id"
:key="index"
>{{ item.monitorTypeName }}</el-checkbox
>
</el-checkbox-group>
</el-form-item>
</div>
</el-form>
</vue-scroll>
</div>
<div class="btn-box">
<!-- 确定 -->
<el-button type="primary" @click="submitForm">{{
$t('message.deepFoundConfig.confirm')
}}</el-button>
<!-- 取消 -->
<el-button @click="closeDialog">{{
$t('message.deepFoundConfig.cancel')
}}</el-button>
</div>
</el-dialog>
<!-- <el-dialog
width="50%"
title="选择监测设备"
:visible.sync="innerVisible"
:modal-append-to-body="false">
<el-table class="tables" :data="tableData" @selection-change="handleSelectionChange">
<el-table-column
type="selection"
width="55">
</el-table-column>
<el-table-column
prop="num"
label="设备编号"
>
</el-table-column>
<el-table-column
prop="projectName"
label="设备名称"
>
</el-table-column>
</el-table>
</el-dialog>-->
<el-dialog
class="dialog-center"
:modal-append-to-body="false"
:visible.sync="dialogVisible2"
width="50%"
title="查看大图"
>
<img width="100%" :src="dialogImageUrl" alt />
</el-dialog>
<!-- 测点管理 -->
<el-dialog
width="80%"
:title="$t('message.deepFoundConfig.pointManage')"
class="dialog-center"
:visible.sync="showDetail"
:modal-append-to-body="false"
@close="closeDetail"
>
<div class="dialog-content">
<div class="search-box">
<div class="search-item">
<!-- 测点编号 -->
<span class="search-label" style="margin-right: 10px">{{
$t('message.deepFoundConfig.pointNo')
}}</span>
<el-input
v-model="devNum"
:placeholder="$t('message.deepFoundConfig.placeholderText')"
></el-input>
</div>
<div class="search-item">
<!-- 报警状态 -->
<span class="search-label" style="margin-right: 10px">{{
$t('message.deepFoundConfig.alarmStatus')
}}</span>
<el-select
v-model="alarmStatus"
clearable
:placeholder="$t('message.deepFoundConfig.placeholderText2')"
>
<el-option
v-for="item in $t('message.deepFoundConfig.safeLvList')"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
<!-- 查询 -->
<el-button type="primary" plain @click="selectMeasurePointList">{{
$t('message.deepFoundConfig.search')
}}</el-button>
<!-- 刷新 -->
<el-button
type="warning"
plain
@click="selectMeasurePointList(1)"
>{{ $t('message.deepFoundConfig.refresh') }}</el-button
>
<!-- 新增 -->
<el-button
type="primary"
icon="el-icon-document-add"
@click="addTestPoint"
>{{ $t('message.deepFoundConfig.add') }}</el-button
>
</div>
<el-table :data="surveyPointDetail" class="tables" height="560">
<!-- 测点编号 -->
<el-table-column
prop="measurePointNumber"
:label="$t('message.deepFoundConfig.pointNo')"
></el-table-column>
<!-- 测点名称 -->
<el-table-column
prop="measurePointName"
:label="$t('message.deepFoundConfig.pointName')"
></el-table-column>
<!-- 测点位置 -->
<el-table-column
prop="measurePointAddr"
:label="$t('message.deepFoundConfig.pointLocation')"
></el-table-column>
<!-- 传感器编号 -->
<!-- <el-table-column prop="sensorSn" label="传感器编号"></el-table-column> -->
<!-- <el-table-column label="工作状态">
<template slot-scope="scope">
<span>{{scope.row.workStatus ? scope.row.workStatus == 1 ? "正常":"异常":""}}</span>
</template>
</el-table-column>-->
<!-- 报警状态 -->
<el-table-column :label="$t('message.deepFoundConfig.alarmStatus')">
<template slot-scope="scope">
<!-- <span
:class="{'alarm_status1': scope.row.alarmState == '0',
'alarm_status2': scope.row.alarmState == 2,
'alarm_status3': scope.row.alarmState == 1,
'alarm_status4': scope.row.alarmState == 3}"
>
{{ scope.row.alarmState == '0' ? $t('message.deepFoundConfig.normal'): scope.row.alarmState == 2
? $t('message.deepFoundConfig.warning'):scope.row.alarmState == 1
? $t('message.deepFoundConfig.alarm'):scope.row.alarmState == 3
? $t('message.deepFoundConfig.control'):""}}
</span>-->
<span
:class="{
alarm_status1: scope.row.alarmState == 1,
alarm_status2: scope.row.alarmState == 2,
alarm_status3: scope.row.alarmState == 3,
alarm_status4: scope.row.alarmState == 4
}"
>
{{
scope.row.alarmState == 1
? '正常'
: scope.row.alarmState == 2
? '超报警'
: scope.row.alarmState == 3
? '超控制'
: scope.row.alarmState == 4
? '变化速率报警'
: ''
}}
</span>
</template>
</el-table-column>
<!-- 操作 -->
<el-table-column
align="center"
:label="$t('message.deepFoundConfig.actions')"
>
<template slot-scope="scope">
<!-- 编辑 -->
<el-button
type="text"
icon="el-icon-edit"
@click="preViewPointData(scope.row, 1)"
>{{ '编辑' }}</el-button
>
<!-- 详情 -->
<el-button
type="text"
icon="el-icon-document"
@click="preViewPointData(scope.row, 2)"
>{{ $t('message.deepFoundConfig.details') }}</el-button
>
<!-- 删除 -->
<el-button
type="text"
icon="el-icon-delete"
style="color: #f56c6c"
@click="deletePointData(scope.row)"
>{{ $t('message.deepFoundConfig.remove') }}</el-button
>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<el-pagination
class="pager"
@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>
<!-- 实时数据 -->
<el-dialog
width="80%"
:title="$t('message.deepFoundConfig.realData')"
class="dialog-center"
:visible.sync="showActiveDetail"
:modal-append-to-body="false"
@close="closeActiveDetail"
>
<div class="dialog-content">
<div class="search-box">
<div class="search-item">
<!-- 测点编号 -->
<span class="search-label" style="margin-right: 10px">{{
$t('message.deepFoundConfig.pointNo')
}}</span>
<el-input
v-model="exportData.measurePointNumber"
:placeholder="$t('message.deepFoundConfig.placeholderText')"
></el-input>
</div>
<div class="search-item">
<!-- 报警状态 -->
<span class="search-label" style="margin-right: 10px">{{
$t('message.deepFoundConfig.alarmStatus')
}}</span>
<el-select
v-model="exportData.alarmState"
clearable
:placeholder="$t('message.deepFoundConfig.placeholderText2')"
>
<el-option
v-for="item in $t('message.deepFoundConfig.safeLvList')"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
<div class="search-item">
<!-- 采集时间 -->
<span class="search-label" style="margin-right: 10px">{{
$t('message.deepFoundConfig.gatherTime')
}}</span>
<!-- <el-date-picker
v-model="acquisitionTime"
type="daterange"
align="right"
unlink-panels
value-format="yyyy-MM-dd"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
:picker-options="pickerOptions">
</el-date-picker>-->
<!-- :default-time="['00:00:00', '23:59:59']" -->
<el-date-picker
v-model="acquisitionTime"
type="datetimerange"
value-format="yyyy-MM-dd HH:mm:ss"
:range-separator="$t('message.deepFoundConfig.to')"
start-placeholder="开始日期"
end-placeholder="结束日期"
align="right"
></el-date-picker>
</div>
<!-- 查询 -->
<el-button
type="primary"
plain
@click="selectDeepExcavationCurrentData"
>{{ $t('message.deepFoundConfig.search') }}</el-button
>
<el-button type="primary" plain @click="exportDataFn"
>导出</el-button
>
</div>
<el-table :data="currentPointDetail" class="tables" height="560">
<el-table-column
prop="measurePointNumber"
:label="$t('message.deepFoundConfig.pointNo')"
></el-table-column>
<el-table-column
prop="sensorSn"
label="传感器编号"
></el-table-column>
<el-table-column
prop="fiducialValue"
label="初始值"
align="center"
width="80"
></el-table-column>
<!-- 采集时间 -->
<el-table-column
width="220"
align="center"
prop="receiveTime"
:label="$t('message.deepFoundConfig.gatherTime')"
></el-table-column>
<el-table-column
prop="lastTimeData"
label="上次值"
></el-table-column>
<el-table-column prop="data" label="本次值">
<template slot-scope="scope">{{
scope.row.data + scope.row.unit
}}</template>
</el-table-column>
<el-table-column prop="dataThis" label="本次变化量">
<template slot-scope="scope">{{
scope.row.dataThis + scope.row.unit
}}</template>
</el-table-column>
<el-table-column prop="dataTotal" label="累计值">
<template slot-scope="scope">{{
scope.row.dataTotal + scope.row.unit
}}</template>
</el-table-column>
<el-table-column
prop="alarmValue"
label="累计预警值"
align="center"
></el-table-column>
<el-table-column
prop="dataRate"
label="变化速率"
align="center"
></el-table-column>
<el-table-column
prop="rateAlarmValue"
label="变化速率预警值"
align="center"
width="120"
></el-table-column>
<!-- 测点编号 -->
<!-- <el-table-column
prop="measurePointNumber"
:label="$t('message.deepFoundConfig.pointNo')"
></el-table-column> -->
<!-- 测点名称 -->
<!-- <el-table-column prop="measurePointName" label="测点名称"></el-table-column>
<el-table-column prop="sensorSn" label="传感器编号"></el-table-column>
<el-table-column prop="sensorTypeName" label="传感器类型"></el-table-column>
<el-table-column prop="data" label="值">
<template slot-scope="scope">{{scope.row.data + scope.row.unit}}</template>
</el-table-column>
<el-table-column
v-for="(item,index) in currentTableData"
:key="index"
:prop="item.targetField"
:label="item.targetName"
></el-table-column> -->
<!-- 采集时间 -->
<!-- <el-table-column prop="receiveTime" :label="$t('message.deepFoundConfig.gatherTime')"></el-table-column> -->
<!-- 报警状态 -->
<el-table-column :label="$t('message.deepFoundConfig.alarmStatus')">
<template slot-scope="scope">
<span
:class="{
alarm_status1: scope.row.alarmState == 1,
alarm_status2: scope.row.alarmState == 2,
alarm_status3: scope.row.alarmState == 3,
alarm_status4: scope.row.alarmState == 4
}"
>
{{
scope.row.alarmState == 1
? '正常'
: scope.row.alarmState == 2
? '超报警'
: scope.row.alarmState == 3
? '超控制'
: scope.row.alarmState == 4
? '变化速率报警'
: ''
}}
</span>
</template>
</el-table-column>
</el-table>
<el-pagination
class="pager"
@size-change="changeSize"
@current-change="changeCurrent"
:current-page="pagInfo2.pageNo"
:page-sizes="$store.state.PAGESIZRS"
:page-size="pagInfo2.pageSize"
layout="total, sizes, prev, pager, next"
:total="Number(pagInfo2.total)"
background
></el-pagination>
</div>
</el-dialog>
<!-- '详情':'新增测点' -->
<!-- :title="isPreview ? $t('message.deepFoundConfig.details'):$t('message.deepFoundConfig.addPoint')" -->
<el-dialog
width="45%"
:title="isPreviewTitle"
class="dialog-center"
:visible.sync="showTestPoint"
:modal-append-to-body="false"
@close="closeDialog2"
>
<div class="dialog-content">
<div class="form-wrap">
<vue-scroll style="height: 90%; margin-bottom: 50px">
<el-form
size="medium"
class="formBox"
:model="testPointForm"
ref="testPointForm"
label-width="120px"
:rules="$t('message.deepFoundConfig.rules2')"
>
<!-- 测点编号 -->
<el-form-item
:label="$t('message.deepFoundConfig.pointNo')"
prop="measurePointNumber"
>
<el-input
:disabled="isPreview"
v-model="testPointForm.measurePointNumber"
:placeholder="$t('message.deepFoundConfig.placeholderText')"
></el-input>
</el-form-item>
<!-- 测点名称 -->
<el-form-item
:label="$t('message.deepFoundConfig.pointName')"
prop="measurePointName"
>
<el-input
:disabled="isPreview"
v-model="testPointForm.measurePointName"
:placeholder="$t('message.deepFoundConfig.placeholderText')"
></el-input>
</el-form-item>
<!-- 测点位置 -->
<el-form-item
:label="$t('message.deepFoundConfig.pointLocation')"
prop="measurePointAddr"
>
<el-input
:disabled="isPreview"
v-model="testPointForm.measurePointAddr"
:placeholder="$t('message.deepFoundConfig.placeholderText')"
></el-input>
</el-form-item>
<!-- 采集仪编号 -->
<!-- <el-form-item :label="$t('message.deepFoundConfig.devNo')" prop="sensorSn">
<el-input :disabled="isPreview" v-model="testPointForm.sensorSn" :placeholder="$t('message.deepFoundConfig.placeholderText')"></el-input>
</el-form-item>-->
<!-- 传感器编号 -->
<!-- <el-form-item :label="'传感器编号'" prop="sensorSn">
<el-input :disabled="isPreview" v-model="testPointForm.sensorSn" :placeholder="$t('message.deepFoundConfig.placeholderText')"></el-input>
</el-form-item>-->
<!-- 传感器类型 -->
<!-- <el-form-item :label="$t('message.deepFoundConfig.devType')" prop="steelStructureSensorTypeId"> -->
<!-- <el-input v-model="testPointForm.steelStructureSensorTypeId"></el-input> -->
<!-- <el-select style="width: 100%" :disabled="isPreview" v-model="testPointForm.steelStructureSensorTypeId" :placeholder="$t('message.deepFoundConfig.placeholderText2')">
<el-option
v-for="item in typeOptions"
:key="item.id"
:label="item.sensorTypeName"
:value="item.id">
</el-option>
</el-select>
</el-form-item>-->
<!-- 2022-09-27 此处开始注释 是因为更改了添加的字段 预警值报警值控制值-->
<!-- <div class="sensor" v-for="(item,index) in testPointForm.sensorList" :key="index">
<div class="sensorDel">
<i
v-if="testPointForm.sensorList.length > 1 && show"
:disabled="isPreview"
@click="deleteRow(index)"
class="el-icon-close"
></i>
</div>
<el-form-item
:label="`传感器编号${index +1}`"
:prop="item.sensorSn"
:rules="{ required: true, message: '请输入传感器编号', trigger: 'blur'}"
>
<el-input
:disabled="isPreview"
v-model="item.sensorSn"
:placeholder="$t('message.deepFoundConfig.placeholderText')"
></el-input>
</el-form-item>
<el-form-item
:label="`传感器类型${index +1}`"
:prop="item.steelStructureSensorTypeId"
:rules="{ required: true, message: '请输入传感器类型', trigger: 'blur'}"
>
<el-select
style="width: 100%"
:disabled="isPreview"
v-model="item.steelStructureSensorTypeId"
:placeholder="$t('message.deepFoundConfig.placeholderText2')"
>
<el-option
v-for="item in typeOptions"
:key="item.id"
:label="item.sensorTypeName"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-row>
<el-col :span="8">
<el-form-item
label-width="120px"
:label="`预警${index +1}`"
:prop="item.earlyWarningValue"
:rules="{ required: true, message: '请输入预警数', trigger: 'blur'}"
>
<el-input
maxlength="10"
:disabled="isPreview"
v-model.trim="item.earlyWarningValue"
:placeholder="$t('message.deepFoundConfig.placeholderText')"
></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item
:label="`报警${index +1}`"
:prop="item.alarmValue"
:rules="{ required: true, message: '请输入报警数', trigger: 'blur'}"
>
<el-input
:disabled="isPreview"
v-model.trim="item.alarmValue"
:placeholder="$t('message.deepFoundConfig.placeholderText')"
></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item
:label="`控制${index +1}`"
:prop="item.controlValue"
:rules="{ required: true, message: '请输入控制数', trigger: 'blur'}"
>
<el-input
:disabled="isPreview"
v-model.trim="item.controlValue"
:placeholder="$t('message.deepFoundConfig.placeholderText')"
></el-input>
</el-form-item>
</el-col>
</el-row>
</div> -->
<!-- 此处结束 -->
<div
class="sensor"
v-for="(item, index) in testPointForm.sensorList"
:key="index"
>
<div class="sensorDel">
<i
v-if="testPointForm.sensorList.length > 1 && show"
:disabled="isPreview"
@click="deleteRow(item, index)"
class="el-icon-close"
></i>
</div>
<el-form-item
:label="`传感器编号${index + 1}`"
:prop="'sensorList.' + index + '.sensorSn'"
:rules="sensorRules.sensorSn"
>
<el-input
:disabled="isPreview"
v-model="item.sensorSn"
:placeholder="
$t('message.deepFoundConfig.placeholderText')
"
></el-input>
</el-form-item>
<el-form-item
:label="`传感器名称${index + 1}`"
:prop="'sensorList.' + index + '.sensorName'"
:rules="sensorRules.sensorName"
>
<el-input
:disabled="isPreview"
v-model="item.sensorName"
:placeholder="
$t('message.deepFoundConfig.placeholderText')
"
></el-input>
</el-form-item>
<el-form-item
:label="`传感器类型${index + 1}`"
:prop="'sensorList.' + index + '.steelStructureSensorTypeId'"
:rules="sensorRules.steelStructureSensorTypeId"
>
<el-select
style="width: 100%"
:disabled="isPreview"
v-model="item.steelStructureSensorTypeId"
:placeholder="
$t('message.deepFoundConfig.placeholderText2')
"
>
<el-option
v-for="item in typeOptions"
:key="item.id"
:label="item.sensorTypeName"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-row>
<el-col :span="8">
<el-form-item
label-width="130px"
:label="`累计值告警阈值${index + 1}`"
:prop="'sensorList.' + index + '.alarmValue'"
:rules="sensorRules.alarmValue"
>
<el-input
maxlength="10"
:disabled="isPreview"
v-model.trim="item.alarmValue"
type="number"
:placeholder="
$t('message.deepFoundConfig.placeholderText')
"
></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item
label-width="130px"
:label="`变化速率报警值${index + 1}`"
:prop="'sensorList.' + index + '.rateAlarmValue'"
:rules="sensorRules.rateAlarmValue"
>
<el-input
:disabled="isPreview"
v-model.trim="item.rateAlarmValue"
type="number"
:placeholder="
$t('message.deepFoundConfig.placeholderText')
"
></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item
:label="`基准值${index + 1}`"
:prop="'sensorList.' + index + '.fiducialValue'"
:rules="sensorRules.fiducialValue"
>
<el-input
:disabled="isPreview"
v-model.trim="item.fiducialValue"
type="number"
:placeholder="
$t('message.deepFoundConfig.placeholderText')
"
></el-input>
</el-form-item>
</el-col>
</el-row>
</div>
<el-button
type="primary"
v-if="show"
@click="addRow()"
size="medium"
plain
>添加</el-button
>
<!-- v-if="testPointForm.sensorList.length > 1" -->
<!-- <el-button type="primary" v-if="testPointForm.sensorList.length > 1" @click="deleteRow()" size="medium" plain>删除</el-button> -->
</el-form>
</vue-scroll>
<div class="btn-box" v-if="!isPreview">
<!-- 确认 -->
<el-button
type="primary"
icon="el-icon-circle-check"
@click="addPointData"
>{{ $t('message.deepFoundConfig.confirm') }}</el-button
>
<!-- 取消 -->
<el-button icon="el-icon-circle-close" @click="closeDialog2">{{
$t('message.deepFoundConfig.cancel')
}}</el-button>
</div>
</div>
</div>
</el-dialog>
<!-- 测点分布 -->
<el-dialog
width="95%"
:title="$t('message.deepFoundConfig.pointDistribution')"
class="dialog-center"
:visible.sync="showPointMap"
:modal-append-to-body="false"
@close="closePointMap"
>
<div class="dialog-content map-box">
<div class="map-left">
<vue-scroll>
<div class="add-btn" @click="openAddImgDialog">
<i class="el-icon-circle-plus-outline"></i>
<!-- 添加布置图 -->
<div>{{ $t('message.deepFoundConfig.addLayoutImg') }}</div>
</div>
<ul>
<li
v-for="(item, index) in deepImgList"
:key="index"
:class="{ 'img-active': activeImgIndex == index }"
>
<img :src="item.imageUrl" @click="checkImg(item, index)" />
<div class="actions-box">
<span>{{ item.planeFigureName }}</span>
<!-- 编辑 -->
<el-button
type="text"
style="color: #84b2fa"
icon="el-icon-edit"
@click="editDeepimg(item)"
></el-button>
<!-- 删除 -->
<el-button
type="text"
icon="el-icon-delete"
style="color: #f56c6c"
@click="deleteDeepImg(item)"
></el-button>
<!-- {{$t('message.deepFoundConfig.remove')}} -->
</div>
</li>
</ul>
</vue-scroll>
</div>
<div class="map-right">
<div class="action-box" v-if="activeImgUrl">
<div v-show="!isEditPoint" class="btn-item" @click="editPoint">
<img
src="@/assets/images/deepFoundationPitManage/address.png"
/>
<!-- 布点 -->
{{ $t('message.deepFoundConfig.stationing') }}
</div>
<div v-show="isEditPoint" class="btn-item" @click="savePoint">
<img src="@/assets/images/deepFoundationPitManage/save.png" />
<!-- 保存 -->
{{ $t('message.deepFoundConfig.save') }}
</div>
<div class="btn-item" @click="changeImgSize(1)">
<i class="el-icon-zoom-in"></i>
<!-- 放大 -->
{{ $t('message.deepFoundConfig.zoomIN') }}
</div>
<div class="btn-item" @click="changeImgSize(2)">
<i class="el-icon-zoom-out"></i>
<!-- 缩小 -->
{{ $t('message.deepFoundConfig.zoomOut') }}
</div>
</div>
<div ref="mapbox">
<vue-scroll style="height: 780px">
<div
class="img-box"
:style="{
width: imgWidth + 'px',
height: imgHeight + 'px',
transform: 'scale(' + imgZoom + ')'
}"
>
<img
ref="map"
v-if="activeImgUrl"
style="border: 1px solid #eee"
:style="{
width: imgWidth + 'px',
height: imgHeight + 'px'
}"
:src="activeImgUrl"
/>
<ul class="point-list" v-if="activeImgUrl">
<li
v-for="(item, index) in pointList"
:key="index"
:ref="'point' + index"
:style="{
top: item.mapY + 'px',
left: item.mapX + 'px',
display: item.status,
transform:
'scale(' + 1 / imgZoom + ')' + ' ' + item.transform
}"
>
<div
class="point-dialog"
:class="{
right_detail:
item.mapY < 110 + item.detailList.length * 24 ||
item.mapX < 108
}"
:style="{ display: item.showDetail ? 'block' : 'none' }"
>
<i
class="el-icon-error"
@click="item.showDetail = false"
></i>
<div class="point-title">
{{ item.measurePointName }}
</div>
<div class="point-content">
<!-- <div v-for="(item2,index2) in item.detailList" :key="index2">
<p>传感器编号{{item2.sensorSn}}</p>
<p>传感器名称{{item2.sensorTypeName == null ? '无' : item2.sensorTypeName }}</p>
<p>采集时间{{item2.receiveTime == null ? '无' : item2.receiveTime}}</p>
</div>-->
<p
v-for="(item2, index2) in item.detailList"
:key="index2"
>
{{ item2.keyName }}{{
item.currentdata[item2.key]
}}
</p>
<!-- 采集时间 -->
<!-- <p>{{$t('message.deepFoundConfig.gatherTime')}}{{item.currentdata['receiveTime']}}</p> -->
</div>
</div>
<div
class="point-dialog point-title2"
:class="{
right_title: item.mapY < 47 || item.mapX < 22
}"
:style="{ display: item.showDetail ? 'none' : 'block' }"
@click="item.showDetail = true"
>
<span>{{ item.measurePointName }}</span>
</div>
<img
@mousedown.prevent="move(index, $event)"
@mouseup="up(index, $event)"
style="width: 70px; height: 70px"
src="@/assets/images/deepFoundationPitManage/ljz.png"
/>
</li>
</ul>
</div>
<div
class="pointFixed"
ref="pointFixed"
:style="{
top: pointTop + 'px',
left: pointLeft + 'px',
display: pointStatus
}"
>
<img
style="width: 70px; height: 70px"
src="@/assets/images/deepFoundationPitManage/ljz.png"
/>
</div>
</vue-scroll>
</div>
</div>
</div>
</el-dialog>
<!-- 添加平面图 -->
<!-- :title="$t('message.deepFoundConfig.addImg')" -->
<el-dialog
width="35%"
:title="title"
class="dialog-center"
:visible.sync="showAddImg"
@close="closeAddImg"
:modal-append-to-body="false"
>
<div class="dialog-content" style="height: 368px">
<el-form
size="medium"
class="formBox"
style="margin-bottom: 68px"
:model="testPointImgForm"
ref="testPointImgForm"
label-width="120px"
:rules="$t('message.deepFoundConfig.rules3')"
>
<!-- 平面图名称 -->
<el-form-item
:label="$t('message.deepFoundConfig.imgName')"
prop="planeFigureName"
>
<el-input
v-model="testPointImgForm.planeFigureName"
:placeholder="$t('message.deepFoundConfig.placeholderText')"
></el-input>
</el-form-item>
<!-- 测点 -->
<el-form-item
:label="$t('message.deepFoundConfig.point')"
prop="measurePointIds"
>
<el-select
style="width: 100%"
v-model="testPointImgForm.measurePointIds"
multiple
:placeholder="$t('message.deepFoundConfig.placeholderText2')"
>
<el-option
v-for="item in testPointOptions"
:key="item.id"
:label="item.measurePointName"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<!-- 示意图 -->
<el-form-item
:label="$t('message.deepFoundConfig.img')"
prop="fileList"
>
<div
class="img_box"
v-for="(item, index) in testPointImgForm.fileList"
:key="index"
>
<el-image
:src="item.url"
:preview-src-list="[item.url]"
style="width: 148px; height: 148px; margin-right: 20px"
></el-image>
<i
class="el-icon-error"
@click="testPointImgForm.fileList.splice(index, 1)"
></i>
</div>
<el-upload
:action="$store.state.UPLOADURL"
name="files"
style="display: inline"
list-type="picture-card"
:show-file-list="false"
:on-preview="handlePictureCardPreview"
:on-remove="(file, fileList) => handleRemove(file, fileList, 4)"
:on-success="(res, file) => handleSuccess(res, file, 4)"
:file-list="testPointImgForm.fileList"
>
<i class="el-icon-plus"></i>
</el-upload>
</el-form-item>
</el-form>
<div class="btn-box">
<el-button icon="el-icon-circle-close" @click="closeAddImg">{{
$t('message.deepFoundConfig.cancel')
}}</el-button>
<el-button
type="primary"
icon="el-icon-circle-check"
@click="submitImgConfig"
>{{ $t('message.deepFoundConfig.confirm') }}</el-button
>
</div>
</div>
</el-dialog>
<!-- 提示 -->
<el-dialog
width="35%"
:title="$t('message.deepFoundConfig.hint')"
class="dialog-center"
:visible.sync="deleteInfo"
:modal-append-to-body="false"
>
<p style="font-size: 18px; display: flex; align-items: center">
<i
class="el-icon-warning"
style="color: #e6a23c; font-size: 28px; margin-right: 10px"
></i>
<!-- 此操作将永久删除该文件, 是否继续? -->
{{ $t('message.deepFoundConfig.hintContent') }}
</p>
<span slot="footer" class="dialog-footer">
<el-button @click="closeMsg(1)">{{
$t('message.deepFoundConfig.cancel')
}}</el-button>
<el-button type="primary" @click="checkMsg">{{
$t('message.deepFoundConfig.confirm')
}}</el-button>
</span>
</el-dialog>
</div>
</div>
</template>
<script>
import {
addDeepExcavationEngineeringApi,
editDeepExcavationEngineeringApi,
queryByIdDeepExcavationEngineeringApi,
deleteDeepExcavationEngineeringApi,
selectDeepExcavationListApi,
getDefaultMonitorTypeListApi,
selectDeepExcavationMonitorTypeListApi,
selectMeasurePointListApi,
selectDeepExcavationSensorTypeListApi,
addDeepExcavationMeasurePointApi,
editDeepExcavationMeasurePointApi,
deleteDeepExcavationMeasurePointApi,
selectDeepExcavationCurrentDataListApi,
selectDeepExcavationCurrentDataApi,
addDeepExcavationPlaneFigureApi,
editDeepExcavationPlaneFigureApi,
selectDeepExcavationPlaneFigureListApi,
selectDeepExcavationPlaneFigureCoordinateApi,
selectDeepExcavationAllMeasurePointListApi,
deleteDeepExcavationPlaneFigureApi,
editDeepExcavationPlaneFigureCoordinateApi,
getDetailDeepExcavationApi
} from '@/assets/js/api/steelStructure.js'
export default {
data() {
return {
// 完工状态枚举
projectStatusEnum: {
0: "未开工",
1: "进行中",
2: "已完成",
},
pickerOptions: {
disabledDate(time) {
return time.getTime() < Date.now() - 8.64e7;
}
},
show: true,
deleteInfo: false,
isPreview: false,
isPreviewTitle: '', //标题
testPointOptions: [],
sensorRules: {
sensorSn: [{ required: true, message: '必填', trigger: 'blur' }],
sensorName: [{ required: true, message: '必填', trigger: 'blur' }],
steelStructureSensorTypeId: [{ required: true, message: '必填', trigger: 'change' }],
alarmValue: [{ required: true, message: '必填', trigger: 'blur' }],
rateAlarmValue: [{ required: true, message: '必填', trigger: 'blur' }],
fiducialValue: [{ required: true, message: '必填', trigger: 'blur' }]
},
rules3: {
planeFigureName: [
{ required: true, message: '请输入平面图名称', trigger: 'blur' }
],
measurePointIds: [
{
type: 'array',
required: true,
message: '请至少选择一个测点',
trigger: 'change'
}
],
fileList: [
{
type: 'array',
required: true,
message: '请上传示意图',
trigger: 'blur'
},
{
type: 'array',
required: true,
message: '请上传示意图',
trigger: 'change'
}
]
},
testPointImgForm: {
planeFigureName: '',
fileList: [],
measurePointIds: []
},
activeImgIndex: 0,
typeOptions: [],
deepImgList: [],
currentTableData: [],
activeDeep: 0,
deepExcavationList: [],
currentPointDetail: [],
pointList: [],
pointStatus: 'none',
pointTop: 0,
pointLeft: 0,
imgWidth: 0,
imgHeight: 0,
imgStartWidth: 0,
imgStartHeight: 0,
imgZoom: 1,
pointIndex: '',
showPointMap: false,
showTestPoint: false,
testPointData: [],
showDetail: false,
surveyPointDetail: [],
tableData: [],
pagInfo: {
pageNo: 1,
pageSize: 10,
total: 1
},
pagInfo2: {
pageNo: 1,
pageSize: 10,
total: 1
},
testPointForm: {
measurePointNumber: '', // 测点编号
measurePointName: '', // 测点名称
measurePointAddr: '', // 测点位置
// sensorSn: '',
// steelStructureSensorTypeId: '',
sensorList: [
{
sensorSn: '', // 传感器编号
steelStructureSensorTypeId: '', // 传感器类型
earlyWarningValue: '', // 预警
alarmValue: '', //报警
controlValue: '' //控制
}
] // 传感器编号类型数组
},
dialogVisible: false,
dialogVisible2: false,
formTitle: '',
innerVisible: false,
dialogImageUrl: '',
// safeLvList: [
// {
// label: "一级",
// value: 1
// },
// {
// label: "二级",
// value: 2
// },
// {
// label: "三级",
// value: 3
// },
// {
// label: "四级",
// value: 4
// }
// ],
rules: {
slopeName: [
{ required: true, message: '请输入边坡名称', trigger: 'blur' }
],
startDate: [
{
type: 'string',
required: true,
message: '请选择开工日期',
trigger: 'change'
}
],
endDate: [
{
type: 'string',
required: true,
message: '请选择完工日期',
trigger: 'change'
}
],
// foundationDitchDepth: [
// { required: true, message: '请输入高边坡深度', trigger: 'blur' }
// ],
// foundationDitchGirth: [
// { required: true, message: '请输入高边坡周长', trigger: 'blur' }
// ],
// excavationDepth: [
// { required: true, message: '请输入开挖深度', trigger: 'blur' }
// ]
},
rules2: {
measurePointNumber: [
{ required: true, message: '请输入测点编号', trigger: 'blur' }
],
measurePointName: [
{ required: true, message: '请输入测点名称', trigger: 'blur' }
],
measurePointAddr: [
{ required: true, message: '请输入测点位置', trigger: 'blur' }
],
sensorSn: [
{ required: true, message: '请输入采集仪编号', trigger: 'blur' }
],
steelStructureSensorTypeId: [
{ required: true, message: '请选择传感器类型', trigger: 'change' }
]
},
dialogdata: {
slopeName: '',
// projectAddress: "",
startDate: '',
endDate: '',
safetyLevel: 1,
foundationDitchDepth: '',
foundationDitchGirth: '',
supportPattern: '',
surveyDirectorName: '',
surveyPersonnelName: '',
excavationDepth: '',
floorPourTime: ''
},
// fileList:[],
deviseDrawingList: [],
surveySchemeList: [],
prospectingReportList: [],
dialogTitle: '监测项管理',
checkAll: false,
isIndeterminate: false,
checkedContent: [],
contentList: [],
devNum: '',
alarmStatus: '',
statusList: [
{
value: '0',
label: '正常'
},
{
value: '1',
label: '预警'
},
{
value: '2',
label: '报警'
},
{
value: '3',
label: '控制'
}
],
showActiveDetail: false,
acquisitionTime: [],
exportData: {
alarmState: '',
measurePointNumber: '',
startDate: '',
endDate: ''
},
startX: '',
startY: '',
ratio: 1,
projectSn: '',
formType: '', // 1.新增高边坡 2.编辑高边坡
editId: '',
monitorTypeId: '',
steelStructureEngineeringToMonitorTypeId: '',
steelStructureEngineeringId: '',
activeImgUrl: '',
showAddImg: false,
isEditPoint: false,
removeData: '',
removeType: '',
total: 0,
pageNo: 1,
pageSize: 10,
title: '',
dialogType: 1, // 1添加 2 编辑
id: '',
}
},
created() {
this.projectSn = this.$store.state.projectSn
this.getDefaultMonitorTypeList()
this.selectDeepExcavationList()
this.selectDeepExcavationSensorTypeList()
},
mounted() {},
methods: {
addRow() {
let obj = {
sensorSn: '',
sensorName: '', //传感器名称
steelStructureSensorTypeId: '',
alarmValue: '', //累计值告警阈值
rateAlarmValue: '', //变化速率报警值
fiducialValue: '' //基准值
// earlyWarningValue: "", // 预警
// alarmValue: "", //报警
// controlValue: "" //控制
}
// console.log('--------------',this.testPointForm.sensorList)
this.testPointForm.sensorList.push(obj)
},
deleteRow(val, index) {
if (val.id != '') {
this.$confirm(
'此操作将永久删除当前传感器以及相关联的数据, 是否继续?',
'提示',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}
)
.then(() => {
this.testPointForm.sensorList.splice(index, 1)
this.$message({
type: 'success',
message: '删除成功!'
})
})
.catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
})
})
}
},
checkMsg() {
// 1、布置图 2、测点
if (this.removeType == 1) {
deleteDeepExcavationPlaneFigureApi({ id: this.removeData.id }).then(
(res) => {
if (res.code == 200) {
// 删除成功!
this.$message.success(
this.$t('message.deepFoundConfig.removeSuccess')
)
this.activeImgUrl = ''
this.pointList = []
this.selectDeepExcavationPlaneFigureList()
}
}
)
} else if (this.removeType == 2) {
deleteDeepExcavationMeasurePointApi({
measurePointNumber: this.removeData.measurePointNumber
}).then((res) => {
if (res.code == 200 && res.success) {
this.$message.success(
this.$t('message.deepFoundConfig.removeSuccess')
)
this.selectMeasurePointList()
}
})
}
this.deleteInfo = false
},
closeMsg(val) {
if (val == 1) {
// 已取消删除
this.$message.info(this.$t('message.deepFoundConfig.cancelRemove'))
}
this.removeType = ''
this.removeData = ''
this.deleteInfo = false
},
closeActiveDetail() {
this.exportData.measurePointNumber = ''
this.exportData.alarmState = ''
this.showActiveDetail = false
this.selectDeepExcavationMonitorTypeList()
},
closeDetail() {
this.selectDeepExcavationMonitorTypeList()
this.devNum = ''
this.alarmStatus = ''
this.showDetail = false
},
closePointMap() {
this.activeImgUrl = ''
this.showPointMap = false
},
filterLeave(val) {
console.log(val)
let text = ''
// 一级 二级 三级 四级 五级
switch (val) {
case '1':
text = this.$t('message.deepFoundConfig.lv1')
break
case '2':
text = this.$t('message.deepFoundConfig.lv2')
break
case '3':
text = this.$t('message.deepFoundConfig.lv3')
break
case '4':
text = this.$t('message.deepFoundConfig.lv4')
break
case '5':
text = this.$t('message.deepFoundConfig.lv5')
break
}
console.log(text)
return text
},
editPoint() {
this.isEditPoint = true
// 成功 请开始移动点位!
this.$notify({
title: this.$t('message.deepFoundConfig.success'),
message: this.$t('message.deepFoundConfig.notifyMsg'),
type: 'success'
})
},
savePoint() {
console.log(this.pointList)
let arr = []
this.pointList.forEach((item) => {
arr.push({
id: item.id,
mapX: item.mapX,
mapY: item.mapY,
pointId: item.pointId,
steelStructurePlaneFigureId: item.steelStructurePlaneFigureId
})
})
// let data ={
// list: arr
// }
editDeepExcavationPlaneFigureCoordinateApi(arr).then((res) => {
console.log(res)
if (res.code && res.success) {
// 保存成功!
this.$message.success(this.$t('message.deepFoundConfig.saveSuccess'))
}
})
this.isEditPoint = false
},
// 关闭添加图片弹窗
closeAddImg() {
this.showAddImg = false
this.testPointImgForm = {
planeFigureName: '',
fileList: [],
measurePointIds: []
}
this.$refs['testPointImgForm'].resetFields()
},
// 列表查询所有测点
selectDeepExcavationAllMeasurePointList() {
selectDeepExcavationAllMeasurePointListApi({
steelStructureEngineeringId: this.steelStructureEngineeringId
}).then((res) => {
console.log(res)
if (res.code == 200) {
this.testPointOptions = res.result
}
})
},
// 添加布置图
openAddImgDialog() {
this.title = '添加平面图'
this.dialogType = 1
this.showAddImg = true
this.selectDeepExcavationAllMeasurePointList()
},
// 编辑布置图
editDeepimg(val) {
console.log('编辑', val)
this.title = '编辑平面图'
this.dialogType = 2
this.showAddImg = true
this.id = val.id
this.selectDeepExcavationAllMeasurePointList()
this.testPointImgForm.planeFigureName = val.planeFigureName
this.testPointImgForm.measurePointIds = val.measurePointIds.split(',')
this.testPointImgForm.fileList = [{ url: val.imageUrl }]
},
// 添加编辑保存
submitImgConfig() {
this.$refs['testPointImgForm'].validate((valid) => {
if (valid) {
let data = {
planeFigureName: this.testPointImgForm.planeFigureName,
measurePointIds: this.testPointImgForm.measurePointIds.join(','),
imageUrl: this.testPointImgForm.fileList[0].url,
projectSn: this.projectSn,
steelStructureEngineeringId: this.steelStructureEngineeringId
}
console.log(data)
if (this.dialogType == 1) {
addDeepExcavationPlaneFigureApi(data).then((res) => {
console.log(res)
if (res.code == 200) {
this.$message.success(
this.$t('message.deepFoundConfig.addSuccess')
)
this.selectDeepExcavationPlaneFigureList()
this.showAddImg = false
}
})
} else {
;(data.id = this.id),
editDeepExcavationPlaneFigureApi(data).then((res) => {
// console.log("--------编辑成功了吗", res);
if (res.code == 200) {
this.$message.success('编辑成功')
this.showAddImg = false
this.testPointImgForm.measurePointIds = []
console.log('编辑旺盛之后', this.testPointImgForm.measurePointIds)
let val = {
id: res.result.id,
steelStructureEngineeringId: res.result.steelStructureEngineeringId
}
this.selectDeepExcavationPlaneFigureCoordinate(val)
}
})
}
}
})
},
// 删除布置图
deleteDeepImg(val) {
this.removeType = 1
this.removeData = val
this.deleteInfo = true
},
// 获取点位位置信息
selectDeepExcavationPlaneFigureCoordinate(val) {
selectDeepExcavationPlaneFigureCoordinateApi({
steelStructurePlaneFigureId: val.id,
steelStructureEngineeringId: val.steelStructureEngineeringId
}).then((res) => {
console.log('点点点', res)
if (res.code == 200) {
res.result.forEach((item) => {
item.status = 'block'
;(item.transform = ''), (item.showDetail = false)
let arr = []
// let obj = JSON.parse(item.dataField);
// let obj = item.sensorlist
// for (let key in obj) {
// arr.push({
// key: key,
// keyName: obj[key]
// });
// }
item.detailList = arr
})
this.pointList = res.result
console.log(this.pointList)
}
})
},
// 切换平面图
checkImg(val, index) {
console.log(val)
this.imgZoom = 1
this.activeImgIndex = index
this.activeImgUrl = val.imageUrl
this.isEditPoint = false
this.selectDeepExcavationPlaneFigureCoordinate(val)
this.$nextTick(() => {
this.getNaturalSize()
})
},
selectDeepExcavationPlaneFigureList() {
let data = {
steelStructureEngineeringId: this.steelStructureEngineeringId,
projectSn: this.projectSn
}
selectDeepExcavationPlaneFigureListApi(data).then((res) => {
if (res.code == 200) {
console.log('布点图的信息', res)
this.deepImgList = res.result
if (this.deepImgList.length > 0) {
this.checkImg(this.deepImgList[0], 0)
}
}
console.log(res)
})
},
selectDeepExcavationCurrentData() {
let data = this.exportData
;(data.startDate =
this.acquisitionTime !== null && this.acquisitionTime !== undefined && this.acquisitionTime !== '' ? this.acquisitionTime[0] : ''),
(data.endDate =
this.acquisitionTime !== null && this.acquisitionTime !== undefined && this.acquisitionTime !== '' ? this.acquisitionTime[1] : ''),
(data.pageNo = this.pagInfo2.pageNo),
(data.pageSize = this.pagInfo2.pageSize),
(data.steelStructureEngineeringToMonitorTypeId = this.steelStructureEngineeringToMonitorTypeId)
selectDeepExcavationCurrentDataListApi(data).then((res) => {
console.log(res)
if (res.code == 200) {
this.currentPointDetail = res.result.data.records
console.log('分页信息', res)
this.pagInfo2.total = res.result.data.total
}
})
},
// 导出数据
exportDataFn() {
;(this.exportData.startDate =
this.acquisitionTime != '' ? this.acquisitionTime[0] : ''),
(this.exportData.endDate =
this.acquisitionTime != '' ? this.acquisitionTime[1] : ''),
console.log('=======导出传进去的参数', this.exportData)
window.location.href =
this.$http.defaults.baseURL +
'xmgl/steelStructureCurrentData/exportData?alarmState=' +
this.exportData.alarmState +
'&measurePointNumber=' +
this.exportData.measurePointNumber +
'&projectSn=' +
this.projectSn +
'&steelStructureEngineeringToMonitorTypeId=' +
this.steelStructureEngineeringToMonitorTypeId +
'&startTime=' +
this.exportData.startDate +
'&endTime=' +
this.exportData.endDate
},
// 获取当前时间 返回YYYY-MM-DD HH:mm:ss
selectNowDate() {
var date = new Date(),
year = date.getFullYear(),
month = date.getMonth() + 1,
day = date.getDate(),
hours = date.getHours(), //获取当前小时数(0-23)
minutes = date.getMinutes(), //获取当前分钟数(0-59)
seconds = date.getSeconds()
month >= 1 && month <= 9 ? (month = '0' + month) : ''
day >= 0 && day <= 9 ? (day = '0' + day) : ''
hours >= 0 && hours <= 9 ? (hours = '0' + hours) : ''
minutes >= 0 && minutes <= 9 ? (minutes = '0' + minutes) : ''
seconds >= 0 && seconds <= 9 ? (seconds = '0' + seconds) : ''
var timer =
year +
'-' +
month +
'-' +
day +
' ' +
hours +
':' +
minutes +
':' +
seconds
console.log(timer)
return timer
},
// 提交测点数据 测点新增按钮
addPointData() {
if (this.isPreview) {
this.closeDialog2()
return
}
this.$refs['testPointForm'].validate((valid) => {
if (valid) {
let data = this.testPointForm
data.steelStructureEngineeringToMonitorTypeId = this.steelStructureEngineeringToMonitorTypeId
data.steelStructureEngineeringId = this.steelStructureEngineeringId // 深高边坡id
if (this.isPreviewTitle == '新增测点') {
addDeepExcavationMeasurePointApi(data).then((res) => {
if (res.code == 200) {
this.$message.success(
this.$t('message.deepFoundConfig.addSuccess2')
)
this.selectMeasurePointList()
this.showTestPoint = false
}
})
} else {
console.log('=====编辑的参数', data)
editDeepExcavationMeasurePointApi(data).then((res) => {
if (res.code == 200) {
this.$message.success('编辑成功')
this.selectMeasurePointList()
this.showTestPoint = false
}
})
}
}
})
},
// 1编辑 2详情 else新增
preViewPointData(val, type) {
console.log('查询详情', val)
if (type == 1) {
this.isPreview = false
this.show = true
this.isPreviewTitle = '编辑'
console.log('======', this.isPreviewTitle)
} else {
this.isPreview = true
this.show = false
this.isPreviewTitle = '详情'
}
this.showTestPoint = true
let data = {}
// this.testPointForm = val
data.measurePointNumber = val.measurePointNumber
data.steelStructureEngineeringToMonitorTypeId = val.steelStructureEngineeringToMonitorTypeId
getDetailDeepExcavationApi(data).then((res) => {
console.log('--------------查询的结果', res.result)
res.result.sensorList.map((item) => {
console.log('item', item)
item.earlyWarningValue = String(item.earlyWarningValue)
item.alarmValue = String(item.alarmValue)
item.controlValue = String(item.controlValue)
item.rateAlarmValue = String(item.rateAlarmValue)
item.fiducialValue = String(item.fiducialValue)
item.steelStructureSensorTypeId = String(item.steelStructureSensorTypeId)
return
})
console.log('转换类型', res.result.sensorList)
this.testPointForm = res.result
this.testPointForm.thresholdList = res.result.sensorList
})
// this.testPointData = val.thresholdList
},
// 删除测点数据
deletePointData(val) {
console.log('sssss', val)
// deleteDeepExcavationMeasurePointApi({id: val.id}).then(res=>{
// if(res.code == 200 && res.success){
// this.$message.success('删除成功!')
// this.selectMeasurePointList()
// }
// })
this.removeData = val
this.removeType = 2
this.deleteInfo = true
},
// 关闭新增测点弹窗
closeDialog2() {
this.testPointForm = {
measurePointNumber: '',
measurePointName: '',
measurePointAddr: '',
sensorList: [
{
sensorSn: '', // 传感器编号
steelStructureSensorTypeId: '', // 传感器类型
earlyWarningValue: '', // 预警
alarmValue: '', //报警
controlValue: '' //控制
}
]
}
this.isPreview = false
this.$refs['testPointForm'].resetFields()
this.testPointForm.sensorList.forEach((item) => {
item.alarmValue = ''
item.earlyWarningValue = ''
item.controlValue = ''
})
this.selectMeasurePointList()
// this.testPointData = this.testPointData
this.showTestPoint = false
},
// 查询传感器类型
selectDeepExcavationSensorTypeList() {
selectDeepExcavationSensorTypeListApi().then((res) => {
console.log(res)
if (res.code == 200 && res.result) {
this.typeOptions = res.result
}
})
},
// 查询高边坡监测内容
selectDeepExcavationMonitorTypeList() {
if (this.deepExcavationList.length > 0) {
let data = {
steelStructureEngineeringId: this.deepExcavationList[this.activeDeep].id,
pageNo: this.pagInfo.pageNo,
pageSize: this.pagInfo.pageSize,
projectSn: this.projectSn
}
selectDeepExcavationMonitorTypeListApi(data).then((res) => {
if (res.code == 200) {
console.log(res.result.records)
console.log('监测信息', res)
this.tableData = res.result.records
this.pagInfo.total = res.result.total
}
})
}
},
// 选中高边坡
checkDeep(item, index) {
this.activeDeep = index
this.pagInfo.pageNo = 1
this.pagInfo.pageSize = 10
this.selectDeepExcavationMonitorTypeList()
},
// 查询高边坡列表
selectDeepExcavationList() {
selectDeepExcavationListApi({ projectSn: this.projectSn }).then((res) => {
console.log(res, '----高边坡列表')
if (res.code == 200 && res.result) {
this.deepExcavationList = res.result
this.activeDeep = 0
this.selectDeepExcavationMonitorTypeList()
}
})
},
// 获取监测内容选项列表
getDefaultMonitorTypeList() {
getDefaultMonitorTypeListApi().then((res) => {
// console.log(res, '---监测内容')
this.contentList = res.result
})
},
changeImgSize(val) {
if (val == 1) {
this.imgZoom = this.imgZoom + 0.5
console.log(this.imgZoom)
// this.pointList.forEach(item=>{
// item.x = Math.ceil(item.x)*1.5
// item.y = Math.ceil(item.y)*1.6
// })
} else if (val == 2) {
this.imgZoom =
this.imgZoom - 0.5 <= 0 ? this.imgZoom : this.imgZoom - 0.5
console.log(this.imgZoom)
// if((this.imgZoom - 0.5) > 0){
// this.pointList.forEach(item=>{
// item.x = Math.ceil(item.x)/1.5
// item.y = Math.ceil(item.y)/1.5
// })
// }
}
},
showMap(val) {
this.showPointMap = true
this.steelStructureEngineeringId = val.id
this.selectDeepExcavationPlaneFigureList()
},
// 新增测点
addTestPoint() {
this.show = true
this.isPreviewTitle = '新增测点'
this.showTestPoint = true
},
handleSelectionChange(val) {
console.log(val)
},
handleCheckAllChange(val) {
let arr = []
this.contentList.forEach((item) => {
arr.push(item.id)
})
console.log(arr)
this.checkedContent = val ? arr : []
this.isIndeterminate = false
},
handleCheckedCitiesChange(value) {
console.log(value)
let checkedCount = value.length
this.checkAll = checkedCount === this.contentList.length
this.isIndeterminate =
checkedCount > 0 && checkedCount < this.contentList.length
},
SizeChange(val) {
console.log(val)
this.pagInfo.pageSize = val
this.selectDeepExcavationMonitorTypeList()
},
CurrentChange(val) {
console.log(val)
this.pagInfo.pageNo = val
this.selectDeepExcavationMonitorTypeList()
},
changeSize(val) {
console.log(val)
this.pagInfo2.pageSize = val
this.selectDeepExcavationCurrentData()
},
changeCurrent(val) {
console.log(val)
this.pagInfo2.pageNo = val
this.selectDeepExcavationCurrentData()
},
addProject() {
this.formType = 1
this.dialogVisible = true
},
// 编辑获取高边坡详情
editProject(data) {
this.formType = 2
this.dialogVisible = true
this.editId = data.id
queryByIdDeepExcavationEngineeringApi({ id: data.id }).then((res) => {
console.log(res)
if (res.code == 200) {
this.dialogdata = {
slopeName: res.result.slopeName,
startDate: res.result.startDate,
endDate: res.result.endDate,
safetyLevel: Number(res.result.safetyLevel),
foundationDitchDepth: res.result.foundationDitchDepth,
foundationDitchGirth: res.result.foundationDitchGirth,
supportPattern: res.result.supportPattern,
surveyDirectorName: res.result.surveyDirectorName,
surveyPersonnelName: res.result.surveyPersonnelName,
excavationDepth: res.result.excavationDepth,
floorPourTime: res.result.floorPourTime
}
this.deviseDrawingList = res.result.deviseDrawing
? JSON.parse(res.result.deviseDrawing)
: []
this.surveySchemeList = res.result.surveyScheme
? JSON.parse(res.result.surveyScheme)
: []
this.prospectingReportList = res.result.prospectingReport
? JSON.parse(res.result.prospectingReport)
: []
}
})
},
// 删除文件
handleRemove(file, fileList, type) {
console.log(file, fileList, type)
if (type == 1) {
this.surveySchemeList = fileList
console.log(this.surveySchemeList)
} else if (type == 2) {
this.prospectingReportList = fileList
console.log(this.prospectingReportList)
} else if (type == 3) {
this.deviseDrawingList = fileList
console.log(this.deviseDrawingList)
} else if (type == 4) {
this.testPointImgForm.fileList = fileList
}
// this.$confirm(`确定移除 ${ file.name }`);
},
handleBeforeUpload(file) {
console.log(file)
if (
file.type != 'image/png' &&
file.type != 'image/jpg' &&
file.type != 'image/jpeg'
) {
// 请上传图片!
this.$message.error(this.$t('message.deepFoundConfig.uploadError'))
return false
}
},
// 上传文件
handleSuccess(res, file, type) {
// type 1、监测方案 2、地勘报告 3、高边坡设计图纸 4.示意图
console.log(res, file, type)
if (res.status == 'SUCCESS') {
// 上传成功!
this.$message.success(this.$t('message.deepFoundConfig.uploadSuccess'))
if (type == 1) {
this.surveySchemeList.push({
name: file.name,
url: this.$store.state.FILEURL + file.response.data[0].imageUrl
})
console.log(this.surveySchemeList)
} else if (type == 2) {
this.prospectingReportList.push({
name: file.name,
url: this.$store.state.FILEURL + file.response.data[0].imageUrl
})
console.log(this.prospectingReportList)
} else if (type == 3) {
this.deviseDrawingList.push({
name: file.name,
url: this.$store.state.FILEURL + file.response.data[0].imageUrl
})
console.log(this.deviseDrawingList)
} else if (type == 4) {
this.testPointImgForm.fileList = [
{
name: file.name,
url: this.$store.state.FILEURL + file.response.data[0].imageUrl
}
]
this.$refs['testPointImgForm'].clearValidate()
console.log(this.testPointImgForm.fileList)
}
}
},
// 查看大图
handlePictureCardPreview(file, fileList) {
console.log(21)
this.dialogImageUrl = file.url
this.dialogVisible2 = true
},
// 添加、编辑高边坡
submitForm() {
console.log(this.dialogdata)
this.$refs['form'].validate((valid) => {
if (valid) {
if (this.checkedContent.length == 0 && this.formType == 1) {
// 请选择监测内容
this.$message.error(
this.$t('message.deepFoundConfig.placeholderText2') +
this.$t('message.deepFoundConfig.monitorContent')
)
return
}
let data = this.dialogdata
data.deviseDrawing =
this.deviseDrawingList.length > 0
? JSON.stringify(this.deviseDrawingList)
: ''
data.surveyScheme =
this.surveySchemeList.length > 0
? JSON.stringify(this.surveySchemeList)
: ''
data.prospectingReport =
this.prospectingReportList.length > 0
? JSON.stringify(this.prospectingReportList)
: ''
data.projectSn = this.projectSn
// this.safeLvList.forEach(item=>{
// if(item.value == this.dialogdata.safeLv){
// data.safetyLevel = item.label
// }
// })
// deviseDrawingList:[],
// surveySchemeList:[],
// prospectingReportList: [],
if (this.formType == 1) {
data.status = 1
data.steelStructureMonitorTypeIds = this.checkedContent.join(',')
addDeepExcavationEngineeringApi(data).then((res) => {
console.log(res)
if (res.code == 200) {
// 新增成功!
this.$message.success(
this.$t('message.deepFoundConfig.addSuccess2')
)
this.closeDialog()
this.selectDeepExcavationList()
}
})
} else if (this.formType == 2) {
data.id = this.editId
editDeepExcavationEngineeringApi(data).then((res) => {
console.log(res)
if (res.code == 200) {
// 编辑成功!
this.$message.success(
this.$t('message.deepFoundConfig.editSuccess')
)
this.closeDialog()
this.selectDeepExcavationList()
}
})
}
}
})
// this.closeDialog()
},
// 删除高边坡
deleteDeepExcavation(data) {
// 此操作将永久删除该高边坡, 是否继续?
// 提示
// 确定
// 取消
this.$confirm(
this.$t('message.deepFoundConfig.hintContent'),
this.$t('message.deepFoundConfig.hint'),
{
confirmButtonText: this.$t('message.deepFoundConfig.confirm'),
cancelButtonText: this.$t('message.deepFoundConfig.cancel'),
type: 'warning'
}
)
.then(() => {
deleteDeepExcavationEngineeringApi({ id: data.id }).then((res) => {
if (res.code == 200) {
this.tableData = []
this.selectDeepExcavationList()
// '删除成功!'
this.$message({
type: 'success',
message: this.$t('message.deepFoundConfig.removeSuccess')
})
}
})
})
.catch(() => {
// '已取消删除'
this.$message({
type: 'info',
message: this.$t('message.deepFoundConfig.cancelRemove')
})
})
},
// 重置高边坡提交表单
resetForm() {
this.dialogdata = {
slopeName: '',
// projectAddress: "",
startDate: '',
endDate: '',
safetyLevel: 1,
foundationDitchDepth: '',
foundationDitchGirth: '',
supportPattern: '',
surveyDirectorName: '',
surveyPersonnelName: '',
excavationDepth: '',
floorPourTime: ''
}
this.editId = ''
this.checkedContent = []
this.deviseDrawingList = []
this.surveySchemeList = []
this.prospectingReportList = []
this.checkAll = false
this.isIndeterminate = false
},
closeDialog() {
this.dialogVisible = false
this.$refs['form'].resetFields()
this.resetForm()
},
previewDetail(val, type) {
this.steelStructureEngineeringToMonitorTypeId = val.id
this.steelStructureEngineeringId = val.steelStructureEngineeringId
console.log(val)
if (type == 1) {
this.selectMeasurePointList()
this.showDetail = true
this.testPointData = []
if (val.dataField) {
console.log(JSON.parse(val.dataField))
let obj = JSON.parse(val.dataField)
for (var key in obj) {
this.testPointData.push({
targetField: key,
targetName: obj[key],
openType: 2,
warningValue: 0,
alarmValue: 0,
controlValue: 0
})
}
}
} else if (type == 2) {
if (val.dataField) {
console.log(JSON.parse(val.dataField))
let obj = JSON.parse(val.dataField)
this.currentTableData = []
for (var key in obj) {
this.currentTableData.push({
targetField: key,
targetName: obj[key]
})
}
console.log(this.currentTableData)
}
let nowTime = this.selectNowDate();
this.acquisitionTime = [nowTime.split(' ')[0] + ' ' + '00:00:00',nowTime]
this.selectDeepExcavationCurrentData()
this.showActiveDetail = true
}
},
// 列表查询深高边坡-测点信息
selectMeasurePointList(val) {
if (val == 1) {
this.alarmStatus = ''
this.devNum = ''
}
let data = {
alarmState: this.alarmStatus ? this.alarmStatus : '',
measurePointNumber: this.devNum,
steelStructureEngineeringToMonitorTypeId: this.steelStructureEngineeringToMonitorTypeId,
pageNo: this.pageNo,
pageSize: this.pageSize
}
console.log('参数', data)
selectMeasurePointListApi(data).then((res) => {
console.log(res)
if (res.code == 200) {
console.log('====查询测点管理的列表', res)
this.surveyPointDetail = res.result.records
this.total = res.result.total
}
})
},
handleSizeChange(val) {
this.pageSize = val
this.selectMeasurePointList()
},
handleCurrentChange(val) {
this.pageNo = val
this.selectMeasurePointList()
},
// 获取高边坡布置图图片大小
getNaturalSize(callback) {
let Domlement = this.$refs['map']
console.dir(Domlement)
var natureSize = {}
if (window.naturalWidth && window.naturalHeight) {
natureSize.width = Domlement.naturalWidth
natureSize.height = Domlement.naturalHeight
// let heightRatio = natureSize.height / 569
// this.mapDate.width = natureSize.width*heightRatio
} else {
console.log(213)
let _this = this
var img = new Image()
img.src = Domlement.src
img.onload = function () {
natureSize.width = img.width
natureSize.height = img.height
console.log('------', natureSize)
_this.imgWidth = natureSize.width
_this.imgHeight = natureSize.height
_this.imgStartWidth = img.width
_this.imgStartHeight = img.width
console.log(
_this.$refs['mapbox'].clientWidth,
_this.$refs['mapbox'].clientHeight
)
// let heightRatio = 780 / natureSize.height
// let widthRatio = _this.$refs['mapbox'].clientWidth / natureSize.width
// if(heightRatio < widthRatio){
// // _this.imgWidth = natureSize.width*heightRatio
// // _this.imgHeight = natureSize.height*heightRatio
// _this.imgZoom = heightRatio
// } else {
// // _this.imgWidth = natureSize.width*widthRatio
// // _this.imgHeight = natureSize.height*widthRatio
// _this.imgZoom = widthRatio
// }
// _this.mapDate.width = natureSize.width*heightRatio
if (callback) {
return callback(natureSize)
}
}
}
console.log(natureSize)
// return natureSize;
},
// 添加鼠标监听事件
move(val, e) {
console.log(val, e.pageX, e.pageY)
this.ratio = window.localStorage.getItem('zoom')
this.startX = e.pageX
this.startY = e.pageY
this.pointIndex = val
// console.dir(this.$refs['point'+val])
// this.$refs['point'+val].style.opacity = '0'
let _this = this
console.log(this.pointList[val])
if (this.isEditPoint) {
this.pointList[val].status = 'none'
// this.$refs['point'+ val].style.display = 'none'
document.body.addEventListener('mousemove', this.movePoint, false)
document.body.addEventListener('mouseup', this.removeUp, false)
}
// document.body.addEventListener('mousemove',(e)=>{
// _this.movePoint(e,val,ratio,a,b)
// },false)
// document.body.addEventListener('mouseup',()=>{
// // _this.movePoint(e,val,ratio,a,b,')
// window.removeEventListener('mousemove',(e)=>{
// // console.log(1232)
// _this.movePoint(e,val,ratio,a,b)
// },false)
// })
},
// 清除鼠标监听时间
removeUp(e) {
let top = (e.pageY - this.startY) / this.imgZoom,
left = (e.pageX - this.startX) / this.imgZoom
console.log(top, left)
this.pointStatus = 'none'
let x = Math.ceil(
Number(
this.pointList[this.pointIndex].mapX
? this.pointList[this.pointIndex].mapX
: 0
) +
left / this.ratio
),
y = Math.ceil(
Number(
this.pointList[this.pointIndex].mapY
? this.pointList[this.pointIndex].mapY
: 0
) +
top / this.ratio
)
console.log(x, y, this.imgWidth, this.imgHeight)
if (y <= this.imgHeight && y >= 0) {
this.pointList[this.pointIndex].mapY = y
}
if (x <= this.imgWidth && x >= 0) {
this.pointList[this.pointIndex].mapX = x
}
this.pointList[this.pointIndex].status = 'block'
console.log(this.pointList)
this.$forceUpdate()
// this.pointList[this.pointIndex].transform = 'translate(-150%, -150%)'
// this.$refs['point'+this.pointIndex].style.transform = 'translate(-150%, -150%)'
// this.$refs['point'+ this.pointIndex].style.display = 'block'
document.body.removeEventListener('mousemove', this.movePoint, false)
document.body.removeEventListener('mouseup', this.removeUp, false)
},
// 移动鼠标
movePoint(target) {
// console.log(target)
// console.log(window.localStorage.getItem('zoom'))
// console.dir(document.getElementById('app'))
let bodyWidth = document.body.clientWidth,
bodyHeight = document.body.clientHeight,
appWidth = document.getElementById('app').clientWidth * this.ratio,
appHeight = document.getElementById('app').clientHeight * this.ratio,
a = bodyWidth - appWidth,
b = bodyHeight - appHeight
// console.log(document.body.clientHeight,document.body.clientWidth)
// this.$refs['pointFixed'].style.top = ((target.pageY)/ratio - (b*0.5)/ratio)-15/ratio + 'px'
// this.$refs['pointFixed'].style.left = ((target.pageX)/ratio - (a*0.5)/ratio)-15/ratio+ 'px'
if (this.ratio != 1) {
this.$refs['pointFixed'].style.transform = 'translate(0px, -75px)'
this.pointTop = target.pageY / this.ratio - (b * 0.5) / this.ratio
this.pointLeft = target.pageX / this.ratio - (a * 0.5) / this.ratio - 60
} else {
this.pointTop = target.pageY
this.pointLeft = target.pageX - 60
}
this.pointStatus = 'block'
// console.log(target)
},
// 鼠标抬起
up(val, e) {
let _this = this
if (this.isEditPoint) {
window.removeEventListener('mousemove', function (e) {
_this.movePoint()
})
}
// this.$refs['point'+val].style.display = '1'
}
}
}
</script>
<style lang="less" scoped>
.sensor {
border: 1px solid #e7e8eb;
margin-bottom: 10px;
padding: 20px 30px 10px 25px;
border-radius: 10px;
.sensorDel {
position: absolute;
right: 68px;
}
}
.foundationPit-config {
// background: #fff;
width: 100%;
height: 100%;
display: flex;
}
.menu-title {
font-size: 15px;
font-weight: 600;
position: relative;
padding: 15px 0;
padding-left: 10px;
}
.menu-title::before {
content: '';
display: block;
position: absolute;
width: 2px;
height: 13px;
background: #5181f6;
top: 50%;
left: 0;
transform: translateY(-50%);
}
.left-menu {
width: 320px;
margin-right: 3px;
background: #fff;
padding: 15px;
padding-top: 0;
.add-btn {
margin-top: 10px;
margin-bottom: 23px;
/deep/.el-button {
background: rgba(#5181f6, 0.1);
border: 0;
color: #262d48;
width: 280px;
height: 36px;
line-height: 36px;
padding: 0;
display: block;
margin: 0 auto;
.el-icon-circle-plus-outline {
color: #5181f6;
}
}
}
.no-data {
text-align: center;
padding-top: 50px;
img {
margin-bottom: 20px;
}
}
.menu-box {
.menu-item {
width: 280px;
margin: 0 auto;
background: #fbfbfb;
border: 1px solid #eaeaea;
padding: 20px 25px 15px;
box-sizing: border-box;
margin-bottom: 20px;
border-radius: 3px;
cursor: pointer;
.menu-h2 {
color: #2a2e3f;
font-weight: 600;
margin-bottom: 9px;
font-size: 16px;
width: 100%;
word-break: break-all;
}
p {
font-size: 14px;
color: rgba(#2a2e3f, 0.8);
margin-bottom: 7px;
span {
padding: 3px 6px;
border-radius: 10px;
}
.status-underway {
color: #44d7b6;
background: rgba(#44d7b6, 0.15);
}
.status-finish {
color: #5484f6;
background: rgba(#5484f6, 0.15);
}
}
/deep/.el-button {
padding: 0;
margin-bottom: 14px;
}
.actions-box {
/deep/.el-button {
padding: 0;
margin-bottom: 0px;
.el-icon-delete {
color: #f24c32;
}
}
}
}
.active-item {
background: #fff;
border: 0;
box-shadow: 0px 2px 10px 0px rgba(42, 46, 63, 0.18);
border: 1px solid #409eff;
}
}
}
.foundationPit-content {
background: #fff;
flex: 1;
}
.search-box {
display: flex;
align-items: center;
margin-bottom: 20px;
.search-item {
display: flex;
align-items: center;
padding: 20px;
.search-label {
// width: 80px;
white-space: nowrap;
}
}
}
.foundationPit-table {
padding: 0 26px;
padding-top: 60px;
.table-title {
color: #262d48;
font-weight: 600;
margin-bottom: 26px;
}
// .tables{
// height: 660px;
// }
.a-detail {
color: #409eff;
cursor: pointer;
}
.detail-btn {
// border-color: #409EFF;
color: rgba(#2a2e3f, 0.6);
border-radius: 3px;
}
.detail-btn:hover {
color: #5181f6;
}
}
.dialogFormBox {
width: 100%;
padding: 0 30px;
box-sizing: border-box;
// margin-bottom: 80px;
/deep/.el-form-item {
display: inline-block;
width: 50%;
.el-select {
width: 260px !important;
}
.el-date-picker {
width: 260px !important;
}
.el-cascader {
width: 260px !important;
}
.el-input {
width: 260px !important;
}
}
}
.dialog-content {
height: 650px;
margin-bottom: 30px;
}
.btn-box {
display: flex;
justify-content: center;
align-items: center;
}
.backText {
padding: 10px;
}
.alarm_status1 {
padding: 4px 6px;
// background: #44d7b6;
color: #44d7b6;
border-radius: 3px;
}
.alarm_status2 {
padding: 4px 6px;
// background: #7953f6;
color: #f76462;
border-radius: 3px;
}
.alarm_status3 {
padding: 4px 6px;
// background: #f67f52;
color: #f76462;
border-radius: 3px;
}
.alarm_status4 {
padding: 4px 6px;
// background: #5484f6;
color: #f76462;
border-radius: 3px;
}
.formBox {
width: 85%;
margin: 0 auto;
.tables {
min-height: 0;
}
}
.form-wrap {
height: 620px;
}
.map-box {
display: flex;
height: 820px;
.map-left {
width: 300px;
height: 802px;
.uploadBox {
width: 250px;
margin: 0 auto;
margin-bottom: 16px;
}
.add-btn {
width: 250px;
margin: 0 auto;
margin-bottom: 16px;
text-align: center;
background: rgba(#d8d8d8, 0.3);
height: 132px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
.el-icon-circle-plus-outline {
margin-bottom: 8px;
font-size: 26px;
color: #b4c8f3;
}
}
ul {
width: 250px;
margin: 0 auto;
li {
width: 100%;
margin-bottom: 16px;
cursor: pointer;
border: 1px solid #cdcdcd;
padding: 0 10px;
padding-top: 10px;
box-sizing: border-box;
img {
width: 100%;
margin: 0 auto;
display: block;
height: 132px;
// border: 1px solid #CDCDCD;
}
.actions-box {
display: flex;
justify-content: space-between;
align-items: center;
padding-right: 10px;
span {
flex: 1;
}
}
}
.img-active {
border-color: #4a8bff;
box-shadow: 0px 2px 8px 0px rgba(0, 0, 0, 0.14);
}
}
}
.map-right {
// flex: 1;
width: calc(100% - 300px);
border: 1px solid #e6e6e6;
padding: 14px;
height: 802px;
.action-box {
display: flex;
margin-bottom: 10px;
.btn-item {
margin-right: 20px;
display: flex;
align-items: center;
justify-content: center;
color: #5181f6;
border: 1px solid #5181f6;
border-radius: 3px;
cursor: pointer;
width: 62px;
height: 24px;
img {
margin-right: 4px;
}
i {
margin-right: 4px;
}
}
}
.img-box {
// margin: 0 auto;
// height: 100%;
// position: relative;
// top: 50%;
// transform: translateY(-50%);
transform-origin: left top;
position: relative;
.point-list {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
li {
display: inline-block;
position: absolute;
}
.point-dialog {
background: rgba(#2a2e3f, 0.9);
color: #fff;
width: 238px;
height: auto;
box-sizing: border-box;
padding: 0 16px;
padding-bottom: 18px;
position: absolute;
left: 50%;
top: -8px;
transform: translate(-50%, -100%);
font-size: 12px;
.el-icon-error {
position: absolute;
right: 12px;
top: 10px;
cursor: pointer;
}
.point-title {
// height: 40px;
line-height: 20px;
border-bottom: 1px solid rgba(254, 255, 255, 1);
margin-bottom: 13px;
font-size: 14px;
word-break: break-all;
padding: 10px 0;
}
.point-content {
font-size: 14px;
p {
line-height: 24px;
}
}
}
.point-title2 {
width: auto;
height: auto;
white-space: nowrap;
font-size: 16px;
padding: 10px 20px;
}
.right_detail {
left: 30px;
top: 0;
transform: translate(0, 0);
}
.right_title {
left: 30px;
top: -8px;
transform: translate(0, 0);
}
}
img {
// display: block;
// margin: 0 auto;
// position: relative;
// top: 50%;
// transform: translateY(-50%);
}
}
}
}
.dialog-center {
overflow: auto;
/deep/.el-dialog {
margin: 0 !important;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
}
.check_group {
/deep/.el-checkbox {
width: 50%;
margin: 0;
}
}
.pointFixed {
position: fixed;
}
.pagerBox2 {
margin-top: 20px;
}
/deep/.el-upload-list__item-name {
width: 300px;
}
/deep/.el-dialog__title {
font-weight: bold;
}
.img_box {
width: 148px;
height: 148px;
margin-right: 20px;
display: inline-block;
position: relative;
.el-icon-error {
position: absolute;
right: -9px;
top: -9px;
font-size: 18px;
color: #f56c6c;
cursor: pointer;
}
.el-image {
width: 100%;
height: 100%;
}
}
.pager {
margin-top: 5px;
text-align: center;
.el-pager li.active {
background-color: @--bg-color-primary!important;
}
button:disabled,
.btn-next,
.btn-prev {
background-color: transparent !important;
}
}
</style>