Эх сурвалжийг харах

reactor:关于司法板块的优化;关于新增退回列表和退回不通过原因的显示

zhangchong 9 сар өмнө
parent
commit
6a285e1002
76 өөрчлөгдсөн 812 нэмэгдсэн , 249 устгасан
  1. 27 2
      src/api/business/return.ts
  2. 1 1
      src/api/dataShare/index.ts
  3. 1 1
      src/components/OrderDetail/index.vue
  4. 11 1
      src/layout/footer/index.vue
  5. 50 24
      src/router/route.ts
  6. 3 3
      src/views/business/countersign/index.vue
  7. 2 2
      src/views/business/discern/apply.vue
  8. 1 1
      src/views/business/discern/index.vue
  9. 2 2
      src/views/business/discern/todo.vue
  10. 1 1
      src/views/business/end/index.vue
  11. 1 1
      src/views/business/observe/index.vue
  12. 1 1
      src/views/business/order/copy-index.vue
  13. 1 1
      src/views/business/order/index.vue
  14. 1 1
      src/views/business/overdue/index.vue
  15. 1 1
      src/views/business/overdue/soon.vue
  16. 1 1
      src/views/business/publish/index.vue
  17. 1 1
      src/views/business/publish/todo.vue
  18. 1 1
      src/views/business/repeatEvent/components/Repeat-event-detail.vue
  19. 1 1
      src/views/business/repeatEvent/components/Repeat-event-edit.vue
  20. 1 1
      src/views/business/return/audit.vue
  21. 57 25
      src/views/business/return/index.vue
  22. 1 1
      src/views/business/secondHandle/apply.vue
  23. 1 1
      src/views/business/secondHandle/audit.vue
  24. 1 1
      src/views/business/secondVisit/index.vue
  25. 1 1
      src/views/business/secondVisitAudit/index.vue
  26. 1 1
      src/views/business/special/audit.vue
  27. 1 1
      src/views/business/supervise/index.vue
  28. 1 1
      src/views/business/supervise/todo.vue
  29. 1 1
      src/views/business/urge/index.vue
  30. 1 1
      src/views/business/urge/todo.vue
  31. 1 1
      src/views/business/visit/component/Smart-visit-add.vue
  32. 1 1
      src/views/business/visit/component/Visit-detail.vue
  33. 1 1
      src/views/business/visit/index.vue
  34. 1 1
      src/views/business/visit/reverse.vue
  35. 1 1
      src/views/business/visit/todo.vue
  36. 1 1
      src/views/dataShare/editExpire.vue
  37. 4 4
      src/views/dataShare/newOrderNoCallLog.vue
  38. 4 4
      src/views/dataShare/orderNoCallLog.vue
  39. 2 2
      src/views/home/component/ToDo.vue
  40. 508 0
      src/views/judicial/order/components/orderAdd.vue
  41. 8 1
      src/views/judicial/order/index.vue
  42. 1 1
      src/views/judicial/statistics/detailArea.vue
  43. 1 1
      src/views/judicial/statistics/detailDepartment.vue
  44. 1 1
      src/views/judicial/statistics/detailEventClass.vue
  45. 1 1
      src/views/judicial/statistics/detailSatisfied.vue
  46. 4 3
      src/views/login/component/Account.vue
  47. 0 31
      src/views/login/component/footer.vue
  48. 17 2
      src/views/login/index.vue
  49. 4 4
      src/views/quality/done/index.vue
  50. 4 4
      src/views/quality/index/index.vue
  51. 4 9
      src/views/resetPwd/component/Reset-password.vue
  52. 23 14
      src/views/resetPwd/index.vue
  53. 1 1
      src/views/statistics/center/detailEventFrequently.vue
  54. 1 1
      src/views/statistics/center/detailTelFrequently.vue
  55. 9 21
      src/views/statistics/center/detailWrongItem.vue
  56. 1 1
      src/views/statistics/center/report.vue
  57. 1 1
      src/views/statistics/department/detailHandle.vue
  58. 1 1
      src/views/statistics/department/detailHandleList.vue
  59. 1 1
      src/views/statistics/department/detailOverdue.vue
  60. 1 1
      src/views/statistics/department/detailOverdueList.vue
  61. 1 1
      src/views/statistics/department/detailSatisfied.vue
  62. 1 1
      src/views/statistics/department/detailSh.vue
  63. 1 1
      src/views/statistics/department/detailShSatisfied.vue
  64. 1 1
      src/views/statistics/department/unSigned.vue
  65. 1 1
      src/views/statistics/order/detailAcceptType.vue
  66. 1 1
      src/views/statistics/order/detailDispatch.vue
  67. 12 3
      src/views/statistics/order/detailSource.vue
  68. 1 1
      src/views/statistics/order/detailSourceOrder.vue
  69. 1 1
      src/views/statistics/order/specialTable.vue
  70. 1 1
      src/views/statistics/order/visitTable.vue
  71. 2 2
      src/views/tels/callLog/component/Connect-business.vue
  72. 1 1
      src/views/todo/center/index.vue
  73. 2 32
      src/views/todo/order/index.vue
  74. 1 1
      src/views/todo/seats/accept/Copy.vue
  75. 0 1
      src/views/todo/seats/accept/index.vue
  76. 2 2
      src/views/todo/seats/index.vue

+ 27 - 2
src/api/business/return.ts

@@ -4,16 +4,41 @@
  */
 import request from '@/utils/request';
 /**
- * @description 工单退回列表
+ * @description 工单退回列表基础数据
+ * @param {object} params
+ */
+export const returnBase = (params?: object) => {
+	return request({
+		url: `/api/v1/Order/order_previous/base-data`,
+		method: 'get',
+		params,
+	});
+};
+/**
+ * @description 工单退回审批列表
  * @param {object} params
  */
 export const returnList = (params: object) => {
 	return request({
-		url: `/api/v1/Order/send_back`,
+		url: `/api/v1/Order/order_previous_list`,
 		method: 'get',
 		params,
 	});
 };
+/**
+ * @description 工单退回审批列表导出
+ * @param {object} data
+ */
+export const returnExport = (data: object) => {
+	return request({
+		url: `/api/v1/Order/order_previous_list/_export`,
+		method: 'post',
+		data,
+		responseType: 'blob',
+	},{
+		reduce_data_format:false
+	});
+};
 /**
  * @description 省退回申请列表
  * @param {object} params

+ 1 - 1
src/api/dataShare/index.ts

@@ -191,7 +191,7 @@ export const getTimeRateNew = (params: object) => {
   });
 };
 /**
- * @description 无通话记录工单修改来源方式
+ * @description 无通话记录工单修改来源渠道
  * @param {object}  data
  */
 export const editNoCallSource = (data: object) => {

+ 1 - 1
src/components/OrderDetail/index.vue

@@ -102,7 +102,7 @@
 					<el-form label-width="100px" ref="ruleFormRef">
 						<el-row :gutter="10">
 							<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
-								<el-form-item label="来源方式"> {{ state.ruleForm.sourceChannel }} </el-form-item>
+								<el-form-item label="来源渠道"> {{ state.ruleForm.sourceChannel }} </el-form-item>
 							</el-col>
 							<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
 								<el-form-item label="受理类型"> {{ state.ruleForm.acceptType }} </el-form-item>

+ 11 - 1
src/layout/footer/index.vue

@@ -1,7 +1,7 @@
 <template>
 	<div class="layout-footer">
 		<div class="layout-footer-warp">
-			<el-link href="https://beian.miit.gov.cn/" target="_blank">备案号:{{ recordNumber }}</el-link>
+			<el-link href="https://beian.miit.gov.cn/" target="_blank" :underline="props.underline" :type="props.type">备案号:{{ recordNumber }}</el-link>
 		</div>
 	</div>
 </template>
@@ -10,6 +10,16 @@
 // 此处需有内容(注释也得),否则缓存将失败
 import { getCurrentCityConfig } from '@/utils/appConfig';
 const { recordNumber } = getCurrentCityConfig();
+const props = defineProps({
+	underline: {
+		type: Boolean,
+		default: true,
+	},
+  type: {
+		type: String,
+		default: 'info',
+	},
+});
 </script>
 
 <style scoped lang="scss">

+ 50 - 24
src/router/route.ts

@@ -79,7 +79,7 @@ export const dynamicRoutes: Array<RouteRecordRaw> = [
 		meta: {
 			title: '知识库新增/编辑',
 			isKeepAlive: true,
-			isDynamic:true
+			isDynamic: true,
 		},
 	},
 	{
@@ -89,7 +89,7 @@ export const dynamicRoutes: Array<RouteRecordRaw> = [
 		meta: {
 			title: '知识查看',
 			isKeepAlive: true,
-			isDynamic:true
+			isDynamic: true,
 		},
 	},
 	{
@@ -108,7 +108,7 @@ export const dynamicRoutes: Array<RouteRecordRaw> = [
 		meta: {
 			title: '流程编辑',
 			isKeepAlive: true,
-			isDynamic:true
+			isDynamic: true,
 		},
 	},
 	{
@@ -118,7 +118,7 @@ export const dynamicRoutes: Array<RouteRecordRaw> = [
 		meta: {
 			title: '通知详情',
 			isKeepAlive: false,
-			isDynamic:true
+			isDynamic: true,
 		},
 	},
 	{
@@ -128,7 +128,7 @@ export const dynamicRoutes: Array<RouteRecordRaw> = [
 		meta: {
 			title: '通知阅读',
 			isKeepAlive: false,
-			isDynamic:true
+			isDynamic: true,
 		},
 	},
 	{
@@ -256,7 +256,8 @@ export const dynamicRoutes: Array<RouteRecordRaw> = [
 			title: '部门受理类型统计周期明细',
 			isKeepAlive: true,
 		},
-	},{
+	},
+	{
 		path: '/statistics/order/detailDispatch',
 		name: 'statisticsOrderDetailDispatch',
 		component: () => import('@/views/statistics/order/detailDispatch.vue'),
@@ -291,7 +292,8 @@ export const dynamicRoutes: Array<RouteRecordRaw> = [
 			title: '通话时段明细表',
 			isKeepAlive: true,
 		},
-	},{
+	},
+	{
 		path: '/statistics/department/detailOverdue',
 		name: 'statisticsDepartmentDetailOverdue',
 		component: () => import('@/views/statistics/department/detailOverdue.vue'),
@@ -299,7 +301,8 @@ export const dynamicRoutes: Array<RouteRecordRaw> = [
 			title: '部门超期统计明细',
 			isKeepAlive: true,
 		},
-	},{
+	},
+	{
 		path: '/statistics/department/detailDelay',
 		name: 'statisticsDepartmentDetailDelay',
 		component: () => import('@/views/statistics/department/detailDelay.vue'),
@@ -307,7 +310,8 @@ export const dynamicRoutes: Array<RouteRecordRaw> = [
 			title: '部门延期统计明细',
 			isKeepAlive: true,
 		},
-	},{
+	},
+	{
 		path: '/statistics/department/detailSh',
 		name: 'statisticsDepartmentDetailSh',
 		component: () => import('@/views/statistics/department/detailSh.vue'),
@@ -315,7 +319,8 @@ export const dynamicRoutes: Array<RouteRecordRaw> = [
 			title: '二次办理统计明细',
 			isKeepAlive: true,
 		},
-	},{
+	},
+	{
 		path: '/statistics/department/detailShSatisfied',
 		name: 'statisticsDepartmentDetailShSatisfied',
 		component: () => import('@/views/statistics/department/detailShSatisfied.vue'),
@@ -323,7 +328,8 @@ export const dynamicRoutes: Array<RouteRecordRaw> = [
 			title: '二次办理满意度统计明细',
 			isKeepAlive: true,
 		},
-	},{
+	},
+	{
 		path: '/dataShare/taskDetail',
 		name: 'dataShareTaskDetail',
 		component: () => import('@/views/dataShare/taskDetail.vue'),
@@ -331,16 +337,18 @@ export const dynamicRoutes: Array<RouteRecordRaw> = [
 			title: '推送任务明细',
 			isKeepAlive: true,
 		},
-	},{
+	},
+	{
 		path: '/dataShare/newTaskDetail/:id',
 		name: 'dataShareNewTaskDetail',
 		component: () => import('@/views/dataShare/newTaskDetail.vue'),
 		meta: {
 			title: '推送任务明细(新)',
 			isKeepAlive: true,
-			isDynamic:true
+			isDynamic: true,
 		},
-	},{
+	},
+	{
 		path: '/statistics/order/detailSource',
 		name: 'statisticsOrderDetailSource',
 		component: () => import('@/views/statistics/order/detailSource.vue'),
@@ -348,7 +356,8 @@ export const dynamicRoutes: Array<RouteRecordRaw> = [
 			title: '信件来源列表',
 			isKeepAlive: true,
 		},
-	},{
+	},
+	{
 		path: '/statistics/order/detailSourceOrder',
 		name: 'statisticsDetailSourceOrder',
 		component: () => import('@/views/statistics/order/detailSourceOrder.vue'),
@@ -356,7 +365,8 @@ export const dynamicRoutes: Array<RouteRecordRaw> = [
 			title: '信件来源列表明细',
 			isKeepAlive: true,
 		},
-	},{
+	},
+	{
 		path: '/statistics/order/detailSourceTime',
 		name: 'statisticsOrderDetailSourceTime',
 		component: () => import('@/views/statistics/order/detailSourceTime.vue'),
@@ -364,7 +374,8 @@ export const dynamicRoutes: Array<RouteRecordRaw> = [
 			title: '信件来源分时列表',
 			isKeepAlive: true,
 		},
-	},{
+	},
+	{
 		path: '/statistics/call/detailIndex',
 		name: 'statisticsCallDetailIndex',
 		component: () => import('@/views/statistics/call/detailIndex.vue'),
@@ -372,7 +383,8 @@ export const dynamicRoutes: Array<RouteRecordRaw> = [
 			title: '话务日期明细',
 			isKeepAlive: true,
 		},
-	},{
+	},
+	{
 		path: '/statistics/order/detailAcceptTime',
 		name: 'statisticsOrderDetailAcceptTime',
 		component: () => import('@/views/statistics/order/detailAcceptTime.vue'),
@@ -380,7 +392,8 @@ export const dynamicRoutes: Array<RouteRecordRaw> = [
 			title: '受理类型分时统计列表',
 			isKeepAlive: true,
 		},
-	},{
+	},
+	{
 		path: '/statistics/order/detailHotSpotTime',
 		name: 'statisticsOrderDetailHotspotTime',
 		component: () => import('@/views/statistics/order/detailHotSpotTime.vue'),
@@ -388,7 +401,8 @@ export const dynamicRoutes: Array<RouteRecordRaw> = [
 			title: '热点类型分时统计列表',
 			isKeepAlive: true,
 		},
-	},{
+	},
+	{
 		path: '/statistics/order/detailAreaTime',
 		name: 'statisticsOrderDetailAreaTime',
 		component: () => import('@/views/statistics/order/detailAreaTime.vue'),
@@ -396,7 +410,8 @@ export const dynamicRoutes: Array<RouteRecordRaw> = [
 			title: '区域分时统计列表',
 			isKeepAlive: true,
 		},
-	},{
+	},
+	{
 		path: '/statistics/department/detailSatisfiedList',
 		name: 'statisticsDepartmentSatisfiedDetailList',
 		component: () => import('@/views/statistics/department/detailSatisfiedList.vue'),
@@ -404,7 +419,8 @@ export const dynamicRoutes: Array<RouteRecordRaw> = [
 			title: '部门满意度列表明细',
 			isKeepAlive: true,
 		},
-	},{
+	},
+	{
 		path: '/statistics/department/detailHandleList',
 		name: 'statisticsDepartmentDetailHandleList',
 		component: () => import('@/views/statistics/department/detailHandleList.vue'),
@@ -412,7 +428,8 @@ export const dynamicRoutes: Array<RouteRecordRaw> = [
 			title: '部门办件列表明细',
 			isKeepAlive: true,
 		},
-	},{
+	},
+	{
 		path: '/statistics/department/detailOverdueList',
 		name: 'statisticsDepartmentDetailOverdueList',
 		component: () => import('@/views/statistics/department/detailOverdueList.vue'),
@@ -420,7 +437,16 @@ export const dynamicRoutes: Array<RouteRecordRaw> = [
 			title: '部门超期列表明细',
 			isKeepAlive: true,
 		},
-	}
+	},
+	{
+		path: '/judicial/order/add',
+		name: 'judgeOrderAdd',
+		component: () => import('@/views/judicial/order/components/orderAdd.vue'),
+		meta: {
+			title: '新建工单',
+			isKeepAlive: true,
+		},
+	},
 ];
 
 /**

+ 3 - 3
src/views/business/countersign/index.vue

@@ -153,7 +153,7 @@ const columns = ref<any[]>([
 	{ prop: 'stateText', label: '会签状态', width: 120 },
 	{ prop: 'order.counterSignTypeText', label: '会签类型', width: 120 },
 	{ prop: 'order.no', label: '工单编码', width: 150 },
-	{ prop: 'order.sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'order.sourceChannel', label: '来源渠道', width: 100 },
 	{ prop: 'order.actualHandleStepName', label: '办理节点', width: 120 },
 	{
 		prop: 'order.startTime',
@@ -211,7 +211,7 @@ const state = reactive<any>({
 		InitiatedCountersignature: true, // 是否发起会签
 		HotspotIds:[], // 热点分类
     ActualHandleStepName:null, // 办理节点
-    Channels:null, // 来源方式
+    Channels:null, // 来源渠道
     AcceptTypes:null, // 受理类型
     Title:null,
     OrderNo:null
@@ -220,7 +220,7 @@ const state = reactive<any>({
 	loading: false, // 加载
 	total: 0, // 总数
 	acceptTypeOptions: [], // 受理类型
-	channelOptions: [], // 来源方式
+	channelOptions: [], // 来源渠道
 	counterSignTypeOptions: [], // 会签类型
 });
 const fastSearch = ref('InitiatedCountersignature');

+ 2 - 2
src/views/business/discern/apply.vue

@@ -253,7 +253,7 @@ const columns = ref<any[]>([
 	{ prop: 'order.no', label: '工单编码', width: 150,fixed: 'left' },
 	{ prop: 'order.isProvinceText', label: '省/市工单', width: 100 },
 	{ prop: 'order.title', label: '工单标题', width: 300 },
-	{ prop: 'order.sourceChannel', label: '来源方式', width: 120 },
+	{ prop: 'order.sourceChannel', label: '来源渠道', width: 120 },
 	{ prop: 'order.acceptType', label: '受理类型', width: 120 },
 	{ prop: 'order.counterSignTypeText', label: '是否会签', width: 100 },
 	{ prop: 'order.acceptorName', label: '受理人', width: 170 },
@@ -321,7 +321,7 @@ const state = reactive<any>({
 	screenType: [], // 甄别类型
 	counterSignTypeOptions: [], // 会签类型
 	acceptTypeOptions: [], // 受理类型
-	sourceChannelOptions: [], // 来源方式
+	sourceChannelOptions: [], // 来源渠道
 	dissatisfiedReason: [], // 不满意原因
 	visitSatisfaction: [], // 满意度
 });

+ 1 - 1
src/views/business/discern/index.vue

@@ -86,7 +86,7 @@ const columns = ref<any[]>([
 	{ prop: 'statusText', label: '甄别状态', width: 100 },
 	{ prop: 'order.isProvinceText', label: '省/市工单', width: 100 },
 	{ prop: 'order.title', label: '工单标题', width: 300 },
-	{ prop: 'order.sourceChannel', label: '来源方式', width: 120 },
+	{ prop: 'order.sourceChannel', label: '来源渠道', width: 120 },
 	{ prop: 'order.acceptType', label: '受理类型', width: 120 },
 	{ prop: 'order.hotspotName', label: '热点分类', width: 200 },
 	{ prop: 'order.acceptorName', label: '受理人', width: 170 },

+ 2 - 2
src/views/business/discern/todo.vue

@@ -84,7 +84,7 @@ const columnsTodo = [
 	{ prop: 'order.no', label: '工单编码', width: 150 },
 	{ prop: 'order.isProvinceText', label: '省/市工单', width: 100 },
 	{ prop: 'order.title', label: '工单标题', width: 300 },
-	{ prop: 'order.sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'order.sourceChannel', label: '来源渠道', width: 100 },
 	{ prop: 'order.acceptType', label: '受理类型', width: 150 },
 	{ prop: 'order.acceptorName', label: '受理人', width: 120 },
 	{ prop: 'order.orgLevelOneName', label: '一级部门', width: 150 },
@@ -137,7 +137,7 @@ const columnsDone = [
 	{ prop: 'workflow.actualHandleStepName', label: '当前节点', width: 150 },
 	{ prop: 'workflow.actualHandlerName', label: '当前审批人', width: 150 },
 	{ prop: 'order.title', label: '工单标题', width: 300 },
-	{ prop: 'order.sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'order.sourceChannel', label: '来源渠道', width: 100 },
 	{ prop: 'order.acceptType', label: '受理类型', width: 150 },
 	{ prop: 'order.acceptorName', label: '受理人', width: 120 },
 	{ prop: 'order.orgLevelOneName', label: '一级部门', width: 150 },

+ 1 - 1
src/views/business/end/index.vue

@@ -61,7 +61,7 @@ const columns = ref<any[]>([
 	{ type: 'selection', fixed: 'left', width: 55,align: 'center' },
 	{ prop: 'order.expiredStatusText', label: '超期状态', align: 'center',width: 80 },
 	{ prop: 'order.no', label: '工单编码', width: 150 },
-	{ prop: 'order.sourceChannel', label: '来源方式', width: 120 },
+	{ prop: 'order.sourceChannel', label: '来源渠道', width: 120 },
 	{ prop: 'order.actualHandleStepName', label: '当前节点', width: 120 },
 	{ prop: 'order.isProvinceText', label: '省/市工单', width: 100 },
 	{

+ 1 - 1
src/views/business/observe/index.vue

@@ -61,7 +61,7 @@ const columns = ref<any[]>([
 	{ type: 'selection', fixed: 'left', width: 55,align: 'center' },
 	{ prop: 'order.expiredStatusText', label: '超期状态', align: 'center',width: 80 },
 	{ prop: 'order.no', label: '工单编码', width: 150 },
-	{ prop: 'order.sourceChannel', label: '来源方式', width: 120 },
+	{ prop: 'order.sourceChannel', label: '来源渠道', width: 120 },
 	{ prop: 'order.actualHandleStepName', label: '当前节点', width: 120 },
 	{ prop: 'order.isProvinceText', label: '省/市工单', width: 100 },
 	{

+ 1 - 1
src/views/business/order/copy-index.vue

@@ -588,7 +588,7 @@ const columns = ref<any[]>([
 	{ prop: 'actualHandleOrgName', label: '接办部门', width: 170 },
 	{ prop: 'acceptType', label: '受理类型', width: 150 },
 	{ prop: 'counterSignTypeText', label: '是否会签', width: 100 },
-	{ prop: 'sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'sourceChannel', label: '来源渠道', width: 100 },
 	{ prop: 'hotspotName', label: '热点分类', width: 200 },
 	{
 		prop: 'sensitiveText',

+ 1 - 1
src/views/business/order/index.vue

@@ -537,7 +537,7 @@ const columns = ref<any[]>([
 	{ prop: 'actualHandleOrgName', label: '接办部门', width: 170 },
 	{ prop: 'acceptType', label: '受理类型', width: 150 },
 	{ prop: 'counterSignTypeText', label: '是否会签', width: 100 },
-	{ prop: 'sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'sourceChannel', label: '来源渠道', width: 100 },
 	{ prop: 'hotspotName', label: '热点分类', width: 200 },
 	{
 		prop: 'sensitiveText',

+ 1 - 1
src/views/business/overdue/index.vue

@@ -101,7 +101,7 @@ const columns = ref<any[]>([
 	{ prop: 'actualHandleOrgName', label: '接办部门', width: 170 },
 	{ prop: 'acceptType', label: '受理类型', width: 150 },
 	{ prop: 'counterSignTypeText', label: '是否会签' },
-	{ prop: 'sourceChannel', label: '来源方式' },
+	{ prop: 'sourceChannel', label: '来源渠道' },
 	{ prop: 'hotspotName', label: '热点分类', width: 100 },
 	{ prop: 'acceptorName', label: '受理人', width: 170 },
 	{ prop: 'operation', label: '操作', fixed: 'right', width: 100, align: 'center' },

+ 1 - 1
src/views/business/overdue/soon.vue

@@ -92,7 +92,7 @@ const columns = ref<any[]>([
 	{ prop: 'counterSignTypeText', label: '是否会签' },
 	{ prop: 'orgLevelOneName', label: '一级部门', width: 170 },
 	{ prop: 'actualHandleOrgName', label: '接办部门', width: 170 },
-	{ prop: 'sourceChannel', label: '来源方式' },
+	{ prop: 'sourceChannel', label: '来源渠道' },
 	{ prop: 'hotspotName', label: '热点分类', width: 100 },
 	{ prop: 'acceptorName', label: '受理人', width: 170 },
 	{ prop: 'operation', label: '操作', fixed: 'right', width: 100, align: 'center' },

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

@@ -73,7 +73,7 @@ const columns = ref<any[]>([
 	{ prop: 'order.isProvinceText', label: '省/市工单', width: 100 },
 	{ prop: 'order.title', label: '工单标题', width: 300 },
 	{ prop: 'order.counterSignTypeText', label: '是否会签', width: 100 },
-	{ prop: 'order.sourceChannel', label: '来源方式', width: 120 },
+	{ prop: 'order.sourceChannel', label: '来源渠道', width: 120 },
 	{ prop: 'order.statusText', label: '工单状态', width: 100 },
 	{ prop: 'order.acceptType', label: '受理类型', width: 150 },
 	{ prop: 'order.hotspotName', label: '热点分类', width: 200 },

+ 1 - 1
src/views/business/publish/todo.vue

@@ -135,7 +135,7 @@ const columns = ref<any[]>([
 	{ prop: 'isProvinceText', label: '省/市工单', width: 100 },
 	{ prop: 'statusText', label: '发布状态', width: 100 },
 	{ prop: 'title', label: '工单标题', width: 300 },
-	{ prop: 'sourceChannel', label: '来源方式' },
+	{ prop: 'sourceChannel', label: '来源渠道' },
 	{ prop: 'acceptType', label: '受理类型', width: 150 },
 	{ prop: 'counterSignTypeText', label: '是否会签', width: 100 },
 	{ prop: 'actualHandleOrgName', label: '接办部门', width: 150 },

+ 1 - 1
src/views/business/repeatEvent/components/Repeat-event-detail.vue

@@ -68,7 +68,7 @@ const columns = ref<any[]>([
 	},
 	{ prop: 'order.actualHandleOrgName', label: '接办部门', width: 170 },
 	{ prop: 'order.acceptType', label: '受理类型', width: 150 },
-	{ prop: 'order.sourceChannel', label: '来源方式' },
+	{ prop: 'order.sourceChannel', label: '来源渠道' },
 	{ prop: 'order.acceptorName', label: '受理人', width: 120 },
 ]);
 // 创建重复事件

+ 1 - 1
src/views/business/repeatEvent/components/Repeat-event-edit.vue

@@ -154,7 +154,7 @@ const columns = ref<any[]>([
 	},
 	{ prop: 'actualHandleOrgName', label: '接办部门', width: 170 },
 	{ prop: 'acceptType', label: '受理类型', width: 150 },
-	{ prop: 'sourceChannel', label: '来源方式' },
+	{ prop: 'sourceChannel', label: '来源渠道' },
 	{ prop: 'acceptorName', label: '受理人', width: 120 },
 ]);
 

+ 1 - 1
src/views/business/return/audit.vue

@@ -101,7 +101,7 @@ const columns = ref<any[]>([
 	{ prop: 'order.no', label: '工单编码', width: 150 },
 	{ prop: 'order.isProvinceText', label: '省/市工单', width: 100 },
 	{ prop: 'order.title', label: '工单标题', width: 300 },
-	{ prop: 'order.sourceChannel', label: '来源方式' },
+	{ prop: 'order.sourceChannel', label: '来源渠道' },
 	{ prop: 'order.acceptType', label: '受理类型', width: 150 },
 	{ prop: 'order.hotspotName', label: '热点分类', width: 200 },
 	{ prop: 'order.acceptorName', label: '受理人', width: 170 },

+ 57 - 25
src/views/business/return/index.vue

@@ -1,31 +1,41 @@
 <template>
 	<div class="business-return-container layout-pd">
 		<el-card shadow="never">
-      <div class="flex-center-align mb20" v-auth="'business:return:querySelf'">
-        <span class="fast-search-label">数据范围</span>
-        <el-radio-group v-model="state.queryParams.QuerySelf" @change="handleQuery">
-          <el-radio-button label="true">我的</el-radio-button>
-          <el-radio-button label="false">全部</el-radio-button>
-        </el-radio-group>
-      </div>
+			<el-row :gutter="0" class="mb20">
+				<el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-auth="'business:return:querySelf'">
+					<div class="flex-center-align">
+						<span class="fast-search-label">数据范围</span>
+						<el-radio-group v-model="state.queryParams.DataScope" @change="handleQuery">
+							<el-radio-button label="1">我的</el-radio-button>
+							<el-radio-button label="0">全部</el-radio-button>
+						</el-radio-group>
+					</div>
+				</el-col>
+				<el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6">
+					<div class="flex-center-align">
+						<span class="fast-search-label">快捷查询</span>
+						<el-radio-group v-model="state.queryParams.State" @change="handleQuery">
+							<el-radio-button :label="item.key" v-for="item in eSendBackAuditState" :key="item.key">{{ item.value }}</el-radio-button>
+						</el-radio-group>
+					</div>
+				</el-col>
+			</el-row>
 			<el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent label-width="100px">
 				<el-row :gutter="0">
 					<el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6">
-						<el-form-item label="工单标题" prop="Keyword">
-							<el-input v-model="state.queryParams.Keyword" placeholder="工单标题" clearable @keyup.enter="handleQuery" />
+						<el-form-item label="工单标题" prop="Title">
+							<el-input v-model="state.queryParams.Title" placeholder="工单标题" clearable @keyup.enter="handleQuery" />
 						</el-form-item>
 					</el-col>
 					<el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6">
-						<el-form-item label="工单编码" prop="Keyword">
-							<el-input v-model="state.queryParams.Keyword" placeholder="工单编码" clearable @keyup.enter="handleQuery"/>
+						<el-form-item label="工单编码" prop="No">
+							<el-input v-model="state.queryParams.No" placeholder="工单编码" clearable @keyup.enter="handleQuery" />
 						</el-form-item>
 					</el-col>
 					<el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6">
-						<el-form-item label="审批状态" prop="State">
-							<el-select v-model="state.queryParams.State" placeholder="请选择审批状态" @change="handleQuery" class="w100">
-								<el-option value="0" label="待审核" />
-								<el-option value="1" label="审批通过" />
-								<el-option value="2" label="审批拒绝" />
+						<el-form-item label="受理类型" prop="AcceptTypeCode">
+							<el-select v-model="state.queryParams.AcceptTypeCode" placeholder="请选择受理类型" @change="handleQuery" class="w100">
+								<el-option :value="item.dicDataValue" :label="item.dicDataName" v-for="item in acceptTypeOptions" :key="item.dicDataValue" />
 							</el-select>
 						</el-form-item>
 					</el-col>
@@ -47,6 +57,13 @@
 							</el-form-item>
 						</el-col>
 					</transition>
+					<transition name="el-zoom-in-top">
+						<el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-show="!searchCol">
+							<el-form-item label="申请部门" prop="OrgName">
+								<el-input v-model="state.queryParams.OrgName" placeholder="申请部门" clearable @keyup.enter="handleQuery" />
+							</el-form-item>
+						</el-col>
+					</transition>
 					<el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6">
 						<el-form-item label=" ">
 							<div class="flex-end w100">
@@ -74,6 +91,9 @@
 				:total="state.total"
 				v-model:page-index="state.queryParams.PageIndex"
 				v-model:page-size="state.queryParams.PageSize"
+				:toolButton="['refresh', 'setting', 'exportCurrent', 'exportAll']"
+				:exportMethod="returnExport"
+				:exportParams="requestParams"
 			>
 				<template #title="{ row }">
 					<order-detail :order="row.order" @updateList="queryList">{{ row.order?.title }}</order-detail>
@@ -93,7 +113,7 @@
 import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
 import { FormInstance } from 'element-plus';
 import { useRouter } from 'vue-router';
-import { returnList } from '@/api/business/return';
+import { returnBase, returnExport, returnList } from '@/api/business/return';
 import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
 import Other from '@/utils/other';
 // 引入组件
@@ -105,11 +125,10 @@ const router = useRouter(); // 路由
 const proTableRef = ref<RefType>(); // 表格ref
 // 表格配置项
 const columns = ref<any[]>([
-	{ type: 'selection', fixed: 'left', width: 55, align: 'center' },
 	{ prop: 'order.no', label: '工单编码', width: 150 },
 	{ prop: 'order.isProvinceText', label: '省/市工单', width: 100 },
 	{ prop: 'order.title', label: '工单标题', width: 300 },
-	{ prop: 'order.sourceChannel', label: '来源方式' },
+	{ prop: 'order.sourceChannel', label: '来源渠道' },
 	{ prop: 'order.acceptType', label: '受理类型', width: 150 },
 	{ prop: 'order.hotspotName', label: '热点分类', width: 200 },
 	{ prop: 'order.acceptorName', label: '受理人', width: 170 },
@@ -126,11 +145,11 @@ const state = reactive<any>({
 		PageIndex: 1,
 		PageSize: 10,
 		Keyword: null, // 关键字
-		State: null, // 审批状态
+		State: 0, // 审批状态
 		crTime: [],
-		CreationTimeStart: null,
-		CreationTimeEnd: null,
-    QuerySelf:'true', // 数据权限
+		StartTime: null,
+		EndTime: null,
+		DataScope: '1', // 数据权限
 	},
 	tableData: [], //表单
 	loading: false, // 加载
@@ -151,8 +170,8 @@ const requestParams = ref({});
 const queryList = () => {
 	state.loading = true;
 	requestParams.value = Other.deepClone(state.queryParams);
-	requestParams.value.CreationTimeStart = state.queryParams.crTime === null ? null : state.queryParams.crTime[0]; // 生成时间
-	requestParams.value.CreationTimeEnd = state.queryParams.crTime === null ? null : state.queryParams.crTime[1];
+	requestParams.value.StartTime = state.queryParams.crTime === null ? null : state.queryParams.crTime[0]; // 生成时间
+	requestParams.value.EndTime = state.queryParams.crTime === null ? null : state.queryParams.crTime[1];
 	Reflect.deleteProperty(requestParams.value, 'crTime'); // 删除无用的参数
 	returnList(requestParams.value)
 		.then((res) => {
@@ -177,7 +196,20 @@ const returnAuditDetailRef = ref<RefType>();
 const onAuditDetail = (row: any) => {
 	returnAuditDetailRef.value.openDialog(row);
 };
+const eSendBackAuditState = ref([]);
+const acceptTypeOptions = ref([]);
+const getBaseData = async () => {
+	// 获取基础数据
+	try {
+		const { result } = await returnBase();
+		eSendBackAuditState.value = result.eSendBackAuditState;
+		acceptTypeOptions.value = result.acceptTypeOptions;
+	} catch (e) {
+		console.log(e);
+	}
+};
 onMounted(() => {
+	getBaseData();
 	queryList();
 });
 </script>

+ 1 - 1
src/views/business/secondHandle/apply.vue

@@ -305,7 +305,7 @@ const state = reactive<any>({
 	screenType: [], // 甄别类型
 	counterSignTypeOptions: [], // 会签类型
 	acceptTypeOptions: [], // 受理类型
-	sourceChannelOptions: [], // 来源方式
+	sourceChannelOptions: [], // 来源渠道
 	dissatisfiedReason: [], // 不满意原因
 	visitSatisfaction: [], // 满意度
 });

+ 1 - 1
src/views/business/secondHandle/audit.vue

@@ -96,7 +96,7 @@ const columns = ref<any[]>([
   { prop: 'order.expiredStatusText', label: '超期状态', align: 'center',width: 80 },
   { prop: 'order.no', label: '工单编码', width: 150 },
   { prop: 'stateText', label: '办理状态', width: 120 },
-  { prop: 'order.sourceChannel', label: '来源方式', width: 100 },
+  { prop: 'order.sourceChannel', label: '来源渠道', width: 100 },
   { prop: 'sendBack', label: '重提办理', width: 120 },
   { prop: 'order.title', label: '工单标题', width: 300 },
   { prop: 'creatorName', label: '申请人' },

+ 1 - 1
src/views/business/secondVisit/index.vue

@@ -75,7 +75,7 @@ const columns = ref<any[]>([
   { prop: 'statusText', label: '回访状态', width: 100 },
   { prop: 'isProvince', label: '省/市工单', width: 100 },
   { prop: 'title', label: '工单标题', width: 300 },
-  { prop: 'order.sourceChannel', label: '来源方式', width: 100 },
+  { prop: 'order.sourceChannel', label: '来源渠道', width: 100 },
   { prop: 'order.acceptType', label: '受理类型', width: 150 },
   { prop: 'order.hotspotName', label: '热点分类', width: 100 },
   { prop: 'acceptorName', label: '受理人', width: 170 },

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

@@ -94,7 +94,7 @@ const columns = ref<any[]>([
 	{ prop: 'orderVisit.no', label: '工单编码', width: 150 },
 	{ prop: 'isProvince', label: '省/市工单', width: 100 },
 	{ prop: 'title', label: '工单标题', width: 300 },
-	{ prop: 'orderVisit.sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'orderVisit.sourceChannel', label: '来源渠道', width: 100 },
 	{ prop: 'orderVisit.visitStateText', label: '回访方式', width: 100 },
 	{ prop: 'orderVisit.acceptType', label: '受理类型', width: 150 },
 	{ prop: 'orderVisit.hotspotName', label: '热点分类', width: 100 },

+ 1 - 1
src/views/business/special/audit.vue

@@ -83,7 +83,7 @@ const columns = ref<any[]>([
 	{ prop: 'order.no', label: '工单编码', width: 150 },
 	{ prop: 'order.isProvinceText', label: '省/市工单', width: 100 },
 	{ prop: 'order.title', label: '工单标题', width: 300 },
-	{ prop: 'order.sourceChannel', label: '来源方式' },
+	{ prop: 'order.sourceChannel', label: '来源渠道' },
 	{ prop: 'order.acceptType', label: '受理类型' },
 	{ prop: 'order.hotspotName', label: '热点分类', width: 200 },
 	{ prop: 'order.acceptorName', label: '受理人', width: 170 },

+ 1 - 1
src/views/business/supervise/index.vue

@@ -68,7 +68,7 @@ const columns = ref<any[]>([
 	{ prop: 'order.no', label: '工单编码', width: 150 },
 	{ prop: 'order.isProvinceText', label: '省/市工单', width: 100 },
 	{ prop: 'order.title', label: '标题', width: 300 },
-	{ prop: 'order.sourceChannel', label: '来源方式' },
+	{ prop: 'order.sourceChannel', label: '来源渠道' },
 	{ prop: 'order.statusText', label: '工单状态' },
 	{ prop: 'order.acceptType', label: '受理类型' },
 	{ prop: 'order.hotspotName', label: '热点分类', width: 120 },

+ 1 - 1
src/views/business/supervise/todo.vue

@@ -59,7 +59,7 @@ const columns = ref<any[]>([
 	{ prop: 'order.expiredStatusText', label: '超期状态', align: 'center',fixed: 'left',width: 80},
 	{ prop: 'order.no', label: '工单编码', width: 150 },
 	{ prop: 'order.title', label: '工单标题', width: 300 },
-	{ prop: 'order.sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'order.sourceChannel', label: '来源渠道', width: 100 },
 	{ prop: 'order.isProvinceText', label: '省/市工单', width: 100 },
 	{ prop: 'order.statusText', label: '工单状态', width: 100 },
 	{ prop: 'order.acceptType', label: '受理类型', width: 150 },

+ 1 - 1
src/views/business/urge/index.vue

@@ -56,7 +56,7 @@ const proTableRef = ref<RefType>(); // 表格ref
 const columns = ref<any[]>([
 	{ prop: 'order.expiredStatusText', label: '超期状态', align: 'center',fixed: 'left',width: 80 },
 	{ prop: 'order.no', label: '工单编码', width: 150 },
-	{ prop: 'order.sourceChannel', label: '来源方式' },
+	{ prop: 'order.sourceChannel', label: '来源渠道' },
 	{ prop: 'order.actualHandleStepName', label: '办理节点', width: 150 },
 	{ prop: 'order.isProvinceText', label: '省/市工单', width: 100 },
 	{

+ 1 - 1
src/views/business/urge/todo.vue

@@ -59,7 +59,7 @@ const columns = ref<any[]>([
 	{ prop: 'order.expiredStatusText', label: '超期状态', align: 'center',fixed: 'left',width: 80 },
 	{ prop: 'order.no', label: '工单编码', width: 150 },
 	{ prop: 'order.title', label: '工单标题', width: 300 },
-	{ prop: 'order.sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'order.sourceChannel', label: '来源渠道', width: 100 },
 	{ prop: 'order.isProvinceText', label: '省/市工单', width: 100 },
 	{ prop: 'order.statusText', label: '工单状态', width: 100 },
 	{ prop: 'order.acceptType', label: '受理类型', width: 150 },

+ 1 - 1
src/views/business/visit/component/Smart-visit-add.vue

@@ -139,7 +139,7 @@ const columns = ref<any[]>([
 		label: '标题',
 		width: 300,
 	},
-	{ prop: 'order.sourceChannel', label: '来源方式' },
+	{ prop: 'order.sourceChannel', label: '来源渠道' },
 	{ prop: 'visitStateText', label: '回访状态' },
 	{ prop: 'order.acceptType', label: '受理类型', width: 150 },
 	{ prop: 'order.hotspotName', label: '热点分类', width: 100 },

+ 1 - 1
src/views/business/visit/component/Visit-detail.vue

@@ -36,7 +36,7 @@
 								</el-form-item>
 							</el-col>
 							<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-								<el-form-item label="来源方式" class="mb5"> {{ state.orderDetail.sourceChannel }} </el-form-item>
+								<el-form-item label="来源渠道" class="mb5"> {{ state.orderDetail.sourceChannel }} </el-form-item>
 							</el-col>
 							<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
 								<el-form-item label="受理类型" class="mb5"> {{ state.orderDetail.acceptType }} </el-form-item>

+ 1 - 1
src/views/business/visit/index.vue

@@ -129,7 +129,7 @@ const columns = ref<any[]>([
 	{ prop: 'order.no', label: '工单编码', width: 150, fixed: 'left' },
 	{ prop: 'order.isProvinceText', label: '省/市工单', width: 100 },
 	{ prop: 'order.title', label: '工单标题', width: 300 },
-	{ prop: 'order.sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'order.sourceChannel', label: '来源渠道', width: 100 },
 	{ prop: 'visitStateText', label: '回访状态', width: 100 },
 	{ prop: 'visitTypeText', label: '回访方式', width: 100 },
 	{ prop: 'order.acceptType', label: '受理类型', width: 150 },

+ 1 - 1
src/views/business/visit/reverse.vue

@@ -265,7 +265,7 @@ const columns = ref<any[]>([
 	{ type: 'selection', fixed: 'left', width: 55, align: 'center', selectable: selectable },
 	{ prop: 'order.expiredStatusText', label: '超期状态', align: 'center', width: 80 },
 	{ prop: 'order.statusText', label: '工单状态', width: 100 },
-	{ prop: 'order.sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'order.sourceChannel', label: '来源渠道', width: 100 },
 	{ prop: 'order.actualHandleStepName', label: '办理节点', width: 150 },
 	{ prop: 'order.no', label: '工单编码', width: 150 },
 	{ prop: 'order.title', label: '工单标题', width: 300 },

+ 1 - 1
src/views/business/visit/todo.vue

@@ -133,7 +133,7 @@ const columns = ref<any[]>([
 	{ type: 'selection', fixed: 'left', width: 55, align: 'center' },
 	{ prop: 'order.no', label: '工单编码', width: 150 },
 	{ prop: 'order.title', label: '工单标题', width: 300 },
-	{ prop: 'order.sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'order.sourceChannel', label: '来源渠道', width: 100 },
 	{ prop: 'visitStateText', label: '回访状态', width: 100 },
 	{ prop: 'visitTypeText', label: '回访方式', width: 100 },
 	{ prop: 'order.acceptType', label: '受理类型', width: 150 },

+ 1 - 1
src/views/dataShare/editExpire.vue

@@ -128,7 +128,7 @@ const columns = ref<any[]>([
 	{ prop: 'orgLevelOneName', label: '一级部门', width: 170 },
 	{ prop: 'actualHandleOrgName', label: '接办部门', width: 170 },
 	{ prop: 'acceptType', label: '受理类型', width: 150 },
-	{ prop: 'sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'sourceChannel', label: '来源渠道', width: 100 },
 	{ prop: 'hotspotName', label: '热点分类', width: 200 },
 	{ prop: 'acceptorName', label: '受理人', width: 100 },
 	{ prop: 'operation', label: '操作', fixed: 'right', width: 210, align: 'center' },

+ 4 - 4
src/views/dataShare/newOrderNoCallLog.vue

@@ -39,8 +39,8 @@
 				border
 			>
 				<template #tableHeader="scope">
-<!--					<el-button type="primary" @click="onEdit(false)" :disabled="!scope.isSelected" :loading="state.loading" title="修改来源方式">
-						修改来源方式
+<!--					<el-button type="primary" @click="onEdit(false)" :disabled="!scope.isSelected" :loading="state.loading" title="修改来源渠道">
+						修改来源渠道
 					</el-button>-->
 					<el-button type="primary" @click="onEdit(true)" :disabled="!scope.isSelected" :loading="state.loading" title="修改并推送">
 						修改并推送
@@ -65,7 +65,7 @@ const columns = ref<any[]>([
 	{ prop: 'provinceNo', label: '省工单编码', align: 'center' },
 	{
 		prop: 'caseSource',
-		label: '来源方式',
+		label: '来源渠道',
 		align: 'center',
 	},
 	{
@@ -159,7 +159,7 @@ const resetQuery = (formEl: FormInstance | undefined) => {
 };
 // 修改
 const onEdit = (isPush: boolean) => {
-	const title = isPush ? '修改并推送' : '修改来源方式';
+	const title = isPush ? '修改并推送' : '修改来源渠道';
 	const ids = proTableRef.value.selectedList.map((item: any) => item.orderId);
 	ElMessageBox.confirm(`您确定要${title}选择的【${proTableRef.value.selectedList.length}】个工单,是否继续?`, '提示', {
 		confirmButtonText: '确认',

+ 4 - 4
src/views/dataShare/orderNoCallLog.vue

@@ -38,8 +38,8 @@
 				border
 			>
 				<template #tableHeader="scope">
-					<el-button type="primary" @click="onEdit(false)" :disabled="!scope.isSelected" :loading="state.loading" title="修改来源方式">
-						修改来源方式
+					<el-button type="primary" @click="onEdit(false)" :disabled="!scope.isSelected" :loading="state.loading" title="修改来源渠道">
+						修改来源渠道
 					</el-button>
 					<el-button type="primary" @click="onEdit(true)" :disabled="!scope.isSelected" :loading="state.loading" title="修改并推送">
 						修改并推送
@@ -65,7 +65,7 @@ const columns = ref<any[]>([
 	{ prop: 'title', label: '工单标题', align: 'center' },
 	{
 		prop: 'caseSource',
-		label: '来源方式',
+		label: '来源渠道',
 		align: 'center',
 	},
 	{
@@ -159,7 +159,7 @@ const resetQuery = (formEl: FormInstance | undefined) => {
 };
 // 修改
 const onEdit = (isPush: boolean) => {
-	const title = isPush ? '修改并推送' : '修改来源方式';
+	const title = isPush ? '修改并推送' : '修改来源渠道';
 	const ids = proTableRef.value.selectedList.map((item: any) => item.orderId);
 	ElMessageBox.confirm(`您确定要${title}选择的【${proTableRef.value.selectedList.length}】个工单,是否继续?`, '提示', {
 		confirmButtonText: '确认',

+ 2 - 2
src/views/home/component/ToDo.vue

@@ -107,7 +107,7 @@ const todoColumns = [
 		},
 	},
 	{ prop: 'acceptType', label: '受理类型', width: 120 },
-	{ prop: 'sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'sourceChannel', label: '来源渠道', width: 100 },
 	{ prop: 'hotspotName', label: '热点分类', width: 200 },
 	{ prop: 'acceptorName', label: '受理人', width: 170 },
 	{ prop: 'operation', label: '操作', fixed: 'right', width: 160, align: 'center' },
@@ -144,7 +144,7 @@ const seatsColumns = [
 		},
 	},
 	{ prop: 'acceptType', label: '受理类型', width: 120 },
-	{ prop: 'sourceChannel', label: '来源方式', width: 120 },
+	{ prop: 'sourceChannel', label: '来源渠道', width: 120 },
 	{ prop: 'hotspotName', label: '热点分类', width: 200 },
 	{ prop: 'acceptorName', label: '受理人', width: 150 },
 	{ prop: 'operation', label: '操作', fixed: 'right', width: 160, align: 'center' },

+ 508 - 0
src/views/judicial/order/components/orderAdd.vue

@@ -0,0 +1,508 @@
+<template>
+	<div class="order-add-container layout-padding">
+		<el-row :gutter="10" class="h100">
+			<!-- 中间工单信息 -->
+			<el-col :span="12" class="left-content mb20 h100" v-loading="state.formLoading">
+				<el-scrollbar class="h100" noresize>
+					<el-card shadow="never">
+						<el-form :model="state.ruleForm" ref="ruleFormRef" label-width="110px" label-position="right" scroll-to-error>
+							<p class="border-title mb10">来电信息</p>
+							<el-row :gutter="20">
+								<!-- 服务坐席 -->
+								<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
+									<el-form-item label="服务坐席">
+										<span>{{ state.ruleForm.acceptorName }}</span>
+									</el-form-item>
+								</el-col>
+								<!-- 来源渠道 -->
+								<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
+									<!-- 手动创建 -->
+									<template v-if="state.createBy === 'manual'">
+										<el-form-item label="来源渠道" prop="channel" :rules="[{ required: true, message: '请选择来源渠道', trigger: 'change' }]">
+											<el-select
+												v-model="state.ruleForm.channel"
+												placeholder="请选择来源渠道"
+												class="w100"
+												clearable
+												value-key="dicDataValue"
+												@change="
+													(val) => {
+														ruleFormRef.resetFields('fromPhone');
+														state.ruleForm.fromPhone = null;
+														state.ruleForm.sourceChannel = val?.dicDataName ?? null;
+														state.ruleForm.sourceChannelCode = val?.dicDataValue ?? null;
+													}
+												"
+											>
+												<el-option v-for="item in state.channelOptions" :value="item" :key="item.dicDataValue" :label="item.dicDataName" />
+											</el-select>
+										</el-form-item>
+									</template>
+								</el-col>
+								<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
+									<el-form-item label="来电人姓名" prop="fromName" :rules="[{ required: false, message: '请填写来电人姓名', trigger: 'blur' }]">
+										<el-input v-model="state.ruleForm.fromName" placeholder="请填写来电人姓名" clearable> </el-input>
+									</el-form-item>
+								</el-col>
+								<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
+									<el-form-item label="联系电话" prop="contact" :rules="[{ required: false, message: '请填写联系电话', trigger: 'blur' }]">
+										<el-input v-model="state.ruleForm.contact" placeholder="请填写联系电话" clearable> </el-input>
+									</el-form-item>
+								</el-col>
+							</el-row>
+							<p class="border-title mb10">诉求信息</p>
+							<el-row>
+								<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" v-if="state.ruleForm.no">
+									<el-form-item label="工单编码">
+										{{ state.ruleForm.no }} <span v-if="state.ruleForm?.password">【{{ state.ruleForm.password }}】</span>
+									</el-form-item>
+								</el-col>
+								<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
+									<el-form-item label="受理类型" prop="acceptTypeObj" :rules="[{ required: true, message: '请选择受理类型', trigger: 'change' }]">
+										<el-select
+											v-model="state.ruleForm.acceptTypeObj"
+											placeholder="请选择受理类型"
+											class="w100"
+											value-key="dicDataValue"
+											@change="
+												(val) => {
+													state.ruleForm.acceptType = val?.dicDataName ?? null;
+													state.ruleForm.acceptTypeCode = val?.dicDataValue ?? null;
+												}
+											"
+										>
+											<el-option
+												v-for="item in state.acceptTypeOptions"
+												:key="item.dicDataValue"
+												:disabled="item.disabled"
+												:label="item.dicDataName"
+												:value="item"
+											/>
+										</el-select>
+									</el-form-item>
+								</el-col>
+								<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
+									<el-form-item label="执法部门" prop="acceptTypeObj" :rules="[{ required: true, message: '请选择执法部门', trigger: 'change' }]">
+										<el-select
+											v-model="state.ruleForm.acceptTypeObj"
+											placeholder="请选择执法部门"
+											class="w100"
+											value-key="dicDataValue"
+											@change="
+												(val) => {
+													state.ruleForm.acceptType = val?.dicDataName ?? null;
+													state.ruleForm.acceptTypeCode = val?.dicDataValue ?? null;
+												}
+											"
+										>
+											<el-option
+												v-for="item in state.acceptTypeOptions"
+												:key="item.dicDataValue"
+												:disabled="item.disabled"
+												:label="item.dicDataName"
+												:value="item"
+											/>
+										</el-select>
+									</el-form-item>
+								</el-col>
+								<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+									<el-form-item label="热点分类" prop="hotspotId" :rules="[{ required: true, message: '请选择热点分类', trigger: 'change' }]">
+										<hot-spot-select
+											v-model="state.ruleForm.hotspotId"
+											class="w100"
+											:externalArr="state.hotspotExternal"
+											@choose="chooseHotSpot"
+											placeholder="请选择热点分类"
+											clearable
+										/>
+									</el-form-item>
+								</el-col>
+								<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+									<el-row :gutter="0">
+										<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
+											<el-form-item
+												label="事发地址"
+												prop="areaCode"
+												:rules="[{ required: true, message: '请选择事发地址', trigger: 'change' }]"
+												v-loading="addressLoading"
+											>
+												<el-cascader
+													:options="state.areaOptions"
+													filterable
+													:props="{ value: 'id', label: 'areaName', emitPath: false, checkStrictly: true }"
+													placeholder="请选择事发地址"
+													class="w100"
+													v-model="state.ruleForm.areaCode"
+													ref="areaRef"
+													@change="changeArea"
+												>
+												</el-cascader>
+											</el-form-item>
+										</el-col>
+										<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
+											<el-form-item
+												label=""
+												prop="street"
+												:rules="[{ required: false, message: '请填写详细地址', trigger: 'blur' }]"
+												label-width="10px"
+												class="w100 flex"
+											>
+												<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+													<el-input v-model="state.ruleForm.street" placeholder="请填写详细地址" clearable> </el-input>
+												</el-col>
+											</el-form-item>
+										</el-col>
+									</el-row>
+								</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> </el-input>
+									</el-form-item>
+								</el-col>
+								<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+									<el-form-item label="受理内容" prop="content" :rules="[{ required: true, message: '请填写受理内容', trigger: 'blur' }]">
+										<common-advice
+											@chooseAdvice="chooseAdvice"
+											v-model="state.ruleForm.content"
+											placeholder="请填写受理内容"
+											:loading="state.formLoading"
+											:commonEnum="commonEnum.Seat"
+											modal
+										/>
+									</el-form-item>
+								</el-col>
+								<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+									<el-form-item label="附件" prop="files" :rules="[{ required: false, message: '请填写诉求内容', trigger: 'change' }]">
+										<annex-list :businessId="state.orderId" classify="受理上传" v-model="state.ruleForm.files" v-model:format="filesFormat" />
+									</el-form-item>
+								</el-col>
+								<el-col :xs="24" :sm="12" :md="24" :lg="24" :xl="24">
+									<el-form-item>
+										<el-button class="default-button" @click="onCancel"> 取消 </el-button>
+										<el-button class="default-button" @click="save(ruleFormRef)" :loading="buttonLoading"> 保存 </el-button>
+									</el-form-item>
+								</el-col>
+							</el-row>
+						</el-form>
+					</el-card>
+				</el-scrollbar>
+			</el-col>
+		</el-row>
+	</div>
+</template>
+
+<script setup lang="ts" name="judgeOrderAdd">
+import { defineAsyncComponent, onMounted, reactive, ref, watch } from 'vue';
+import type { FormInstance } from 'element-plus';
+import { ElMessage } from 'element-plus';
+import { storeToRefs } from 'pinia';
+import { useRoute, useRouter } from 'vue-router';
+import { throttle, transformFile } from '@/utils/tools';
+import { commonEnum } from '@/utils/constants';
+import { getCurrentCityConfig } from '@/utils/appConfig';
+import { orderAdd, orderBaseDataAdd, orderBaseExt, orderDetail, orderEdit } from '@/api/business/order';
+import { useUserInfo } from '@/stores/userInfo';
+import { treeArea } from '@/api/auxiliary/area';
+import mittBus from '@/utils/mitt';
+import { orderRepeatEvent } from '@/api/business/repeatEvent';
+
+// 引入组件
+const CommonAdvice = defineAsyncComponent(() => import('@/components/CommonAdvice/index.vue')); // 常用意见
+const AnnexList = defineAsyncComponent(() => import('@/components/AnnexList/index.vue')); // 附件列表
+const HotSpotSelect = defineAsyncComponent(() => import('@/components/Hotspot/index.vue')); // 选择热点
+// 定义变量内容
+const { cityName, cityCode } = getCurrentCityConfig();
+const state = reactive<any>({
+	createBy: 'manual', // 工单创建方式 默认手动创建  tel:来电弹单  letter:互联网来信 默认表示手动创建
+	ruleForm: {
+		sourceChannel: null, // 来源频道
+		sourceChannelCode: null, //来源频道code
+		fromPhone: null, // 来电号码
+		acceptorName: null, // 员工姓名
+		contact: null, // 联系电话
+		no: null, // 工单编码
+		title: null, // 工单标题
+		acceptType: null, // 受理类型
+		acceptTypeCode: null, // 受理类型code
+		hotspotId: '', // 热点分类
+		areaCode: cityCode, // 区域编码
+		city: cityName, // 市
+		street: null, // 街道
+		content: '', // 工单内容
+	},
+	formLoading: false, // 表单加载状态
+	hotspotExternal: [], // 热点分类外部数据
+	eventCategoryExternal: [], // 事件分类外部数据
+	acceptTypeOptions: [], // 受理类型
+	channelOptions: [], // 来源频道
+	emergencyLevelOptions: [], // 紧急程度
+	genderOptions: [], // 性别
+	identityTypeOptions: [], //来电人身份
+	licenceTypeOptions: [], // 证件类型
+	ageRangeOptions: [], // 年龄段
+	pushTypeOptions: [], //推送分类
+	areaOptions: [], //省市区
+	transpondCity: [],
+	focusOnEvents: [], // 重点关注事项
+	orderId: null, // 工单id
+	orgData: [],
+});
+const storesUserInfo = useUserInfo(); // 用户信息
+const { userInfos } = storeToRefs(storesUserInfo); // 用户信息
+state.ruleForm.acceptorName = userInfos.value.name; // 员工姓名
+state.ruleForm.acceptorStaffNo = userInfos.value.staffNo; // 员工工号
+const route = useRoute(); // 路由
+const router = useRouter(); // 路由
+// 选择热点分类
+const knowledgeRef = ref<RefType>();
+const chooseHotSpot = (val: any) => {
+	state.ruleForm.hotspotSpliceName = val?.hotSpotFullName; // 热点分类拼接名称
+	state.ruleForm.hotspotName = val?.hotSpotName; // 热点分类名称
+	state.ruleForm.hotspotCode = val?.provinceCode; // 热点分类code
+	state.ruleForm.hotspotExternal = val?.externalArr?.join(',') ?? ''; // 热点分类默认展开项
+	knowledgeRef.value.querySearch(state.ruleForm.hotspotName);
+};
+// 获取事发地址
+const areaRef = ref<RefType>();
+const changeArea = () => {
+	const currentNode = areaRef.value.getCheckedNodes();
+	// 判断数组长度
+	if (currentNode[0].pathLabels.length <= 4) {
+		state.ruleForm.city = currentNode[0].pathLabels[0] ?? ''; // 市
+		state.ruleForm.county = currentNode[0].pathLabels[1] ?? ''; // 区
+		state.ruleForm.town = currentNode[0].pathLabels[2] ?? ''; // 地区
+	} else {
+		// 如果数组长度大于4
+		state.ruleForm.city = currentNode[0].pathLabels[0] ?? ''; // 市
+		state.ruleForm.county = currentNode[0].pathLabels[1] ?? ''; // 区
+		state.ruleForm.town = currentNode[0].pathLabels[2] ?? ''; // 地区
+		state.ruleForm.areaText = currentNode[0].pathLabels.slice(3).join('') ?? ''; // 地区
+		console.log(state.ruleForm.areaText);
+	}
+};
+// 根据热点和事发地址去查询重复性事件 是否展示重复性事件
+const repeatEventRef = ref<RefType>();
+const showRepeatEvent = ref<boolean>(false);
+const stopWatch = watch([() => state.ruleForm.hotspotSpliceName, () => state.ruleForm.address], (value) => {
+	if (value[0] && value[1]) {
+		orderRepeatEvent({ hotspotSpliceName: value[0], address: value[1] }).then((res: any) => {
+			if (res.result) {
+				showRepeatEvent.value = true;
+				repeatEventRef.value.queryList();
+			} else {
+				showRepeatEvent.value = false;
+			}
+		});
+	} else {
+		showRepeatEvent.value = false;
+	}
+});
+stopWatch();
+const ruleFormRef = ref<RefType>();
+// 删除不必要的属性
+const deleteUnnecessaryProperties = (obj: any) => {
+	const propertiesToDelete = ['ageRangeObj', 'pushTypeObj', 'licenceTypeObj', 'channel', 'acceptTypeObj', 'transpondCity'];
+	propertiesToDelete.forEach((prop) => Reflect.deleteProperty(obj, prop));
+};
+const filesFormat = ref<EmptyArrayType>([]); // 附件列表格式化
+
+// 是否打开拓展表单
+const shouldOpenDialog = (obj: any) =>
+	!ExpandFormRef.value.state.validated &&
+	obj.orderExtension &&
+	obj.orderExtension.orderTypeCode &&
+	['scjgjts,scjgjjb'].includes(obj.orderExtension.orderTypeCode);
+
+const buttonLoading = ref<boolean>(false);
+// 保存
+const save = throttle((formEl: FormInstance | undefined) => {
+	if (!formEl) return;
+	formEl.validate((valid: boolean) => {
+		if (!valid) return;
+		buttonLoading.value = true;
+		let orderDetail = {
+			...state.ruleForm,
+			repeatableEventDetails: repeatableEventDetails.value,
+			files: filesFormat.value,
+		};
+		deleteUnnecessaryProperties(orderDetail);
+		const operation = state.orderId ? orderEdit : orderAdd;
+		const addOrderAndNavigate = () => {
+			operation(orderDetail)
+				.then(() => {
+					buttonLoading.value = false;
+					ElMessage.success('操作成功');
+					onCancel();
+				})
+				.catch(() => {
+					buttonLoading.value = false;
+				});
+		};
+		if (shouldOpenDialog(orderDetail)) {
+			ExpandFormRef.value.openDialog(true);
+		} else {
+			addOrderAndNavigate();
+		}
+	});
+}, 300);
+// 选中常用意见
+const chooseAdvice = (item: any) => {
+	state.ruleForm.content += item.content;
+};
+// 取消
+const onCancel = () => {
+	mittBus.emit('clearCache', 'todoSeats');
+	mittBus.emit('clearCachePage', ['order', 'todoOrder', 'todoCenter', 'callLog']);
+	// 关闭当前 tagsView
+	mittBus.emit('onCurrentContextmenuClick', Object.assign({}, { contextMenuClickId: 1, ...route }));
+};
+// 加载基础数据
+const loadBaseData = async () => {
+	try {
+		const res = await orderBaseDataAdd();
+		state.acceptTypeOptions = res.result?.acceptTypeOptions ?? [];
+		state.channelOptions = res.result?.channelOptions ?? [];
+		state.emergencyLevelOptions = res.result?.emergencyLevelOptions ?? [];
+		state.genderOptions = res.result?.genderOptions ?? [];
+		state.identityTypeOptions = res.result?.identityTypeOptions ?? [];
+		orderTypeOptions.value = res.result?.orderTypeOptions ?? [];
+		state.pushTypeOptions = res.result?.pushTypeOptions ?? [];
+		state.licenceTypeOptions = res.result?.licenceTypeOptions ?? [];
+		state.ageRangeOptions = res.result?.ageRangeOptions ?? [];
+		state.transpondCity = res.result?.transpondCity ?? [];
+		state.focusOnEvents = res.result?.focusOnEvents ?? [];
+	} catch (error) {
+		console.log(error);
+	}
+};
+// 如果是修改加载表单内容
+const loadForm = async () => {
+	state.formLoading = true;
+	if (route.query.createBy) {
+		//  route.query.createBy  createBy 代表来源  tel:来电弹单  letter:互联网来信 默认表示手动创建
+		state.createBy = route.query.createBy;
+		if (route.query.createBy === 'tel') {
+			//通话
+			state.ruleForm.sourceChannel = '电话'; //电话
+			state.ruleForm.sourceChannelCode = 'RGDH'; //电话
+			state.ruleForm.fromPhone = route.query.fromTel; // 来电号码
+			state.ruleForm.contact = route.query.fromTel; // 联系电话
+			state.ruleForm.callId = route.query.callId; // 通话id
+			state.ruleForm.transferPhone = route.query.transfer; // 转接来源
+			state.ruleForm.channel = {
+				// 来源渠道
+				dicDataValue: state.ruleForm.sourceChannelCode,
+				dicDataName: state.ruleForm.sourceChannel,
+			};
+			const isNumberIdentityType = parseInt(<string>route.query.identityType);
+			if ([1, 2].includes(isNumberIdentityType)) {
+				// 按键接收(1:市民 2:企业 3:智能应答)
+				state.ruleForm.identityType = isNumberIdentityType;
+			} else {
+				state.ruleForm.identityType = 1;
+			}
+		}
+	}
+
+	if (route.query.id) {
+		// 如果 有id
+		state.orderId = route.query.id;
+		const response = await orderDetail(route.query.id);
+		// 如果获取到id 调用查询详情
+		state.ruleForm = response.result;
+		state.ruleForm.files = transformFile(response.result.files);
+		if (response.result.duplicateIds && response.result.duplicateIds.length) {
+			// 是否重复
+			state.ruleForm.isRepeat = 'true';
+			state.ruleForm.duplicateTitle = '已选择';
+		} else {
+			state.ruleForm.isRepeat = 'false';
+		}
+		if (state.ruleForm.focusOnEvents) {
+			state.ruleForm.focusOnEventsArr = response.result.focusOnEvents.split(',');
+		}
+		state.ruleForm.channel = {
+			// 来源渠道
+			dicDataValue: state.ruleForm.sourceChannelCode,
+			dicDataName: state.ruleForm.sourceChannel,
+		};
+
+		if (state.ruleForm.hotspotExternal) {
+			//热点分类默认展开
+			state.hotspotExternal = state.ruleForm.hotspotExternal.split(',');
+		}
+		if (state.ruleForm.eventCategoryExternal) {
+			//热点分类默认展开
+			state.eventCategoryExternal = state.ruleForm.eventCategoryExternal.split(',');
+		}
+		state.ruleForm.ageRangeObj = {
+			// 年龄段
+			dicDataValue: state.ruleForm.ageRangeCode,
+			dicDataName: state.ruleForm.ageRange,
+		};
+		state.ruleForm.licenceTypeObj = {
+			// 证件类型
+			dicDataValue: state.ruleForm.licenceTypeCode,
+			dicDataName: state.ruleForm.licenceType,
+		};
+		state.ruleForm.acceptTypeObj = {
+			// 受理类型
+			dicDataValue: state.ruleForm.acceptTypeCode,
+			dicDataName: state.ruleForm.acceptType,
+		};
+		state.ruleForm.pushTypeObj = {
+			// 推送分类
+			dicDataValue: state.ruleForm.pushTypeCode,
+			dicDataName: state.ruleForm.pushType,
+		};
+		state.ruleForm.transpondCityObj = {
+			// 市州互转
+			dicDataValue: state.ruleForm.transpondCityValue,
+			dicDataName: state.ruleForm.transpondCityName,
+		};
+		state.formLoading = false;
+	} else {
+		state.formLoading = false;
+	}
+};
+// 加载省市区
+const addressLoading = ref<boolean>(false);
+const loadAddress = async () => {
+	addressLoading.value = true;
+	try {
+		const area = await treeArea();
+		state.areaOptions = area.result ?? []; //省市区数据
+		addressLoading.value = false;
+	} catch (error) {
+		console.log(error);
+	} finally {
+		addressLoading.value = false;
+	}
+};
+// 加载扩展信息
+const orderTypeOptions = ref<EmptyObjectType>([]); // 工单类型
+// 拓展信息
+const extra = ref<any>({
+	ext: {},
+	area: {},
+	orderTypeOptions: [],
+});
+const extraLoading = ref<boolean>(false);
+const loadExtra = async () => {
+	extraLoading.value = true;
+	try {
+		const ext = await orderBaseExt(); // 扩展信息
+		extra.value = { ext: { ...ext.result, orderTypeOptions: orderTypeOptions.value, area: state.areaOptions } }; //补充信息
+	} catch (error) {
+		console.log(error);
+	} finally {
+		extraLoading.value = false;
+	}
+};
+loadBaseData();
+loadForm();
+onMounted(async () => {
+	await loadAddress();
+	await loadExtra();
+});
+</script>

+ 8 - 1
src/views/judicial/order/index.vue

@@ -337,6 +337,7 @@
 			>
 				<!-- 表格 header 按钮 -->
 				<template #tableHeader="scope">
+          <el-button type="primary" @click="onAddOrder" v-auth="'judicial:order:add'"> <SvgIcon name="ele-Plus" class="mr5" />新建工单 </el-button>
 					<el-button
 						type="primary"
 						@click="onVerify(null)"
@@ -511,7 +512,7 @@ const columns = ref<any[]>([
 	{ prop: 'orgLevelOneName', label: '一级部门', width: 170 },
 	{ prop: 'actualHandleOrgName', label: '接办部门', width: 170 },
 	{ prop: 'acceptType', label: '受理类型', width: 150 },
-	{ prop: 'sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'sourceChannel', label: '来源渠道', width: 100 },
 	{ prop: 'hotspotName', label: '热点分类', width: 200 },
 	{
 		prop: 'isPassTheBuckOrder',
@@ -651,6 +652,12 @@ const onVerify = (row: any) => {
 const onEdit = (row: any) => {
 	verifyRef.value.openDialog(row);
 };
+// 新建工单
+const onAddOrder = () => {
+  router.push({
+    path:'/judicial/order/add'
+  })
+};
 onMounted(() => {
 	getBaseData();
 	queryList();

+ 1 - 1
src/views/judicial/statistics/detailArea.vue

@@ -90,7 +90,7 @@ const columns = ref<any[]>([
 	{ prop: 'orgLevelOneName', label: '一级部门', width: 170 },
 	{ prop: 'actualHandleOrgName', label: '接办部门', width: 170 },
 	{ prop: 'acceptType', label: '受理类型', width: 150 },
-	{ prop: 'sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'sourceChannel', label: '来源渠道', width: 100 },
 	{ prop: 'hotspotName', label: '热点分类', width: 200 },
 	{
 		prop: 'isPassTheBuckOrder',

+ 1 - 1
src/views/judicial/statistics/detailDepartment.vue

@@ -90,7 +90,7 @@ const columns = ref<any[]>([
 	{ prop: 'orgLevelOneName', label: '一级部门', width: 170 },
 	{ prop: 'actualHandleOrgName', label: '接办部门', width: 170 },
 	{ prop: 'acceptType', label: '受理类型', width: 150 },
-	{ prop: 'sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'sourceChannel', label: '来源渠道', width: 100 },
 	{ prop: 'hotspotName', label: '热点分类', width: 200 },
 	{
 		prop: 'isPassTheBuckOrder',

+ 1 - 1
src/views/judicial/statistics/detailEventClass.vue

@@ -90,7 +90,7 @@ const columns = ref<any[]>([
 	{ prop: 'orgLevelOneName', label: '一级部门', width: 170 },
 	{ prop: 'actualHandleOrgName', label: '接办部门', width: 170 },
 	{ prop: 'acceptType', label: '受理类型', width: 150 },
-	{ prop: 'sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'sourceChannel', label: '来源渠道', width: 100 },
 	{ prop: 'hotspotName', label: '热点分类', width: 200 },
 	{
 		prop: 'isPassTheBuckOrder',

+ 1 - 1
src/views/judicial/statistics/detailSatisfied.vue

@@ -82,7 +82,7 @@ const columns = ref<any[]>([
 	{ prop: 'orgLevelOneName', label: '一级部门', width: 170 },
 	{ prop: 'actualHandleOrgName', label: '接办部门', width: 170 },
 	{ prop: 'acceptType', label: '受理类型', width: 150 },
-	{ prop: 'sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'sourceChannel', label: '来源渠道', width: 100 },
 	{ prop: 'hotspotName', label: '热点分类', width: 200 },
 	{
 		prop: 'isPassTheBuckOrder',

+ 4 - 3
src/views/login/component/Account.vue

@@ -10,7 +10,7 @@
 					clearable
 					@keyup.enter="onSignIn(ruleFormRef)"
 					autocomplete="off"
-					@input="blurUserName"
+					@blur="blurUserName"
 				>
 					<template #prefix>
 						<SvgIcon name="ele-User" class="el-input__icon" />
@@ -119,7 +119,8 @@ const click = ref('获取验证码'); // 点击
 const isDisabled = ref(false); // 是否禁用
 const msgCodeRequired = ref(false); // 短信验证码是否必填
 // 验证账号是否是必须填写短信验证码
-const blurUserName = throttle(() => {
+const blurUserName = () => {
+	ruleFormRef.value?.clearValidate();
 	if (themeConfig.value.isLoginMessageCode) {
 		whiteList({ UserName: state.ruleForm.username })
 			.then((res: any) => {
@@ -131,7 +132,7 @@ const blurUserName = throttle(() => {
 				msgCodeRequired.value = false;
 			});
 	}
-}, 300);
+};
 const getIdentifyCodeBtn = () => {
 	if (!state.ruleForm.username) {
 		ruleFormRef.value?.validateField('username');

+ 0 - 31
src/views/login/component/footer.vue

@@ -1,31 +0,0 @@
-<template>
-	<div class="layout-footer">
-		<div class="layout-footer-warp">
-			<el-link href="https://beian.miit.gov.cn/" target="_blank" style="color: #333" :underline="false">备案号:{{ recordNumber }}</el-link>
-		</div>
-	</div>
-</template>
-
-<script setup lang="ts" name="layoutFooter">
-// 此处需有内容(注释也得),否则缓存将失败
-import { getCurrentCityConfig } from '@/utils/appConfig';
-const { recordNumber } = getCurrentCityConfig();
-</script>
-
-<style scoped lang="scss">
-.layout-footer {
-	width: 100%;
-	display: flex;
-	position: absolute;
-	bottom: 10px;
-	z-index: 10;
-	&-warp {
-		margin: auto;
-		text-align: center;
-		animation: error-num 0.3s ease;
-		:deep(.el-link) {
-			//color: var(--el-text-color-secondary);
-		}
-	}
-}
-</style>

+ 17 - 2
src/views/login/index.vue

@@ -24,7 +24,7 @@
 				</div>-->
 			</div>
 		</div>
-		<LayoutFooter v-if="isFooter" />
+		<LayoutFooter v-if="isFooter" class="login-footer" :underline="false" />
 	</div>
 </template>
 
@@ -46,7 +46,7 @@ interface LoginState {
 const Account = defineAsyncComponent(() => import('@/views/login/component/Account.vue'));
 const Mobile = defineAsyncComponent(() => import('@/views/login/component/Mobile.vue'));
 const Scan = defineAsyncComponent(() => import('@/views/login/component/Scan.vue'));
-const LayoutFooter = defineAsyncComponent(() => import('@/views/login/component/footer.vue'));
+const LayoutFooter = defineAsyncComponent(() => import('@/layout/footer/index.vue'));
 
 const storesThemeConfig = useThemeConfig();
 const { themeConfig } = storeToRefs(storesThemeConfig);
@@ -76,6 +76,21 @@ onMounted(async () => {
 :deep(.el-tabs__item) {
 	font-size: var(--el-font-size-medium);
 }
+.login-footer {
+	:deep(.el-link) {
+		color: #333;
+	}
+	width: 100%;
+	display: flex;
+	position: absolute;
+	bottom: 10px;
+	z-index: 10;
+	&-warp {
+		margin: auto;
+		text-align: center;
+		animation: error-num 0.3s ease;
+	}
+}
 .login-container {
 	position: relative;
 	background-image: v-bind(bgImg);

+ 4 - 4
src/views/quality/done/index.vue

@@ -75,7 +75,7 @@ const proTableRef = ref<RefType>(); // 表格ref
 const columns = ref<any[]>([
 	{ prop: 'order.no', label: '工单编码', width: 150 },
 	{ prop: 'aiQuality', label: '质检方式', width: 100, render: (scope: any) => (scope.row.aiQuality ? '智能质检' : '人工质检') },
-	{ prop: 'order.sourceChannel', label: '来源方式' },
+	{ prop: 'order.sourceChannel', label: '来源渠道' },
 	{ prop: 'order.startTime', label: '受理时间', width: 170, render: (scope: any) => formatDate(scope.row.order?.startTime, 'YYYY-mm-dd HH:MM:SS') },
 	{ prop: 'order.acceptType', label: '受理类型' },
 	{ prop: 'order.statusText', label: '工单状态' },
@@ -137,7 +137,7 @@ const timeStartChangeCr = (val: string[]) => {
 const acceptQualityColumns = [
 	{ prop: 'order.no', label: '工单编码', width: 150 },
 	{ prop: 'aiQuality', label: '质检方式', width: 100, render: (scope: any) => (scope.row.aiQuality ? '智能质检' : '人工质检') },
-	{ prop: 'order.sourceChannel', label: '来源方式' },
+	{ prop: 'order.sourceChannel', label: '来源渠道' },
 	{ prop: 'order.startTime', label: '受理时间', width: 170, render: (scope: any) => formatDate(scope.row.order?.startTime, 'YYYY-mm-dd HH:MM:SS') },
 	{ prop: 'order.acceptType', label: '受理类型' },
 	{ prop: 'order.statusText', label: '工单状态' },
@@ -154,7 +154,7 @@ const acceptQualityColumns = [
 const assignQualityColumns = [
 	{ prop: 'order.no', label: '工单编码', width: 150 },
 	{ prop: 'aiQuality', label: '质检方式', width: 100, render: (scope: any) => (scope.row.aiQuality ? '智能质检' : '人工质检') },
-	{ prop: 'order.sourceChannel', label: '来源方式' },
+	{ prop: 'order.sourceChannel', label: '来源渠道' },
 	{ prop: 'order.startTime', label: '受理时间', width: 170, render: (scope: any) => formatDate(scope.row.order?.startTime, 'YYYY-mm-dd HH:MM:SS') },
 	{ prop: 'order.acceptType', label: '受理类型' },
 	{ prop: 'order.statusText', label: '工单状态' },
@@ -173,7 +173,7 @@ const visitQualityColumns = [
 	{ prop: 'order.no', label: '工单编码', width: 150 },
 	{ prop: 'aiQuality', label: '质检方式', width: 100, render: (scope: any) => (scope.row.aiQuality ? '智能质检' : '人工质检') },
 	{ prop: 'title', label: '工单标题', width: 300 },
-	{ prop: 'order.sourceChannel', label: '来源方式' },
+	{ prop: 'order.sourceChannel', label: '来源渠道' },
 	{ prop: 'visit.visitStateText', label: '回访状态' },
 	{ prop: 'visit.visitTypeText', label: '回访方式', width: 100 },
 	{ prop: 'order.acceptType', label: '受理类型' },

+ 4 - 4
src/views/quality/index/index.vue

@@ -69,7 +69,7 @@ const proTableRef = ref<RefType>(); // 表格ref
 const columns = ref<any[]>([
 	{ prop: 'order.no', label: '工单编码', width: 150 },
 	{ prop: 'aiQuality', label: '质检方式', width: 100, render: (scope: any) => (scope.row.aiQuality ? '智能质检' : '人工质检') },
-	{ prop: 'order.sourceChannel', label: '来源方式' },
+	{ prop: 'order.sourceChannel', label: '来源渠道' },
 	{ prop: 'order.startTime', label: '受理时间', width: 170, render: (scope: any) => formatDate(scope.row.order?.startTime, 'YYYY-mm-dd HH:MM:SS') },
 	{ prop: 'order.acceptType', label: '受理类型' },
 	{ prop: 'order.statusText', label: '工单状态' },
@@ -126,7 +126,7 @@ const timeStartChangeCr = (val: string[]) => {
 const acceptQualityColumns = [
 	{ prop: 'order.no', label: '工单编码', width: 150 },
 	{ prop: 'aiQuality', label: '质检方式', width: 100, render: (scope: any) => (scope.row.aiQuality ? '智能质检' : '人工质检') },
-	{ prop: 'order.sourceChannel', label: '来源方式' },
+	{ prop: 'order.sourceChannel', label: '来源渠道' },
 	{ prop: 'order.startTime', label: '受理时间', width: 170, render: (scope: any) => formatDate(scope.row.order?.startTime, 'YYYY-mm-dd HH:MM:SS') },
 	{ prop: 'order.acceptType', label: '受理类型' },
 	{ prop: 'order.statusText', label: '工单状态' },
@@ -144,7 +144,7 @@ const acceptQualityColumns = [
 const assignQualityColumns = [
 	{ prop: 'order.no', label: '工单编码', width: 150 },
 	{ prop: 'aiQuality', label: '质检方式', width: 100, render: (scope: any) => (scope.row.aiQuality ? '智能质检' : '人工质检') },
-	{ prop: 'order.sourceChannel', label: '来源方式' },
+	{ prop: 'order.sourceChannel', label: '来源渠道' },
 	{ prop: 'order.startTime', label: '受理时间', width: 170, render: (scope: any) => formatDate(scope.row.order?.startTime, 'YYYY-mm-dd HH:MM:SS') },
 	{ prop: 'order.acceptType', label: '受理类型' },
 	{ prop: 'order.statusText', label: '工单状态' },
@@ -160,7 +160,7 @@ const visitQualityColumns = [
 	{ prop: 'order.no', label: '工单编码', width: 150 },
 	{ prop: 'aiQuality', label: '质检方式', width: 100, render: (scope: any) => (scope.row.aiQuality ? '智能质检' : '人工质检') },
 	{ prop: 'title', label: '工单标题', width: 300 },
-	{ prop: 'order.sourceChannel', label: '来源方式' },
+	{ prop: 'order.sourceChannel', label: '来源渠道' },
 	{ prop: 'visit.visitStateText', label: '回访状态' },
 	{ prop: 'visit.visitTypeText', label: '回访方式', width: 100 },
 	{ prop: 'order.acceptType', label: '受理类型' },

+ 4 - 9
src/views/resetPwd/component/Reset-password.vue

@@ -43,9 +43,7 @@
 				</template>
 			</el-input>
 		</el-form-item>
-		<el-button type="primary" class="resetPwd-content-submit" round @click="onChangeConfirm(resetPwdRef)" :loading="state.loading"
-			>确认修改</el-button
-		>
+		<el-button type="primary" class="resetPwd-content-submit" @click="onChangeConfirm(resetPwdRef)" :loading="state.loading">确认修改</el-button>
 		<div class="font12 mt10 resetPwd-msg">提示:密码不得少于8位数,且必须包含数字、字母大小写和特殊字符</div>
 	</el-form>
 </template>
@@ -54,7 +52,7 @@
 import { reactive, computed, ref } from 'vue';
 import { useRouter } from 'vue-router';
 import { ElNotification } from 'element-plus';
-import {Cookie, Session} from '@/utils/storage';
+import { Cookie, Session } from '@/utils/storage';
 import type { FormInstance } from 'element-plus';
 import { changeDefaultPwd } from '@/api/login/user';
 import { storeToRefs } from 'pinia';
@@ -82,7 +80,7 @@ const userName = computed(() => {
 // 确认重置
 const onChangeConfirm = async (formEl: FormInstance | undefined) => {
 	if (!formEl) return;
-	await formEl.validate((valid:boolean) => {
+	await formEl.validate((valid: boolean) => {
 		if (!valid) return;
 		state.loading = true;
 		changeDefaultPwd(state.ruleForm)
@@ -90,7 +88,7 @@ const onChangeConfirm = async (formEl: FormInstance | undefined) => {
 				//
 				// 清楚缓存
 				Session.clear();
-        Cookie.clear();
+				Cookie.clear();
 				await router.push('/');
 				ElNotification({
 					title: '成功',
@@ -193,9 +191,6 @@ const rules = reactive({
 	.resetPwd-content-submit {
 		width: 100%;
 		font-weight: 300;
-		background: linear-gradient(-90deg, #3c7ee0 0%, #3c50e0 100%);
-		border: none;
-		border-radius: 8px;
 		height: 40px;
 		margin-top: 20px;
 	}

+ 23 - 14
src/views/resetPwd/index.vue

@@ -4,30 +4,30 @@
 			<img :src="imgSrc" alt="" />
 			<el-button type="primary" @click="backToLogin">返回登录</el-button>
 		</div>
-		<div class="login-content">
+		<el-card class="login-content">
 			<div class="login-content-main">
 				<p class="login-content-title">修改密码</p>
 				<reset-pwd />
 			</div>
-		</div>
-    <LayoutFooter v-if="isFooter" />
+		</el-card>
+		<LayoutFooter v-if="isFooter" class="changePwd-footer" />
 	</div>
 </template>
 
 <script setup lang="ts" name="resetPwd">
-import { computed, defineAsyncComponent, onMounted, ref } from "vue";
+import { computed, defineAsyncComponent, onMounted, ref } from 'vue';
 import { storeToRefs } from 'pinia';
 import { useThemeConfig } from '@/stores/themeConfig';
 import { NextLoading } from '@/utils/loading';
-import {Cookie, Local, Session} from '@/utils/storage';
+import { Cookie, Local, Session } from '@/utils/storage';
 import { useRouter } from 'vue-router';
 import { getImageUrl } from '@/utils/tools';
 
 // 引入组件
 const ResetPwd = defineAsyncComponent(() => import('@/views/resetPwd/component/Reset-password.vue'));
-const LayoutFooter = defineAsyncComponent(() => import('@/views/login/component/footer.vue'));
+const LayoutFooter = defineAsyncComponent(() => import('@/layout/footer/index.vue'));
 const currentCity = computed(() => {
-  return import.meta.env.VITE_CURRENT_CITY;
+	return import.meta.env.VITE_CURRENT_CITY;
 });
 const imgSrc = ref('');
 imgSrc.value = getImageUrl(`${currentCity.value}/change_pwd_header.png`);
@@ -38,13 +38,13 @@ const { themeConfig } = storeToRefs(storesThemeConfig);
 const router = useRouter();
 const backToLogin = () => {
 	Session.clear();
-  Cookie.clear();
+	Cookie.clear();
 	Local.clear();
 	router.push('/');
 };
 // 设置 footer 显示/隐藏
 const isFooter = computed(() => {
-  return themeConfig.value.isFooter;
+	return themeConfig.value.isFooter;
 });
 
 // 页面加载时
@@ -54,11 +54,23 @@ onMounted(() => {
 </script>
 
 <style scoped lang="scss">
+.changePwd-footer {
+	width: 100%;
+	display: flex;
+	position: absolute;
+	bottom: 10px;
+	z-index: 10;
+	&-warp {
+		margin: auto;
+		text-align: center;
+		animation: error-num 0.3s ease;
+	}
+}
 .login-container {
 	width: 100%;
 	height: 100%;
 	position: relative;
-	background-color: var(--el-color-white);
+	background-color: var(--hotline-bg-color);
 
 	.login-header {
 		width: 100%;
@@ -72,9 +84,8 @@ onMounted(() => {
 	}
 
 	.login-content {
-		width: 550px;
 		border-radius: 12px;
-		padding: 30px 80px 30px 80px;
+		padding: 20px 30px;
 		position: absolute;
 		left: calc(50% - 300px);
 		top: 50%;
@@ -82,8 +93,6 @@ onMounted(() => {
 		background-color: var(--el-color-white);
 		overflow: hidden;
 		z-index: 1;
-		box-shadow: 0 0 30px 0 rgba(60, 80, 224, 0.14);
-
 		.login-content-main {
 			margin: 0 auto;
 

+ 1 - 1
src/views/statistics/center/detailEventFrequently.vue

@@ -331,7 +331,7 @@ const columns = ref<any[]>([
 	{ prop: 'actualHandleOrgName', label: '接办部门', width: 170 },
 	{ prop: 'acceptType', label: '受理类型', width: 150 },
 	{ prop: 'counterSignTypeText', label: '是否会签', width: 100 },
-	{ prop: 'sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'sourceChannel', label: '来源渠道', width: 100 },
 	{ prop: 'hotspotName', label: '热点分类', width: 200 },
 	{ prop: 'tagNames', label: '工单标签', width: 200 },
 	{ prop: 'acceptorName', label: '受理人', width: 120 },

+ 1 - 1
src/views/statistics/center/detailTelFrequently.vue

@@ -406,7 +406,7 @@ const columns = ref<any[]>([
 	{ prop: 'actualHandleOrgName', label: '接办部门', width: 170 },
 	{ prop: 'acceptType', label: '受理类型', width: 150 },
 	{ prop: 'counterSignTypeText', label: '是否会签', width: 100 },
-	{ prop: 'sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'sourceChannel', label: '来源渠道', width: 100 },
 	{ prop: 'hotspotName', label: '热点分类', width: 200 },
 	{ prop: 'tagNames', label: '工单标签', width: 200 },
 	{ prop: 'acceptorName', label: '受理人', width: 120 },

+ 9 - 21
src/views/statistics/center/detailWrongItem.vue

@@ -24,7 +24,7 @@
                 start-placeholder="开始时间"
                 end-placeholder="结束时间"
                 :shortcuts="shortcuts"
-                @change="timeStartChangeCr"
+                @change="handleQuery"
                 value-format="YYYY-MM-DD"
                 :clearable="false"
               />
@@ -97,7 +97,6 @@ const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/
 const proTableRef = ref<RefType>(); // 表格ref
 // 表格配置项
 const columns = ref<any[]>([
-	{ type: 'index', fixed: 'left', width: 55, label: '序号', align: 'center' },
 	{ prop: 'orderSpecial.order.no', label: '工单编码', width: 150 },
 	{ prop: 'orderSpecial.order.title', label: '工单标题', width: 300 },
 	{
@@ -108,10 +107,14 @@ const columns = ref<any[]>([
 			return <span>{formatDate(scope.row?.orderSpecial?.creationTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
 		},
 	},
-	{ prop: 'orgName', label: '被记部门' },
-	{ prop: 'errorName', label: '错误类别' },
-	{ prop: 'orderSpecial.order.acceptType', label: '受理类型' },
-	{ prop: 'orderSpecial.order.sourceChannel', label: '来源名称' },
+	{ prop: 'orgName', label: '被记部门',minWidth: 120 },
+	{ prop: 'errorName', label: '错误类别',minWidth: 200 },
+	{ prop: 'orderSpecial.order.acceptType', label: '受理类型',minWidth: 120 },
+	{ prop: 'orderSpecial.order.sourceChannel', label: '来源渠道',minWidth: 120 },
+  { prop: 'errorName', label: '受理内容',minWidth:200 },
+  { prop: 'errorName', label: '第一次办结内容',minWidth:200 },
+  { prop: 'errorName', label: '最终办结内容',minWidth:200 },
+  { prop: 'errorName', label: '派单退回意见',minWidth:200 },
 ]);
 // 定义变量内容
 const ruleFormRef = ref<RefType>(); // 表单ref
@@ -134,21 +137,6 @@ const state = reactive<any>({
 	loading: false, // 加载
 	total: 0, // 总数
 });
-
-const handleTimeChange = (val: string[], startKey: string, endKey: string) => {
-	if (val) {
-		state.queryParams[startKey] = val[0];
-		state.queryParams[endKey] = val[1];
-	} else {
-		state.queryParams[startKey] = '';
-		state.queryParams[endKey] = '';
-	}
-	handleQuery();
-};
-// 受理时间
-const timeStartChangeCr = (val: string[]) => {
-	handleTimeChange(val, 'CreationTimeStart', 'CreationTimeEnd');
-};
 // 基础信息
 const reTransactErrorType = ref([]); // 错误类型
 const getBaseData = async () => {

+ 1 - 1
src/views/statistics/center/report.vue

@@ -139,7 +139,7 @@
 										<td colspan="4" style="font-size: 22px; border-bottom: 1px solid #000000">信件来源</td>
 									</tr>
 									<tr style="height: 43px">
-										<td style="font-size: 22px; border-bottom: 1px solid #000000; border-right: 1px solid #000000">来源方式</td>
+										<td style="font-size: 22px; border-bottom: 1px solid #000000; border-right: 1px solid #000000">来源渠道</td>
 										<td style="font-size: 22px; border-bottom: 1px solid #000000; border-right: 1px solid #000000">数量</td>
 										<td colspan="2" style="font-size: 22px; border-bottom: 1px solid #000000; border-right: 1px solid #000000">备注</td>
 									</tr>

+ 1 - 1
src/views/statistics/department/detailHandle.vue

@@ -92,7 +92,7 @@ const columns = ref<any[]>([
   { prop: 'actualHandleOrgName', label: '接办部门', width: 170 },
   { prop: 'acceptType', label: '受理类型', width: 150 },
   { prop: 'counterSignTypeText', label: '是否会签', width: 100 },
-  { prop: 'sourceChannel', label: '来源方式' },
+  { prop: 'sourceChannel', label: '来源渠道' },
   { prop: 'hotspotName', label: '热点分类', width: 200 },
   { prop: 'acceptorName', label: '受理人', width: 120 },
   { prop: 'operation', label: '操作', fixed: 'right', width: 90, align: 'center' },

+ 1 - 1
src/views/statistics/department/detailHandleList.vue

@@ -89,7 +89,7 @@ const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/
 const columns = ref<any[]>([
 	{ type: 'selection', fixed: 'left', width: 55, align: 'center' },
 	{ prop: 'statusText', label: '工单状态', width: 100 },
-	{ prop: 'sourceChannel', label: '来源方式', width: 120 },
+	{ prop: 'sourceChannel', label: '来源渠道', width: 120 },
 	{ prop: 'actualHandleStepName', label: '当前节点', width: 120 },
 	{ prop: 'no', label: '工单编码', width: 150 },
 	{

+ 1 - 1
src/views/statistics/department/detailOverdue.vue

@@ -92,7 +92,7 @@ const columns = ref<any[]>([
 	{ prop: 'actualHandleOrgName', label: '接办部门', width: 170 },
 	{ prop: 'acceptType', label: '受理类型', width: 150 },
 	{ prop: 'counterSignTypeText', label: '是否会签' },
-	{ prop: 'sourceChannel', label: '来源方式' },
+	{ prop: 'sourceChannel', label: '来源渠道' },
 	{ prop: 'hotspotName', label: '热点分类', width: 100 },
 	{ prop: 'acceptorName', label: '受理人', width: 170 },
 	{ prop: 'operation', label: '操作', fixed: 'right', width: 100, align: 'center' },

+ 1 - 1
src/views/statistics/department/detailOverdueList.vue

@@ -135,7 +135,7 @@ const columns = ref<any[]>([
     },
   },
   { prop: 'title', label: '工单标题', width: 300 },
-  { prop: 'sourceChannel', label: '来源方式', width: 120 },
+  { prop: 'sourceChannel', label: '来源渠道', width: 120 },
   { prop: 'daysOverdueOrgName', label: '超期部门', width: 150 },
   {
     prop: 'filedTime',

+ 1 - 1
src/views/statistics/department/detailSatisfied.vue

@@ -45,7 +45,7 @@ const columns = ref<any[]>([
 	{ prop: 'order.no', label: '工单编码', width: 150 },
 	{ prop: 'order.isProvinceText', label: '省/市工单', width: 100 },
 	{ prop: 'order.title', label: '工单标题', width: 300 },
-	{ prop: 'order.sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'order.sourceChannel', label: '来源渠道', width: 100 },
 	{ prop: 'orderVisit.visitStateText', label: '回访状态', width: 100 },
 	{ prop: 'orderVisit.visitTypeText', label: '回访方式', width: 100 },
 	{ prop: 'order.acceptType', label: '受理类型', width: 150 },

+ 1 - 1
src/views/statistics/department/detailSh.vue

@@ -39,7 +39,7 @@ const proTableRef = ref<RefType>(); // 表格ref
 const columns = ref<any[]>([
 	{ prop: 'order.expiredStatusText', label: '超期状态', align: 'center', width: 80, fixed: 'left' },
 	{ prop: 'order.statusText', label: '工单状态', width: 100 },
-	{ prop: 'order.sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'order.sourceChannel', label: '来源渠道', width: 100 },
 	{ prop: 'order.actualHandleStepName', label: '当前节点', width: 120 },
 	{ prop: 'order.reTransactNum', label: '重办次数' },
 	{ prop: 'order.no', label: '工单编码', width: 150 },

+ 1 - 1
src/views/statistics/department/detailShSatisfied.vue

@@ -39,7 +39,7 @@ const proTableRef = ref<RefType>(); // 表格ref
 const columns = ref<any[]>([
 	{ prop: 'order.expiredStatusText', label: '超期状态', align: 'center', width: 80, fixed: 'left' },
 	{ prop: 'order.statusText', label: '工单状态', width: 100 },
-	{ prop: 'order.sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'order.sourceChannel', label: '来源渠道', width: 100 },
 	{ prop: 'order.actualHandleStepName', label: '当前节点', width: 120 },
 	{ prop: 'order.reTransactNum', label: '重办次数' },
 	{ prop: 'order.no', label: '工单编码', width: 150 },

+ 1 - 1
src/views/statistics/department/unSigned.vue

@@ -97,7 +97,7 @@ const proTableRef = ref<RefType>(); // 表格ref
 const columns = ref<any[]>([
   { prop: 'order.expiredStatusText', label: '超期状态', align: 'center',width: 90,fixed:'left',},
   { prop: 'order.statusText', label: '工单状态', width: 100 },
-  { prop: 'order.sourceChannel', label: '来源方式', width: 120 },
+  { prop: 'order.sourceChannel', label: '来源渠道', width: 120 },
   { prop: 'order.actualHandleStepName', label: '当前节点', width: 120 },
   { prop: 'order.no', label: '工单编码', width: 150 },
 

+ 1 - 1
src/views/statistics/order/detailAcceptType.vue

@@ -92,7 +92,7 @@ const columns = ref<any[]>([
 	{ prop: 'actualHandleOrgName', label: '接办部门', width: 170 },
 	{ prop: 'acceptType', label: '受理类型', width: 150 },
 	{ prop: 'counterSignTypeText', label: '是否会签', width: 100 },
-	{ prop: 'sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'sourceChannel', label: '来源渠道', width: 100 },
 	{ prop: 'hotspotName', label: '热点分类', width: 200 },
 	{ prop: 'tagNames', label: '工单标签', width: 200 },
 	{ prop: 'acceptorName', label: '受理人', width: 120 },

+ 1 - 1
src/views/statistics/order/detailDispatch.vue

@@ -68,7 +68,7 @@ const columns = ref<any[]>([
     },
   },
   { prop: 'acceptType', label: '受理类型', width: 120 },
-  { prop: 'sourceChannel', label: '来源方式' },
+  { prop: 'sourceChannel', label: '来源渠道' },
   { prop: 'hotspotName', label: '热点分类', width: 200 },
   { prop: 'operation', label: '操作', fixed: 'right', width: 100, align: 'center' },
 ]);

+ 12 - 3
src/views/statistics/order/detailSource.vue

@@ -141,9 +141,18 @@ const queryList = async () => {
 	}
 };
 // 列设置更新 列更新后需要重新计算小计
-const updateColSetting = (exportNewColumns) => {
-    // 更新列设置后 需要计算展示的列的小计
-
+const updateColSetting = () => {
+	// 更新列设置后 需要计算展示的列的小计
+	// 获取columns.value中isShow为true的行 并且计算小计
+/*	for (let i of state.tableData) {
+		i.subtotal = 0;
+		for (let j of columns.value) {
+			if (j.isShow && !['Hour', 'subtotal'].includes(j.prop)) {
+				// 计算的时候不计算日期和小计
+				i.subtotal += i[j.prop];
+			}
+		}
+	}*/
 };
 /** 重置按钮操作 */
 const resetQuery = (formEl: FormInstance | undefined) => {

+ 1 - 1
src/views/statistics/order/detailSourceOrder.vue

@@ -55,7 +55,7 @@ const proTableRef = ref<RefType>(); // 表格ref
 const columns = ref<any[]>([
 	{ prop: 'expiredStatusText', label: '超期状态', align: 'center', width: 80, fixed: 'left' },
 	{ prop: 'statusText', label: '工单状态', width: 100 },
-	{ prop: 'sourceChannel', label: '来源方式' },
+	{ prop: 'sourceChannel', label: '来源渠道' },
 	{ prop: 'actualHandleStepName', label: '当前节点', width: 120 },
 	{ prop: 'reTransactNum', label: '重办次数' },
 	{ prop: 'no', label: '工单编码', width: 150 },

+ 1 - 1
src/views/statistics/order/specialTable.vue

@@ -95,7 +95,7 @@ const columns = ref<any[]>([
     },
   },
   { prop: 'order.acceptType', label: '受理类型', width: 120 },
-  { prop: 'order.sourceChannel', label: '来源方式' },
+  { prop: 'order.sourceChannel', label: '来源渠道' },
   { prop: 'order.hotspotName', label: '热点分类', width: 200 },
   { prop: 'operation', label: '操作', fixed: 'right', width: 170, align: 'center' },
 ]);

+ 1 - 1
src/views/statistics/order/visitTable.vue

@@ -29,7 +29,7 @@
 						<span class="color-primary">{{ row.order?.title }}</span>
 					</template>
 				</el-table-column>
-				<el-table-column prop="order.sourceChannel" label="来源方式" show-overflow-tooltip></el-table-column>
+				<el-table-column prop="order.sourceChannel" label="来源渠道" show-overflow-tooltip></el-table-column>
 				<el-table-column prop="orderVisit.visitTypeText" label="回访方式" show-overflow-tooltip width="100"></el-table-column>
 				<el-table-column prop="order.acceptType" label="受理类型" show-overflow-tooltip width="120"></el-table-column>
 				<el-table-column prop="order.hotspotName" label="热点分类" show-overflow-tooltip width="200"></el-table-column>

+ 2 - 2
src/views/tels/callLog/component/Connect-business.vue

@@ -103,7 +103,7 @@ const orderColumns = [
 	{ prop: 'actualHandleOrgName', label: '接办部门', width: 170 },
 	{ prop: 'acceptType', label: '受理类型', width: 150 },
 	{ prop: 'counterSignTypeText', label: '是否会签', width: 100 },
-	{ prop: 'sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'sourceChannel', label: '来源渠道', width: 100 },
 	{ prop: 'hotspotName', label: '热点分类', width: 200 },
 	{ prop: 'acceptorName', label: '受理人', width: 120 },
 ];
@@ -112,7 +112,7 @@ const visitColumns = [
 	{ prop: 'order.no', label: '工单编码', width: 150 },
 	{ prop: 'order.isProvince', label: '省/市工单', width: 100, render: (scope: any) => (scope.row.order?.isProvince ? '省工单' : '市工单') },
 	{ prop: 'order.title', label: '工单标题', width: 300 },
-	{ prop: 'order.sourceChannel', label: '来源方式' },
+	{ prop: 'order.sourceChannel', label: '来源渠道' },
 	{ prop: 'visitStateText', label: '回访状态', width: 100 },
 	{ prop: 'visitTypeText', label: '回访方式', width: 100 },
 	{ prop: 'order.acceptType', label: '受理类型', width: 120 },

+ 1 - 1
src/views/todo/center/index.vue

@@ -255,7 +255,7 @@ const columns = ref<any[]>([
 	{ prop: 'actualHandleOrgName', label: '接办部门', width: 170 },
 	{ prop: 'acceptType', label: '受理类型', width: 150 },
 	{ prop: 'counterSignTypeText', label: '是否会签', width: 100 },
-	{ prop: 'sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'sourceChannel', label: '来源渠道', width: 100 },
 	{ prop: 'hotspotName', label: '热点分类', width: 200 },
 	{
 		prop: 'sensitive',

+ 2 - 32
src/views/todo/order/index.vue

@@ -180,21 +180,6 @@ const columnsTodo = [
 	{ prop: 'actualHandleStepName', label: '办理节点', width: 150 },
 	{ prop: 'statusText', label: '工单状态', width: 100 },
 	{ prop: 'title', label: '工单标题', width: 300 },
-/*  {
-    prop: 'isUrgentText',
-    label: '退回不通过原因',
-    render: (scope) => {
-      return <span class="color-danger font-bold">{scope.row.isUrgentText}</span>;
-    },
-  },
-  {
-    prop: 'creationTime',
-    label: '退回审批时间',
-    width: 170,
-    render: (scope) => {
-      return <span>{formatDate(scope.row.creationTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
-    },
-  },*/
 	{ prop: 'counterSignTypeText', label: '是否会签', width: 100 },
 	{
 		prop: 'creationTime',
@@ -221,7 +206,7 @@ const columnsTodo = [
 		},
 	},
 	{ prop: 'acceptType', label: '受理类型', width: 150 },
-	{ prop: 'sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'sourceChannel', label: '来源渠道', width: 100 },
 	{ prop: 'hotspotName', label: '热点分类', width: 200 },
 	{ prop: 'acceptorName', label: '受理人', width: 120 },
 	{
@@ -246,21 +231,6 @@ const columnsDone = [
 	{ prop: 'actualHandleStepName', label: '办理节点', width: 150 },
 	{ prop: 'statusText', label: '工单状态', width: 100 },
 	{ prop: 'title', label: '工单标题', width: 300 },
-/*  {
-    prop: 'isUrgentText',
-    label: '退回不通过原因',
-    render: (scope) => {
-      return <span class="color-danger font-bold">{scope.row.isUrgentText}</span>;
-    },
-  },
-  {
-    prop: 'creationTime',
-    label: '退回审批时间',
-    width: 170,
-    render: (scope) => {
-      return <span>{formatDate(scope.row.creationTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
-    },
-  },*/
 	{ prop: 'counterSignTypeText', label: '是否会签', width: 100 },
 	{
 		prop: 'creationTime',
@@ -289,7 +259,7 @@ const columnsDone = [
 	{ prop: 'orgLevelOneName', label: '一级部门', width: 150 },
 	{ prop: 'actualHandleOrgName', label: '接办部门', width: 150 },
 	{ prop: 'acceptType', label: '受理类型', width: 150 },
-	{ prop: 'sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'sourceChannel', label: '来源渠道', width: 100 },
 	{ prop: 'hotspotName', label: '热点分类', width: 200 },
 	{ prop: 'acceptorName', label: '受理人', width: 120 },
 	{

+ 1 - 1
src/views/todo/seats/accept/Copy.vue

@@ -55,7 +55,7 @@
 								</el-form-item>
 							</el-col>
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
-								<el-form-item label="来源方式"> {{ state.ruleForm.sourceChannel }} </el-form-item>
+								<el-form-item label="来源渠道"> {{ state.ruleForm.sourceChannel }} </el-form-item>
 							</el-col>
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
 								<el-form-item label="受理类型"> {{ state.ruleForm.acceptType }} </el-form-item>

+ 0 - 1
src/views/todo/seats/accept/index.vue

@@ -220,7 +220,6 @@
 										</el-row>
 									</el-form-item>
 								</el-col>
-								<!-- 当“来电/信人身份”为“企业”时必填 -->
 								<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
 									<el-form-item label="企业名称" prop="enterpriseName" :rules="[{ required: false, message: '请填写企业名称', trigger: 'blur' }]">
 										<el-input v-model="state.ruleForm.enterpriseName" placeholder="请填写企业名称" clearable> </el-input>

+ 2 - 2
src/views/todo/seats/index.vue

@@ -197,7 +197,7 @@ const columnsTodo = [
 		},
 	},
 	{ prop: 'acceptType', label: '受理类型', width: 150 },
-	{ prop: 'sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'sourceChannel', label: '来源渠道', width: 100 },
 	{ prop: 'hotspotName', label: '热点分类', width: 200 },
 	{ prop: 'acceptorName', label: '受理人', width: 120 },
 	{
@@ -243,7 +243,7 @@ const columnsDone = [
 	{ prop: 'orgLevelOneName', label: '一级部门', width: 150 },
 	{ prop: 'actualHandleOrgName', label: '接办部门', width: 150 },
 	{ prop: 'acceptType', label: '受理类型', width: 150 },
-	{ prop: 'sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'sourceChannel', label: '来源渠道', width: 100 },
 	{ prop: 'hotspotName', label: '热点分类', width: 200 },
 	{ prop: 'acceptorName', label: '受理人', width: 120 },
 	{