转办,退单,上报待处理业务流程改变

main
许宏杰 2 weeks ago
parent c1b0c24d5a
commit 5ecbb7e4ba

@ -238,6 +238,9 @@
.text-info { .text-info {
color: #23c6c8; color: #23c6c8;
} }
.text-gray {
color: #909399;
}

@ -16,7 +16,7 @@
<el-form-item label="退单原因:" prop="reason"> <el-form-item label="退单原因:" prop="reason">
<el-select v-model="form.reason" placeholder="请选择" clearable> <el-select v-model="form.reason" placeholder="请选择" clearable>
<el-option <el-option
v-for="dict in dictReason" v-for="dict in reason"
:key="dict.value" :key="dict.value"
:label="dict.label" :label="dict.label"
:value="dict.value" :value="dict.value"
@ -38,15 +38,13 @@
<script setup> <script setup>
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
import { retreatyj } from "@/api/emergency"; import { retreatyj } from "@/api/emergency";
const { reason } = proxy.useDict("reason");
const props = defineProps({ const props = defineProps({
title: { title: {
type: String, type: String,
default: "工单退单", default: "工单退单",
}, },
dictReason: {
type: Array,
default: () => [],
},
id: { id: {
type: Number, type: Number,
}, },
@ -82,7 +80,7 @@ const confirm = () => {
reason: form.value.reason, reason: form.value.reason,
}); });
proxy.$modal.msgSuccess("退单成功"); proxy.$modal.msgSuccess("退单成功");
emit("confirm"); emit("confirm",true);
handlerClose(); handlerClose();
} }
}); });

@ -38,7 +38,7 @@ import { distributeyj } from "@/api/emergency";
const props = defineProps({ const props = defineProps({
title: { title: {
type: String, type: String,
default: "", default: "应急抢险工单转派",
}, },
deptList: { deptList: {
type: Array, type: Array,
@ -83,7 +83,7 @@ const confirm = () => {
id: props.id, id: props.id,
deptId: deptId, deptId: deptId,
}); });
proxy.$modal.msgSuccess(`${title}成功`); proxy.$modal.msgSuccess(`${props.title}成功`);
emit("confirm"); emit("confirm");
handlerClose(); handlerClose();
} }

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

@ -36,7 +36,7 @@
clearable clearable
> >
<el-option <el-option
v-for="dict in gdlevel" v-for="dict in yxlx"
:key="dict.value" :key="dict.value"
:label="dict.label" :label="dict.label"
:value="dict.value" :value="dict.value"
@ -91,15 +91,15 @@
<el-table-column <el-table-column
label="处置部门" label="处置部门"
align="center" align="center"
key="address" key="parentName"
prop="address" prop="parentName"
show-overflow-tooltip show-overflow-tooltip
/> />
<el-table-column <el-table-column
label="处置班组" label="处置班组"
align="center" align="center"
key="address" key="deptName"
prop="address" prop="deptName"
/> />
<el-table-column <el-table-column
label="工单地址" label="工单地址"
@ -172,19 +172,19 @@
>编辑</el-button >编辑</el-button
> >
</section> --> </section> -->
<section v-show="scope.row.status == 3"> <section v-show="scope.row.status == 0">
<el-button <el-button
link link
type="primary" type="primary"
icon="Switch" icon="Switch"
@click="handlerDistriBute(scope.row, '转派')" @click="handlerDistriBute(scope.row)"
>转派</el-button >转派</el-button
> >
<el-button <el-button
link link
type="primary" type="primary"
icon="ChatRound" icon="ChatRound"
@click="handleFeedBack(scope.row)" @click="handlerEdit(scope.row)"
>处理反馈</el-button >处理反馈</el-button
> >
<el-button link type="primary" icon="Bell">消息催办</el-button> <el-button link type="primary" icon="Bell">消息催办</el-button>
@ -224,36 +224,30 @@
<operation <operation
:dict="{ :dict="{
gdlx, gdlx,
gdms,
deptList, deptList,
yxlx, yxlx,
xdsqm
}" }"
v-model="open" v-model="open"
:id="workId" :id="workId"
:title="title" :title="title"
@confirm="getList()" @confirm="getList()"
></operation> ></operation>
<!-- 退单 -->
<chargeBack
v-model="retreat"
:id="workId"
@confirm="getList()"
></chargeBack>
<!-- 派发 --> <!-- 派发 -->
<distriBute <distriBute
:id="workId" :id="workId"
:title="title"
v-model="distributeView" v-model="distributeView"
:deptList="deptList" :deptList="deptList"
@confirm="getList()" @confirm="getList()"
></distriBute> ></distriBute>
<!-- 处理反馈 -->
<feedBack v-model="feedBackView" :id="workId" @confirm="getList()" />
</tablePage> </tablePage>
</template> </template>
<script setup> <script setup>
import { operation, chargeBack, distriBute, feedBack } from "./index"; import { operation, distriBute } from "./index";
import { getyjList, delyj, getDetListById } from "@/api/emergency"; import { getyjList, delyj, getDetListById } from "@/api/emergency";
import { ref } from "vue"; import { ref } from "vue";
import { onMounted } from "vue"; import { onMounted } from "vue";
@ -261,19 +255,19 @@ import useUserStore from "@/store/modules/user";
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const userStore = useUserStore(); const userStore = useUserStore();
const deptList = ref([]); const deptList = ref([]);
const { gdlx, gd_status, yxlx } = proxy.useDict( const { gdlx, gd_status, yxlx,xdsqm } = proxy.useDict(
"gdlx", "gdlx",
"gd_status", "gd_status",
"yxlx" "yxlx","xdsqm"
); );
const datePicker = ref([]); const datePicker = ref([]);
const workId = ref(null); const workId = ref(null);
const loading = ref(false); const loading = ref(false);
const list = ref([]); const list = ref([]);
const open = ref(false); const open = ref(false);
const retreat = ref(false);
const distributeView = ref(false); const distributeView = ref(false);
const feedBackView = ref(false);
const title = ref(""); const title = ref("");
const total = ref(0); const total = ref(0);
@ -349,41 +343,25 @@ const resetQuery = () => {
handleQuery(); handleQuery();
}; };
/**
* 处理反馈
* @param row
*/
const handleFeedBack = (row) => {
workId.value = row.id;
feedBackView.value = true;
};
/** /**
* 派发 * 派发
*/ */
const handlerDistriBute = (row, text) => { const handlerDistriBute = (row, text) => {
workId.value = row.id; workId.value = row.id;
title.value = text;
distributeView.value = true; distributeView.value = true;
}; };
/**
* 退单
* @param id
*/
const handlerRetreat = (row) => {
workId.value = row.id;
retreat.value = true;
};
/** /**
* *
* 勘察录入 * 勘察录入
* @param row * @param row
*/ */
const handlerEdit = (row, status) => { const handlerEdit = (row) => {
workId.value = row.id; workId.value = row.id;
title.value = status ? "勘察录入" : "编辑工单"; title.value = "工单处理反馈" ;
open.value = true; open.value = true;
}; };

Loading…
Cancel
Save