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

reactor:首页通知公告替换为公告;

zhangchong 1 жил өмнө
parent
commit
a8d85ecb5d

+ 0 - 24
src/api/auxiliary/notice.ts

@@ -76,18 +76,6 @@ export const bulletinAddBaseData = (params?: object) => {
 		params,
 	});
 };
-/**
- * @description 查询公告开启参数
- * @param {object} params
- * @return {*}
- */
-export const workflowBulletinParams = (params?: object) => {
-	return request({
-		url: '/api/v1/Article/bulletin/startflow',
-		method: 'get',
-		params,
-	});
-};
 /**
  * @description 新增公告
  * @param {object} data
@@ -193,18 +181,6 @@ export const circularAddBaseData = (params?: object) => {
 		params,
 	});
 };
-/**
- * @description 查询通知开启参数
- * @param {object} params
- * @return {*}
- */
-export const workflowCircularParams = (params?: object) => {
-	return request({
-		url: '/api/v1/Article/circular/startflow',
-		method: 'get',
-		params,
-	});
-};
 /**
  * @description 通知详情
  * @param {string} id

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

@@ -171,205 +171,6 @@
 					</el-col>
 				</el-row>
 			</el-form>
-			<el-form :model="state.circularForm" label-width="110px" ref="circularFormRef" v-if="state.processType === '新增通知'">
-				<el-row :gutter="10">
-					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
-						<el-form-item label="通知类型" prop="circularObj" :rules="[{ required: true, message: '请选择通知类型型', trigger: 'change' }]">
-							<el-select
-								v-model="state.circularForm.circularObj"
-								placeholder="请选择通知类型型"
-								value-key="dicDataValue"
-								class="w100"
-								@change="
-									(e) => {
-										state.circularForm.circularTypeId = e.dicDataValue;
-										state.circularForm.circularTypeName = e.dicDataName;
-									}
-								"
-							>
-								<el-option v-for="item in circularTypeOptions" :value="item" :key="item.dicDataValue" :label="item.dicDataName" />
-							</el-select>
-						</el-form-item>
-					</el-col>
-					<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-						<el-form-item label="通知标题" prop="title" :rules="[{ required: true, message: '请输入通知标题', trigger: 'blur' }]">
-							<el-input v-model="state.circularForm.title" placeholder="请输入通知标题" clearable show-word-limit maxlength="200"></el-input>
-						</el-form-item>
-					</el-col>
-					<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-						<el-form-item label="必须阅读" prop="isMustRead" :rules="[{ required: true, message: '请选择必须阅读', trigger: 'change' }]">
-							<el-radio-group v-model="state.circularForm.isMustRead">
-								<el-radio :label="true">是</el-radio>
-								<el-radio :label="false">否</el-radio>
-							</el-radio-group>
-						</el-form-item>
-					</el-col>
-					<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-						<el-form-item label="失效时间" prop="lostEfficacyTime" :rules="[{ required: true, message: '请选择失效时间', trigger: 'change' }]">
-							<el-date-picker
-								v-model="state.circularForm.lostEfficacyTime"
-								type="datetime"
-								placeholder="请选择失效时间"
-								value-format="YYYY-MM-DD[T]HH:mm:ss"
-								class="w100"
-                :disabled-date="disabledDate"
-							/>
-						</el-form-item>
-					</el-col>
-					<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-						<el-form-item label="来源单位" prop="sourceOrgId" :rules="[{ required: true, message: '请选择来源单位', trigger: 'change' }]">
-							<el-cascader
-								:options="orgsOptions"
-								filterable
-								:props="{ value: 'id', label: 'name', emitPath: false, checkStrictly: true }"
-								placeholder="请选择来源单位"
-								class="w100"
-								v-model="state.circularForm.sourceOrgId"
-								ref="orgRef"
-								@change="changeOrg('circularForm')"
-							>
-							</el-cascader>
-						</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' }]">
-							<editor v-model:get-html="state.circularForm.content" placeholder="请输入通知内容" height="450px" />
-						</el-form-item>
-					</el-col>
-					<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-						<el-form-item label="通知对象" prop="circularType" :rules="[{ required: true, message: '请选择通知对象', trigger: 'change' }]">
-							<el-select v-model="state.circularForm.circularType" placeholder="请选择通知对象" class="w100">
-								<el-option v-for="item in circularTypeEnum" :value="item.key" :key="item.key" :label="item.value" />
-							</el-select>
-						</el-form-item>
-					</el-col>
-					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" v-if="state.circularForm.circularType === 1">
-						<el-divider content-position="left">
-							<span>选择通知人</span>
-						</el-divider>
-						<div class="flex-center-align mb10">
-							<el-input v-model="state.searchContent" placeholder="请输入搜索内容" class="w100">
-								<template #prefix>
-									<SvgIcon name="ele-Search" />
-								</template>
-							</el-input>
-						</div>
-						<el-table :data="tables" @selection-change="handleSelectionChange" max-height="500" ref="multipleTableRef" row-key="id">
-							<el-table-column type="selection" label="请选择" width="40" :reserve-selection="true" align="center" />
-							<el-table-column prop="name" label="姓名" show-overflow-tooltip width="170"></el-table-column>
-							<el-table-column prop="userName" label="账号" show-overflow-tooltip width="170"></el-table-column>
-							<el-table-column prop="organization.name" label="所属部门" show-overflow-tooltip width="190"></el-table-column>
-							<el-table-column prop="staffNo" label="工号" show-overflow-tooltip width="120"></el-table-column>
-							<el-table-column prop="organization.orgTypeText" label="部门类别" show-overflow-tooltip></el-table-column>
-							<template #empty>
-								<Empty />
-							</template>
-						</el-table>
-					</el-col>
-					<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12" v-if="state.circularForm.circularType === 2">
-						<el-form-item label="选择部门" prop="org" :rules="[{ required: true, message: '请选择部门', trigger: 'change' }]">
-							<!--								<el-tree-select-->
-							<!--									:props="{ label: 'name' }"-->
-							<!--									node-key="id"-->
-							<!--									class="w100"-->
-							<!--									ref="treeSelectRef"-->
-							<!--									v-model="state.circularForm.org"-->
-							<!--									:data="circularOrgOptions"-->
-							<!--									multiple-->
-							<!--									:render-after-expand="false"-->
-							<!--									show-checkbox-->
-							<!--									check-strictly-->
-							<!--									default-expand-all-->
-							<!--									filterable-->
-							<!--									@check="selectOrg"-->
-							<!--									collapse-tags-->
-							<!--									collapse-tags-tooltip-->
-							<!--									placeholder="请选择部门"-->
-							<!--								/>-->
-							<el-cascader
-								:options="circularOrgOptions"
-								filterable
-								:props="{ value: 'id', label: 'name', emitPath: false, multiple: true }"
-								placeholder="请选择部门"
-								class="w100"
-								v-model="state.circularForm.org"
-								ref="treeSelectRef"
-								collapse-tags
-								collapse-tags-tooltip
-								:max-collapse-tags="3"
-								@change="selectOrg"
-							>
-							</el-cascader>
-						</el-form-item>
-					</el-col>
-				</el-row>
-			</el-form>
-			<el-form :model="state.bulletinForm" label-width="110px" ref="bulletinFormRef" v-if="state.processType === '新增公告'">
-				<el-row :gutter="10">
-					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
-						<el-form-item label="公告类型" prop="bulletinObj" :rules="[{ required: true, message: '请选择公告类型', trigger: 'change' }]">
-							<el-select
-								v-model="state.bulletinForm.bulletinObj"
-								placeholder="请选择公告类型"
-								value-key="dicDataValue"
-								class="w100"
-								@change="
-									(e) => {
-										state.bulletinForm.bulletinTypeId = e.dicDataValue;
-										state.bulletinForm.bulletinTypeName = e.dicDataName;
-									}
-								"
-							>
-								<el-option v-for="item in bulletinTypeOptions" :value="item" :key="item.dicDataValue" :label="item.dicDataName" />
-							</el-select>
-						</el-form-item>
-					</el-col>
-					<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-						<el-form-item label="公告标题" prop="title" :rules="[{ required: true, message: '请输入公告标题', trigger: 'blur' }]">
-							<el-input v-model="state.bulletinForm.title" placeholder="请输入公告标题" clearable show-word-limit maxlength="200"></el-input>
-						</el-form-item>
-					</el-col>
-					<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-						<el-form-item label="失效时间" prop="loseEfficacyTime" :rules="[{ required: true, message: '请选择失效时间', trigger: 'change' }]">
-							<el-date-picker
-								v-model="state.bulletinForm.loseEfficacyTime"
-								type="datetime"
-								placeholder="请选择失效时间"
-								value-format="YYYY-MM-DD[T]HH:mm:ss"
-								class="w100"
-                :disabled-date="disabledDate"
-							/>
-						</el-form-item>
-					</el-col>
-					<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-						<el-form-item label="来源单位" prop="sourceOrgId" :rules="[{ required: true, message: '请选择来源单位', trigger: 'change' }]">
-							<el-cascader
-								:options="orgsOptions"
-								filterable
-								:props="{ value: 'id', label: 'name', emitPath: false, checkStrictly: true }"
-								placeholder="请选择来源单位"
-								class="w100"
-								v-model="state.bulletinForm.sourceOrgId"
-								ref="orgRef"
-								@change="changeOrg('bulletinForm')"
-							>
-							</el-cascader>
-						</el-form-item>
-					</el-col>
-					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
-						<el-form-item label="公告范围" prop="pushRangesArray" :rules="[{ required: true, message: '请选择公告范围', trigger: 'change' }]">
-							<el-checkbox-group v-model="state.bulletinForm.pushRangesArray">
-								<el-checkbox :label="item" v-for="item in pushRangesOptions" :key="item.dicDataValue">{{ item.dicDataName }}</el-checkbox>
-							</el-checkbox-group>
-						</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' }]">
-							<editor v-model:get-html="state.bulletinForm.content" placeholder="请输入公告内容" height="450px" />
-						</el-form-item>
-					</el-col>
-				</el-row>
-			</el-form>
 		</div>
 
 		<el-form :model="state.ruleForm" label-width="110px" ref="ruleFormRef" v-show="activeStep === 1" v-loading="state.loading">
@@ -566,15 +367,6 @@ import { redoApply, redoBaseData } from '/@/api/business/redo';
 import { delayApply, delayBaseData, delayCalcEndTime, workflowDelayParams } from '/@/api/business/delay';
 import { discernApply, screenBaseData, workflowDiscernParams } from '/@/api/business/discern';
 import { debounce } from '/@/utils/tools';
-import {
-	bulletinAdd,
-	bulletinAddBaseData,
-	circularAdd,
-	circularAddBaseData,
-	getAllUsers,
-	workflowBulletinParams,
-	workflowCircularParams,
-} from '/@/api/auxiliary/notice';
 import {
 	KnowledgeAdd,
 	KnowledgeAddStartFlowParams,
@@ -620,33 +412,6 @@ const state = reactive<any>({
 		// 重办表单
 		content: '', // 重办理由
 	},
-	circularForm: {
-		// 通知表单
-		circularObj: '', // 通知类型
-		circularTypeId: '', // 通知类型
-		circularTypeName: '', // 通知类型
-		title: '', // 通知标题
-		isMustRead: false, // 必须阅读
-		lostEfficacyTime: '', // 失效时间
-		sourceOrgId: '', // 来源单位
-		content: '', // 文档内容
-		circularType: '', // 通知对象
-		sourceOrg: [], // 来源单位
-		org: [], // 通知对象 部门
-	},
-	searchContent: '', // 搜索内容
-	bulletinForm: {
-		// 公告表单
-		bulletinObj: '', // 公告类型
-		bulletinType: '', // 公告类型
-		bulletinTypeName: '', // 公告类型
-		title: '', // 公告标题
-		loseEfficacyTime: '', // 失效时间
-		sourceOrgId: '', // 来源单位
-		pushRangesArray: [], // 公告范围
-		content: '', // 文档内容
-		sourceOrg: [], // 来源单位
-	},
 	nextStepOptions: [], // 下一节点
 	handlerOptions: [], // 处理人
 	transform: 'translate(0px, 0px)', // 滚动条位置
@@ -665,20 +430,13 @@ const state = reactive<any>({
 const ruleFormRef = ref<RefType>(); //表单组件
 const storesUserInfo = useUserInfo();
 const { userInfos } = storeToRefs(storesUserInfo); // 用户信息
-const showStepsArr = ['延期申请', '甄别申请', '工单重办', '新增通知', '新增公告']; // 显示步骤条的流程
+const showStepsArr = ['延期申请', '甄别申请', '工单重办']; // 显示步骤条的流程
 const handelArr = ['工单办理']; // 处于办理状态的流程 (如果是汇总节点 需要填写处理人等  办理流程才有期满时间)
 const returnArr = ['工单退回']; // 退回流程 (退回流程不需要展示其他 只需要填写意见和附件即可)
 
 const timeType = ref<EmptyArrayType>([]); // 延期申请单位
 const orderRedoReasonOptions = ref<EmptyArrayType>([]); // 重办理由
 const screenTypeOptions = ref<EmptyArrayType>([]); // 甄别类型
-const bulletinTypeOptions = ref<EmptyArrayType>([]); // 公告类型
-const circularTypeOptions = ref<EmptyArrayType>([]); // 通知类型]
-const circularTypeEnum = ref<EmptyArrayType>([]); // 通知对象
-const pushRangesOptions = ref<EmptyArrayType>([]); // 公告范围
-const orgsOptions = ref<EmptyArrayType>([]); // 来源单位
-const circularOrgOptions = ref<EmptyArrayType>([]); // 通知对象 部门
-const userTables = ref<EmptyArrayType>([]); // 通知对象 个人
 const canReject = ref<boolean>(false); // 是否可以驳回
 const timeTypeOptions = ref<EmptyArrayType>([]); // 办理时限单位
 const canStartCountersign = ref<boolean>(false); // 是否可以发起会签
@@ -728,26 +486,6 @@ const openDialog = async (val: any) => {
 				const [workflowNextStepsResponse] = await Promise.all([workflowNextSteps(state.workflowId)]); // 获取下一节点和下一节点参数
 				handleResult(workflowNextStepsResponse);
 				break;
-			case '新增通知':
-				const [workflowCircularResponse, circularResponse, userResponse] = await Promise.all([
-					workflowCircularParams(),
-					circularAddBaseData(),
-					getAllUsers(),
-				]); // 新增通知开启流程参数
-				circularTypeOptions.value = circularResponse.result?.circularType ?? [];
-				orgsOptions.value = circularResponse.result?.orgsOptions ?? [];
-				circularTypeEnum.value = circularResponse.result?.circularTypeEnum ?? [];
-				circularOrgOptions.value = circularResponse.result?.orgsOptions ?? [];
-				userTables.value = userResponse.result ?? [];
-				handleResult(workflowCircularResponse);
-				break;
-			case '新增公告':
-				const [workflowBulletinResponse, responseAnnounce] = await Promise.all([workflowBulletinParams(), bulletinAddBaseData()]); // 新增公告开启流程参数
-				bulletinTypeOptions.value = responseAnnounce.result?.bulletinType ?? [];
-				pushRangesOptions.value = responseAnnounce.result?.pushRanges ?? [];
-				orgsOptions.value = responseAnnounce.result?.orgsOptions ?? [];
-				handleResult(workflowBulletinResponse);
-				break;
 			case '新增知识':
 				const [KnowledgeAddStartFlowResponse] = await Promise.all([KnowledgeAddStartFlowParams()]); // 知识库新增参数
 				handleResult(KnowledgeAddStartFlowResponse);
@@ -804,8 +542,6 @@ const onPrevious = () => {
 const delayFormRef = ref<RefType>(); //延期申请表单组件
 const discernFormRef = ref<RefType>(); //甄别申请表单组件
 const redoFormRef = ref<RefType>(); //重办表单组件
-const circularFormRef = ref<RefType>(); //通知表单组件
-const bulletinFormRef = ref<RefType>(); //公告表单组件
 // 下一步
 const onNext = () => {
 	switch (state.processType) {
@@ -827,18 +563,6 @@ const onNext = () => {
 				activeStep.value = 1;
 			});
 			break;
-		case '新增通知':
-			circularFormRef.value?.validate((valid: boolean) => {
-				if (!valid) return;
-				activeStep.value = 1;
-			});
-			break;
-		case '新增公告':
-			bulletinFormRef.value?.validate((valid: boolean) => {
-				if (!valid) return;
-				activeStep.value = 1;
-			});
-			break;
 		default: // 默认下一流程
 			activeStep.value = 1;
 			break;
@@ -998,45 +722,6 @@ const chooseAdviceDiscern = (item: any) => {
 const chooseAdviceRedo = (item: any) => {
 	state.redoForm.redoOpinion += item.content;
 };
-const orgRef = ref<RefType>(); //来源单位
-const changeOrg = (type: string) => {
-	const currentNode = orgRef.value.getCheckedNodes();
-	state[type].sourceOrgName = currentNode[0].label;
-};
-// 选择部门
-const treeSelectRef = ref<RefType>();
-const selectOrgArray = ref<EmptyArrayType>([]);
-const selectOrg = () => {
-	selectOrgArray.value = treeSelectRef.value.getCheckedNodes();
-};
-const tables = computed(() => {
-	// 模糊搜索
-	if (!state.searchContent) return userTables.value;
-	// filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
-	// 注意: filter() 不会对空数组进行检测。
-	// 注意: filter() 不会改变原始数组。
-	return userTables.value.filter((data: any) => {
-		// some() 方法用于检测数组中的元素是否满足指定条件;
-		// some() 方法会依次执行数组的每个元素:
-		// 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测;
-		// 如果没有满足条件的元素,则返回false。
-		// 注意: some() 不会对空数组进行检测。
-		// 注意: some() 不会改变原始数组。
-		return Object.keys(data).some((key) => {
-			// indexOf() 返回某个指定的字符在某个字符串中首次出现的位置,如果没有找到就返回-1;
-			// 该方法对大小写敏感!所以之前需要toLowerCase()方法将所有查询到内容变为小写。
-			return String(data[key]).toLowerCase().indexOf(state.searchContent) > -1;
-		});
-	});
-});
-// 选择用户(账号)
-const multipleSelection = ref<any[]>([]); // 选中的数据
-const multipleTableRef = ref<RefType>(); // 表格ref
-const handleSelectionChange = (row: any) => {
-	if (row) {
-		multipleSelection.value = row;
-	}
-};
 const afterSubmit = (emitType?: 'orderProcessSuccess' | 'orderProcessFailed', showMessage?: boolean) => {
 	state.loading = false;
 	closeDialog();
@@ -1048,8 +733,6 @@ const close = () => {
 	restForm(delayFormRef.value);
 	restForm(discernFormRef.value);
 	restForm(redoFormRef.value);
-	restForm(circularFormRef.value);
-	restForm(bulletinFormRef.value);
 };
 // 提交
 const annexListRef = ref<RefType>(); // 流程附件
@@ -1189,60 +872,6 @@ const onSubmit = (formEl: FormInstance | undefined) => {
 								afterSubmit('orderProcessFailed');
 							});
 						break;
-					case '新增通知':
-						if (state.circularForm.circularType === 1 && !multipleSelection.value.length) {
-							ElMessage.error('请选择通知人');
-							return;
-						}
-						let circularReadGroups: { userId: any; userName: any }[] | { orgId: any; orgName: any }[] = [];
-						if (state.circularForm.circularType === 1) {
-							//个人
-							circularReadGroups = multipleSelection.value.map((item: any) => {
-								return {
-									userId: item.id,
-									userName: item.name,
-								};
-							});
-						} else if (state.circularForm.circularType === 2) {
-							// 部门
-							circularReadGroups = selectOrgArray.value.map((item: any) => {
-								return {
-									orgId: item.id,
-									orgName: item.name,
-								};
-							});
-						}
-						const circularRequest = {
-							data: { ...state.circularForm, circularReadGroups },
-							workflow: { ...submitObj, files: annexListRef.value?.fileList },
-						};
-						circularAdd(circularRequest)
-							.then(() => {
-								afterSubmit('orderProcessSuccess', true);
-							})
-							.catch(() => {
-								afterSubmit('orderProcessFailed');
-							});
-						break;
-					case '新增公告':
-						const pushRanges = state.bulletinForm.pushRangesArray.map((item: any) => {
-							return {
-								key: item.dicDataValue,
-								value: item.dicDataName,
-							};
-						});
-						const bulletinRequest = {
-							data: { ...state.bulletinForm, pushRanges },
-							workflow: { ...submitObj, files: annexListRef.value?.fileList },
-						};
-						bulletinAdd(bulletinRequest)
-							.then(() => {
-								afterSubmit('orderProcessSuccess', true);
-							})
-							.catch(() => {
-								afterSubmit('orderProcessFailed');
-							});
-						break;
 					case '新增知识':
 						const KnowledgeAddRequest = {
 							data: { ...state.orderDetail },

+ 1 - 1
src/views/auxiliary/notice/detail.vue

@@ -98,7 +98,7 @@
 				type="primary"
 				@click="onAudit"
 				title="审批通知公告"
-				v-if="(state.ruleForm.circularState == 1 || state.ruleForm.bulletinState == 1) && isAudit"
+				v-if="(state.ruleForm?.circularState == 1 || state.ruleForm?.bulletinState == 1) && isAudit"
 			>
 				审批
 			</el-button>

+ 12 - 2
src/views/auxiliary/notice/index.vue

@@ -169,7 +169,7 @@
 </template>
 
 <script lang="ts" setup name="auxiliaryNotice">
-import {defineAsyncComponent, onMounted, reactive, ref} from 'vue';
+import {defineAsyncComponent, onActivated, onMounted, reactive, ref} from 'vue';
 import {useRouter} from 'vue-router';
 import {ElMessage, ElMessageBox, FormInstance} from 'element-plus';
 import {shortcuts} from '/@/utils/constants';
@@ -375,10 +375,20 @@ const multipleSelection = ref<any>([]);
 const handleSelectionChange = (val: any[]) => {
 	multipleSelection.value = val;
 };
+const params = history.state;
 // 页面加载时
 onMounted(() => {
 	getBaseData();
-	queryList();
+  if (params.index) {
+    listType.value = params.index as string;
+  }
+  queryList()
+});
+onActivated(() => {
+  if (params.index) {
+    listType.value = params.index as string;
+  }
+  queryList();
 });
 </script>
 <style lang="scss">

+ 137 - 132
src/views/home/component/Notice.vue

@@ -1,153 +1,158 @@
-
 <template>
-  <el-card shadow="never" class="mt20 right-notice" v-loading="state.noticeLoading">
-    <el-tabs v-model="activeName" class="demo-tabs" @tab-change="handleClick">
-      <el-tab-pane label="知识库" name="0"></el-tab-pane>
-      <el-tab-pane label="通知公告" name="1"></el-tab-pane>
-    </el-tabs>
-    <el-button type="primary" link @click="more(activeName)" class="more"> 更多<SvgIcon name="ele-ArrowRight" /> </el-button>
-    <template v-if="state.noticeList.length">
-      <vue3-seamless-scroll :list="state.noticeList" class="right-notice-scroll" :hover="true" :limitScrollNum="6">
-        <div class="right-notice-scroll-item" v-for="(item, index) in state.noticeList" :key="index">
-								<span class="right-notice-scroll-item-name text-no-wrap" @click="goLink(item)">
-									<SvgIcon name="ele-Reading" class="mr3" v-if="activeName === '0'"/>
-                  <SvgIcon name="iconfont icon-jiadayinliang" class="mr3" v-else/>
-									<span v-if="activeName === '0'">【{{ item.knowledgeTypeName }}】</span>
-									{{ item.title }}</span>
-          <span class="right-notice-scroll-item-date">{{ formatDate(item.creationTime, 'YYYY-mm-dd') }}
-									<SvgIcon name="ele-DArrowRight" class="ml5" />
-              </span>
-        </div>
-      </vue3-seamless-scroll>
-    </template>
-    <Empty v-else descriptionData="暂无通知公告" />
-  </el-card>
+	<el-card shadow="never" class="mt20 right-notice" v-loading="state.noticeLoading">
+		<el-tabs v-model="activeName" class="demo-tabs" @tab-change="handleClick">
+			<el-tab-pane label="知识库" name="0"></el-tab-pane>
+			<el-tab-pane label="公告" name="1"></el-tab-pane>
+		</el-tabs>
+		<el-button type="primary" link @click="more(activeName)" class="more"> 更多<SvgIcon name="ele-ArrowRight" /> </el-button>
+		<template v-if="state.noticeList.length">
+			<vue3-seamless-scroll :list="state.noticeList" class="right-notice-scroll" :hover="true" :limitScrollNum="6">
+				<div class="right-notice-scroll-item" v-for="(item, index) in state.noticeList" :key="index">
+					<span class="right-notice-scroll-item-name text-no-wrap" @click="goLink(item)">
+						<SvgIcon name="ele-Reading" class="mr3" v-if="activeName === '0'" />
+						<SvgIcon name="iconfont icon-jiadayinliang" class="mr3" v-else />
+						<span v-if="activeName === '0'">【{{ item.knowledgeTypeName }}】</span>
+						{{ item.title }}</span
+					>
+					<span class="right-notice-scroll-item-date"
+						>{{ formatDate(item.creationTime, 'YYYY-mm-dd') }}
+						<SvgIcon name="ele-DArrowRight" class="ml5" />
+					</span>
+				</div>
+			</vue3-seamless-scroll>
+		</template>
+		<Empty v-else descriptionData="暂无通知公告" />
+	</el-card>
 </template>
 <script setup lang="ts">
-import {onMounted, reactive, ref} from "vue";
+import { onMounted, reactive, ref } from 'vue';
 import { Vue3SeamlessScroll } from 'vue3-seamless-scroll';
-import {formatDate} from "/@/utils/formatTime";
-import {useRouter} from "vue-router";
-import {KnowledgePaged} from "/@/api/knowledge";
-import { muquery } from '/@/api/auxiliary/notice';
+import { formatDate } from '/@/utils/formatTime';
+import { useRouter } from 'vue-router';
+import { KnowledgePaged } from '/@/api/knowledge';
+import { bulletinList } from '/@/api/auxiliary/notice';
 const state = reactive({
-  noticeList: [], // 通知公告
-  noticeLoading: false, // 公告
+	noticeList: [], // 通知公告
+	noticeLoading: false, // 公告
 });
 
 const router = useRouter();
 const activeName = ref('0');
 // 知识库公告切换
 const handleClick = (val: string) => {
-  state.noticeLoading = true;
-  state.noticeList = [];
-  switch (val) {
-    case '0':
-      KnowledgePaged({ PageIndex: 1, PageSize: 10,Status:'3' })
-          .then((response: any) => {
-            state.noticeList = response?.result.items ?? [];
-            state.noticeLoading = false;
-          })
-          .catch(() => {
-            state.noticeLoading = false;
-          });
-      break;
-    case '1':
-      state.noticeLoading = false;
-      muquery({ PageIndex: 1, PageSize: 10,CircularState:'2' })
-          .then((response: any) => {
-            state.noticeList = response?.result.items ?? [];
-            state.noticeLoading = false;
-          })
-          .catch(() => {
-            state.noticeLoading = false;
-          });
-      break;
-    default:
-      break;
-  }
+	state.noticeLoading = true;
+	state.noticeList = [];
+	switch (val) {
+		case '0':
+			KnowledgePaged({ PageIndex: 1, PageSize: 10, Status: '3' })
+				.then((response: any) => {
+					state.noticeList = response?.result.items ?? [];
+					state.noticeLoading = false;
+				})
+				.catch(() => {
+					state.noticeLoading = false;
+				});
+			break;
+		case '1':
+			state.noticeLoading = false;
+			bulletinList({ PageIndex: 1, PageSize: 10, BulletinState: '2' })
+				.then((response: any) => {
+					state.noticeList = response?.result.items ?? [];
+					state.noticeLoading = false;
+				})
+				.catch(() => {
+					state.noticeLoading = false;
+				});
+			break;
+		default:
+			break;
+	}
 };
 // 知识库和通知公告详情
-const goLink = (item:any)=>{
-  switch (activeName.value) {
-    case '0':
-      router.push({
-        name: 'knowledgePreview',
-        params: {
-          id: item.id,
-          tagsViewName: '知识查看',
-        },
-      });
-      break;
-    case '1':
-      router.push({
-        name: 'auxiliaryNoticeDetail',
-        params: {
-          id: item.id,
-          isRead: 0,
-          tagsViewName:'通知详情',
-        },
-      });
-      break;
-  }
-}
+const goLink = (item: any) => {
+	switch (activeName.value) {
+		case '0':
+			router.push({
+				name: 'knowledgePreview',
+				params: {
+					id: item.id,
+					tagsViewName: '知识查看',
+				},
+			});
+			break;
+		case '1':
+			router.push({
+				name: 'auxiliaryNoticeDetail',
+				params: {
+					id: item.id,
+					isRead: 0,
+					tagsViewName: '公告详情',
+				},
+			});
+			break;
+	}
+};
 // 更多
 const more = (val: string) => {
-  switch (val) {
-    case '0':
-      router.push({ path: '/knowledge/index' });
-      break;
-    case '1':
-      router.push({ path: '/auxiliary/notice' });
-      break;
-    default:
-      break;
-  }
+	switch (val) {
+		case '0':
+			router.push({ path: '/knowledge/index' });
+			break;
+		case '1':
+			router.push({
+				name: 'auxiliaryNotice',
+				state: {
+					index: '1',
+				},
+			});
+			break;
+		default:
+			break;
+	}
 };
-onMounted(()=>{
-  handleClick('0');
-})
+onMounted(() => {
+	handleClick('0');
+});
 </script>
 
-
 <style scoped lang="scss">
 .right-notice {
-  position: relative;
-  .more {
-    position: absolute;
-    right: 20px;
-    top: 30px;
-    z-index: 2;
-  }
-  &-scroll {
-    height: 400px;
-    overflow: hidden;
-    &-item {
-      display: flex;
-      align-items: center;
-      justify-content: space-between;
-      border-bottom: 1px solid var(--el-border-color);
-      cursor: pointer;
-      height: 50px;
-      &:last-child {
-        border-bottom: none;
-      }
-      &-name {
-        flex: 1;
-        max-width: 70%;
-        display: flex;
-        align-items: center;
-      }
-      &-date {
-        display: flex;
-        align-items: center;
-        color: var(--el-color-info);
-        text-align: right;
-      }
-      &:hover {
-        color: var(--el-color-primary);
-      }
-    }
-  }
+	position: relative;
+	.more {
+		position: absolute;
+		right: 20px;
+		top: 30px;
+		z-index: 2;
+	}
+	&-scroll {
+		height: 400px;
+		overflow: hidden;
+		&-item {
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			border-bottom: 1px solid var(--el-border-color);
+			cursor: pointer;
+			height: 50px;
+			&:last-child {
+				border-bottom: none;
+			}
+			&-name {
+				flex: 1;
+				max-width: 70%;
+				display: flex;
+				align-items: center;
+			}
+			&-date {
+				display: flex;
+				align-items: center;
+				color: var(--el-color-info);
+				text-align: right;
+			}
+			&:hover {
+				color: var(--el-color-primary);
+			}
+		}
+	}
 }
-</style>
+</style>