|
@@ -5,10 +5,10 @@
|
|
|
<span style="color: var(--el-text-color-regular); display: inline-block; width: 100px; text-align: right; padding-right: 12px">快捷查询</span>
|
|
|
<el-radio-group v-model="fastSearch" @change="fastSearchChange">
|
|
|
<el-radio-button label="all">全部</el-radio-button>
|
|
|
- <el-radio-button label="city">线索属实</el-radio-button>
|
|
|
- <el-radio-button label="province">线索不属实</el-radio-button>
|
|
|
- <el-radio-button label="order">推诿工单</el-radio-button>
|
|
|
- <el-radio-button label="xingz">行政执法类工单</el-radio-button>
|
|
|
+ <el-radio-button label="IsTheClueTrue">线索属实</el-radio-button>
|
|
|
+ <el-radio-button label="NoTheClueTrue">线索不属实</el-radio-button>
|
|
|
+ <el-radio-button label="IsPassTheBuckOrder">推诿工单</el-radio-button>
|
|
|
+ <el-radio-button label="IsEnforcementOrder">行政执法类工单</el-radio-button>
|
|
|
</el-radio-group>
|
|
|
</div>
|
|
|
<el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent label-width="100px">
|
|
@@ -37,7 +37,7 @@
|
|
|
</transition>
|
|
|
<transition name="el-zoom-in-top" v-show="!searchCol">
|
|
|
<el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6">
|
|
|
- <el-form-item label="事发地址" prop="AreaCodes">
|
|
|
+ <el-form-item label="事发地址" prop="AreaCode">
|
|
|
<el-cascader
|
|
|
:options="state.areaOptions"
|
|
|
filterable
|
|
@@ -46,10 +46,12 @@
|
|
|
placeholder="请选择事发地址"
|
|
|
clearable
|
|
|
class="w100"
|
|
|
- v-model="state.queryParams.AreaCodes"
|
|
|
+ v-model="state.queryParams.AreaCode"
|
|
|
collapse-tags
|
|
|
collapse-tags-tooltip
|
|
|
:max-collapse-tags="2"
|
|
|
+ ref="areaRef"
|
|
|
+ @change="changeArea"
|
|
|
>
|
|
|
</el-cascader>
|
|
|
</el-form-item>
|
|
@@ -305,12 +307,18 @@
|
|
|
:total="state.total"
|
|
|
v-model:page-index="state.queryParams.PageIndex"
|
|
|
v-model:page-size="state.queryParams.PageSize"
|
|
|
- @export-current="exportCurrent"
|
|
|
- @export-all="exportAll"
|
|
|
- :key="Math.random()"
|
|
|
>
|
|
|
<!-- 表格 header 按钮 -->
|
|
|
- <template #tableHeader="scope"> </template>
|
|
|
+ <template #tableHeader="scope">
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ @click="onVerify(null)"
|
|
|
+ v-auth="'judicial:order:verify:multiple'"
|
|
|
+ :disabled="!scope.isSelected"
|
|
|
+ :loading="state.loading"
|
|
|
+ >线索核实
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
<template #expiredStatus="{ row }">
|
|
|
<span :class="'overdue-status-' + row.expiredStatus" :title="row.expiredStatusText"></span>
|
|
|
</template>
|
|
@@ -327,48 +335,32 @@
|
|
|
</template>
|
|
|
<!-- 表格操作 -->
|
|
|
<template #operation="{ row }">
|
|
|
- <el-button
|
|
|
- link
|
|
|
- type="primary"
|
|
|
- @click="onReturn(row)"
|
|
|
- title="省工单退回"
|
|
|
- v-auth="'business:order:return'"
|
|
|
- v-if="row.source > 1 && row.status <= 1"
|
|
|
- >
|
|
|
- 退回</el-button
|
|
|
- >
|
|
|
- <el-button link type="success" @click="onOrderEdit(row)" title="编辑工单" v-if="row.canEdit" v-auth="'business:order:edit'">
|
|
|
- 修改
|
|
|
+ <el-button link type="primary" @click="onVerify(row)" title="线索核实" v-if="!row.isTheClueTrue" v-auth="'judicial:order:verify'">
|
|
|
+ 线索核实
|
|
|
</el-button>
|
|
|
+ <el-button link type="primary" @click="onEdit(row)" title="修改" v-if="row.isShowUpdateButton"> 修改 </el-button>
|
|
|
<order-detail :order="row" @updateList="queryList" />
|
|
|
</template>
|
|
|
</ProTable>
|
|
|
</el-card>
|
|
|
-
|
|
|
- <!-- 编辑重复性事件 -->
|
|
|
- <repeat-event-edit ref="repeatEventEditRef" @updateList="queryList" />
|
|
|
- <!-- 工单省退回 -->
|
|
|
- <order-return ref="orderReturnRef" @updateList="queryList" />
|
|
|
+ <!-- 线索核实 -->
|
|
|
+ <Verify ref="verifyRef" @updateList="queryList" />
|
|
|
</div>
|
|
|
</template>
|
|
|
<script setup lang="tsx" name="judicialOrder">
|
|
|
import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
|
|
|
import type { FormInstance } from 'element-plus';
|
|
|
-import { ElMessage, ElMessageBox, ElNotification } from 'element-plus';
|
|
|
import { shortcuts } from '@/utils/constants';
|
|
|
import other from '@/utils/other';
|
|
|
import { useRoute, useRouter } from 'vue-router';
|
|
|
import { formatDate } from '@/utils/formatTime';
|
|
|
-import { listBaseData, orderList, provinceReturn } from '@/api/business/order';
|
|
|
-import { addObserve } from '@/api/query/observe';
|
|
|
-import { addEnd } from '@/api/query/end';
|
|
|
import { treeArea } from '@/api/auxiliary/area';
|
|
|
+import { getWorkList, listBaseData } from '@/api/judicial';
|
|
|
|
|
|
// 引入组件
|
|
|
const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
|
|
|
-const RepeatEventEdit = defineAsyncComponent(() => import('@/views/business/repeatEvent/components/Repeat-event-edit.vue')); // 编辑重复性事件
|
|
|
const HotSpotSelect = defineAsyncComponent(() => import('@/components/Hotspot/index.vue')); // 选择热点
|
|
|
-const OrderReturn = defineAsyncComponent(() => import('@/views/business/return/components/Apply.vue')); // 工单退回
|
|
|
+const Verify = defineAsyncComponent(() => import('@/views/judicial/order/components/verify.vue')); // 线索核实
|
|
|
|
|
|
// 定义变量内容
|
|
|
const state = reactive<any>({
|
|
@@ -384,6 +376,7 @@ const state = reactive<any>({
|
|
|
CurrentStepCode: null, // 当前办理节点
|
|
|
IsOverTime: null, // 是否超期
|
|
|
FromName: null, // 来电人姓名
|
|
|
+ AreaCode: [],
|
|
|
AreaCodes: [], // 事发地址
|
|
|
FromPhone: null, // 来电号码
|
|
|
Keyword: null, // 关键字
|
|
@@ -426,15 +419,26 @@ const fastSearchChange = (val: string) => {
|
|
|
state.queryParams.PageIndex = 1;
|
|
|
state.queryParams.PageSize = 10;
|
|
|
fastSearch.value = val;
|
|
|
+ state.queryParams.IsEnforcementOrder = null;
|
|
|
+ state.queryParams.IsPassTheBuckOrder = null;
|
|
|
+ state.queryParams.IsTheClueTrue = null;
|
|
|
switch (val) {
|
|
|
case 'all':
|
|
|
- state.queryParams.IsProvinceOrder = null;
|
|
|
+ state.queryParams.IsEnforcementOrder = null;
|
|
|
+ state.queryParams.IsPassTheBuckOrder = null;
|
|
|
+ state.queryParams.IsTheClueTrue = null;
|
|
|
+ break;
|
|
|
+ case 'IsTheClueTrue':
|
|
|
+ state.queryParams.IsTheClueTrue = true;
|
|
|
break;
|
|
|
- case 'city':
|
|
|
- state.queryParams.IsProvinceOrder = false;
|
|
|
+ case 'NoTheClueTrue':
|
|
|
+ state.queryParams.IsTheClueTrue = null;
|
|
|
break;
|
|
|
- case 'province':
|
|
|
- state.queryParams.IsProvinceOrder = true;
|
|
|
+ case 'IsPassTheBuckOrder':
|
|
|
+ state.queryParams.IsPassTheBuckOrder = true;
|
|
|
+ break;
|
|
|
+ case 'IsEnforcementOrder':
|
|
|
+ state.queryParams.IsEnforcementOrder = true;
|
|
|
break;
|
|
|
}
|
|
|
queryList();
|
|
@@ -445,17 +449,14 @@ const route = useRoute(); // 路由
|
|
|
const router = useRouter(); // 路由
|
|
|
const proTableRef = ref<RefType>(); // 表格ref
|
|
|
const selectable = (row: any) => {
|
|
|
- if (state.queryParams.IsProvinceOrder) {
|
|
|
- return row?.isProvince && row?.source > 1 && row?.status <= 1;
|
|
|
- } else {
|
|
|
- return !row?.isProvince;
|
|
|
- }
|
|
|
+ return !row?.isTheClueTrue;
|
|
|
};
|
|
|
// 表格配置项
|
|
|
const columns = ref<any[]>([
|
|
|
- { type: 'selection', fixed: 'left', width: 55, selectable: selectable },
|
|
|
+ { type: 'selection', fixed: 'left', width: 55, selectable: selectable, align: 'center' },
|
|
|
{ prop: 'expiredStatus', label: '超期状态', align: 'center' },
|
|
|
{ prop: 'no', label: '工单编码', width: 150 },
|
|
|
+ { prop: 'provinceNo', label: '省编号', width: 200 },
|
|
|
{ prop: 'isProvince', label: '省/市工单', width: 100 },
|
|
|
{ prop: 'actualHandleStepName', label: '办理节点', width: 150 },
|
|
|
{ prop: 'statusText', label: '工单状态', width: 100 },
|
|
@@ -487,14 +488,25 @@ const columns = ref<any[]>([
|
|
|
{ prop: 'orgLevelOneName', label: '一级部门', width: 170 },
|
|
|
{ prop: 'actualHandleOrgName', label: '接办部门', width: 170 },
|
|
|
{ prop: 'acceptType', label: '受理类型', width: 150 },
|
|
|
- { prop: 'counterSignTypeText', label: '是否会签', width: 100 },
|
|
|
{ prop: 'sourceChannel', label: '来源方式', width: 100 },
|
|
|
{ prop: 'hotspotName', label: '热点分类', width: 200 },
|
|
|
- { prop: 'tagNames', label: '工单标签', width: 200 },
|
|
|
- { prop: 'employeeName', label: '受理人', width: 120 },
|
|
|
- { prop: 'employeeName', label: '是否推诿工单', width: 200 },
|
|
|
- { prop: 'employeeName', label: '线索是否属实', width: 200 },
|
|
|
- { prop: 'employeeName', label: '事项类型', width: 200 },
|
|
|
+ {
|
|
|
+ prop: 'isPassTheBuckOrder',
|
|
|
+ label: '是否推诿工单',
|
|
|
+ width: 120,
|
|
|
+ render: (scope) => {
|
|
|
+ return <span>{scope.row.isPassTheBuckOrder ? '是' : '否'}</span>;
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'isTheClueTrue',
|
|
|
+ label: '线索是否属实',
|
|
|
+ width: 120,
|
|
|
+ render: (scope) => {
|
|
|
+ return <span>{scope.row.isTheClueTrue ? '属实' : '不属实'}</span>;
|
|
|
+ },
|
|
|
+ },
|
|
|
+ { prop: 'eventTypeName', label: '事项类型', width: 200 },
|
|
|
{ prop: 'operation', label: '操作', fixed: 'right', width: 180, align: 'center' },
|
|
|
]);
|
|
|
// 获取选择组织name值
|
|
@@ -507,6 +519,12 @@ const getKnowledgeList = () => {
|
|
|
const closeSearch = () => {
|
|
|
searchCol.value = !searchCol.value;
|
|
|
};
|
|
|
+// 选择事发地址
|
|
|
+const areaRef = ref<RefType>();
|
|
|
+const changeArea = () => {
|
|
|
+ const area = areaRef.value?.getCheckedNodes() ?? [];
|
|
|
+ state.queryParams.AreaCodes = area.map((item: any) => item.value);
|
|
|
+};
|
|
|
const handleTimeChange = (val: string[], startKey: string, endKey: string) => {
|
|
|
if (val) {
|
|
|
state.queryParams[startKey] = val[0];
|
|
@@ -563,8 +581,9 @@ const queryList = () => {
|
|
|
Reflect.deleteProperty(request, 'crTime'); // 删除无用的参数
|
|
|
Reflect.deleteProperty(request, 'exTime'); // 删除无用的参数
|
|
|
Reflect.deleteProperty(request, 'doneTime'); // 删除无用的参数
|
|
|
- /*state.loading = true;
|
|
|
- orderList(request)
|
|
|
+ Reflect.deleteProperty(request, 'AreaCode'); // 删除无用的参数
|
|
|
+ state.loading = true;
|
|
|
+ getWorkList(request)
|
|
|
.then((response: any) => {
|
|
|
state.tableData = response?.result.items ?? [];
|
|
|
state.total = response?.result.total;
|
|
@@ -572,7 +591,7 @@ const queryList = () => {
|
|
|
})
|
|
|
.catch(() => {
|
|
|
state.loading = false;
|
|
|
- });*/
|
|
|
+ });
|
|
|
};
|
|
|
const hotSpotRef = ref<RefType>();
|
|
|
/** 重置按钮操作 */
|
|
@@ -586,103 +605,15 @@ const resetQuery = (formEl: FormInstance | undefined) => {
|
|
|
hotSpotRef.value.reset();
|
|
|
queryList();
|
|
|
};
|
|
|
-// 设置终结件
|
|
|
-const onObserve = () => {
|
|
|
- const titles = proTableRef.value.selectedList.map((item: any) => item.title).join(',');
|
|
|
- const ids = proTableRef.value.selectedList.map((item: any) => item.id);
|
|
|
- ElMessageBox.confirm(`确定要将【${titles}】设置观察件吗?`, '提示', {
|
|
|
- confirmButtonText: '确定',
|
|
|
- cancelButtonText: '取消',
|
|
|
- type: 'warning',
|
|
|
- draggable: true,
|
|
|
- autofocus: false,
|
|
|
- })
|
|
|
- .then(() => {
|
|
|
- addObserve({ orderIds: ids }).then(() => {
|
|
|
- ElMessage.success('操作成功');
|
|
|
- queryList();
|
|
|
- });
|
|
|
- })
|
|
|
- .catch(() => {});
|
|
|
-};
|
|
|
-// 设置终结件
|
|
|
-const onEnd = () => {
|
|
|
- const titles = proTableRef.value.selectedList.map((item: any) => item.title).join(',');
|
|
|
- const ids = proTableRef.value.selectedList.map((item: any) => item.id);
|
|
|
- ElMessageBox.confirm(`确定要将【${titles}】设置终结件吗?`, '提示', {
|
|
|
- confirmButtonText: '确定',
|
|
|
- cancelButtonText: '取消',
|
|
|
- type: 'warning',
|
|
|
- draggable: true,
|
|
|
- autofocus: false,
|
|
|
- })
|
|
|
- .then(() => {
|
|
|
- addEnd({ orderIds: ids }).then(() => {
|
|
|
- ElMessage.success('操作成功');
|
|
|
- queryList();
|
|
|
- });
|
|
|
- })
|
|
|
- .catch(() => {});
|
|
|
-};
|
|
|
-// 省退回申请
|
|
|
-const onProvinceReturn = () => {
|
|
|
- const titles = proTableRef.value.selectedList.map((item: any) => item.title).join(',');
|
|
|
- const ids = proTableRef.value.selectedList.map((item: any) => item.id);
|
|
|
- ElMessageBox.prompt(`【${titles}】的退回原因`, '提示', {
|
|
|
- confirmButtonText: '确定',
|
|
|
- cancelButtonText: '取消',
|
|
|
- draggable: true,
|
|
|
- autofocus: false,
|
|
|
- inputPlaceholder: '请填写退回原因,不超过50字符',
|
|
|
- inputErrorMessage: '请填写退回原因',
|
|
|
- inputType: 'textarea',
|
|
|
- inputValidator: (value) => {
|
|
|
- if (value) return true;
|
|
|
- else return '请填写退回原因';
|
|
|
- },
|
|
|
- })
|
|
|
- .then(({ value }) => {
|
|
|
- provinceReturn({ orderIds: ids, content: value }).then((res: any) => {
|
|
|
- ElNotification({
|
|
|
- title: '退回完成',
|
|
|
- dangerouslyUseHTMLString: true,
|
|
|
- message: `<div>
|
|
|
- <div>总退回条数:${res.result.count}条;</>
|
|
|
- <div>成功条数:${res.result.successCount}条;</div>
|
|
|
- <div>失败条数:${res.result.errorCount}条;</div>
|
|
|
-</div>`,
|
|
|
- });
|
|
|
- queryList();
|
|
|
- });
|
|
|
- })
|
|
|
- .catch(() => {});
|
|
|
-};
|
|
|
-// 创建重复性事件
|
|
|
-const repeatEventEditRef = ref<RefType>();
|
|
|
-const onCreateRepeatEvent = () => {
|
|
|
- repeatEventEditRef.value.openDialog();
|
|
|
-};
|
|
|
-// 编辑工单
|
|
|
-const onOrderEdit = (row: any) => {
|
|
|
- router.push({
|
|
|
- name: 'orderAccept',
|
|
|
- params: {
|
|
|
- tagsViewName: '工单受理-' + row.no,
|
|
|
- id: row.id,
|
|
|
- callId: '0',
|
|
|
- },
|
|
|
- });
|
|
|
-};
|
|
|
-// 工单省退回
|
|
|
-const orderReturnRef = ref<RefType>(); // 工单退回ref
|
|
|
-const onReturn = (row: any) => {
|
|
|
- orderReturnRef.value.openDialog(row);
|
|
|
-};
|
|
|
-const exportCurrent = () => {
|
|
|
- console.log('导出当前页', proTableRef.value);
|
|
|
+// 线索核实
|
|
|
+const verifyRef = ref<RefType>();
|
|
|
+const onVerify = (row: any) => {
|
|
|
+ const data = row ? row : proTableRef.value.selectedList;
|
|
|
+ verifyRef.value.openDialog(data);
|
|
|
};
|
|
|
-const exportAll = () => {
|
|
|
- console.log('导出全部', proTableRef.value);
|
|
|
+// 修改线索
|
|
|
+const onEdit = (row: any) => {
|
|
|
+ verifyRef.value.openDialog(row);
|
|
|
};
|
|
|
onMounted(() => {
|
|
|
getBaseData();
|