Преглед на файлове

reactor:对接司法行政监督管理工单中心;

zhangchong преди 1 година
родител
ревизия
3a0d1f0aeb

+ 53 - 0
src/api/judicial/index.ts

@@ -0,0 +1,53 @@
+/*
+ * @Author: zc
+ * @description 司法行政监督
+ */
+import request from '@/utils/request';
+
+/**
+ * @description 获取工单列表
+ * @param params
+ * @return {*}
+ */
+export const getWorkList = (params: object) => {
+	return request({
+		url: '/api/v1/EnforcementOrder/getorderlist',
+		method: 'get',
+		params,
+	});
+};
+
+/**
+ * @description 列表页基础信息
+ * @param params
+ * @return {*}
+ */
+export const listBaseData = (params?: object) => {
+	return request({
+		url: '/api/v1/EnforcementOrder/base-data',
+		method: 'get',
+		params,
+	})
+}
+/**
+ * @description 线索核实
+ * @param data
+ * @return {*}
+ */
+export const getClues = (data: object) => {
+	return request({
+		url: '/api/v1/EnforcementOrder/clue_verification',
+		method: 'post',
+		data,
+	})
+}
+/**
+ * @description 线索核实基础信息
+ * @return {*}
+ */
+export const getCluesBaseData = () => {
+	return request({
+		url: '/api/v1/EnforcementOrder/treelist',
+		method: 'get',
+	})
+}

+ 3 - 1
src/router/backEnd.ts

@@ -60,11 +60,13 @@ const getAppConfigFn = async () => {
 			isCustomEvent: result.isCustomEvent ?? false, //是否开启自定义事件
 			isTranspondCity: result.isTranspondCity ?? false, //是否开启市州互转
 			isAverageSendOrder: result.isAverageSendOrder ?? false, //是否开启平均派单
+			isOpenJudicialManagement: result.isOpenJudicialManagement ?? false, //是否开启司法行政执法工单选项
 		});
 		console.log(
 			`是否开启小休审批${result.isRestApproval},自动话后整理时间${result.talkingDealTime}秒,
 			分机签入是否需要选择号码${result.isNeedTelNo},分机签入是否需要输入密码${result.isTelNeedVerify},
-			是否开启自定义事件${result.isCustomEvent},是否开启市州互转${result.isTranspondCity},是否开启平均派单${result.isAverageSendOrder}`
+			是否开启自定义事件${result.isCustomEvent},是否开启市州互转${result.isTranspondCity},是否开启平均派单${result.isAverageSendOrder},
+			是否开启司法行政执法工单选项${result.isOpenJudicialManagement}`
 		);
 	} catch (e) {
 		console.log(e);

+ 1 - 0
src/stores/appConfig.ts

@@ -14,6 +14,7 @@ export const useAppConfig = defineStore('AppConfig', {
 			isCustomEvent: false, // 是否开启自定义事件
 			isTranspondCity:false, // 是否开启市州互转
 			isAverageSendOrder:false, // 是否开启平均派单
+			isOpenJudicialManagement:false, // 是否开启司法管理
 		},
 	}),
 	actions: {

+ 1 - 0
src/types/pinia.d.ts

@@ -107,6 +107,7 @@ declare interface AppConfigState {
 		isCustomEvent: boolean; // 是否开启自定义事件
 		isTranspondCity: boolean; // 是否开启市州互转
 		isAverageSendOrder: boolean; // 是否开启平均派单
+		isOpenJudicialManagement: boolean; // 是否开启司法管理
 		[x: string]: any
 	}
 }

+ 15 - 4
src/views/business/order/index.vue

@@ -7,8 +7,10 @@
 					<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="sensitive">敏感类工单</el-radio-button>
 				</el-radio-group>
+				<el-checkbox-group v-model="checkList" class="ml15" @change="changeCheckList">
+					<el-checkbox label="IsSensitiveWord">敏感类工单</el-checkbox>
+				</el-checkbox-group>
 			</div>
 			<el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent label-width="100px">
 				<el-row :gutter="10">
@@ -458,7 +460,6 @@ const fastSearchChange = (val: string) => {
 	state.queryParams.PageIndex = 1;
 	state.queryParams.PageSize = 10;
 	fastSearch.value = val;
-	state.queryParams.IsSensitiveWord = null;
 	switch (val) {
 		case 'all':
 			state.queryParams.IsProvinceOrder = null;
@@ -470,10 +471,16 @@ const fastSearchChange = (val: string) => {
 			state.queryParams.IsProvinceOrder = true;
 			break;
 		case 'sensitive':
-			state.queryParams.IsSensitiveWord = true;
 			break;
 	}
-	queryList();
+	handleQuery();
+};
+const checkList = ref([]);
+// 多选
+const changeCheckList = () => {
+	if (checkList.value.includes('IsSensitiveWord')) state.queryParams.IsSensitiveWord = true;
+	else state.queryParams.IsSensitiveWord = null;
+	handleQuery();
 };
 const ruleFormRef = ref<RefType>(); // 表单ref
 const searchCol = ref(true); // 展开/收起
@@ -638,6 +645,10 @@ const resetQuery = (formEl: FormInstance | undefined) => {
 	state.queryParams.CreationTimeEnd = null;
 	state.queryParams.ExpiredTimeStart = null;
 	state.queryParams.ExpiredTimeEnd = null;
+  state.queryParams.IsSensitiveWord = null;
+  state.queryParams.IsProvinceOrder = null;
+	fastSearch.value = 'all';
+	checkList.value = [];
 	hotSpotRef.value?.reset();
 	queryList();
 };

+ 2 - 2
src/views/business/publish/component/Order-publish-edit.vue

@@ -99,14 +99,14 @@
 							</el-radio-group>
 						</el-form-item>
 					</el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
+<!--          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
             <el-form-item label="门户是否公开" prop="resolve" >
               <el-radio-group v-model="state.ruleForm.resolve" disabled>
                 <el-radio :label="true">已得到解决</el-radio>
                 <el-radio :label="false">未得到解决</el-radio>
               </el-radio-group>
             </el-form-item>
-          </el-col>
+          </el-col>-->
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
 						<el-form-item label="实际办理部门">
 							{{ state.publishDetail.actualHandleOrgName?.value }}

+ 2 - 2
src/views/business/publish/component/Order-publish.vue

@@ -128,14 +128,14 @@
 							</el-radio-group>
 						</el-form-item>
 					</el-col>
-					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
+<!--					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
 						<el-form-item label="处理结果" prop="resolve" :rules="[{ required: true, message: '请选择处理结果', trigger: 'change' }]">
 							<el-radio-group v-model="state.ruleForm.resolve" :disabled="disabled">
 								<el-radio :label="true">已得到解决</el-radio>
 								<el-radio :label="false">未得到解决</el-radio>
 							</el-radio-group>
 						</el-form-item>
-					</el-col>
+					</el-col>-->
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
 						<el-form-item label="实际办理部门">
 							{{ state.publishDetail.actualHandleOrgName?.value }}

+ 2 - 2
src/views/business/publish/index.vue

@@ -6,12 +6,12 @@
 				<el-form-item label="关键词" prop="Keyword">
 					<el-input v-model="state.queryParams.Keyword" placeholder="工单编码/标题" clearable @keyup.enter="handleQuery" class="keyword-input" />
 				</el-form-item>
-				<el-form-item label="处理结果" prop="Resolve">
+<!--				<el-form-item label="处理结果" prop="Resolve">
 					<el-select v-model="state.queryParams.Resolve" placeholder="请选择处理结果" @change="handleQuery">
 						<el-option label="已得到解决" value="true" />
 						<el-option label="未得到解决" value="false" />
 					</el-select>
-				</el-form-item>
+				</el-form-item>-->
 				<el-form-item>
 					<el-button type="primary" @click="handleQuery" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
 					<el-button @click="resetQuery(ruleFormRef)" v-waves class="default-button" :loading="state.loading">

+ 1 - 0
src/views/business/special/components/Special-apply-order.vue

@@ -52,6 +52,7 @@
 									collapse-tags-tooltip
 									filterable
 									value-key="key"
+									:multiple-limit="1"
 								/>
 							</el-form-item>
 						</el-col>

+ 143 - 0
src/views/judicial/order/components/verify.vue

@@ -0,0 +1,143 @@
+<template>
+	<el-dialog v-model="state.dialogVisible" draggable title="线索核实" width="500px" append-to-body destroy-on-close @close="close">
+		<div class="collapse-container">
+			<el-form label-width="110px" ref="ruleFormRef" :model="state.ruleForm">
+				<el-form-item label="线索是否属实" prop="isTheClueTrue" :rules="[{ required: true, message: '请选择线索是否属实', trigger: 'change' }]">
+					<el-radio-group v-model="state.ruleForm.isTheClueTrue" @change="change">
+						<el-radio :label="true">是</el-radio>
+						<el-radio :label="false">否</el-radio>
+					</el-radio-group>
+				</el-form-item>
+				<el-form-item
+					label="事项类型"
+					prop="eventTypeId"
+					:rules="[{ required: true, message: '请选择事项类型', trigger: 'change' }]"
+					v-if="state.ruleForm.isTheClueTrue"
+				>
+					<el-tree-select
+						v-model="state.ruleForm.eventTypeId"
+						:data="treeList"
+						:props="{
+							label: 'eventTypeName',
+							value: 'id',
+							children: 'children',
+						}"
+						class="w100"
+						ref="treeRef"
+						@change="changeTree"
+						filterable
+						default-expand-all
+						clearable
+					/>
+				</el-form-item>
+			</el-form>
+		</div>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="closeDialog" class="default-button">取 消</el-button>
+				<el-button type="primary" @click="onSubmit(ruleFormRef)" :loading="state.loading">提交</el-button>
+			</span>
+		</template>
+	</el-dialog>
+</template>
+<script setup lang="ts" name="SpecialDialog">
+import { defineAsyncComponent, reactive, ref } from 'vue';
+import { ElMessage, FormInstance } from 'element-plus';
+import { getCluesBaseData, getClues } from '@/api/judicial';
+import { isArray } from '@/utils/tools';
+
+// 引入组件
+const AnnexList = defineAsyncComponent(() => import('@/components/AnnexList/index.vue'));
+
+// 定义子组件向父组件传值/事件
+const emit = defineEmits(['updateList']);
+// 定义变量内容
+const state = reactive<any>({
+	dialogVisible: false, // 是否显示弹窗
+	loading: false, // 是否显示加载
+	ruleForm: {
+		isTheClueTrue: null, // 线索是否属实
+		eventTypeId: null, // 事项类型
+		eventTypeName: null, // 事项类型名称
+	},
+});
+const ruleFormRef = ref<RefType>();
+const treeList = ref<EmptyArrayType>([]); // 处理对象
+const ids = ref<EmptyArrayType>([]); //
+/**
+ * @description 打开弹窗
+ * @param {object} val 工单详情
+ */
+const openDialog = async (val: any) => {
+	if (isArray(val)) {
+		ids.value = val.map((item: any) => item.id);
+	} else {
+		ids.value = [val.id];
+		if (val.eventTypeName !== null) {
+			state.ruleForm.isTheClueTrue = val.isTheClueTrue;
+			if (val.isTheClueTrue) {
+				state.ruleForm.eventTypeId = val.eventTypeId;
+				state.ruleForm.eventTypeName = val.eventTypeName;
+			}
+		}
+	}
+	state.loading = true;
+	try {
+		const baseRes = await getCluesBaseData();
+		treeList.value = baseRes.result ?? [];
+		state.dialogVisible = true;
+	} catch (e) {
+		console.log(e);
+	} finally {
+		state.loading = false;
+	}
+};
+// 关闭弹窗
+const closeDialog = () => {
+	state.dialogVisible = false;
+};
+const close = () => {
+	ruleFormRef.value?.clearValidate();
+	ruleFormRef.value?.resetFields();
+};
+const change = (val) => {
+	if (!val) {
+		ruleFormRef.value.resetFields('eventTypeId');
+		state.ruleForm.eventTypeId = null;
+		state.ruleForm.eventTypeName = null;
+	}
+};
+const treeRef = ref<RefType>();
+const changeTree = () => {
+	const nodes = treeRef.value.getCurrentNode();
+	state.ruleForm.eventTypeName = nodes.eventTypeName;
+};
+// 提交
+const onSubmit = (formEl: FormInstance | undefined) => {
+	if (!formEl) return;
+	formEl.validate((valid: boolean) => {
+		if (!valid) return;
+		state.loading = true;
+		const request = {
+			orderIds: ids.value,
+			isTheClueTrue: state.ruleForm.isTheClueTrue,
+			eventTypeId: state.ruleForm.eventTypeId,
+			eventTypeName: state.ruleForm.eventTypeName,
+		};
+		getClues(request)
+			.then(() => {
+				state.loading = false;
+				closeDialog();
+				emit('updateList');
+				ElMessage.success('线索核实成功');
+			})
+			.catch(() => {
+				state.loading = false;
+			});
+	});
+};
+defineExpose({
+	openDialog,
+	closeDialog,
+});
+</script>

+ 80 - 149
src/views/judicial/order/index.vue

@@ -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();

+ 40 - 34
src/views/statistics/center/transferCity.vue

@@ -50,9 +50,9 @@
 import { onMounted, reactive, ref } from 'vue';
 import dayjs from 'dayjs';
 import { formatDate } from '@/utils/formatTime';
-import { cityConversionIn, cityConversionOut } from "@/api/statistics/center";
-import { shortcuts } from "@/utils/constants";
-import { FormInstance } from "element-plus";
+import { cityConversionIn, cityConversionOut } from '@/api/statistics/center';
+import { shortcuts } from '@/utils/constants';
+import { FormInstance } from 'element-plus';
 
 const proTableRef = ref<RefType>(); // 表格ref
 // 表格配置项
@@ -69,8 +69,14 @@ const columnsOut = [
 		},
 	},
 	{ prop: 'sendTimes', label: '同步次数' },
-	{ prop: 'isSuccess', label: '同步状态', render: (scope) => <span>{scope.row.isSuccess ? '成功' : '失败'}</span>},
-	{ prop: 'result', label: '同步返回',minWidth:300 },
+	{
+		prop: 'isSuccess',
+		label: '同步状态',
+		render: (scope) => {
+			return <>{scope.row.isSuccess ? <span>{scope.row.isSuccess ? '成功' : '失败'}</span> : <span>同步中</span>}</>;
+		},
+	},
+	{ prop: 'result', label: '同步返回', minWidth: 300 },
 	{ prop: 'cityName', label: '转入市州' },
 ];
 const columnsInt = [
@@ -84,7 +90,7 @@ const columnsInt = [
 			return <span>{formatDate(scope.row.transferOutTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
 		},
 	},
-	{ prop: 'result', label: '同步转入',minWidth:400 },
+	{ prop: 'result', label: '同步转入', minWidth: 400 },
 	{ prop: 'cityName', label: '来源市州' },
 ];
 // 定义变量内容
@@ -94,7 +100,7 @@ const state = reactive({
 		// 查询条件
 		PageIndex: 1,
 		PageSize: 10,
-    CiryName: null, // 城市名称
+		CiryName: null, // 城市名称
 		crTime: [dayjs().startOf('day').format('YYYY-MM-DD'), dayjs().endOf('day').format('YYYY-MM-DD')],
 		direction: 'out',
 	},
@@ -109,39 +115,39 @@ const handleQuery = () => {
 };
 /** 重置按钮操作 */
 const resetQuery = (formEl: FormInstance | undefined) => {
-  if (!formEl) return;
-  formEl.resetFields();
-  queryList();
-}
+	if (!formEl) return;
+	formEl.resetFields();
+	queryList();
+};
 /** 获取列表 */
 const queryList = () => {
 	state.loading = true;
 	columns.value = state.queryParams.direction === 'out' ? columnsOut : columnsInt;
-  let StartDate = null;
-  let EndDate = null;
-  if (state.queryParams?.crTime) {
-    StartDate = state.queryParams?.crTime[0];
-    EndDate = state.queryParams?.crTime[1];
-  }
-  const request = {
-    StartDate,
-    EndDate,
-    CiryName:state.queryParams.CiryName,
-    PageIndex: state.queryParams.PageIndex,
-    PageSize: state.queryParams.PageSize,
-  };
+	let StartDate = null;
+	let EndDate = null;
+	if (state.queryParams?.crTime) {
+		StartDate = state.queryParams?.crTime[0];
+		EndDate = state.queryParams?.crTime[1];
+	}
+	const request = {
+		StartDate,
+		EndDate,
+		CiryName: state.queryParams.CiryName,
+		PageIndex: state.queryParams.PageIndex,
+		PageSize: state.queryParams.PageSize,
+	};
 	if (state.queryParams.direction === 'out') {
-    cityConversionOut(request).then((res) => {
-      state.tableData = res.result.items;
-      state.total = res.result.total;
-      state.loading = false;
-    });
+		cityConversionOut(request).then((res) => {
+			state.tableData = res.result.items;
+			state.total = res.result.total;
+			state.loading = false;
+		});
 	} else {
-    cityConversionIn(request).then((res) => {
-      state.tableData = res.result.items;
-      state.total = res.result.total;
-      state.loading = false;
-    });
+		cityConversionIn(request).then((res) => {
+			state.tableData = res.result.items;
+			state.total = res.result.total;
+			state.loading = false;
+		});
 	}
 };
 onMounted(() => {

+ 16 - 8
src/views/todo/seats/accept/index.vue

@@ -443,14 +443,20 @@
 										</el-col>
 									</el-row>
 								</el-col>
-                <!-- 宜宾特殊需求,可配置开关 -->
-<!--                <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
-                  <el-form-item label="是否行政执法工单" label-width="140px" prop="isRepeat" :rules="[{ required: true, message: '请选择是否行政执法工单', trigger: 'change' }]">
-                    <el-radio-group v-model="state.ruleForm.isRepeat">
-                      <el-radio :label="item.key" v-for="item in state.repeatOptions" :key="item.key">{{ item.value }}</el-radio>
-                    </el-radio-group>
-                  </el-form-item>
-                </el-col>-->
+								<!-- 宜宾特殊需求,可配置开关 -->
+								<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" v-if="AppConfigInfo.isOpenJudicialManagement">
+									<el-form-item
+										label="是否行政执法工单"
+										label-width="140px"
+										prop="isEnforcementOrder"
+										:rules="[{ required: true, message: '请选择是否行政执法工单', trigger: 'change' }]"
+									>
+										<el-radio-group v-model="state.ruleForm.isEnforcementOrder">
+                      <el-radio  :label="true">是</el-radio>
+											<el-radio :label="false">否</el-radio>
+										</el-radio-group>
+									</el-form-item>
+								</el-col>
 								<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
 									<el-form-item label="工单标题" prop="title" :rules="[{ required: true, message: '请填写工单标题', trigger: 'blur' }]">
 										<el-input v-model="state.ruleForm.title" placeholder="请填写工单标题" clearable @input="inputTitle"> </el-input>
@@ -548,6 +554,7 @@ import { treeArea } from '@/api/auxiliary/area';
 import mittBus from '@/utils/mitt';
 import { orderRepeatEvent } from '@/api/business/repeatEvent';
 import { removeDuplicate } from '@/utils/arrayOperation';
+import App from '@/App.vue';
 
 // 引入组件
 const VoiceAssistant = defineAsyncComponent(() => import('@/views/todo/seats/accept/Voice-assistant.vue')); // 语音助手
@@ -608,6 +615,7 @@ const state = reactive<any>({
 		repeatableEventDetails: [], //重复性事件
 		orderExtension: null, // 拓展信息
 		transpond: false, // 是否市州互转
+		isEnforcementOrder: null, // 是否行政执法工单
 	},
 	formLoading: false, // 表单加载状态
 	hotspotExternal: [], // 热点分类外部数据