Selaa lähdekoodia

reactor:522 在【数据统计->知识库统计】目录下新增【超期未更新统计】菜单;525 延期列表菜单的更多查询中“当前节点”改为下拉选择

zhangchong 3 päivää sitten
vanhempi
commit
1cd371b404

+ 25 - 0
src/api/statistics/knowledge.ts

@@ -63,4 +63,29 @@ export const centerKnowledgeTypeQuery = (params: object) => {
         method: 'get',
         params,
     });
+}
+/**
+ * @description 知识库超期未更新统计
+ * @param {object} params
+ */
+export const knowledgeOverdue = (params: object) => {
+    return request({
+        url: `/api/v1/KnowledgeCommon/get-know-overdue-statistics-list`,
+        method: 'get',
+        params,
+    });
+}
+/**
+ * @description 知识库超期未更新统计 导出
+ * @param {object} data
+ */
+export const knowledgeOverdueExport = (data: object) => {
+    return request({
+        url: `/api/v1/KnowledgeCommon/get-know-overdue-statistics-list-export`,
+        method: 'post',
+        data,
+        responseType: 'blob',
+    }, {
+        reduce_data_format: false
+    });
 }

+ 8 - 5
src/views/business/delay/index.vue

@@ -190,10 +190,9 @@
 					</el-select>
 				</el-form-item>
 				<el-form-item label="当前节点" prop="CurrentStepName">
-					<!--					<el-select v-model="state.queryParams.CurrentStepName" placeholder="当前节点" @change="handleQuery" clearable>
-						<el-option v-for="item in state.visitTypeOptions" :value="item.key" :key="item.key" :label="item.value" />
-					</el-select>-->
-					<el-input v-model.trim="state.queryParams.CurrentStepName" placeholder="当前节点" clearable @keyup.enter="handleQuery" />
+					<el-select v-model="state.queryParams.CurrentStepName" placeholder="请选择当前节点" @change="handleQuery" clearable>
+						<el-option v-for="item in delayStatisticalNodes" :value="item.key" :key="item.key" :label="item.value" />
+					</el-select>
 				</el-form-item>
 				<el-form-item label="审批人" prop="ActualHandlerName">
 					<el-input v-model.trim="state.queryParams.ActualHandlerName" placeholder="审批人" clearable @keyup.enter="handleQuery" />
@@ -218,7 +217,9 @@
 			</el-form>
 			<template #footer>
 				<el-button type="primary" @click="handleQuery" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
-				<el-button @click="resetQuery(drawerRuleFormRef)" class="default-button"  :loading="state.loading"> <SvgIcon name="ele-Refresh" class="mr5" />重置 </el-button>
+				<el-button @click="resetQuery(drawerRuleFormRef)" class="default-button" :loading="state.loading">
+					<SvgIcon name="ele-Refresh" class="mr5" />重置
+				</el-button>
 			</template>
 		</el-drawer>
 	</div>
@@ -278,6 +279,7 @@ const delayStateOptions = ref<EmptyArrayType>([]); // 延期状态
 const queryDelayState = ref<EmptyArrayType>([]); // 延期状态快捷查询
 const acceptTypeOptions = ref<EmptyArrayType>([]); // 受理类型
 const channelOptions = ref<EmptyArrayType>([]); // 来源渠道
+const delayStatisticalNodes = ref<EmptyArrayType>([]); // 延期统计节点
 const getBaseData = async () => {
 	const res: any = await delayBaseData();
 	delayStateOptions.value = res.result?.delayState ?? [];
@@ -291,6 +293,7 @@ const getBaseData = async () => {
 		.sort((a, b) => a.value - b.value);
 	acceptTypeOptions.value = res.result?.acceptTypeOptions ?? [];
 	channelOptions.value = res.result?.channelOptions ?? [];
+	delayStatisticalNodes.value = res.result?.delayStatisticalNodes ?? [];
 };
 // 手动查询,将页码设置为1
 const handleQuery = () => {

+ 2 - 2
src/views/knowledge/retrieval/ZGRetrieval.vue

@@ -227,7 +227,7 @@
 					<el-divider />
 					<p class="flex-center-between">
 						<span>排名</span>
-						<span>搜索频率</span>
+						<span>阅读量</span>
 					</p>
 					<el-skeleton :loading="rightLoading" animated :rows="10">
 						<template #default>
@@ -241,7 +241,7 @@
 													<TextTooltip :content="item.title" placement="top" effect="dark" />
 												</el-text>
 											</p>
-											<span class="top10-items-num">{{ item.searchNum }}</span>
+											<span class="top10-items-num">{{ item.pageView }}</span>
 										</div>
 									</el-scrollbar>
 								</template>

+ 152 - 0
src/views/statistics/knowledge/overdue.vue

@@ -0,0 +1,152 @@
+<template>
+	<div class="statistics-knowledge-overdue-container layout-padding">
+		<div class="layout-padding-auto layout-padding-view pd20">
+			<vxe-grid v-bind="gridOptions" v-on="gridEvents" ref="gridRef">
+				<template #form>
+					<el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent inline>
+						<el-form-item prop="crTime" label="最近更新时间">
+							<statistical-time v-model="state.queryParams.crTime" @change="handleQuery" ref="statisticalTimeRef" :disabled="state.loading" />
+						</el-form-item>
+						<el-form-item label="部门名称" prop="Keyword">
+							<el-input v-model="state.queryParams.Keyword" placeholder="部门名称" clearable @keyup.enter="handleQuery" class="keyword-input" />
+						</el-form-item>
+						<el-form-item>
+							<el-button type="primary" @click="handleQuery" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
+							<el-button @click="resetQuery(ruleFormRef)" class="default-button" :loading="state.loading">
+								<SvgIcon name="ele-Refresh" class="mr5" />重置
+							</el-button>
+						</el-form-item>
+					</el-form>
+				</template>
+				<template #pager>
+					<pagination
+						@pagination="queryList"
+						:total="state.total"
+						v-model:current-page="state.queryParams.PageIndex"
+						v-model:page-size="state.queryParams.PageSize"
+						:disabled="state.loading"
+					/>
+				</template>
+			</vxe-grid>
+		</div>
+	</div>
+</template>
+<script setup lang="tsx" name="statisticsKnowledgeOverdue">
+import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
+import { FormInstance } from 'element-plus';
+import { defaultDate } from '@/utils/constants';
+import Other from '@/utils/other';
+import { knowledgeOverdue, knowledgeOverdueExport } from '@/api/statistics/knowledge';
+
+const StatisticalTime = defineAsyncComponent(() => import('@/components/StatisticalTime/index.vue')); // 日期类型选择组件
+const pagination = defineAsyncComponent(() => import('@/components/ProTable/components/Pagination.vue')); // 分页
+// 定义变量内容
+const ruleFormRef = ref<RefType>(); // 表单ref
+const state = reactive<any>({
+	queryParams: {
+		// 查询条件
+		PageIndex: 1,
+		PageSize: 20,
+		Keyword: null, // 关键词
+		crTime: defaultDate, // 时间默认今天开始到今天结束
+		SortField: null,
+		SortRule: null,
+	},
+	tableData: [], //表单
+	loading: false, // 加载
+	total: 0, // 总数
+});
+
+const requestParams = ref<EmptyObjectType>({});
+const gridOptions = reactive<any>({
+	loading: false,
+	border: true,
+	showOverflow: true,
+	columnConfig: {
+		resizable: true,
+	},
+	scrollY: {
+		enabled: true,
+		gt: 100,
+	},
+	sortConfig: {
+		remote: true,
+	},
+	toolbarConfig: {
+		zoom: true,
+		custom: true,
+		refresh: {
+			queryMethod: () => {
+				handleQuery();
+			},
+		},
+		tools: [{ toolRender: { name: 'exportCurrent' } }, { toolRender: { name: 'exportAll' } }],
+	},
+	customConfig: {
+		storage: true,
+	},
+	id: 'statisticsKnowledgeOverdue',
+	rowConfig: { isHover: true, height: 30, isCurrent: true, useKey: true },
+	height: 'auto',
+	columns: [
+		{
+			field: 'orgName',
+			title: '部门名称',
+		},
+		{
+			field: 'lastModificationTime',
+			title: '最近更新时间',
+			formatter: 'formatDate',
+		},
+	],
+	data: [],
+	params: {
+		exportMethod: knowledgeOverdueExport,
+		exportParams: requestParams,
+	},
+});
+const gridEvents = {
+	sortChange(val: any) {
+		state.queryParams.SortField = val.order ? val.field : null;
+		// 0 升序 1 降序
+		state.queryParams.SortRule = val.order ? (val.order == 'desc' ? 1 : 0) : null;
+		handleQuery();
+	},
+};
+/** 搜索按钮操作 */
+const handleQuery = () => {
+	state.queryParams.PageIndex = 1;
+	queryList();
+};
+/** 获取列表 */
+const queryList = () => {
+	state.loading = true;
+	gridOptions.loading = true;
+	requestParams.value = Other.deepClone(state.queryParams);
+	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');
+	knowledgeOverdue(requestParams.value)
+		.then((res: any) => {
+			gridOptions.data = res.result?.items ?? [];
+			state.total = res.result?.total ?? 0;
+			state.loading = false;
+			gridOptions.loading = false;
+		})
+		.catch(() => {
+			state.loading = false;
+			gridOptions.loading = false;
+		});
+};
+/** 重置按钮操作 */
+const statisticalTimeRef = ref<RefType>();
+const resetQuery = (formEl: FormInstance | undefined) => {
+	if (!formEl) return;
+	formEl.resetFields();
+	statisticalTimeRef.value.reset();
+	queryList();
+};
+onMounted(() => {
+	queryList();
+});
+</script>