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

reactor:492 市州通用-【部门满意度明细】增加字段和对应查询条件

zhangchong 2 долоо хоног өмнө
parent
commit
4e14b6a0ca

+ 1 - 1
.env.development

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

+ 66 - 17
src/views/business/visit/dpSatisfied.vue

@@ -87,6 +87,11 @@
 							<order-detail :order="{ ...row, id: row.orderId }" @updateList="handleQuery">{{ row.title }}</order-detail>
 						</template>
 					</vxe-column>
+					<vxe-column field="orderTag" title="工单标签" width="120" v-if="['ZiGong', 'LuZhou'].includes(themeConfig.appScope)"></vxe-column>
+					<vxe-column field="sourceChannel" title="来源渠道" width="120"></vxe-column>
+					<vxe-column field="acceptType" title="受理类型" width="120"></vxe-column>
+					<vxe-column field="orgNoSatisfiedReasonText" title="不满意原因" width="120"></vxe-column>
+					<vxe-column field="area" title="事发地址" width="120"></vxe-column>
 					<vxe-column field="visitUser" title="回访人" width="120"></vxe-column>
 					<vxe-column field="visitOrgName" title="回访部门" width="140"></vxe-column>
 					<vxe-column field="visitTypeText" title="回访方式" width="110"></vxe-column>
@@ -142,6 +147,34 @@
 						:default-time="defaultTimeStartEnd"
 					/>
 				</el-form-item>
+				<el-form-item label="来源渠道" prop="SourceChannelCode">
+					<el-select v-model="state.queryParams.SourceChannelCode" placeholder="请选择来源渠道" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in state.channelOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="受理类型" prop="AcceptTypeCode">
+					<el-select v-model="state.queryParams.AcceptTypeCode" placeholder="请选择受理类型" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in state.acceptTypeOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="不满意原因" prop="OrgNoSatisfiedReason">
+					<el-select v-model="state.queryParams.OrgNoSatisfiedReason" placeholder="请选择不满意原因" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in state.dissatisfiedReason" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="事发地址" prop="AreaCode">
+					<el-cascader
+						:options="state.areaOptions"
+						filterable
+						:props="{ checkStrictly: true, value: 'id', label: 'areaName', emitPath: false }"
+						placeholder="请选择事发地址"
+						clearable
+						v-model="state.queryParams.AreaCode"
+						@change="handleQuery"
+						class="w100"
+					>
+					</el-cascader>
+				</el-form-item>
 				<el-form-item label="回访人姓名" prop="VisitUser">
 					<el-input v-model="state.queryParams.VisitUser" placeholder="回访人姓名" clearable @keyup.enter="handleQuery" />
 				</el-form-item>
@@ -196,19 +229,19 @@
 						<el-option :value="2" label="企业" />
 					</el-select>
 				</el-form-item>
-        <el-form-item label="工单标签" prop="OrderTagCode" v-if="['ZiGong', 'LuZhou'].includes(themeConfig.appScope)">
-          <el-cascader
-              :options="state.orderTagOptions"
-              filterable
-              :props="{ value: 'dicDataValue', label: 'dicDataName', emitPath: false, checkStrictly: true }"
-              placeholder="请选择工单标签"
-              class="w100"
-              v-model="state.queryParams.OrderTagCode"
-              @change="handleQuery"
-              clearable
-          >
-          </el-cascader>
-        </el-form-item>
+				<el-form-item label="工单标签" prop="OrderTagCode" v-if="['ZiGong', 'LuZhou'].includes(themeConfig.appScope)">
+					<el-cascader
+						:options="state.orderTagOptions"
+						filterable
+						:props="{ value: 'dicDataValue', label: 'dicDataName', emitPath: false, checkStrictly: true }"
+						placeholder="请选择工单标签"
+						class="w100"
+						v-model="state.queryParams.OrderTagCode"
+						@change="handleQuery"
+						clearable
+					>
+					</el-cascader>
+				</el-form-item>
 			</el-form>
 			<template #footer>
 				<el-button type="primary" @click="handleQuery" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
@@ -228,6 +261,7 @@ import { exportAssignment } from '@/utils/tools';
 import { useThemeConfig } from '@/stores/themeConfig';
 import { storeToRefs } from 'pinia';
 import { visitDepartmentSatisfactionList, visitDepartmentSatisfactionListExport } from '@/api/business/visit';
+import { treeArea } from '@/api/auxiliary/area';
 
 // 引入组件
 const VisitDetailCom = defineAsyncComponent(() => import('@/views/business/visit/components/Visit-detail.vue')); // 回访
@@ -260,14 +294,23 @@ const state = reactive<any>({
 		SortRule: null,
 		LevelOneOrg: null,
 		VisitType: null,
-    OrderTagCode:null,
+		OrderTagCode: null,
+		SourceChannelCode: null, // 来源渠道
+		AcceptTypeCode: null, // 受理类型
+		OrgNoSatisfiedReason: null, // 不满意原因
+		AreaCode: null, // 区域
 	},
 	tableData: [], //表单
 	loading: false, // 加载
 	total: 0, // 总数
 	attitudeType: [],
-	visitType: [],
-  orderTagOptions: [], // 工单标签
+	channelOptions: [], // 来源渠道
+	acceptTypeOptions: [], // 受理类型
+	dissatisfiedReason: [], // 不满意原因
+	visitSatisfaction: [], // 办件结果
+	visitMananer: [], // 办件态度
+	orderTagOptions: [], // 工单标签
+	areaOptions: [], // 省市区数据
 });
 // 排序
 const sortChange = (val: any) => {
@@ -334,12 +377,18 @@ const getBaseData = async () => {
 			visitSatisfaction: 'visitSatisfaction',
 			orgsOptions: 'orgsOptions',
 			attitudeType: 'attitudeType',
+			channelOptions: 'channelOptions',
+			visitMananer: 'visitMananer',
+			orderTagOptions: 'orderTags',
 			visitType: 'visitType',
-      orderTagOptions: 'orderTags',
+			acceptTypeOptions: 'acceptTypeOptions',
+			dissatisfiedReason: 'dissatisfiedReason',
 		};
 		for (const key in mappings) {
 			state[key] = res.result?.[mappings[key]] ?? [];
 		}
+		const area = await treeArea();
+		state.areaOptions = area?.result ?? []; //省市区数据
 	} catch (error) {
 		console.log(error);
 	}

+ 45 - 1
src/views/statistics/department/dpSatisfied.vue

@@ -89,6 +89,10 @@
 						</template>
 					</vxe-column>
 					<vxe-column field="orderTag" title="工单标签" width="120" v-if="['ZiGong', 'LuZhou'].includes(themeConfig.appScope)"></vxe-column>
+					<vxe-column field="sourceChannel" title="来源渠道" width="120"></vxe-column>
+					<vxe-column field="acceptType" title="受理类型" width="120"></vxe-column>
+					<vxe-column field="orgNoSatisfiedReasonText" title="不满意原因" width="120"></vxe-column>
+					<vxe-column field="area" title="事发地址" width="120"></vxe-column>
 					<vxe-column field="visitUser" title="回访人" width="120"></vxe-column>
 					<vxe-column field="visitOrgName" title="回访部门" width="140"></vxe-column>
 					<vxe-column field="visitTypeText" title="回访方式" width="110"></vxe-column>
@@ -221,6 +225,34 @@
 						<el-option :value="false" label="市工单" />
 					</el-select>
 				</el-form-item>
+				<el-form-item label="来源渠道" prop="SourceChannelCode">
+					<el-select v-model="state.queryParams.SourceChannelCode" placeholder="请选择来源渠道" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in state.channelOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="受理类型" prop="AcceptTypeCode">
+					<el-select v-model="state.queryParams.AcceptTypeCode" placeholder="请选择受理类型" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in state.acceptTypeOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="不满意原因" prop="OrgNoSatisfiedReason">
+					<el-select v-model="state.queryParams.OrgNoSatisfiedReason" placeholder="请选择不满意原因" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in state.dissatisfiedReason" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="事发地址" prop="AreaCode">
+					<el-cascader
+						:options="state.areaOptions"
+						filterable
+						:props="{ checkStrictly: true, value: 'id', label: 'areaName', emitPath: false }"
+						placeholder="请选择事发地址"
+						clearable
+						v-model="state.queryParams.AreaCode"
+						@change="handleQuery"
+						class="w100"
+					>
+					</el-cascader>
+				</el-form-item>
 				<el-form-item label="回访内容" prop="ContentRetrieval">
 					<el-input v-model="state.queryParams.ContentRetrieval" placeholder="回访内容" clearable @keyup.enter="handleQuery" />
 				</el-form-item>
@@ -268,6 +300,7 @@ import Other from '@/utils/other';
 import { exportAssignment } from '@/utils/tools';
 import { useThemeConfig } from '@/stores/themeConfig';
 import { storeToRefs } from 'pinia';
+import { treeArea } from '@/api/auxiliary/area';
 
 // 引入组件
 const VisitDetailCom = defineAsyncComponent(() => import('@/views/business/visit/components/Visit-detail.vue')); // 回访
@@ -308,15 +341,22 @@ const state = reactive<any>({
 		VisitType: null,
 		ActualHandleOrgName: null,
 		IsScreen: null, // 是否甄别
+		SourceChannelCode:null, // 来源渠道
+		AcceptTypeCode:null, // 受理类型
+		OrgNoSatisfiedReason:null, // 不满意原因
+		AreaCode:null, // 区域
 	},
 	tableData: [], //表单
 	loading: false, // 加载
 	total: 0, // 总数
 	attitudeType: [],
-	channelOptions: [],
+	channelOptions: [], // 来源渠道
+	acceptTypeOptions:[], // 受理类型
+	dissatisfiedReason:[], // 不满意原因
 	visitSatisfaction: [], // 办件结果
 	visitMananer: [], // 办件态度
 	orderTagOptions: [], // 工单标签
+	areaOptions: [], // 省市区数据
 });
 // 排序
 const sortChange = (val: any) => {
@@ -396,10 +436,14 @@ const getBaseData = async () => {
 			visitMananer: 'visitMananer',
 			orderTagOptions: 'orderTags',
 			visitType: 'visitType',
+			acceptTypeOptions:'acceptTypeOptions',
+			dissatisfiedReason:'dissatisfiedReason',
 		};
 		for (const key in mappings) {
 			state[key] = res.result?.[mappings[key]] ?? [];
 		}
+		const area = await treeArea();
+		state.areaOptions = area?.result ?? []; //省市区数据
 	} catch (error) {
 		console.log(error);
 	}