Browse Source

reactor:对接会签查询列表;

zhangchong 1 năm trước cách đây
mục cha
commit
29452725af

+ 11 - 0
src/api/query/countersign.ts

@@ -3,3 +3,14 @@
  * @description 业务查询-会签查询
  */
 import request from '/@/utils/request';
+/**
+ * @description 会签列表查询
+ * @param {object} params
+ */
+export const countersignList = (params:object) => {
+    return request({
+        url: `/api/v1/Workflow/countersign`,
+        method: 'get',
+        params
+    });
+}

+ 4 - 4
src/utils/signalR.ts

@@ -26,11 +26,11 @@ export default {
 		});
 		connection.onreconnected(() => {
 			console.log('断线重连成功');
-			ElNotification({
+			/*ElNotification({
 				type: 'success',
 				title: '提示',
 				message: `断线重连成功`,
-			});
+			});*/
 		});
 	},
 	/**
@@ -48,11 +48,11 @@ export default {
 			this.failNum--;
 			if (this.failNum > 0 && this.SR.state === 'Disconnected') {
 				//断开链接重新链接
-				ElNotification({
+				/*ElNotification({
 					type: 'warning',
 					title: '提示',
 					message: `断开连接了,正在重连, 剩余自动重连次数${this.failNum} 次,如未重连成功,请刷新浏览器重试`,
-				});
+				});*/
 				setTimeout(async () => {
 					await this.SR.start();
 				}, 5000);

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

@@ -51,7 +51,7 @@
 				<el-table-column prop="order.sourceChannel" label="来源方式" show-overflow-tooltip></el-table-column>
 				<el-table-column prop="sourceChannel" label="回访方式" show-overflow-tooltip></el-table-column>
 				<el-table-column prop="order.acceptType" label="受理类型" show-overflow-tooltip width="150"></el-table-column>
-				<el-table-column prop="order.hotspotName" label="热点分类" show-overflow-tooltip></el-table-column>
+				<el-table-column prop="order.hotspotName" label="热点分类" show-overflow-tooltip width="120"></el-table-column>
 				<el-table-column label="受理人" show-overflow-tooltip width="170">
 					<template #default="{ row }">
 						<span
@@ -97,7 +97,7 @@
 				<el-table-column prop="creatorOrgName" label="申请部门" show-overflow-tooltip width="120"></el-table-column>
 				<el-table-column prop="visitReason" label="申请理由" show-overflow-tooltip width="200"></el-table-column>
 				<el-table-column prop="examinOpinion" label="审批意见" show-overflow-tooltip width="200"></el-table-column>
-				<el-table-column label="操作" width="170" fixed="right" align="center">
+				<el-table-column label="操作" width="190" fixed="right" align="center">
 					<template #default="{ row }">
 						<el-button link type="primary" @click="onAudit(row)" title="审批" v-if="[0].includes(row.visitApplyState)"> 审批 </el-button>
             <el-button link type="primary" @click="onDetail(row)" title="查看审批详情" v-if="[1,2].includes(row.visitApplyState)"> 二次回访详情 </el-button>

+ 25 - 25
src/views/business/supervise/components/Order-supervise.vue

@@ -88,13 +88,13 @@
 	</el-dialog>
 </template>
 <script setup lang="ts" name="businessSuperviseDialog">
-import {defineAsyncComponent, reactive, ref} from 'vue';
-import {ElMessage, FormInstance} from 'element-plus';
-import {storeToRefs} from 'pinia';
-import {useUserInfo} from '/@/stores/userInfo';
-import {formatDate} from '/@/utils/formatTime';
-import {commonEnum} from '/@/utils/constants';
-import {superviseApply, urgeOrgList} from '/@/api/business/supervise';
+import { defineAsyncComponent, reactive, ref } from 'vue';
+import { ElMessage, FormInstance } from 'element-plus';
+import { storeToRefs } from 'pinia';
+import { useUserInfo } from '/@/stores/userInfo';
+import { formatDate } from '/@/utils/formatTime';
+import { commonEnum } from '/@/utils/constants';
+import { superviseApply, urgeOrgList } from '/@/api/business/supervise';
 
 // 引入组件
 const AnnexList = defineAsyncComponent(() => import('/@/components/AnnexList/index.vue'));
@@ -109,7 +109,7 @@ const state = reactive<any>({
 	ruleForm: {
 		acceptSms: false, // 发送督办短信
 		applyContent: '', // 督办内容
-    org:[]
+		org: [],
 	},
 	orderDetail: {}, // 工单详情
 	transform: 'translate(0px, 0px)', // 滚动条位置
@@ -136,10 +136,10 @@ const openDialog = (val: any) => {
 const closeDialog = () => {
 	state.dialogVisible = false;
 };
-const close = ()=>{
-  ruleFormRef.value?.clearValidate();
-  ruleFormRef.value?.resetFields();
-}
+const close = () => {
+	ruleFormRef.value?.clearValidate();
+	ruleFormRef.value?.resetFields();
+};
 // 选中常用意见
 const chooseAdvice = (item: any) => {
 	state.ruleForm.content += item.content;
@@ -156,19 +156,19 @@ const onSubmit = (formEl: FormInstance | undefined) => {
 	formEl.validate((valid: boolean) => {
 		if (!valid) return;
 		state.loading = true;
-    const request = {
-      files: annexListRef.value?.fileList,
-      orderId: state.orderDetail.id,
-      applyContent: state.ruleForm.applyContent,
-      acceptSms: state.ruleForm.acceptSms,
-      replyLimitTime: state.ruleForm.replyLimitTime,
-      superviseOrgDtos: state.ruleForm.org.map((item: any) => {
-        return {
-          orgId: item.key,
-          orgName: item.value,
-        };
-      }),
-    }
+		const request = {
+			files: annexListRef.value?.fileList,
+			orderId: state.orderDetail.id,
+			applyContent: state.ruleForm.applyContent,
+			acceptSms: state.ruleForm.acceptSms,
+			replyLimitTime: state.ruleForm.replyLimitTime,
+			superviseOrgDtos: state.ruleForm.org.map((item: any) => {
+				return {
+					orgId: item.key,
+					orgName: item.value,
+				};
+			}),
+		};
 		superviseApply(request)
 			.then((res: any) => {
 				state.loading = false;

+ 147 - 119
src/views/query/countersign/index.vue

@@ -1,147 +1,175 @@
 <template>
-  <div class="query-countersign-container layout-pd">
-    <!-- 搜索  -->
-    <el-card shadow="never">
-      <el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent class="mt15" label-width="100px">
-        <el-row :gutter="10">
+	<div class="query-countersign-container layout-pd">
+		<!-- 搜索  -->
+		<el-card shadow="never">
+			<el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent class="mt15" label-width="100px">
+				<el-row :gutter="10">
+					<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
+						<el-form-item label="关键词" prop="Keyword">
+							<el-input v-model="state.queryParams.Keyword" placeholder="工单编码/标题" clearable @keyup.enter="queryList" />
+						</el-form-item>
+					</el-col>
           <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
-            <el-form-item label="关键词" prop="Keyword">
-              <el-input v-model="state.queryParams.Keyword" placeholder="工单编码/标题" clearable @keyup.enter="queryList" />
+            <el-form-item label="是否省工单" prop="IsProvince">
+              <el-select v-model="state.queryParams.IsProvince" placeholder="请选择是否省工单" class="w100">
+                <el-option label="是" value="true" />
+                <el-option label="否" value="false" />
+              </el-select>
             </el-form-item>
           </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
-            <el-form-item label=" ">
-                <el-button type="primary" @click="queryList" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
-                <el-button @click="resetQuery(ruleFormRef)" v-waves class="default-button" :loading="state.loading"> <SvgIcon name="ele-Refresh" class="mr5" />重置 </el-button>
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </el-form>
-    </el-card>
-    <el-card shadow="never">
-      <!-- 功能按钮 -->
-      <div class="mb20">
-          <el-button type="primary" @click="onExport" v-auth="'business:countersign:export'" :disabled="!multipleSelection.length">
-            <SvgIcon name="iconfont icon-daochu" class="mr5" />导出
-          </el-button>
-      </div>
-      <!-- 表格 -->
-      <el-table :data="state.tableData" v-loading="state.loading" row-key="id" ref="multipleTableRef" @selection-change="handleSelectionChange">
-        <el-table-column type="selection" width="55" />
-        <el-table-column prop="no" label="会签编码" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="order.no" label="工单编码" show-overflow-tooltip width="150"></el-table-column>
-        <el-table-column prop="sourceChannel" label="来源方式" show-overflow-tooltip></el-table-column>
-        <el-table-column width="100" label="省/市工单" prop="isProvince" >
-          <template #default="{ row }">
-            <span>{{ row.order?.isProvince ? '省工单' : '市工单' }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="expiredTime" label="工单期满时间" show-overflow-tooltip width="170">
-          <template #default="{ row }">
-            <span>{{ formatDate(row.expiredTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="startTime" label="受理时间" show-overflow-tooltip width="170">
-          <template #default="{ row }">
-            <span>{{ formatDate(row.startTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="acceptType" label="受理类型" show-overflow-tooltip width="150"></el-table-column>
-        <el-table-column label="工单状态" show-overflow-tooltip width="100" prop="statusText"></el-table-column>
-        <el-table-column label="工单编码" prop="no" show-overflow-tooltip width="150">
-          <template #default="{ row }">
-            <span>{{ row.no }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="actualHandleOrgName" label="接办部门" show-overflow-tooltip width="170"></el-table-column>
-        <el-table-column prop="actualHandleTime" label="接办时间" show-overflow-tooltip width="170">
-          <template #default="{ row }">
-            <span>{{ formatDate(row.actualHandleTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="hotspotName" label="热点分类" show-overflow-tooltip width="200"></el-table-column>
-        <el-table-column prop="acceptTypeText" label="会签发起部门" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="acceptTypeText" label="会签发起人" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="expiredTime" label="会签发起时间" show-overflow-tooltip width="170">
-          <template #default="{ row }">
-            <span>{{ formatDate(row.expiredTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="操作" width="160" fixed="right" align="center">
-          <template #default="{ row }">
-            <el-button link type="primary" @click="onCountersignDetail(row)" title="查看会签明细" v-auth="'query:countersign:detail'"> 会签明细 </el-button>
-            <order-detail :order="row.order"/>
-          </template>
-        </el-table-column>
-        <template #empty>
-          <Empty />
-        </template>
-      </el-table>
-      <!-- 分页 -->
-      <pagination
-          :total="state.total"
-          v-model:page="state.queryParams.PageIndex"
-          v-model:limit="state.queryParams.PageSize"
-          @pagination="queryList"
-      />
-    </el-card>
-    <!-- 会签明细 -->
-    <countersign-detail ref="countersignDetailRef" @updateList="queryList" />
-  </div>
+					<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
+						<el-form-item label=" ">
+							<el-button type="primary" @click="queryList" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
+							<el-button @click="resetQuery(ruleFormRef)" class="default-button" :loading="state.loading">
+								<SvgIcon name="ele-Refresh" class="mr5" />重置
+							</el-button>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</el-form>
+		</el-card>
+		<el-card shadow="never">
+			<!-- 功能按钮 -->
+			<div class="mb20">
+				<el-button type="primary" @click="onExport" v-auth="'business:countersign:export'" :disabled="!multipleSelection.length">
+					<SvgIcon name="iconfont icon-daochu" class="mr5" />导出
+				</el-button>
+			</div>
+			<!-- 表格 -->
+			<el-table :data="state.tableData" v-loading="state.loading" row-key="id" ref="multipleTableRef" @selection-change="handleSelectionChange">
+				<el-table-column type="selection" width="55" />
+				<el-table-column prop="no" label="会签编码" show-overflow-tooltip></el-table-column>
+				<el-table-column prop="order.no" label="工单编码" show-overflow-tooltip width="150"></el-table-column>
+				<el-table-column prop="order.sourceChannel" label="来源方式" show-overflow-tooltip></el-table-column>
+				<el-table-column width="100" label="省/市工单" prop="isProvince">
+					<template #default="{ row }">
+						<span>{{ row.order?.isProvince ? '省工单' : '市工单' }}</span>
+					</template>
+				</el-table-column>
+				<el-table-column label="工单期满时间" show-overflow-tooltip width="170">
+					<template #default="{ row }">
+						<span>{{ formatDate(row.order?.expiredTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
+					</template>
+				</el-table-column>
+				<el-table-column prop="startTime" label="受理时间" show-overflow-tooltip width="170">
+					<template #default="{ row }">
+						<span>{{ formatDate(row.order?.startTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
+					</template>
+				</el-table-column>
+				<el-table-column prop="order.acceptType" label="受理类型" show-overflow-tooltip width="150"></el-table-column>
+				<el-table-column label="工单状态" show-overflow-tooltip width="100" prop="order.statusText"></el-table-column>
+				<el-table-column label="工单标题" prop="no" show-overflow-tooltip width="150">
+					<template #default="{ row }">
+						<span>{{ row.order?.title }}</span>
+					</template>
+				</el-table-column>
+				<el-table-column prop="order.actualHandleOrgName" label="接办部门" show-overflow-tooltip width="170"></el-table-column>
+				<el-table-column label="接办时间" show-overflow-tooltip width="170">
+					<template #default="{ row }">
+						<span>{{ formatDate(row.order?.actualHandleTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
+					</template>
+				</el-table-column>
+				<el-table-column prop="order.hotspotName" label="热点分类" show-overflow-tooltip width="200"></el-table-column>
+				<el-table-column prop="starterOrgName" label="会签发起部门" show-overflow-tooltip width="120"></el-table-column>
+				<el-table-column prop="starterName" label="会签发起人" show-overflow-tooltip width="120"></el-table-column>
+				<el-table-column label="会签发起时间" show-overflow-tooltip width="170">
+					<template #default="{ row }">
+						<span>{{ formatDate(row.creationTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
+					</template>
+				</el-table-column>
+				<el-table-column label="操作" width="100" fixed="right" align="center">
+					<template #default="{ row }">
+<!--						<el-button link type="primary" @click="onCountersignDetail(row)" title="查看会签明细" v-auth="'query:countersign:detail'">
+							会签明细
+						</el-button>-->
+						<order-detail :order="row.order" />
+					</template>
+				</el-table-column>
+				<template #empty>
+					<Empty />
+				</template>
+			</el-table>
+			<!-- 分页 -->
+			<pagination
+				:total="state.total"
+				v-model:page="state.queryParams.PageIndex"
+				v-model:limit="state.queryParams.PageSize"
+				@pagination="queryList"
+			/>
+		</el-card>
+		<!-- 会签明细 -->
+		<countersign-detail ref="countersignDetailRef" @updateList="queryList" />
+	</div>
 </template>
 <script setup lang="ts" name="queryCountersign">
-import {defineAsyncComponent, onMounted, reactive, ref} from 'vue';
-import {ElButton, ElMessage, FormInstance} from 'element-plus';
-import {auth} from '/@/utils/authFunction';
-import {throttle,} from '/@/utils/tools';
-import {formatDate} from '/@/utils/formatTime';
-import {useRouter} from "vue-router";
+import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
+import { ElButton, ElMessage, FormInstance } from 'element-plus';
+import { auth } from '/@/utils/authFunction';
+import { throttle } from '/@/utils/tools';
+import { formatDate } from '/@/utils/formatTime';
+import { useRouter } from 'vue-router';
+import { countersignList } from '/@/api/query/countersign';
+import { storeToRefs } from 'pinia';
+import { useUserInfo } from '/@/stores/userInfo';
 // 引入组件
 const OrderDetail = defineAsyncComponent(() => import('/@/components/OrderDetail/index.vue')); // 工单详情
-const CountersignDetail = defineAsyncComponent(() => import('/@/views/query/countersign/detail/index.vue'));
+const CountersignDetail = defineAsyncComponent(() => import('/@/views/query/countersign/detail/index.vue')); // 会签明细
 // 定义变量内容
 const ruleFormRef = ref<RefType>(); // 表单ref
 const router = useRouter(); // 路由
 const state = reactive(<any>{
-  queryParams: {
-    // 查询条件
-    PageIndex: 1,
-    PageSize: 10,
-    Keyword: null, // 关键字
-  },
-  tableData: [], //表单
-  loading: false, // 加载
-  total: 0, // 总数
+	queryParams: {
+		// 查询条件
+		PageIndex: 1,
+		PageSize: 10,
+		Keyword: null, // 关键字
+	},
+	tableData: [], //表单
+	loading: false, // 加载
+	total: 0, // 总数
 });
+const storesUserInfo = useUserInfo();
+const { userInfos } = storeToRefs(storesUserInfo); // 用户信息
 /** 获取列表 */
 const queryList = throttle(() => {
-  if (!auth('query:Countersign:query')) ElMessage.error('抱歉,您没有权限查看工单会签列表!');
-  else {
-  }
+	if (!auth('query:Countersign:query')) ElMessage.error('抱歉,您没有权限查看会签查询!');
+	else {
+    state.loading = true;
+    state.queryParams.IsOnlyStarter = userInfos.value.isCenter;
+    countersignList(state.queryParams)
+      .then((res) => {
+        state.tableData = res.result?.items ?? [];
+        state.total = res.result?.totalCount ?? 0;
+      })
+      .catch(() => {})
+      .finally(() => {
+        state.loading = false;
+      });
+	}
 }, 300);
 
 /** 重置按钮操作 */
 const resetQuery = throttle((formEl: FormInstance | undefined) => {
-  if (!formEl) return;
-  formEl.resetFields();
-  queryList();
+	if (!formEl) return;
+	formEl.resetFields();
+	queryList();
 }, 300);
 // 表格多选
-const multipleTableRef = ref<RefType>()
-const multipleSelection = ref<any>([])
+const multipleTableRef = ref<RefType>();
+const multipleSelection = ref<any>([]);
 const handleSelectionChange = (val: any[]) => {
-  multipleSelection.value = val
-}
+	multipleSelection.value = val;
+};
 // 导出
 const onExport = () => {
-  console.log('导出');
+	console.log('导出');
 };
 // 会签明细
 const countersignDetailRef = ref<RefType>(); // 会签明细ref
-const onCountersignDetail = (row:any)=>{
-  countersignDetailRef.value.openDialog(row)
-}
-onMounted( () => {
-  queryList();
+const onCountersignDetail = (row: any) => {
+	countersignDetailRef.value.openDialog(row);
+};
+onMounted(() => {
+	queryList();
 });
-</script>
+</script>