浏览代码

reactor:387 新增旅游信件的督办和台账查询功能

zhangchong 1 月之前
父节点
当前提交
11817d2179

+ 1 - 1
.env.development

@@ -3,7 +3,7 @@ VITE_MODE_NAME=development
 # 防止部署多套系统到同一域名不同目录时,变量共用的问题 设置不同的前缀
 VITE_STORAGE_NAME=dev
 # 业务系统基础请求地址
-VITE_API_URL=http://110.188.24.28:50300
+VITE_API_URL=http://110.188.24.28:50200
 # 业务系统socket请求地址
 VITE_API_SOCKET_URL=http://110.188.24.28:50100/hubs/hotline
 # 业务系统文件上传上传请求地址

+ 37 - 2
src/components/OrderDetail/index.vue

@@ -345,7 +345,18 @@
 								<el-form-item label="中心意见" class="formatted-text"> {{ state.ruleForm.centerOpinion }} </el-form-item>
 							</el-col>
 							<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" v-if="state.ruleForm.fileOpinion">
-								<el-form-item label="承办意见" class="formatted-text"> {{ state.ruleForm.fileOpinion }} </el-form-item>
+								<el-form-item label="承办意见" class="formatted-text">
+									{{ state.ruleForm.fileOpinion }}
+									<!-- 随手拍特殊字段 -->
+									<template v-if="state.ruleForm.sourceChannelCode === 'ZGSSP'">
+										<span v-if="state.ruleForm?.isRectifyDepartment !== null" class="ml10"
+											>是否整改:{{ state.ruleForm?.isRectifyDepartment ? '是' : '否' }}</span
+										>
+										<span v-if="state.ruleForm?.isSafetyDepartment !== null" class="ml10"
+											>是否存在安全隐患:{{ state.ruleForm?.isSafetyDepartment ? '是' : '否' }}</span
+										>
+									</template>
+								</el-form-item>
 							</el-col>
 							<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" v-if="state.ruleForm.provinceSendBackString">
 								<el-form-item label="省件退回" class="formatted-text color-danger"> {{ state.ruleForm.provinceSendBackString }} </el-form-item>
@@ -420,11 +431,35 @@
 										<el-col :xs="24" :sm="8" :md="8" :lg="8" :xl="8"
 											>沟通时间:{{ formatDate(state.ruleForm.realCommunicationTime, 'YYYY-mm-dd HH:MM:SS') }}
 										</el-col>
-										<el-col>其他原因:{{ state.ruleForm.otherRemark }}</el-col>
+										<el-col v-if="state.ruleForm.otherRemark">其他原因:{{ state.ruleForm.otherRemark }}</el-col>
 										<el-col>沟通地点:{{ state.ruleForm.realCommunicationAddress }}</el-col>
 									</el-row>
 								</el-form-item>
 							</el-col>
+							<!-- 随手拍特殊字段 -->
+							<template v-if="state.ruleForm.sourceChannelCode === 'ZGSSP'">
+								<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" v-if="state.ruleForm.isRectifyDepartment !== null">
+									<el-form-item label="是否整改"> {{ state.ruleForm.isRectifyDepartment ? '是' : '否' }} </el-form-item>
+								</el-col>
+								<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" v-if="state.ruleForm.isDangerDepartment !== null">
+									<el-form-item label="是否存在安全隐患" label-width="130px">{{ state.ruleForm?.isDangerDepartment ? '是' : '否' }}</el-form-item>
+								</el-col>
+								<el-col v-if="state.ruleForm?.signUserName"><el-text tag="b">主管部门标记意见</el-text></el-col>
+								<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" v-if="state.ruleForm?.signUserName">
+									<el-form-item label="标记人">{{ state.ruleForm.signUserName }}</el-form-item>
+								</el-col>
+								<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" v-if="state.ruleForm?.signTime">
+									<el-form-item label="标记时间">
+										{{ formatDate(state.ruleForm.signTime, 'YYYY-mm-dd HH:MM:SS') }}
+									</el-form-item>
+								</el-col>
+								<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" v-if="state.ruleForm?.isSafetyDepartment !== null">
+									<el-form-item label="是否标记为安全生成" label-width="140px">{{ state.ruleForm?.isSafetyDepartment ? '是' : '否' }}</el-form-item>
+								</el-col>
+								<el-col>
+									<el-form-item label="备注" v-if="state.ruleForm?.signRemark">{{ state.ruleForm?.signRemark }}</el-form-item>
+								</el-col>
+							</template>
 						</el-row>
 					</el-form>
 				</div>

+ 1 - 0
src/components/ProcessAudit/LZProcess.vue

@@ -707,6 +707,7 @@ const handleResult = (res: any) => {
 // 先确定当前环节是那一步
 /*
  * currentParams.value.currentStepBusinessType 表示当前节点到哪一步 0坐席 1派单 2部门节点 3部门领导节点 4中心班长 5中心领导
+ *  *  currentParams.value.currentStepType  表示当前的节点类型 0普通节点 3汇总节点
  * */
 /*selectNext.value.businessType 表示选择节点到哪一步  0 坐席 1派单  2部门节点  3部门领导节点  4中心班长 5中心领导
  * selectNext.value.orgLevel 表示部门等级 1 一级部门 2 二级部门 3 三级部门 4 四级部门

+ 1 - 0
src/components/ProcessAudit/YBProcess.vue

@@ -584,6 +584,7 @@ const isOverdueTips = computed(() => {
 // 先确定当前环节是那一步
 /*
  * currentParams.value.currentStepBusinessType 表示当前节点到哪一步 0坐席 1派单 2部门节点 3部门领导节点 4中心班长 5中心领导
+ *  *  currentParams.value.currentStepType  表示当前的节点类型 0普通节点 3汇总节点
  * */
 /*selectNext.value.businessType 表示选择节点到哪一步  0 坐席 1派单  2部门节点  3部门领导节点 4中心班长 5中心领导
  * selectNext.value.orgLevel 表示部门等级 1 一级部门 2 二级部门 3 三级部门 4 四级部门

+ 1 - 0
src/components/ProcessAudit/ZGProcess.vue

@@ -753,6 +753,7 @@ const handleResult = (res: any) => {
 // 先确定当前环节是那一步
 /*
  * currentParams.value.currentStepBusinessType 表示当前节点到哪一步 0坐席 1派单 2部门节点 3部门领导节点
+ *  *  currentParams.value.currentStepType  表示当前的节点类型 0普通节点 3汇总节点
  * */
 /*selectNext.value.businessType 表示选择节点到哪一步  0 坐席 1派单  2部门节点  3部门领导节点
  * selectNext.value.orgLevel 表示部门等级 1 一级部门 2 二级部门 3 三级部门 4 四级部门

+ 3 - 1
src/components/ProcessAudit/ZGSSPProcess.vue

@@ -917,6 +917,8 @@ const handleResult = (res: any) => {
 // 先确定当前环节是那一步
 /*
  * currentParams.value.currentStepBusinessType 表示当前节点到哪一步 0坐席 1派单 2部门节点 3部门领导节点  4中心班长 5中心领导
+ *  currentParams.value.currentStepType  表示当前的节点类型 0普通节点 3汇总节点
+ * currentParams.value.currentIsCountersignEndStep  true 表示当前为会签汇总节点 false表示不是
  * */
 /*selectNext.value.businessType 表示选择节点到哪一步  0 坐席 1派单  2部门节点  3部门领导节点  4中心班长 5中心领导
  * selectNext.value.orgLevel 表示部门等级 1 一级部门 2 二级部门 3 三级部门 4 四级部门
@@ -1008,7 +1010,7 @@ const orgDQH = computed(() => {
 		state.orderDetail.industryName === '电气焊作业申报'
 	);
 });
-// 判断当前工单是 安全隐患 并且是部门办理时 并且当前节点是普通节点 并且选择的下一节点是汇总或者归档
+// 判断当前工单是 安全隐患 并且是部门办理时 并且当前节点是普通节点 并且当前不能是会签汇总节点 并且选择的下一节点是汇总或者归档
 const orgAQYH = computed(() => {
 	return (
 		currentParams.value.currentStepBusinessType === 2 &&

+ 1 - 0
src/components/ProcessAudit/index.vue

@@ -999,6 +999,7 @@ const isOverdueTips = computed(() => {
 // 先确定当前环节是那一步
 /*
  * currentParams.value.currentStepBusinessType 表示当前节点到哪一步 0坐席 1派单 2部门节点 3部门领导节点
+ *  *  currentParams.value.currentStepType  表示当前的节点类型 0普通节点 3汇总节点
  * */
 /*selectNext.value.businessType 表示选择节点到哪一步  0 坐席 1派单  2部门节点  3部门领导节点
  * selectNext.value.orgLevel 表示部门等级 1 一级部门 2 二级部门 3 三级部门 4 四级部门

+ 8 - 7
src/views/early/manage/components/Detail.vue

@@ -1,6 +1,6 @@
 <template>
 	<el-dialog v-model="state.dialogVisible" width="60%" draggable title="预警管理详情" @close="close" append-to-body destroy-on-close>
-		<el-form :model="state.ruleForm" label-width="100px" ref="ruleFormRef" :disabled="loading">
+		<el-form :model="state.ruleForm" label-width="100px" ref="ruleFormRef" v-loading="loading">
 			<p class="border-title mb10">预警信息</p>
 			<el-row :gutter="10">
 				<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
@@ -20,7 +20,7 @@
 		<p class="border-title mb20 mt20">预警工单</p>
 		<vxe-table
 			border
-			:loading="state.loading"
+			:loading="loading"
 			:data="state.tableData"
 			:column-config="{ resizable: true }"
 			:row-config="{ isCurrent: true, isHover: true, height: 30, useKey: true, keyField: 'id' }"
@@ -30,20 +30,20 @@
 			showHeaderOverflow
 			max-height="500"
 		>
-			<vxe-column field="no" title="工单编码"></vxe-column>
+			<vxe-column field="order.no" title="工单编码"></vxe-column>
 			<vxe-column field="title" title="工单标题" min-width="200">
 				<template #default="{ row }">
-					<order-detail :order="row">{{ row.title }}</order-detail>
+					<order-detail :order="row.order">{{ row.order?.title }}</order-detail>
 				</template>
 			</vxe-column>
-			<vxe-column field="acceptType" title="受理类型"></vxe-column>
+			<vxe-column field="order.acceptType" title="受理类型"></vxe-column>
 			<vxe-column field="order.creationTime" title="受理时间" width="160">
 				<template #default="{ row }">
 					{{ formatDate(row.order?.creationTime, 'YYYY-mm-dd HH:MM:SS') }}
 				</template>
 			</vxe-column>
-			<vxe-column field="hotspotName" title="热点分类"></vxe-column>
-			<vxe-column field="hotspotName" title="事发地址"></vxe-column>
+			<vxe-column field="order.hotspotName" title="热点分类"></vxe-column>
+			<vxe-column field="order.fullAddress" title="事发地址"></vxe-column>
 		</vxe-table>
 		<template #footer>
 			<span class="dialog-footer">
@@ -73,6 +73,7 @@ const getDetail = (id: string) => {
 	getEarlyManageDetail(id)
 		.then((res: any) => {
 			state.ruleForm = res.result;
+			state.tableData = res.result.earlyWarningOrderDetails;
 			loading.value = false;
 		})
 		.catch((err) => {

+ 204 - 0
src/views/early/push/components/Push-Select.vue

@@ -0,0 +1,204 @@
+<template>
+	<el-dialog v-model="state.dialogVisible" width="60%" draggable title="选择推送工单" @close="close" append-to-body destroy-on-close>
+		<vxe-grid v-bind="gridOptions" v-on="gridEvents" ref="gridRef" @checkbox-all="selectAllChangeEvent" @checkbox-change="selectChangeEvent">
+			<template #form>
+				<el-form :model="state.queryParams" ref="ruleFormRef" inline @submit.native.prevent>
+					<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>
+						<el-button type="primary" @click="handleQuery" :loading="gridOptions.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
+						<el-button @click="resetQuery(ruleFormRef)" class="default-button"> <SvgIcon name="ele-Refresh" class="mr5" />重置 </el-button>
+					</el-form-item>
+				</el-form>
+			</template>
+			<template #pager>
+				<pagination
+					@pagination="queryList"
+					:total="state.total"
+					v-model:current-page="state.queryParams.PageIndex"
+					v-model:page-size="state.queryParams.PageSize"
+					:disabled="gridOptions.loading"
+					class="mt10"
+				/>
+			</template>
+		</vxe-grid>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="closeDialog" class="default-button">取 消</el-button>
+				<el-button type="primary" @click="onSubmit" :loading="gridOptions.loading" :disabled="isChecked">保存</el-button>
+			</span>
+		</template>
+	</el-dialog>
+</template>
+
+<script setup lang="tsx">
+import { computed, defineAsyncComponent, reactive, ref } from 'vue';
+import { ElMessage, FormInstance } from 'element-plus';
+import { throttle } from '@/utils/tools';
+
+const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
+const pagination = defineAsyncComponent(() => import('@/components/ProTable/components/Pagination.vue')); // 分页
+
+// 定义变量内容
+const state = reactive<any>({
+	dialogVisible: false,
+	queryParams: {
+		PageIndex: 1, // 当前页
+		PageSize: 10, // 每页条数
+		Keyword: null, // 关键字
+	},
+	total: 0, // 总条数
+});
+const gridOptions = reactive<any>({
+	loading: false,
+	border: true,
+	showOverflow: true,
+	columnConfig: {
+		resizable: true,
+	},
+	scrollY: {
+		enabled: true,
+		gt: 100,
+	},
+	checkboxConfig: {
+		reserve: true,
+		showReserveStatus: true,
+	},
+	rowConfig: { isHover: true, height: 30, isCurrent: true, useKey: true },
+	minHeight: 300,
+	maxHeight: 500,
+	columns: [
+		{
+			type: 'checkbox',
+			width: 120,
+			title: '是否推送',
+		},
+		{
+			field: 'flag2',
+			title: '是否展示附件',
+			width: 120,
+			slots: {
+				default: ({ row }) => {
+					return <el-checkbox v-model={row.flag2}></el-checkbox>;
+				},
+			},
+		},
+		{
+			field: 'title',
+			title: '工单标题',
+			minWidth: 200,
+			slots: {
+				default: ({ row }) => {
+					return (
+						<order-detail order={row} onUpdateList={queryList}>
+							{row.title}
+						</order-detail>
+					);
+				},
+			},
+		},
+		{
+			field: 'no',
+			title: '工单编码',
+		},
+		{
+			field: 'hotspotName',
+			title: '热点分类',
+		},
+		{
+			field: 'currentStepName',
+			title: '当前节点',
+		},
+		{
+			field: 'statusText',
+			title: '工单状态',
+			width: 160,
+			slots: {
+				default: ({ row }) => {
+					return (
+						<el-text type="danger" tag="b" v-if={[1, 2, 3, 9, 101, 102, 103, 104, 105, 200].includes(row.status)}>
+							{row.statusText}
+						</el-text>
+					);
+				},
+			},
+		},
+	],
+	data: [],
+	sortConfig: {
+		remote: true,
+	},
+});
+const gridEvents = {
+	sortChange(val: any) {
+		state.queryParams.SortField = val.order ? val.field : null;
+		// 0 升序 1 降序
+		state.queryParams.SortRule = val.order ? (val.order == 'desc' ? 1 : 0) : null;
+		handleQuery();
+	},
+};
+// 打开弹窗
+const ruleFormRef = ref<RefType>();
+const openDialog = async () => {
+	state.dialogVisible = true;
+};
+/** 搜索按钮操作 */
+const handleQuery = () => {
+	state.queryParams.PageIndex = 1;
+	queryList();
+};
+/** 重置按钮操作 */
+const resetQuery = (formEl: FormInstance | undefined) => {
+	if (!formEl) return;
+	formEl.resetFields();
+	handleQuery();
+};
+const queryList = () => {};
+
+// 关闭弹窗
+const closeDialog = () => {
+	state.dialogVisible = false;
+};
+const close = () => {
+	ruleFormRef.value?.resetFields();
+	ruleFormRef.value?.resetFields();
+};
+const checkTable = ref<EmptyArrayType>([]);
+const gridRef = ref<RefType>();
+const selectAllChangeEvent = ({ checked }) => {
+	if (gridRef.value) {
+		const records = gridRef.value.getCheckboxRecords();
+		checkTable.value = records;
+		console.log(checked ? '所有勾选事件' : '所有取消事件', records);
+	}
+};
+
+const selectChangeEvent = ({ checked }) => {
+	if (gridRef.value) {
+		const records = gridRef.value.getCheckboxRecords();
+		checkTable.value = records;
+		console.log(checked ? '勾选事件' : '取消事件', records);
+	}
+};
+const isChecked = computed(() => {
+	return !Boolean(checkTable.value.length);
+});
+const emit = defineEmits(['selectOrder']);
+// 保存
+const onSubmit = throttle(() => {
+	console.log(checkTable.value, '保存');
+	emit('selectOrder', checkTable.value);
+}, 300);
+// 暴露变量
+defineExpose({
+	openDialog,
+	closeDialog,
+});
+</script>

+ 112 - 89
src/views/early/push/components/Push-add.vue

@@ -1,6 +1,6 @@
 <template>
 	<el-dialog v-model="state.dialogVisible" width="60%" draggable title="新增推送" @close="close" append-to-body destroy-on-close>
-		<el-form :model="state.ruleForm" label-width="110px" ref="ruleFormRef" :disabled="loading">
+		<el-form :model="state.ruleForm" label-width="110px" ref="ruleFormRef" :disabled="gridOptions.loading">
 			<p class="border-title mb10">基本信息</p>
 			<el-form-item label="推送报告名称" prop="earlyWarningPushName" :rules="[{ required: true, message: '请填写推送报告名称', trigger: 'blur' }]">
 				<el-input v-model="state.ruleForm.earlyWarningPushName" placeholder="请填写推送报告名称" clearable></el-input>
@@ -25,67 +25,28 @@
 					</VTreeDrop>
 				</div>
 			</el-form-item>
-			<p class="border-title mb10 mt20">推送工单</p>
-			<el-form :model="state.queryParams" ref="ruleFormRef" inline @submit.native.prevent>
-				<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>
-					<el-button type="primary" @click="handleQuery" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
-					<el-button @click="resetQuery(ruleFormRef)" class="default-button"> <SvgIcon name="ele-Refresh" class="mr5" />重置 </el-button>
-				</el-form-item>
-			</el-form>
-			<vxe-table
-				border
-				:loading="state.loading"
-				:data="state.tableData"
-				:column-config="{ resizable: true }"
-				:row-config="{ isCurrent: true, isHover: true, height: 30, useKey: true, keyField: 'id' }"
-				ref="tableRef"
-				show-overflow
-				:scrollY="{ enabled: true, gt: 100 }"
-				showHeaderOverflow
-				@checkbox-all="selectAllChangeEvent"
-				@checkbox-change="selectChangeEvent"
-				max-height="500"
-			>
-				<vxe-column type="checkbox" width="60" align="center"></vxe-column>
-				<vxe-column field="title" title="工单标题" min-width="200">
-					<template #default="{ row }">
-						<order-detail :order="row" @updateList="queryList">{{ row.title }}</order-detail>
-					</template>
-				</vxe-column>
-				<vxe-column field="no" title="工单编码"></vxe-column>
-				<vxe-column field="hotspotName" title="热点分类"></vxe-column>
-				<vxe-column field="currentStepName" title="当前节点"></vxe-column>
-				<vxe-column field="statusText" title="工单状态" width="160">
-					<template #default="{ row }">
-						<el-text type="danger" tag="b" v-if="[1, 2, 3, 9, 101, 102, 103, 104, 105, 200].includes(row.status)">{{ row.statusText }}</el-text>
-						<span v-else>{{ row.statusText }}</span>
-					</template>
-				</vxe-column>
-			</vxe-table>
-			<pagination
-				@pagination="queryList"
-				:total="state.total"
-				v-model:current-page="state.queryParams.PageIndex"
-				v-model:page-size="state.queryParams.PageSize"
-				:disabled="state.loading"
-			/>
 		</el-form>
+		<p class="border-title mb10 mt20">推送工单</p>
+		<vxe-grid v-bind="gridOptions">
+			<template #toolbar_buttons>
+				<el-button type="primary" @click="selectOrders">选择工单</el-button>
+			</template>
+		</vxe-grid>
 		<template #footer>
 			<span class="dialog-footer">
 				<el-button @click="closeDialog" class="default-button">取 消</el-button>
-				<el-button type="warning" @click="onSubmit(ruleFormRef, 1)" :loading="loading">暂存</el-button>
-				<el-button type="primary" @click="onSubmit(ruleFormRef, 3)" :loading="loading">生成报告并推送</el-button>
-				<el-button type="primary" @click="onSubmit(ruleFormRef, 2)" :loading="loading">推 送</el-button>
+				<el-button type="warning" @click="onSubmit(ruleFormRef, 1)" :loading="gridOptions.loading">暂存</el-button>
+				<el-button type="primary" @click="onSubmit(ruleFormRef, 3)" :loading="gridOptions.loading">生成报告并推送</el-button>
+				<el-button type="primary" @click="onSubmit(ruleFormRef, 2)" :loading="gridOptions.loading">推 送</el-button>
 			</span>
 		</template>
+		<!-- 选择工单 -->
+		<push-select ref="pushSelectRef" />
 	</el-dialog>
 </template>
 
-<script setup lang="ts">
-import { computed, defineAsyncComponent, reactive, ref } from 'vue';
+<script setup lang="tsx">
+import { defineAsyncComponent, reactive, ref } from 'vue';
 import { ElMessage, FormInstance } from 'element-plus';
 import { throttle } from '@/utils/tools';
 import { addEarlySetting, getEarlySettingBaseData } from '@/api/early/setting';
@@ -96,7 +57,7 @@ import { getCanUseOrg } from '@/api/system/user';
 const emit = defineEmits(['updateList']);
 
 const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
-const pagination = defineAsyncComponent(() => import('@/components/ProTable/components/Pagination.vue')); // 分页
+const PushSelect = defineAsyncComponent(() => import('@/views/early/push/components/Push-select.vue')); // 选择工单
 
 // 定义变量内容
 const state = reactive<any>({
@@ -116,14 +77,98 @@ const state = reactive<any>({
 		PageSize: 10, // 每页条数
 		Keyword: null, // 关键字
 	},
-	tableData: [], // 表格数据
 	total: 0, // 总条数
 });
-let loading = ref<boolean>(false); // 加载状态
+const gridOptions = reactive<any>({
+	loading: false,
+	border: true,
+	showOverflow: true,
+	columnConfig: {
+		resizable: true,
+	},
+	scrollY: {
+		enabled: true,
+		gt: 100,
+	},
+	toolbarConfig: {
+		slots: {
+			buttons: 'toolbar_buttons',
+		},
+	},
+	rowConfig: { isHover: true, height: 30, isCurrent: true, useKey: true },
+	minHeight: 300,
+	maxHeight: 500,
+	columns: [
+		{
+			field: 'flag2',
+			title: '是否展示附件',
+			width: 120,
+			slots: {
+				default: ({ row }) => {
+					return <el-checkbox v-model={row.flag2}></el-checkbox>;
+				},
+			},
+		},
+		{
+			field: 'title',
+			title: '工单标题',
+			minWidth: 200,
+			slots: {
+				default: ({ row }) => {
+					return (
+						<order-detail order={row} onUpdateList={queryList}>
+							{row.title}
+						</order-detail>
+					);
+				},
+			},
+		},
+		{
+			field: 'no',
+			title: '工单编码',
+		},
+		{
+			field: 'hotspotName',
+			title: '热点分类',
+		},
+		{
+			field: 'currentStepName',
+			title: '当前节点',
+		},
+		{
+			field: 'statusText',
+			title: '工单状态',
+			width: 160,
+			slots: {
+				default: ({ row }) => {
+					return (
+						<el-text type="danger" tag="b" v-if={[1, 2, 3, 9, 101, 102, 103, 104, 105, 200].includes(row.status)}>
+							{row.statusText}
+						</el-text>
+					);
+				},
+			},
+		},
+		{
+			title: '操作',
+			width: 90,
+			align: 'center',
+			slots: {
+				default: ({ row }) => {
+					return (
+						<el-button link type="danger" onClick={() => onDelete(row)}>
+							删除
+						</el-button>
+					);
+				},
+			},
+		},
+	],
+	data: [],
+});
 // 打开弹窗
 const ruleFormRef = ref<RefType>();
 const openDialog = async () => {
-	ruleFormRef.value?.resetFields();
 	try {
 		state.dialogVisible = true;
 		queryBaseInfo();
@@ -131,17 +176,6 @@ const openDialog = async () => {
 		console.log(error);
 	}
 };
-/** 搜索按钮操作 */
-const handleQuery = () => {
-	state.queryParams.PageIndex = 1;
-	queryList();
-};
-/** 重置按钮操作 */
-const resetQuery = (formEl: FormInstance | undefined) => {
-	if (!formEl) return;
-	formEl.resetFields();
-	handleQuery();
-};
 const queryList = () => {};
 // 获取基础信息
 const orgsOptions = ref<EmptyArrayType>([]); // 来源单位
@@ -150,7 +184,6 @@ const queryBaseInfo = () => {
 		orgsOptions.value = res.result ?? [];
 	});
 };
-
 // 关闭弹窗
 const closeDialog = () => {
 	state.dialogVisible = false;
@@ -159,33 +192,23 @@ const close = () => {
 	ruleFormRef.value?.resetFields();
 	ruleFormRef.value?.resetFields();
 };
-const tableRef = ref<RefType>();
-const checkTable = ref<EmptyArrayType>([]);
-const selectAllChangeEvent = ({ checked }) => {
-	if (tableRef.value) {
-		const records = tableRef.value.getCheckboxRecords();
-		checkTable.value = records;
-		console.log(checked ? '所有勾选事件' : '所有取消事件', records);
-	}
+// 选择工单
+const pushSelectRef = ref<RefType>();
+const selectOrders = () => {
+	pushSelectRef.value.openDialog();
 };
-
-const selectChangeEvent = ({ checked }) => {
-	if (tableRef.value) {
-		const records = tableRef.value.getCheckboxRecords();
-		checkTable.value = records;
-		console.log(checked ? '勾选事件' : '取消事件', records);
-	}
+// 删除工单
+const onDelete = (row: any) => {
+	const index = gridOptions.data.findIndex((item: any) => item.no === row.no);
+	gridOptions.data.splice(index, 1);
 };
-const isChecked = computed(() => {
-	return !Boolean(checkTable.value.length);
-});
 // 新增
 // operateModel 操作方式 1:暂存 2:推送 3:推送并生成报告
 const onSubmit = throttle(async (formEl: FormInstance | undefined, operateModel: number) => {
 	if (!formEl) return;
 	await formEl.validate((valid: boolean) => {
 		if (!valid) return;
-		loading.value = true;
+		gridOptions.loading = true;
 		const request = {
 			...state.ruleForm,
 		};
@@ -199,7 +222,7 @@ const onSubmit = throttle(async (formEl: FormInstance | undefined, operateModel:
 			})
 			.catch((error) => {})
 			.finally(() => {
-				loading.value = false;
+				gridOptions.loading = false;
 				closeDialog();
 			});
 	});