1
0
mirror of https://github.com/FatttSnake/Pinnacle-OA.git synced 2026-04-05 06:51:23 +08:00

add noticeTypeManage module

This commit is contained in:
cccccyb
2023-05-16 03:13:19 +08:00
parent a2508b887e
commit c860e9c3e8
23 changed files with 460 additions and 91 deletions

View File

@@ -38,7 +38,7 @@ public class NoticeController {
public ResponseResult selectByNoticeId(@PathVariable Long nid) {
Notice noticeById = noticeService.selectByNoticeId(nid);
Integer code = noticeById != null ? ResponseCode.DATABASE_SELECT_OK : ResponseCode.DATABASE_SELECT_ERROR;
String msg = noticeById != null ? "" : "数据查询失败,请试!";
String msg = noticeById != null ? "" : "数据查询失败,请试!";
return ResponseResult.build(code, msg, noticeById);
}
@@ -53,16 +53,16 @@ public class NoticeController {
}
int code = noticeList != null ? ResponseCode.DATABASE_SELECT_OK : ResponseCode.DATABASE_SELECT_ERROR;
String msg = noticeList != null ? "" : "数据查询失败,请试!";
String msg = noticeList != null ? "" : "数据查询失败,请试!";
return ResponseResult.build(code, msg, noticeList);
}
//根据登录用户id查询所接收的公告
@GetMapping("/ByUserId")
public ResponseResult selectAllByUserId() {
List<Notice> noticesByUserId = noticeReceiveService.selectAllByUserId();
public ResponseResult selectByUserId(Integer readStatus) {
List<Notice> noticesByUserId = noticeReceiveService.selectByUserId(readStatus);
Integer code = noticesByUserId != null ? ResponseCode.DATABASE_SELECT_OK : ResponseCode.DATABASE_SELECT_ERROR;
String msg = noticesByUserId != null ? "" : "数据查询失败,请试!";
String msg = noticesByUserId != null ? "" : "数据查询失败,请试!";
return ResponseResult.build(code, msg, noticesByUserId);
}
@@ -70,7 +70,7 @@ public class NoticeController {
@PutMapping
public ResponseResult updateNotice(@RequestBody Notice notice) {
boolean updateById = noticeService.updateNotice(notice);
String msg = updateById ? "" : "数据修改失败,请试!";
String msg = updateById ? "" : "数据修改失败,请试!";
return ResponseResult.build(updateById ? ResponseCode.DATABASE_UPDATE_OK : ResponseCode.DATABASE_UPDATE_ERROR, msg, updateById);
}
@@ -78,7 +78,7 @@ public class NoticeController {
@PostMapping
public ResponseResult addNotice(@RequestBody Notice notice) {
Boolean insertNotice = noticeService.addNotice(notice);
String msg = insertNotice ? "" : "数据添加失败,请试!";
String msg = insertNotice ? "" : "数据添加失败,请试!";
return ResponseResult.build(insertNotice ? ResponseCode.DATABASE_SAVE_OK : ResponseCode.DATABASE_SAVE_ERROR, msg, insertNotice);
}
@@ -86,7 +86,7 @@ public class NoticeController {
@DeleteMapping("/{nid}")
public ResponseResult deleteByNoticeId(@PathVariable Long nid) {
boolean removeById = noticeService.deleteById(nid);
String msg = removeById ? "" : "数据删除失败,请试!";
String msg = removeById ? "" : "数据删除失败,请试!";
return ResponseResult.build(removeById ? ResponseCode.DATABASE_DELETE_OK : ResponseCode.DATABASE_DELETE_ERROR, msg, removeById);
}
@@ -109,7 +109,7 @@ public class NoticeController {
noticePageList = noticeService.selectPageByCond(page,title, type, startTime, endTime);
}
int code = noticePageList.getRecords() != null ? ResponseCode.DATABASE_SELECT_OK : ResponseCode.DATABASE_SELECT_ERROR;
String msg = noticePageList.getRecords() != null ? String.valueOf(noticePageList.getTotal()) : "数据查询失败,请试!";
String msg = noticePageList.getRecords() != null ? String.valueOf(noticePageList.getTotal()) : "数据查询失败,请试!";
return ResponseResult.build(code, msg, noticePageList.getRecords());
}

View File

@@ -1,15 +1,12 @@
package com.cfive.pinnacle.controller;
import com.cfive.pinnacle.entity.Notice;
import com.cfive.pinnacle.entity.NoticeType;
import com.cfive.pinnacle.entity.common.ResponseCode;
import com.cfive.pinnacle.entity.common.ResponseResult;
import com.cfive.pinnacle.service.INoticeTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -28,12 +25,33 @@ public class NoticeTypeController {
@Autowired
INoticeTypeService noticeTypeService;
@GetMapping
public ResponseResult selectTypeList(){
List<NoticeType> selectTypeName = noticeTypeService.selectTypeList();
@GetMapping("/enable")
public ResponseResult selectEnableTypeList(){
List<NoticeType> selectTypeName = noticeTypeService.selectEnableTypeList();
Integer code = selectTypeName != null ? ResponseCode.DATABASE_SELECT_OK : ResponseCode.DATABASE_SELECT_ERROR;
String msg = selectTypeName != null ? "" : "数据查询失败,请试!";
String msg = selectTypeName != null ? "" : "数据查询失败,请试!";
return ResponseResult.build(code, msg, selectTypeName);
}
@GetMapping
public ResponseResult selectTypeList(){
List<NoticeType> selectTypeList = noticeTypeService.selectTypeList();
Integer code = selectTypeList != null ? ResponseCode.DATABASE_SELECT_OK : ResponseCode.DATABASE_SELECT_ERROR;
String msg = selectTypeList != null ? "" : "数据查询失败,请重试!";
return ResponseResult.build(code, msg, selectTypeList);
}
@PutMapping
public ResponseResult updateTypeEnableById(String typeId,Boolean enable){
System.out.println(typeId+'\t'+enable);
Long tid=null;
Integer isEnable=null;
if (StringUtils.hasText(typeId)&&null!=enable){
tid = Long.parseLong(typeId);
isEnable = (enable == true ? 1 : 0);
}
Boolean updateEnableById = noticeTypeService.updateTypeEnableById(tid, isEnable);
String msg = updateEnableById ? "" : "修改失败,请重试!";
return ResponseResult.build(updateEnableById ? ResponseCode.DATABASE_UPDATE_OK : ResponseCode.DATABASE_UPDATE_ERROR, msg, updateEnableById);
}
}

View File

@@ -17,6 +17,6 @@ import java.util.List;
*/
@Mapper
public interface NoticeReceiveMapper extends BaseMapper<NoticeReceive> {
List<Notice> selectAllByUserId(Long userId);
List<Notice> selectByUserId(Long userId,Integer readStatus);
}

View File

@@ -15,5 +15,5 @@ import java.util.List;
* @since 2023-04-30
*/
public interface INoticeReceiveService extends IService<NoticeReceive> {
List<Notice> selectAllByUserId();
List<Notice> selectByUserId(Integer readStatus);
}

View File

@@ -15,5 +15,8 @@ import java.util.List;
*/
public interface INoticeTypeService extends IService<NoticeType> {
List<NoticeType> selectTypeList();
List<NoticeType> selectEnableTypeList();
Boolean updateTypeEnableById(Long typeId, Integer enable);
}

View File

@@ -24,8 +24,8 @@ public class NoticeReceiveServiceImpl extends ServiceImpl<NoticeReceiveMapper, N
@Autowired
private NoticeReceiveMapper noticeReceiveMapper;
@Override
public List<Notice> selectAllByUserId() {
public List<Notice> selectByUserId(Integer readStatus) {
Long userId = WebUtil.getLoginUser().getUser().getId();
return noticeReceiveMapper.selectAllByUserId(userId);
return noticeReceiveMapper.selectByUserId(userId,readStatus);
}
}

View File

@@ -2,6 +2,7 @@ package com.cfive.pinnacle.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.cfive.pinnacle.entity.NoticeType;
import com.cfive.pinnacle.mapper.NoticeTypeMapper;
import com.cfive.pinnacle.service.INoticeTypeService;
@@ -26,9 +27,24 @@ public class NoticeTypeServiceImpl extends ServiceImpl<NoticeTypeMapper, NoticeT
NoticeTypeMapper noticeTypeMapper;
@Override
public List<NoticeType> selectTypeList() {
return noticeTypeMapper.selectList(null);
}
@Override
public List<NoticeType> selectEnableTypeList() {
LambdaQueryWrapper<NoticeType> lqw = new LambdaQueryWrapper<>();
lqw.eq(NoticeType::getEnable, 1);
List<NoticeType> noticeTypes = noticeTypeMapper.selectList(lqw);
return noticeTypes;
}
@Override
public Boolean updateTypeEnableById(Long typeId, Integer enable) {
if ((null==typeId)||(null==enable)){
return false;
}
LambdaUpdateWrapper<NoticeType> luw = new LambdaUpdateWrapper<>();
luw.eq(null!=typeId,NoticeType::getId, typeId).set(null!=enable,NoticeType::getEnable,enable);
return noticeTypeMapper.update(null, luw)>0;
}
}

View File

@@ -1,31 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cfive.pinnacle.mapper.NoticeReceiveMapper">
<select id="selectAllByUserId" parameterType="Long" resultMap="selectAllMap">
select u.id uid,
username,
n.id nid,
title,
content,
type_id,
sender_id,
create_time,
send_time,
end_time,
priority,
top,
modify_time,
origin_id,
type.id typeId,
name,
type.enable,
notice_receive.id receiveId,
notice_receive.already_read receiveRead
<!--查询所有或根据用户阅读状态进行查询-->
<select id="selectByUserId" resultMap="selectAllMap">
select u.id uid,
u.username,
n.id nid,
n.title,
n.content,
n.type_id,
n.sender_id,
n.create_time,
n.send_time,
n.end_time,
n.priority,
n.top,
n.modify_time,
n.origin_id,
type.id typeId,
type.name,
type.enable,
notice_receive.id receiveId,
notice_receive.already_read receiveRead
from t_notice_receive notice_receive
left join t_notice n on n.id = notice_receive.notice_id
left join t_notice_type type on type.id = n.type_id
left join t_user u on n.sender_id = u.id
where notice_receive.user_id=#{userId}
left join t_notice n on n.id = notice_receive.notice_id
left join t_notice_type type on type.id = n.type_id
left join t_user u on n.sender_id = u.id
<where>
<if test="null!=readStatus and readStatus>=0">
and notice_receive.already_read=#{readStatus}
</if>
and notice_receive.user_id=#{userId}
</where>
</select>
<resultMap id="selectAllMap" type="notice" autoMapping="true">
<id property="id" column="nid"/>

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1684111521024" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2399" xmlns:xlink="http://www.w3.org/1999/xlink" width="48" height="48"><path d="M554.666667 469.333333h341.333333v85.333334h-341.333333v341.333333h-85.333334v-341.333333H128v-85.333334h341.333333V128h85.333334z" p-id="2400"></path></svg>

After

Width:  |  Height:  |  Size: 488 B

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1684113188426" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2422" xmlns:xlink="http://www.w3.org/1999/xlink" width="48" height="48"><path d="M909.050991 169.476903l-217.554898 0 0-31.346939c0-39.5866-32.205493-71.792093-71.793116-71.792093L408.15591 66.337871c-39.5866 0-71.792093 32.205493-71.792093 71.792093l0 31.346939L113.349581 169.476903c-11.013845 0-19.942191 8.940626-19.942191 19.954471s8.928347 19.954471 19.942191 19.954471l84.264149 0 0 640.687918c0 60.479443 49.203632 109.683075 109.683075 109.683075l416.474366 0c60.479443 0 109.683075-49.203632 109.683075-109.683075L833.454246 209.385844l75.595722 0c11.012821 0 19.942191-8.940626 19.942191-19.954471S920.063813 169.476903 909.050991 169.476903zM376.2482 138.130987c0-17.593703 14.314007-31.907711 31.907711-31.907711l211.547067 0c17.593703 0 31.907711 14.314007 31.907711 31.907711l0 31.346939L376.2482 169.477926 376.2482 138.130987zM793.569864 850.074785c0 38.486546-31.312146 69.798692-69.798692 69.798692L307.297828 919.873478c-38.486546 0-69.798692-31.312146-69.798692-69.798692L237.499136 211.042577l556.070728 0L793.569864 850.074785z" p-id="2423"></path><path d="M510.662539 861.276918c11.012821 0 19.954471-8.92937 19.954471-19.942191L530.61701 294.912753c0-11.013845-8.94165-19.942191-19.954471-19.942191s-19.954471 8.928347-19.954471 19.942191L490.708068 841.334727C490.708068 852.347548 499.649717 861.276918 510.662539 861.276918z" p-id="2424"></path><path d="M374.562814 801.449321c11.012821 0 19.954471-8.92937 19.954471-19.942191L394.517285 354.74035c0-11.013845-8.94165-19.942191-19.954471-19.942191s-19.954471 8.928347-19.954471 19.942191l0 426.76678C354.608344 792.519951 363.549993 801.449321 374.562814 801.449321z" p-id="2425"></path><path d="M649.832182 801.449321c11.012821 0 19.954471-8.92937 19.954471-19.942191L669.786653 354.74035c0-11.013845-8.94165-19.942191-19.954471-19.942191s-19.954471 8.928347-19.954471 19.942191l0 426.76678C629.877711 792.519951 638.81936 801.449321 649.832182 801.449321z" p-id="2426"></path></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -6,7 +6,7 @@
<el-form-item label="公告类型" prop="typeId">
<el-select v-model="addData.typeId" filterable placeholder="请选择公告类型">
<el-option
v-for="item in noticeTypeList"
v-for="item in EnableNoticeTypeList"
:key="item.id"
:label="item.name"
:value="item.id"
@@ -94,7 +94,7 @@ import { mapState } from 'pinia'
const noticeStore = useNoticeStore()
export default {
computed:{
...mapState(useNoticeStore,['noticeTypeList','departmentList','noticeShowData'])
...mapState(useNoticeStore,['EnableNoticeTypeList','departmentList','noticeShowData'])
},
data() {
return {
@@ -173,14 +173,11 @@ export default {
// 编辑操作
if (noticeStore.editFlag===true) {
this.addData = noticeStore.noticeShowData
console.log("created")
console.log(this.addData)
// 判断是否置顶
this.addData.top=(noticeStore.noticeShowData.top===1);
}
},
mounted() {
console.log("mounted")
noticeStore.selectDepartment()
}
}

View File

@@ -17,7 +17,7 @@
<el-form-item label="公告类型:" prop="type">
<el-select v-model="search_info.type" placeholder="请选择公告类型">
<el-option
v-for="item in noticeTypeList"
v-for="item in EnableNoticeTypeList"
:key="item.id"
:label="item.name"
:value="item.name"
@@ -111,7 +111,7 @@ export default {
}
},
computed: {
...mapState(useNoticeStore, ['noticeTypeList'])
...mapState(useNoticeStore, ['EnableNoticeTypeList'])
}
}
</script>

View File

@@ -129,6 +129,7 @@
</template>
<script lang="ts">
import _ from 'lodash'
import { mapState } from 'pinia'
import { useNoticeStore } from '@/store/notice'
const noticeStore = useNoticeStore()
@@ -172,7 +173,7 @@ export default {
formatDate(row, column) {
// 获取单元格数据
const data = row[column.property]
if (data == null) return null
if (data == null) return '暂无数据'
return new Date(data).toLocaleString()
},
handleEdit(index, row) {
@@ -215,17 +216,19 @@ export default {
this.$refs.tableRef.clearFilter(['sender.username'])
this.filterSenderName = []
const nameArray = []
for (let i = 0; i < this.selectData.length; i++) {
nameArray.push(this.selectData[i].sender.username)
}
const newArr = nameArray.filter((item, i, arr) => {
return arr.indexOf(item) === i
})
for (let j = 0; j < newArr.length; j++) {
const senderName = { text: '', value: '' }
senderName.text = newArr[j]
senderName.value = newArr[j]
this.filterSenderName.push(senderName)
if (!_.isEmpty(this.selectData)) {
for (let i = 0; i < this.selectData.length; i++) {
nameArray.push(this.selectData[i].sender.username)
}
const newArr = nameArray.filter((item, i, arr) => {
return arr.indexOf(item) === i
})
for (let j = 0; j < newArr.length; j++) {
const senderName = { text: '', value: '' }
senderName.text = newArr[j]
senderName.value = newArr[j]
this.filterSenderName.push(senderName)
}
}
}
}

View File

@@ -0,0 +1,145 @@
<template>
<el-table
v-loading="loading"
element-loading-text="加载中..."
ref="tableRef"
:data="noticeTypeList.filter((data) => !search || data.name.includes(search))"
style="font-size: 20px"
stripe
border
highlight-current-row
@selection-change="handleSelectionChange"
:header-cell-style="{
background: 'darksalmon',
'text-align': 'center',
color: '#fff',
'font-size': '20px'
}"
><el-table-column type="selection" width="65" align="center" />
<el-table-column type="index" label="序号" width="80" align="center" />
<el-table-column label="类型名" prop="name" width="500" align="center" />
<el-table-column label="是否启用" prop="enable" width="350" align="center">
<template #default="scope">
<el-switch
v-model="scope.row.enable"
style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949"
active-text="启用"
inactive-text="禁用"
@change="switchChang(scope.row.id, scope.row.enable)"
/>
</template>
</el-table-column>
<el-table-column align="center">
<template #header>
<el-input v-model="search" size="default" placeholder="请输入关键字搜索" />
</template>
<template #default="scope">
<el-button
size="default"
type="primary"
@click="handleEdit(scope.$index, scope.row)"
>编辑</el-button
>
<el-button size="default" type="danger" @click="handleDeleteById(scope.row)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<!-- 分页条-->
<div class="pagination">
<el-pagination
style="text-align: center"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
layout="total, sizes, prev, pager, next, jumper"
background
:page-sizes="[5, 10, 20, 40]"
:total="total"
v-model:current-page="currentPage"
v-model:page-size="pageSize"
>
</el-pagination>
</div>
<!-- 编辑会话框-->
<!-- <el-dialog-->
<!-- v-model="dialogEditVisible"-->
<!-- center-->
<!-- v-if="hackReset"-->
<!-- :before-close="handleDialogClose"-->
<!-- >-->
<!-- <template #header>-->
<!-- <h2 style="color: red">编辑公告</h2>-->
<!-- </template>-->
<!-- <commitForm />-->
<!-- </el-dialog>-->
</template>
<script lang="ts">
import { mapState } from 'pinia'
import { useNoticeStore } from '@/store/notice'
const noticeStore = useNoticeStore()
export default {
computed: {
...mapState(useNoticeStore, ['total', 'noticeTypeList', 'loading', 'dialogEditVisible'])
},
data() {
return {
filterSenderName: [],
multipleSelection: [],
currentPage: 1,
pageSize: 5,
search: ''
}
},
props: [],
methods: {
handleSelectionChange(val) {
// val的值为所勾选行的数组对象
this.multipleSelection = val
},
switchChang(id, value) {
if (!noticeStore.updateNoticeTypeEnable(id, value)) {
noticeStore.selectNoticeType()
}
},
handleEdit(index, row) {
noticeStore.$patch((state) => {
state.hackReset = true
state.noticeShowData = row
state.editFlag = true
state.dialogEditVisible = true
})
},
handleDialogClose() {
noticeStore.$patch((state) => {
state.dialogEditVisible = false
state.editFlag = false
state.hackReset = false
})
},
handleDeleteById(deleteId) {
this.$emit('handleDeleteById', deleteId)
},
handleSizeChange(pageSize) {
// pageSize每页多少条数据
noticeStore.selectAllNotice(this.currentPage, parseInt(pageSize))
},
handleCurrentChange(currentPage) {
// currentPage当前第几页
noticeStore.selectAllNotice(parseInt(currentPage), this.pageSize)
}
},
mounted() {
noticeStore.selectNoticeType()
},
updated() {}
}
</script>
<style scoped>
.pagination {
margin: 30px 400px;
}
</style>

View File

@@ -1,10 +1,4 @@
<template>
<!-- <el-button-->
<!-- size="large"-->
<!-- @click="clearFilter"-->
<!-- style="background-color: rgba(71, 138, 173, 0.85); color: white"-->
<!-- >清除筛选条件-->
<!-- </el-button>-->
<el-table
v-loading="this.loading"
element-loading-text="加载中..."
@@ -130,7 +124,7 @@ export default {
formatDate(row, column) {
// 获取单元格数据
const data = row[column.property]
if (data == null) return null
if (data == null) return '暂无数据'
return new Date(data).toLocaleString()
},
modifyStatus(row) {},
@@ -141,9 +135,7 @@ export default {
})
}
},
mounted() {
noticeStore.selectAllNoticeByUserId()
},
mounted() {},
updated() {
this.$refs.tableRef.clearFilter(['senderName'])
this.filterSenderName = []

View File

@@ -0,0 +1,21 @@
<template>
<notice-view-table />
</template>
<script lang="ts">
import { useNoticeStore } from '@/store/notice'
const noticeStore = useNoticeStore()
export default {
data() {
return {}
},
methods: {},
mounted() {
noticeStore.selectAllNoticeByUserId(1)
},
unmounted() {
console.log('alRead:unmounted')
}
}
</script>
<style scoped></style>

View File

@@ -0,0 +1,21 @@
<template>
<notice-view-table />
</template>
<script lang="ts">
import { useNoticeStore } from '@/store/notice'
const noticeStore = useNoticeStore()
export default {
data() {
return {}
},
methods: {},
mounted() {
noticeStore.selectAllNoticeByUserId(-1)
},
unmounted() {
console.log('all:unmounted')
}
}
</script>
<style scoped></style>

View File

@@ -53,6 +53,7 @@ export default {
.then((response) => {
if (response.data.code === 20021) {
noticeStore.selectData = response.data.data
noticeStore.total = parseInt(response.data.msg)
ElMessage({
message: '查询成功.',
type: 'success'
@@ -102,7 +103,7 @@ export default {
}
},
mounted() {
noticeStore.selectNoticeType()
noticeStore.selectEnableNoticeType()
},
computed: {
...mapState(useNoticeStore, ['dialogAddVisible'])

View File

@@ -0,0 +1,48 @@
<template>
<el-container>
<el-header>
<el-button type="primary" :size="'large'"
><el-icon :size="SIZE_ICON_MD()" style="color: white; margin-right: 3px">
<icon-pinnacle-add /> </el-icon
>添加类型</el-button
>
<el-button type="primary" :size="'large'"
><el-icon :size="SIZE_ICON_MD()" style="color: white; margin-right: 3px">
<icon-pinnacle-delete /> </el-icon
>批量删除</el-button
>
<el-button type="primary" :size="'large'"
><el-icon :size="SIZE_ICON_MD()" style="color: white; margin-right: 3px">
<icon-pinnacle-reset /> </el-icon
>刷新页面</el-button
>
</el-header>
<el-main>
<notice-type-table />
</el-main>
</el-container>
</template>
<script lang="ts">
import { SIZE_ICON_LG, SIZE_ICON_MD, SIZE_ICON_SM } from '@/constants/Common.constants'
export default {
name: 'NoticeTypeManage',
data() {
return {}
},
methods: {
SIZE_ICON_MD() {
return SIZE_ICON_MD
},
SIZE_ICON_LG() {
return SIZE_ICON_LG
},
SIZE_ICON_SM() {
return SIZE_ICON_SM
}
},
mounted() {}
}
</script>
<style scoped></style>

View File

@@ -5,16 +5,17 @@
</el-header>
<el-main>
<el-menu
:default-active="activeIndex"
:default-active="$route.path"
class="el-menu-demo"
mode="horizontal"
@select="handleSelect"
router
>
<el-menu-item index="1">所有公告</el-menu-item>
<el-menu-item index="2">已读</el-menu-item>
<el-menu-item index="3"><a href="#">未读</a></el-menu-item>
<el-menu-item index="/notice/noticeView/all">所有公告</el-menu-item>
<el-menu-item index="/notice/noticeView/alRead">已读</el-menu-item>
<el-menu-item index="/notice/noticeView/toRead">未读</el-menu-item>
</el-menu>
<notice-view-table></notice-view-table>
<router-view />
</el-main>
</el-container>
</template>
@@ -23,9 +24,7 @@
export default {
name: 'NoticeView',
data() {
return {
activeIndex: '1'
}
return {}
},
methods: {
handleSelect(key, keyPath) {

View File

@@ -0,0 +1,21 @@
<template>
<notice-view-table />
</template>
<script lang="ts">
import { useNoticeStore } from '@/store/notice'
const noticeStore = useNoticeStore()
export default {
data() {
return {}
},
methods: {},
mounted() {
noticeStore.selectAllNoticeByUserId(0)
},
unmounted() {
console.log('toRead:unmounted')
}
}
</script>
<style scoped></style>

View File

@@ -172,10 +172,42 @@ const router = createRouter({
path: 'noticeView',
component: async () => await import('@/pages/notice/NoticeView.vue'),
name: 'noticeView',
redirect: '/notice/noticeView/all',
meta: {
title: '公告查看',
requiresScrollbar: false,
requiresPadding: true
},
children: [
{
path: 'all',
component: async () =>
await import('@/pages/notice/AllReceiveNoticeView.vue'),
name: 'all'
},
{
path: 'alRead',
component: async () =>
await import('@/pages/notice/AlReadView.vue'),
name: 'alRead'
},
{
path: 'toRead',
component: async () =>
await import('@/pages/notice/ToReadView.vue'),
name: 'toRead'
}
]
},
{
path: 'noticeTypeManage',
component: async () =>
await import('@/pages/notice/NoticeTypeManage.vue'),
name: 'noticeTypeManage',
meta: {
title: '公告类型管理',
requiresScrollbar: false,
requiresPadding: true
}
}
]

View File

@@ -23,7 +23,14 @@ export const useNoticeStore = defineStore('notice', {
dialogEditVisible: false,
editFlag: false,
hackReset: true,
noticeTypeList: [],
EnableNoticeTypeList: [],
noticeTypeList: [
{
id: '',
name: '',
enable: true
}
],
departmentList: [],
noticeShowData: {
content: '',
@@ -75,17 +82,32 @@ export const useNoticeStore = defineStore('notice', {
}
})
},
async selectAllNoticeByUserId() {
await request.get('/notice/ByUserId').then((response) => {
this.selectData = response.data.data
if (this.selectData.length !== 0) {
this.loading = false
}
async selectAllNoticeByUserId(readStatus: number) {
await request
.get('/notice/ByUserId', {
readStatus
})
.then((response) => {
this.selectData = response.data.data
if (this.selectData.length !== 0) {
this.loading = false
}
})
},
async selectEnableNoticeType() {
await request.get('/noticeType/enable').then((response) => {
this.EnableNoticeTypeList = response.data.data
})
},
async selectNoticeType() {
await request.get('/noticeType').then((response) => {
this.noticeTypeList = response.data.data
if (response.data.data.length >= 0) {
for (let i = 0; i < this.noticeTypeList.length; i++) {
this.noticeTypeList[i].enable = response.data.data[i].enable === 1
}
this.loading = false
}
})
},
async selectDepartment() {
@@ -127,6 +149,28 @@ export const useNoticeStore = defineStore('notice', {
})
this.selectAllNotice(1, 5)
this.hackReset = false
},
async updateNoticeTypeEnable(typeId: string, enable: boolean) {
await request
.put('/noticeType', {
typeId,
enable
})
.then((response) => {
if (response.data.code === 20023) {
ElMessage({
message: '修改成功.',
type: 'success'
})
return true
} else if (response.data.code === 20033) {
ElMessage({
message: response.data.msg,
type: 'error'
})
return false
}
})
}
}
})