|
|
|
@ -59,18 +59,17 @@
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
|
|
|
|
<section v-if="id">
|
|
|
|
|
<el-form-item label="倒伏类型:" prop="dflx" v-if="form.gdType == 0">
|
|
|
|
|
<el-checkbox-group v-model="form.dflx">
|
|
|
|
|
<el-checkbox
|
|
|
|
|
v-for="dict in dict.dflx"
|
|
|
|
|
:key="dict.value"
|
|
|
|
|
:label="dict.label"
|
|
|
|
|
:value="dict.value"
|
|
|
|
|
/>
|
|
|
|
|
</el-checkbox-group>
|
|
|
|
|
<el-form-item prop="xdsqm" v-if="form.gdType === 0">
|
|
|
|
|
<el-radio-group v-model="form.xdsqm">
|
|
|
|
|
<el-radio
|
|
|
|
|
:value="parseInt(dict.value)"
|
|
|
|
|
v-for="dict in dict.xdsqm"
|
|
|
|
|
>{{ dict.label }}</el-radio
|
|
|
|
|
>
|
|
|
|
|
</el-radio-group>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="影响类型:" prop="gdtp">
|
|
|
|
|
<el-checkbox-group v-model="form.dflx">
|
|
|
|
|
<el-form-item label="影响类型:" prop="yxlx">
|
|
|
|
|
<el-checkbox-group v-model="form.yxlx">
|
|
|
|
|
<el-checkbox
|
|
|
|
|
v-for="dict in dict.yxlx"
|
|
|
|
|
:key="dict.value"
|
|
|
|
@ -82,27 +81,9 @@
|
|
|
|
|
<el-form-item label="工单照片:" prop="gdtp">
|
|
|
|
|
<ImageUpload v-model="form.gdtp" :limit="3"></ImageUpload>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
|
|
|
|
<el-form-item label="工单描述:" prop="gdms">
|
|
|
|
|
<el-input
|
|
|
|
|
v-model="form.gdms"
|
|
|
|
|
:rows="2"
|
|
|
|
|
type="textarea"
|
|
|
|
|
placeholder="请填写"
|
|
|
|
|
/>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<section v-else>
|
|
|
|
|
<el-form-item label="简要描述:" prop="gdms">
|
|
|
|
|
<el-input
|
|
|
|
|
v-model="form.gdms"
|
|
|
|
|
:rows="2"
|
|
|
|
|
type="textarea"
|
|
|
|
|
placeholder="请填写"
|
|
|
|
|
/>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="选派人员:" prop="zzjg">
|
|
|
|
|
<el-form-item label="选派班组:" prop="zzjg">
|
|
|
|
|
<el-cascader
|
|
|
|
|
v-model="form.zzjg"
|
|
|
|
|
:options="dict.deptList"
|
|
|
|
@ -111,25 +92,45 @@
|
|
|
|
|
/>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</section>
|
|
|
|
|
<el-form-item label="工单描述:">
|
|
|
|
|
<el-input
|
|
|
|
|
v-model="form.gdms"
|
|
|
|
|
:rows="2"
|
|
|
|
|
type="textarea"
|
|
|
|
|
placeholder="请填写"
|
|
|
|
|
/>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
<template #footer>
|
|
|
|
|
<div class="dialog-footer">
|
|
|
|
|
<el-button @click="handlerClose()" icon="CloseBold">取消</el-button>
|
|
|
|
|
<el-button type="primary" icon="Select" @click="confirm()"
|
|
|
|
|
>确定</el-button
|
|
|
|
|
>
|
|
|
|
|
<section v-if="id">
|
|
|
|
|
<el-button @click="handlerRetreat()">退单</el-button>
|
|
|
|
|
<el-button type="primary" @click="confirm()">上报待处置</el-button>
|
|
|
|
|
<el-button type="primary" @click="handleFeedBack()"
|
|
|
|
|
>处理反馈</el-button
|
|
|
|
|
>
|
|
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<section v-else>
|
|
|
|
|
<el-button @click="handlerClose()">取消</el-button>
|
|
|
|
|
<el-button type="primary" @click="confirm()">确定</el-button>
|
|
|
|
|
</section>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<!-- 退单 -->
|
|
|
|
|
<chargeBack v-model="retreat" :id="id" @confirm="handlerClose"></chargeBack>
|
|
|
|
|
<!-- 处理反馈 -->
|
|
|
|
|
<feedBack v-model="feedBackView" :id="id" @confirm="handlerClose" />
|
|
|
|
|
</el-dialog>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup>
|
|
|
|
|
import { addyj, updateyj, intruderyj, getyjById } from "@/api/emergency";
|
|
|
|
|
import { chargeBack, feedBack } from "../index";
|
|
|
|
|
import MarsMap from "@/components/mars-work/mars-map.vue";
|
|
|
|
|
import mapOptions from "@/components/mars-work/mapOptions";
|
|
|
|
|
import markerIcon from "@/assets/images/map-marker.png";
|
|
|
|
|
import { gaodeAddress, gaodePOI } from "@/utils/common.js";
|
|
|
|
|
|
|
|
|
|
const { proxy } = getCurrentInstance();
|
|
|
|
|
const gaodePOIList = ref([]);
|
|
|
|
|
const currentId = ref(0);
|
|
|
|
@ -147,10 +148,8 @@ const props = defineProps({
|
|
|
|
|
type: Object,
|
|
|
|
|
default: {
|
|
|
|
|
gdlx: [],
|
|
|
|
|
dflx: [],
|
|
|
|
|
gdlevel: [],
|
|
|
|
|
clfa: [],
|
|
|
|
|
zyxt: [],
|
|
|
|
|
gdms: [],
|
|
|
|
|
deptList: [],
|
|
|
|
|
},
|
|
|
|
@ -182,7 +181,6 @@ const data = reactive({
|
|
|
|
|
createId: undefined, //创建者id
|
|
|
|
|
createTime: undefined, //创建时间
|
|
|
|
|
deptId: undefined, //部门id
|
|
|
|
|
dflx: [], //倒伏类型
|
|
|
|
|
gdLevel: undefined, //工单等级
|
|
|
|
|
gdType: undefined, //工单类型
|
|
|
|
|
gdms: undefined, //工单描述
|
|
|
|
@ -193,21 +191,24 @@ const data = reactive({
|
|
|
|
|
pqrs: undefined, //派遣人数
|
|
|
|
|
reason: undefined, //退单原因
|
|
|
|
|
status: undefined, //状态 0:待勘察,1:待派发,2:已退单.3:待处理,4:已完成
|
|
|
|
|
zyxt: [], //资源协调
|
|
|
|
|
zzjg: [],
|
|
|
|
|
zzjg: undefined,
|
|
|
|
|
xdsqm: undefined, //行道树/乔木
|
|
|
|
|
yxlx: undefined, //影响类型
|
|
|
|
|
},
|
|
|
|
|
rules: {
|
|
|
|
|
address: [{ required: true, message: "请填写工单地址", trigger: "blur" }],
|
|
|
|
|
gdType: [{ required: true, message: "请选择工单类型", trigger: "blur" }],
|
|
|
|
|
gdms: [{ required: true, message: "请选择简要描述", trigger: "blur" }],
|
|
|
|
|
zzjg: [{ required: true, message: "请选择选派人员", trigger: "blur" }],
|
|
|
|
|
xdsqm: [{ required: true, message: "请选择", trigger: "blur" }],
|
|
|
|
|
zzjg: [{ required: true, message: "请选择选派班组", trigger: "blur" }],
|
|
|
|
|
|
|
|
|
|
dflx: [{ required: true, message: "请选择倒伏类型", trigger: "blur" }],
|
|
|
|
|
gdtp: [{ required: true, message: "请上传工单照片", trigger: "blur" }],
|
|
|
|
|
yxlx: [{ required: true, message: "请选择影响类型", trigger: "blur" }],
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
const { form, rules } = toRefs(data);
|
|
|
|
|
const visible = ref(props.modelValue);
|
|
|
|
|
const retreat = ref(false);
|
|
|
|
|
const feedBackView = ref(false);
|
|
|
|
|
// 监听外部 modelValue 变化
|
|
|
|
|
watch(
|
|
|
|
|
() => props.modelValue,
|
|
|
|
@ -220,9 +221,24 @@ watch(visible, (val) => {
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const changeType = () => {
|
|
|
|
|
form.value.dflx = [];
|
|
|
|
|
if (props.id) form.value.xdsqm = undefined;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 处理反馈
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
const handleFeedBack = (row) => {
|
|
|
|
|
feedBackView.value = true;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 退单
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
const handlerRetreat = (row) => {
|
|
|
|
|
retreat.value = true;
|
|
|
|
|
};
|
|
|
|
|
/**
|
|
|
|
|
* 提交
|
|
|
|
|
*/
|
|
|
|
@ -233,27 +249,21 @@ const confirm = () => {
|
|
|
|
|
proxy.$modal.msgWarning("请先落点至地图上!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
form.value.zzjg = filterArray(form.value.zzjg, "join");
|
|
|
|
|
form.value.dflx = filterArray(form.value.dflx, "join");
|
|
|
|
|
form.value.zyxt = filterArray(form.value.zyxt, "join");
|
|
|
|
|
|
|
|
|
|
if (form.value.id) {
|
|
|
|
|
if (form.value.status === 0) {
|
|
|
|
|
await intruderyj(form.value);
|
|
|
|
|
proxy.$modal.msgSuccess(`${props.title}成功`);
|
|
|
|
|
}
|
|
|
|
|
if (form.value.status === 1) {
|
|
|
|
|
await updateyj(form.value);
|
|
|
|
|
proxy.$modal.msgSuccess(`编辑成功`);
|
|
|
|
|
}
|
|
|
|
|
form.value.yxlx = filterArray(form.value.yxlx, "join");
|
|
|
|
|
await intruderyj(form.value);
|
|
|
|
|
proxy.$modal.msgSuccess(`${props.title}成功`);
|
|
|
|
|
} else {
|
|
|
|
|
form.value.zzjg = filterArray(form.value.zzjg, "join");
|
|
|
|
|
await addyj(form.value);
|
|
|
|
|
proxy.$modal.msgSuccess("新增成功");
|
|
|
|
|
}
|
|
|
|
|
try {
|
|
|
|
|
emit("confirm");
|
|
|
|
|
handlerClose();
|
|
|
|
|
handlerClose(true);
|
|
|
|
|
} catch {
|
|
|
|
|
form.value.zzjg = form.value.zzjg.split(",");
|
|
|
|
|
form.value.zzjg = filterArray(form.value.zzjg);
|
|
|
|
|
form.value.yxlx = filterArray(form.value.yxlx);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
@ -264,11 +274,13 @@ const confirm = () => {
|
|
|
|
|
*/
|
|
|
|
|
const getInfo = async (val) => {
|
|
|
|
|
if (!props.id || !visible.value) return;
|
|
|
|
|
console.log(props.id, visible.value);
|
|
|
|
|
const res = await getyjById(props.id);
|
|
|
|
|
res.data.zzjg = res.data.zzjg.split(",").map((item) => parseInt(item));
|
|
|
|
|
res.data.zyxt = filterArray(res.data.zyxt);
|
|
|
|
|
res.data.dflx = filterArray(res.data.dflx);
|
|
|
|
|
if (props.id) {
|
|
|
|
|
res.data.yxlx = filterArray(res.data.yxlx);
|
|
|
|
|
} else {
|
|
|
|
|
res.data.zzjg = res.data.zzjg.split(",").map((item) => parseInt(item));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
form.value = res.data;
|
|
|
|
|
if (form.value.lat && form.value.lon && mapData) {
|
|
|
|
|
nextTick(() => {
|
|
|
|
@ -297,7 +309,10 @@ const filterArray = (data, type) => {
|
|
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
const handlerClose = () => {
|
|
|
|
|
const handlerClose = (isConfirm) => {
|
|
|
|
|
if (isConfirm) {
|
|
|
|
|
emit("confirm");
|
|
|
|
|
}
|
|
|
|
|
visible.value = false;
|
|
|
|
|
proxy.resetForm("formRef");
|
|
|
|
|
gaodePOIList.value = [];
|
|
|
|
@ -386,7 +401,6 @@ const marsOnload = (map) => {
|
|
|
|
|
const handleMapClick = (longitude, latitude) => {
|
|
|
|
|
if (!isPositiveDecimal(longitude)) longitude = parseFloat(longitude);
|
|
|
|
|
if (!isPositiveDecimal(latitude)) latitude = parseFloat(latitude);
|
|
|
|
|
console.log(entity, "sss");
|
|
|
|
|
if (entity) {
|
|
|
|
|
entity.position = [longitude, latitude];
|
|
|
|
|
} else {
|
|
|
|
|