2025-06-02 20:25:19 +08:00
|
|
|
<template>
|
|
|
|
|
<div class="dialog" v-if="dialogForm">
|
|
|
|
|
<div class="head_box">
|
|
|
|
|
<span class="title">{{ pageInfo[pageType].title }}</span>
|
|
|
|
|
<div>
|
2025-09-15 13:35:45 +08:00
|
|
|
<el-button size="small" type="primary" v-if="['add', 'edit'].includes(pageType)" @click="_onSave">保存</el-button>
|
2025-06-02 20:25:19 +08:00
|
|
|
<el-button size="small" @click="close">关闭</el-button>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="cntinfo">
|
2025-09-15 13:35:45 +08:00
|
|
|
<el-form ref="formRef" :model="listQuery" :rules="rules" :inline="true" label-position="top">
|
2025-06-02 20:25:19 +08:00
|
|
|
<el-form-item style="width: 40%" prop="ssbmdm" label="所属部门">
|
2025-09-15 13:35:45 +08:00
|
|
|
<MOSTY.Department width="100%" clearable :disabled="forbidden" v-model="listQuery.ssbmdm"
|
|
|
|
|
:placeholder="listQuery.ssbm ? listQuery.ssbm : '请选择所属部门'" />
|
2025-06-02 20:25:19 +08:00
|
|
|
</el-form-item>
|
2025-06-23 09:57:34 +08:00
|
|
|
<el-form-item style="width: 40%" prop="jczmc" label="环林卡口名称">
|
2025-09-15 13:35:45 +08:00
|
|
|
<el-input :disabled="forbidden" v-model="listQuery.jczmc" placeholder="请输入环林卡口名称" style="width: 100%"
|
|
|
|
|
clearable />
|
2025-06-02 20:25:19 +08:00
|
|
|
</el-form-item>
|
|
|
|
|
|
|
|
|
|
<el-form-item style="width: 40%" prop="zqlx" label="执勤类型">
|
2025-07-07 20:49:08 +08:00
|
|
|
<el-select :disabled="forbidden" v-model="listQuery.zqlx" placeholder="请选择执勤类型">
|
2025-09-15 13:35:45 +08:00
|
|
|
<el-option v-for="dict in dict.D_BZ_ZQLX" :key="dict.value" :value="dict.value"
|
|
|
|
|
:label="dict.label"></el-option>
|
2025-06-02 20:25:19 +08:00
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
2025-06-23 09:57:34 +08:00
|
|
|
<el-form-item style="width: 40%" prop="jczlx" label="环林卡口类型">
|
2025-07-07 20:49:08 +08:00
|
|
|
<el-select :disabled="forbidden" v-model="listQuery.jczlx" placeholder="请选择环林卡口类型">
|
2025-09-15 13:35:45 +08:00
|
|
|
<el-option v-for="dict in dict.D_BZ_JCZLX" :key="dict.value" :value="dict.value"
|
|
|
|
|
:label="dict.label"></el-option>
|
2025-06-02 20:25:19 +08:00
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
2025-06-23 09:57:34 +08:00
|
|
|
<el-form-item style="width: 40%" prop="jczjb" label="环林卡口级别">
|
2025-07-07 20:49:08 +08:00
|
|
|
<el-select :disabled="forbidden" v-model="listQuery.jczjb" placeholder="请选择环林卡口级别">
|
2025-09-15 13:35:45 +08:00
|
|
|
<el-option v-for="dict in dict.D_BZ_JCZJB" :key="dict.value" :value="dict.value"
|
|
|
|
|
:label="dict.label"></el-option>
|
2025-06-02 20:25:19 +08:00
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item style="width: 40%" prop="fzr" label="负责人">
|
2025-09-15 13:35:45 +08:00
|
|
|
<el-input :disabled="forbidden" v-model="listQuery.fzr" placeholder="请输入负责人" style="width: 100%" clearable />
|
2025-06-02 20:25:19 +08:00
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item style="width: 40%" prop="lxdh" label="联系电话">
|
2025-09-15 13:35:45 +08:00
|
|
|
<el-input :disabled="forbidden" v-model="listQuery.lxdh" placeholder="请输入联系电话" style="width: 100%"
|
|
|
|
|
clearable />
|
2025-06-02 20:25:19 +08:00
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item style="width: 40%" prop="dllx" label="道路类型">
|
2025-07-07 20:49:08 +08:00
|
|
|
<el-select :disabled="forbidden" v-model="listQuery.dllx" placeholder="请选择道路类型">
|
2025-09-15 13:35:45 +08:00
|
|
|
<el-option v-for="dict in dict.D_BZ_DLLX" :key="dict.value" :value="dict.value"
|
|
|
|
|
:label="dict.label"></el-option>
|
2025-06-02 20:25:19 +08:00
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
2025-07-07 20:49:08 +08:00
|
|
|
<el-form-item style="width: 40%" prop="xxdz" label="环林卡口地址">
|
2025-09-15 13:35:45 +08:00
|
|
|
<el-input :disabled="forbidden" v-model="listQuery.xxdz" placeholder="请输入环林卡口地址" style="width: 100%"
|
|
|
|
|
clearable />
|
2025-06-02 20:25:19 +08:00
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="示意图(最多3张)" prop="fjid" style="width: 40%">
|
2025-09-15 13:35:45 +08:00
|
|
|
<MOSTY.Upload :disableds="forbidden" :isImg="true" width="100%" :limit="3" v-model="listQuery.fjid">
|
|
|
|
|
</MOSTY.Upload>
|
2025-06-02 20:25:19 +08:00
|
|
|
</el-form-item>
|
2025-09-15 13:35:45 +08:00
|
|
|
<el-form-item label="全景图(正面、侧面、俯视共3张)" prop="qjfjid" style="width: 48%">
|
|
|
|
|
<MOSTY.Upload :disableds="forbidden" width="100%" :isImg="true" :limit="3" v-model="listQuery.qjfjid">
|
|
|
|
|
</MOSTY.Upload>
|
2025-06-02 20:25:19 +08:00
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item style="width: 85%" prop="jd" label="坐标位置">
|
|
|
|
|
<div class="latlng flex">
|
2025-09-15 13:35:45 +08:00
|
|
|
<el-input :disabled="true" v-model="listQuery.jd" clearable placeholder="请选择坐标"
|
|
|
|
|
style="width: 42%"></el-input>
|
|
|
|
|
<el-input :disabled="true" v-model="listQuery.wd" clearable placeholder="请选择坐标"
|
|
|
|
|
style="width: 42%; margin-left: 1%"></el-input>
|
2025-06-02 20:25:19 +08:00
|
|
|
|
2025-09-15 13:35:45 +08:00
|
|
|
<el-button @click="selectLocation" :disabled="forbidden">选择定位</el-button>
|
2025-06-02 20:25:19 +08:00
|
|
|
</div>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item style="width: 100%">
|
2025-09-15 13:35:45 +08:00
|
|
|
<div class="mapbox">
|
|
|
|
|
<GdMap />
|
|
|
|
|
</div>
|
2025-06-02 20:25:19 +08:00
|
|
|
</el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup>
|
|
|
|
|
import { ref, reactive, onMounted } from "vue";
|
|
|
|
|
import { JczaddJcz, JczupdateJcz } from "@/api/mosty-jcz.js";
|
|
|
|
|
import * as MOSTY from "@/components/MyComponents/index";
|
|
|
|
|
import emitter from "@/utils/eventBus.js";
|
|
|
|
|
import GdMap from "@/components/GdMap/index.vue";
|
|
|
|
|
import { ElMessage } from "element-plus";
|
|
|
|
|
const props = defineProps({
|
|
|
|
|
dict: {
|
|
|
|
|
type: Object,
|
2025-09-15 13:35:45 +08:00
|
|
|
default: () => { }
|
2025-06-02 20:25:19 +08:00
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
const rules = reactive({
|
2025-07-07 20:49:08 +08:00
|
|
|
jczmc: [
|
2025-06-02 20:25:19 +08:00
|
|
|
{
|
|
|
|
|
required: true,
|
2025-07-07 20:49:08 +08:00
|
|
|
message: "请输入检查站名称"
|
2025-06-02 20:25:19 +08:00
|
|
|
}
|
|
|
|
|
],
|
2025-07-07 20:49:08 +08:00
|
|
|
zqlx: [
|
2025-06-02 20:25:19 +08:00
|
|
|
{
|
|
|
|
|
required: true,
|
2025-07-07 20:49:08 +08:00
|
|
|
message: "请选择执勤类型",
|
2025-09-15 13:35:45 +08:00
|
|
|
trigger: "change"
|
2025-06-02 20:25:19 +08:00
|
|
|
}
|
|
|
|
|
],
|
2025-07-07 20:49:08 +08:00
|
|
|
jczlx: [
|
2025-06-02 20:25:19 +08:00
|
|
|
{
|
|
|
|
|
required: true,
|
2025-07-07 20:49:08 +08:00
|
|
|
message: "请选择环林卡口类型",
|
|
|
|
|
trigger: "change"
|
|
|
|
|
}
|
|
|
|
|
], jczjb: [
|
|
|
|
|
{
|
|
|
|
|
required: true,
|
|
|
|
|
message: "请选择环林卡口级别",
|
2025-06-02 20:25:19 +08:00
|
|
|
trigger: "change"
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
wd: [
|
|
|
|
|
{
|
|
|
|
|
required: true,
|
|
|
|
|
message: "请输入维度"
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
jd: [
|
|
|
|
|
{
|
|
|
|
|
required: true,
|
|
|
|
|
message: "请输入经度"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
});
|
|
|
|
|
const formRef = ref(null);
|
|
|
|
|
const emit = defineEmits(["getjczgetXfllList"]);
|
|
|
|
|
const dialogForm = ref(false);
|
|
|
|
|
const listQuery = ref({ fl: "02" });
|
|
|
|
|
const pageInfo = {
|
|
|
|
|
edit: {
|
|
|
|
|
title: "编辑",
|
|
|
|
|
url: ""
|
|
|
|
|
},
|
|
|
|
|
add: {
|
|
|
|
|
title: "新增",
|
|
|
|
|
url: ""
|
|
|
|
|
},
|
|
|
|
|
detail: {
|
|
|
|
|
title: "详情"
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
onMounted(() => {
|
|
|
|
|
emitter.on("coordString", (res) => {
|
|
|
|
|
if (res.type === "point") {
|
|
|
|
|
listQuery.value.jd = res.coord[0];
|
|
|
|
|
listQuery.value.wd = res.coord[1];
|
|
|
|
|
chackLat();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
let pageType = ref("add");
|
2025-09-15 13:35:45 +08:00
|
|
|
const forbidden = ref(false)
|
2025-06-02 20:25:19 +08:00
|
|
|
// 初始化数据
|
|
|
|
|
const init = (type, row) => {
|
|
|
|
|
pageType.value = type;
|
|
|
|
|
dialogForm.value = true;
|
|
|
|
|
// 根据type和row初始化表单数据
|
|
|
|
|
tabHeightFn();
|
2025-09-15 13:35:45 +08:00
|
|
|
if (type == "edit" || type == "detail") {
|
2025-06-02 20:25:19 +08:00
|
|
|
listQuery.value = { ...row };
|
2025-07-07 20:49:08 +08:00
|
|
|
if (type == "detail") {
|
2025-09-15 13:35:45 +08:00
|
|
|
forbidden.value = true
|
2025-07-07 20:49:08 +08:00
|
|
|
}
|
|
|
|
|
chackLat();
|
2025-06-02 20:25:19 +08:00
|
|
|
} else {
|
|
|
|
|
listQuery.value = {};
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
//保存
|
|
|
|
|
const _onSave = () => {
|
|
|
|
|
if (!formRef) return;
|
|
|
|
|
formRef.value.validate((valid, fields) => {
|
|
|
|
|
if (valid) {
|
|
|
|
|
if (pageType.value == "add") {
|
|
|
|
|
JczaddJcz(listQuery.value).then((res) => {
|
|
|
|
|
ElMessage({ message: "新增成功", type: "success" });
|
|
|
|
|
emit("getjczgetXfllList");
|
|
|
|
|
close();
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
JczupdateJcz(listQuery.value).then((res) => {
|
|
|
|
|
ElMessage({ message: "修改成功", type: "success" });
|
|
|
|
|
emit("getjczgetXfllList");
|
|
|
|
|
close();
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
console.log("error submit!", fields);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
console.log();
|
|
|
|
|
};
|
|
|
|
|
//选择定位地图
|
|
|
|
|
const selectLocation = () => {
|
|
|
|
|
emitter.emit("drawShape", {
|
|
|
|
|
flag: "select_point",
|
|
|
|
|
type: "point",
|
|
|
|
|
isclear: true
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
//获取经纬度
|
2025-07-07 20:49:08 +08:00
|
|
|
const chackLat = () => {
|
2025-06-02 20:25:19 +08:00
|
|
|
const { jd, wd } = listQuery.value;
|
2025-09-15 13:35:45 +08:00
|
|
|
console.log(jd, wd);
|
2025-07-07 20:49:08 +08:00
|
|
|
|
2025-06-02 20:25:19 +08:00
|
|
|
emitter.emit("deletePointArea", "jczMap_Gzy");
|
|
|
|
|
if (jd && wd) {
|
2025-07-07 20:49:08 +08:00
|
|
|
setTimeout(() => {
|
|
|
|
|
emitter.emit("addPointArea", {
|
|
|
|
|
coords: [{ jd, wd }],
|
|
|
|
|
icon: require("@/assets/images/bi/gzy.png"),
|
|
|
|
|
flag: "jczMap_Gzy"
|
|
|
|
|
});
|
|
|
|
|
}, 1000);
|
2025-06-02 20:25:19 +08:00
|
|
|
}
|
|
|
|
|
};
|
2025-07-07 20:49:08 +08:00
|
|
|
// 初始化时展示地图图标
|
|
|
|
|
const mapIcon = (val) => {
|
2025-09-15 13:35:45 +08:00
|
|
|
console.log(val);
|
2025-06-02 20:25:19 +08:00
|
|
|
|
2025-07-07 20:49:08 +08:00
|
|
|
}
|
2025-06-02 20:25:19 +08:00
|
|
|
//页面关闭
|
|
|
|
|
const close = () => {
|
|
|
|
|
dialogForm.value = false;
|
2025-09-15 13:35:45 +08:00
|
|
|
forbidden.value = false
|
2025-06-02 20:25:19 +08:00
|
|
|
listQuery.value = {};
|
|
|
|
|
};
|
|
|
|
|
// 表格高度计算
|
|
|
|
|
const tableHeight1 = ref();
|
|
|
|
|
const tabHeightFn = () => {
|
|
|
|
|
tableHeight1.value = window.innerHeight - 450;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
defineExpose({ init });
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
|
.dialog {
|
|
|
|
|
padding: 20px;
|
2025-09-15 13:35:45 +08:00
|
|
|
|
2025-06-02 20:25:19 +08:00
|
|
|
.head_box {
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
align-items: center;
|
|
|
|
|
margin-bottom: 20px;
|
|
|
|
|
}
|
2025-09-15 13:35:45 +08:00
|
|
|
|
2025-06-02 20:25:19 +08:00
|
|
|
.cntinfo {
|
|
|
|
|
height: calc(100% - 70px);
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
overflow-y: auto;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-09-15 13:35:45 +08:00
|
|
|
|
2025-06-02 20:25:19 +08:00
|
|
|
.my_transfer {
|
|
|
|
|
height: calc(100% - 50px);
|
|
|
|
|
display: flex;
|
2025-09-15 13:35:45 +08:00
|
|
|
|
2025-06-02 20:25:19 +08:00
|
|
|
.btn {
|
|
|
|
|
width: 50px;
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
margin: 0 10px;
|
|
|
|
|
}
|
2025-09-15 13:35:45 +08:00
|
|
|
|
2025-06-02 20:25:19 +08:00
|
|
|
.left {
|
|
|
|
|
margin: 12px;
|
|
|
|
|
flex: 1;
|
|
|
|
|
position: relative;
|
2025-09-15 13:35:45 +08:00
|
|
|
|
2025-06-02 20:25:19 +08:00
|
|
|
.tableBox {
|
|
|
|
|
position: absolute;
|
|
|
|
|
width: 100%;
|
|
|
|
|
}
|
2025-09-15 13:35:45 +08:00
|
|
|
|
2025-06-02 20:25:19 +08:00
|
|
|
.serch {
|
|
|
|
|
position: relative;
|
|
|
|
|
width: 100%;
|
2025-09-15 13:35:45 +08:00
|
|
|
|
2025-06-02 20:25:19 +08:00
|
|
|
// height: 96px;
|
2025-09-15 13:35:45 +08:00
|
|
|
>.el-form--inline {
|
2025-06-02 20:25:19 +08:00
|
|
|
display: block;
|
|
|
|
|
width: 100%;
|
|
|
|
|
padding: 0;
|
2025-09-15 13:35:45 +08:00
|
|
|
|
|
|
|
|
>.el-form-item--default {
|
2025-06-02 20:25:19 +08:00
|
|
|
width: 31%;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-09-15 13:35:45 +08:00
|
|
|
|
2025-06-02 20:25:19 +08:00
|
|
|
.tableBox {
|
|
|
|
|
width: 100%;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-09-15 13:35:45 +08:00
|
|
|
|
2025-06-02 20:25:19 +08:00
|
|
|
.right {
|
|
|
|
|
width: 380px;
|
|
|
|
|
margin: 12px;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-09-15 13:35:45 +08:00
|
|
|
|
2025-06-02 20:25:19 +08:00
|
|
|
.phone {
|
|
|
|
|
width: 95px;
|
|
|
|
|
height: 120px;
|
2025-09-15 13:35:45 +08:00
|
|
|
|
2025-06-02 20:25:19 +08:00
|
|
|
.el-image {
|
|
|
|
|
width: 95px;
|
|
|
|
|
max-height: 120px;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-09-15 13:35:45 +08:00
|
|
|
|
2025-06-02 20:25:19 +08:00
|
|
|
::v-deep .el-upload {
|
|
|
|
|
width: 90px;
|
|
|
|
|
height: 100px;
|
|
|
|
|
border: 1px dashed #000000;
|
|
|
|
|
margin-bottom: 14px;
|
2025-09-15 13:35:45 +08:00
|
|
|
|
2025-06-02 20:25:19 +08:00
|
|
|
.el-icon {
|
|
|
|
|
margin-top: 34px;
|
|
|
|
|
font-size: 26px;
|
|
|
|
|
}
|
2025-09-15 13:35:45 +08:00
|
|
|
|
2025-06-02 20:25:19 +08:00
|
|
|
.el-image {
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: 100%;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-09-15 13:35:45 +08:00
|
|
|
|
2025-06-02 20:25:19 +08:00
|
|
|
.mapbox {
|
|
|
|
|
width: 1000px;
|
|
|
|
|
padding: 0 10px;
|
|
|
|
|
height: 400px;
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
background: #000;
|
|
|
|
|
}
|
|
|
|
|
</style>
|