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

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

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

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

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

@ -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 {

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

Loading…
Cancel
Save