合并 #5

Closed
p6zkavi9o wants to merge 2 commits from branch_liny into develop_idea

@ -7,12 +7,14 @@
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<module name="AssociationManagerApi" />
<module name="AssociationManagerApi - idea" />
</profile>
</annotationProcessing>
</component>
<component name="JavacSettings">
<option name="ADDITIONAL_OPTIONS_OVERRIDE">
<module name="AssociationManagerApi" options="-parameters" />
<module name="AssociationManagerApi - idea" options="-parameters" />
</option>
</component>
</project>

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RunConfigurationProducerService">
<option name="ignoredProducers">//
<set>
<option value="com.android.tools.idea.compose.preview.runconfiguration.ComposePreviewRunConfigurationProducer" />
</set>
</option>
</component>
</project>

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/../../.." vcs="Git" />//
</component>
</project>

@ -1,149 +1,206 @@
package com.rabbiter.association.controller;
import com.rabbiter.association.service.UsersService;
// 导入用户服务类
import org.slf4j.Logger;
// 导入日志记录器
import org.slf4j.LoggerFactory;
// 导入日志工厂
import org.springframework.beans.factory.annotation.Autowired;
// 导入自动注入注解
import org.springframework.stereotype.Controller;
// 导入控制器注解
import org.springframework.util.ObjectUtils;
// 导入对象工具类
import org.springframework.web.bind.annotation.*;
// 导入Spring Web注解
import com.rabbiter.association.entity.Notices;
// 导入通知实体类
import com.rabbiter.association.handle.CacheHandle;
// 导入缓存处理类
import com.rabbiter.association.msg.R;
// 导入响应消息类
import com.rabbiter.association.entity.Users;
// 导入用户实体类
import com.rabbiter.association.service.NoticesService;
// 导入通知服务类
import com.rabbiter.association.utils.IDUtils;
// 导入ID工具类
import javax.servlet.http.HttpSession;
// 导入HTTP会话类
import java.util.List;
// 导入列表类
@Controller
@RequestMapping("/")
public class IndexController extends BaseController {
// 此代码实现了一个登录功能
@Controller // 声明这是一个控制器类
@RequestMapping("/") // 定义请求映射的根路径
public class IndexController extends BaseController { // 继承自基础控制器
private static final Logger Log = LoggerFactory.getLogger(IndexController.class);
// 创建日志记录器
@Autowired
@Autowired // 自动注入用户服务
private UsersService usersService;
@Autowired
@Autowired // 自动注入缓存处理类
private CacheHandle cacheHandle;
@Autowired
@Autowired // 自动注入通知服务
private NoticesService noticesService;
@GetMapping("/sys/notices")
@ResponseBody
// 获取通知列表的GET请求
@GetMapping("/sys/notices")// 映射GET请求到/sys/notices
@ResponseBody // 返回JSON格式的响应
public R getNoticeList(String token){
// 方法接收token参数
Users user = usersService.getOne(cacheHandle.getUserInfoCache(token));
// 从缓存中获取用户信息
if(ObjectUtils.isEmpty(user)) {
return R.error("登录信息不存在,请重新登录");
// 检查用户是否为空
return R.error("登录信息不存在,请重新登录"); // 返回错误信息
}
// 根据用户类型获取不同的通知列表
if(user.getType() == 0){
// 管理员类型
List<Notices> list = noticesService.getSysNotices();
// 获取系统通知
return R.successData(list);
// 返回成功响应和通知列表
}else if(user.getType() == 1){
// 管理员类型
List<Notices> list = noticesService.getManNotices(user.getId());
// 获取管理员通知
return R.successData(list);
// 返回成功响应和通知列表
}else{
// 普通用户类型
List<Notices> list = noticesService.getMemNotices(user.getId());
// 获取普通用户通知
return R.successData(list);
// 返回成功响应和通知列表
}
}
@PostMapping("/login")
@ResponseBody
// 用户登录的POST请求
@PostMapping("/login") // 映射POST请求到/login
@ResponseBody // 返回JSON格式的响应
public R login(String userName, String passWord, HttpSession session){
// 方法接收用户名、密码和会话
Log.info("用户登录,用户名:{} 用户密码:{}", userName, passWord);
// 记录登录信息
Users user = usersService.getUserByUserName(userName);
// 根据用户名获取用户信息
if(user == null) {
// 如果用户不存在
return R.error("输入的用户名不存在");
}else {
// 返回错误信息
}else { // 用户存在
if(passWord.equals(user.getPassWord().trim())) {
// 检查密码是否匹配
String token = IDUtils.makeIDByUUID();
// 生成唯一的token
cacheHandle.addUserCache(token, user.getId());
// 将用户信息存入缓存
return R.success("登录成功", token);
}else {
// 返回成功响应和token
}else { // 密码不匹配
return R.error("输入的密码错误");
// 返回错误信息
}
}
}
@RequestMapping("/exit")
@ResponseBody
// 用户退出的请求
@RequestMapping("/exit") // 映射请求到/exit
@ResponseBody // 返回JSON格式的响应
public R exit(String token) {
// 方法接收token参数
Log.info("用户退出系统并移除登录信息");
// 记录退出信息
cacheHandle.removeUserCache(token);
// 从缓存中移除用户信息
return R.success();
return R.success(); // 返回成功响应
}
@GetMapping("/info")
@ResponseBody
// 获取用户信息的GET请求
@GetMapping("/info") // 映射GET请求到/info
@ResponseBody // 返回JSON格式的响应
public R info(String token){
// 方法接收token参数
Users user = usersService.getOne(cacheHandle.getUserInfoCache(token));
// 从缓存中获取用户信息
return R.successData(user);
// 返回成功响应和用户信息
}
@PostMapping("/info")
@ResponseBody
// 修改用户信息的POST请求
@PostMapping("/info") // 映射POST请求到/info
@ResponseBody // 返回JSON格式的响应
public R info(Users user){
// 方法接收用户对象
Log.info("修改用户信息,{}", user);
// 记录用户信息修改
usersService.update(user);
// 更新用户信息
return R.success();
// 返回成功响应
}
@RequestMapping("/checkPwd")
@ResponseBody
// 检查密码的请求
@RequestMapping("/checkPwd") // 映射请求到/checkPwd
@ResponseBody // 返回JSON格式的响应
public R checkPwd(String oldPwd, String token) {
// 方法接收旧密码和token参数
Users user = usersService.getOne(cacheHandle.getUserInfoCache(token));
// 从缓存中获取用户信息
if(oldPwd.equals(user.getPassWord())) {
// 检查旧密码是否匹配
return R.success();
// 返回成功响应
}else {
// 密码不匹配
return R.warn("原始密码和输入密码不一致");
// 返回警告信息
}
}
@PostMapping("/pwd")
@ResponseBody
// 修改用户密码的POST请求
@PostMapping("/pwd") // 映射POST请求到/pwd
@ResponseBody // 返回JSON格式的响应
public R pwd(String token, String password) {
// 方法接收token和新密码
Log.info("修改用户密码,{}", password);
// 记录密码修改信息
Users user = usersService.getOne(cacheHandle.getUserInfoCache(token));
// 从缓存中获取用户信息
user.setPassWord(password);
// 设置新密码
usersService.update(user);
// 更新用户信息
return R.success();
// 返回成功响应
}
}

@ -1,138 +1,189 @@
package com.rabbiter.association.controller;
import com.rabbiter.association.service.PayLogsService;
// 导入缴费记录服务类
import com.rabbiter.association.service.UsersService;
// 导入用户服务类
import org.slf4j.Logger;
// 导入日志记录接口
import org.slf4j.LoggerFactory;
// 导入日志记录工厂类
import org.springframework.beans.factory.annotation.Autowired;
// 导入自动注入注解
import org.springframework.stereotype.Controller;
// 导入控制器注解
import org.springframework.util.ObjectUtils;
// 导入对象工具类
import org.springframework.web.bind.annotation.GetMapping;
// 导入 GET 请求映射注解
import org.springframework.web.bind.annotation.PostMapping;
// 导入 POST 请求映射注解
import org.springframework.web.bind.annotation.RequestMapping;
// 导入请求映射注解
import org.springframework.web.bind.annotation.ResponseBody;
// 导入响应体注解
import com.rabbiter.association.entity.Users;
// 导入用户实体类
import com.rabbiter.association.handle.CacheHandle;
// 导入缓存处理类
import com.rabbiter.association.utils.DateUtils;
// 导入日期工具类
import com.rabbiter.association.utils.IDUtils;
// 导入 ID 生成工具类
import com.rabbiter.association.msg.R;
// 导入响应消息类
import com.rabbiter.association.msg.PageData;
// 导入分页数据类
import com.rabbiter.association.entity.PayLogs;
// 导入缴费记录实体类
/**
*
*
*
*/
@Controller
@RequestMapping("/payLogs")
@Controller // 声明该类为控制器
@RequestMapping("/payLogs") // 定义请求路径前缀为 /payLogs
public class PayLogsController extends BaseController {
// 定义 PayLogsController 类,继承自 BaseController
protected static final Logger Log = LoggerFactory.getLogger(PayLogsController.class);
// 创建日志记录器
@Autowired
@Autowired // 自动注入 CacheHandle 实例
private CacheHandle cacheHandle;
@Autowired
@Autowired // 自动注入 UsersService 实例
private UsersService usersService;
@Autowired
@Autowired // 自动注入 PayLogsService 实例
private PayLogsService payLogsService;
@RequestMapping("")
@RequestMapping("") // 处理根路径请求
public String index() {
// 定义 index 方法
return "pages/PayLogs";
// 返回视图名称,渲染缴费记录页面
}
@GetMapping("/info")
@ResponseBody
@GetMapping("/info") // 处理 GET 请求,路径为 /info
@ResponseBody // 返回 JSON 格式的响应
public R getInfo(String id) {
// 定义获取缴费记录信息的方法,接收 ID 参数
Log.info("查找指定缴费记录ID{}", id);
// 记录查找缴费记录的日志
PayLogs payLogs = payLogsService.getOne(id);
// 根据 ID 获取缴费记录
return R.successData(payLogs);
// 返回成功响应,包含缴费记录数据
}
@GetMapping("/page")
@ResponseBody
@GetMapping("/page") // 处理 GET 请求,路径为 /page
@ResponseBody // 返回 JSON 格式的响应
public R getPageInfos(Long pageIndex, Long pageSize,
// 定义获取分页信息的方法,接收页码和每页大小
String token, String teamName, String userName) {
Users user = usersService.getOne(cacheHandle.getUserInfoCache(token));
// 从缓存中获取用户信息
if(ObjectUtils.isEmpty(user)) {
// 检查用户是否存在
return R.error("登录信息不存在,请重新登录");
// 返回错误响应
}
if (user.getType() == 0) {
// 如果用户类型为 0普通用户
Log.info("分页查看全部缴费记录,当前页码:{}"
+ "每页数据量:{}, 模糊查询,团队名称:{},用户姓名:{}", pageIndex,
pageSize, teamName, userName);
pageSize, teamName, userName); // 记录日志
PageData page = payLogsService.getPageInfo(pageIndex, pageSize, null, teamName, userName);
// 获取分页数据
return R.successData(page);
// 返回成功响应,包含分页数据
} else if (user.getType() == 1) {
// 如果用户类型为 1团队管理员
Log.info("团队管理员查看缴费记录,当前页码:{}"
+ "每页数据量:{}, 模糊查询,团队名称:{},用户姓名:{}", pageIndex,
pageSize, teamName, userName);
pageSize, teamName, userName); // 记录日志
PageData page = payLogsService.getManPageInfo(pageIndex, pageSize, user.getId(), teamName, userName);
PageData page = payLogsService.getManPageInfo(pageIndex, pageSize, user.getId(), teamName, userName); // 获取团队管理员的分页数据
return R.successData(page);
} else {
// 返回成功响应,包含分页数据
} else { // 其他用户类型
Log.info("分页用户相关缴费记录,当前页码:{}"
+ "每页数据量:{}, 模糊查询,团队名称:{},用户姓名:{}", pageIndex,
pageSize, teamName, userName);
pageSize, teamName, userName); // 记录日志
PageData page = payLogsService.getPageInfo(pageIndex, pageSize, user.getId(), teamName, null);
// 获取用户相关的分页数据
return R.successData(page);
return R.successData(page); // 返回成功响应,包含分页数据
}
}
@PostMapping("/add")
@ResponseBody
public R addInfo( PayLogs payLogs) {
@PostMapping("/add") // 处理 POST 请求,路径为 /add
@ResponseBody // 返回 JSON 格式的响应
public R addInfo(PayLogs payLogs) {
// 定义添加缴费记录的方法,接收 PayLogs 对象
payLogs.setId(IDUtils.makeIDByCurrent());
// 生成并设置缴费记录 ID
payLogs.setCreateTime(DateUtils.getNowDate());
// 设置当前时间为创建时间
Log.info("添加缴费记录,传入参数:{}", payLogs);
// 记录添加缴费记录的日志
payLogsService.add(payLogs);
// 调用服务层方法添加缴费记录
return R.success();
// 返回成功响应
}
@PostMapping("/upd")
@ResponseBody
@PostMapping("/upd") // 处理 POST 请求,路径为 /upd
@ResponseBody // 返回 JSON 格式的响应
public R updInfo(PayLogs payLogs) {
// 定义更新缴费记录的方法,接收 PayLogs 对象
Log.info("修改缴费记录,传入参数:{}", payLogs);
// 记录修改缴费记录的日志
payLogsService.update(payLogs);
// 调用服务层方法更新缴费记录
return R.success();
// 返回成功响应
}
@PostMapping("/del")
@ResponseBody
@PostMapping("/del") // 处理 POST 请求,路径为 /del
@ResponseBody // 返回 JSON 格式的响应
public R delInfo(String id) {
// 定义删除缴费记录的方法,接收 ID 参数
Log.info("删除缴费记录, ID:{}", id);
// 记录删除缴费记录的日志
PayLogs payLogs = payLogsService.getOne(id);
// 根据 ID 获取缴费记录
payLogsService.delete(payLogs);
// 调用服务层方法删除缴费记录
return R.success();
// 返回成功响应
}
}

@ -1,153 +1,215 @@
package com.rabbiter.association.controller;
// 定义包名,表示该类属于 com.rabbiter.association.controller 包
import com.rabbiter.association.service.TeamsService;
// 导入社团服务类
import com.rabbiter.association.service.UsersService;
// 导入用户服务类
import org.slf4j.Logger;
// 导入日志记录接口
import org.slf4j.LoggerFactory;
// 导入日志记录工厂类
import org.springframework.beans.factory.annotation.Autowired;
// 导入自动注入注解
import org.springframework.stereotype.Controller;
// 导入控制器注解
import org.springframework.util.ObjectUtils;
// 导入对象工具类
import org.springframework.web.bind.annotation.GetMapping;
// 导入 GET 请求映射注解
import org.springframework.web.bind.annotation.PostMapping;
// 导入 POST 请求映射注解
import org.springframework.web.bind.annotation.RequestMapping;
// 导入请求映射注解
import org.springframework.web.bind.annotation.ResponseBody;
// 导入响应体注解
import com.rabbiter.association.entity.Users;
// 导入用户实体类
import com.rabbiter.association.handle.CacheHandle;
// 导入缓存处理类
import com.rabbiter.association.utils.DateUtils;
// 导入日期工具类
import com.rabbiter.association.utils.IDUtils;
// 导入 ID 生成工具类
import com.rabbiter.association.msg.R;
// 导入响应消息类
import com.rabbiter.association.msg.PageData;
// 导入分页数据类
import com.rabbiter.association.entity.Teams;
// 导入社团实体类
import java.util.List;
// 导入 List 接口
/**
*
*
*
*/
@Controller
@RequestMapping("/teams")
@Controller // 声明该类为控制器
@RequestMapping("/teams") // 定义请求路径前缀为 /teams
public class TeamsController extends BaseController {
// 定义 TeamsController 类,继承自 BaseController
protected static final Logger Log = LoggerFactory.getLogger(TeamsController.class);
// 创建日志记录器
@Autowired
@Autowired // 自动注入 CacheHandle 实例
private CacheHandle cacheHandle;
@Autowired
@Autowired // 自动注入 UsersService 实例
private UsersService usersService;
@Autowired
@Autowired // 自动注入 TeamsService 实例
private TeamsService teamsService;
@RequestMapping("")
@RequestMapping("") // 处理根路径请求
public String index() {
// 定义 index 方法
return "pages/Teams";
// 返回视图名称,渲染社团页面
}
@GetMapping("/info")
@ResponseBody
@GetMapping("/info") // 处理 GET 请求,路径为 /info
@ResponseBody // 返回 JSON 格式的响应
public R getInfo(String id) {
// 定义获取社团信息的方法,接收 ID 参数
Log.info("查找指定社团信息ID{}", id);
// 记录查找社团信息的日志
Teams teams = teamsService.getOne(id);
// 根据 ID 获取社团信息
return R.successData(teams);
// 返回成功响应,包含社团信息
}
@GetMapping("/all")
@ResponseBody
public R getAll(){
@GetMapping("/all") // 处理 GET 请求,路径为 /all
@ResponseBody // 返回 JSON 格式的响应
public R getAll() {
// 定义获取所有社团信息的方法
Log.info("获取全部的社团");
// 记录获取所有社团的日志
List<Teams> list = teamsService.getAll();
// 获取所有社团信息
return R.successData(list);
// 返回成功响应,包含社团列表
}
@GetMapping("/man")
@ResponseBody
public R getListByManId(String manId){
@GetMapping("/man") // 处理 GET 请求,路径为 /man
@ResponseBody // 返回 JSON 格式的响应
public R getListByManId(String manId) {
// 定义根据管理员 ID 获取社团列表的方法
Log.info("获取指定社团管理员相关的社团列表");
// 记录获取社团管理员相关社团的日志
List<Teams> list = teamsService.getListByManId(manId);
// 根据管理员 ID 获取社团列表
return R.successData(list);
// 返回成功响应,包含社团列表
}
@GetMapping("/page")
@ResponseBody
public R getPageInfos(Long pageIndex, Long pageSize,
String token, Teams teams) {
@GetMapping("/page") // 处理 GET 请求,路径为 /page
@ResponseBody // 返回 JSON 格式的响应
public R getPageInfos(Long pageIndex, Long pageSize, // 定义获取分页信息的方法,接收页码和每页大小
String token, Teams teams) { // 还接收 token 和 Teams 对象
Users user = usersService.getOne(cacheHandle.getUserInfoCache(token));
// 从缓存中获取用户信息
if(ObjectUtils.isEmpty(user)) {
// 检查用户是否存在
return R.error("登录信息不存在,请重新登录");
// 返回错误响应
}
if(user.getType() == 1){
if(user.getType() == 1) {
// 如果用户类型为 1社团管理员
teams.setManager(user.getId());
// 设置社团的管理员 ID
}
Log.info("分页查找社团信息,当前页码:{}"
+ "每页数据量:{}, 模糊查询,附加参数:{}", pageIndex,
pageSize, teams);
// 记录分页查找社团信息的日志
PageData page = teamsService.getPageInfo(pageIndex, pageSize, teams);
PageData page = teamsService.getPageInfo(pageIndex, pageSize, teams); // 获取分页数据
return R.successData(page);
// 返回成功响应,包含分页数据
}
@PostMapping("/add")
@ResponseBody
@PostMapping("/add") // 处理 POST 请求,路径为 /add
@ResponseBody // 返回 JSON 格式的响应
public R addInfo(Teams teams) {
// 定义添加社团信息的方法,接收 Teams 对象
teams.setId(IDUtils.makeIDByCurrent());
// 生成并设置社团 ID
teams.setCreateTime(DateUtils.getNowDate("yyyy-MM-dd"));
// 设置当前日期为创建时间
Log.info("添加社团信息,传入参数:{}", teams);
// 记录添加社团信息的日志
int count = teamsService.addTeams(teams);
// 调用服务层方法添加社团信息
if(count == 0) {
// 检查添加结果
return R.error("社团团长ID无效");
// 返回错误响应
}
return R.success();
// 返回成功响应
}
@PostMapping("/upd")
@ResponseBody
@PostMapping("/upd") // 处理 POST 请求,路径为 /upd
@ResponseBody // 返回 JSON 格式的响应
public R updInfo(Teams teams) {
// 定义更新社团信息的方法,接收 Teams 对象
Log.info("修改社团信息,传入参数:{}", teams);
// 记录修改社团信息的日志
int count = teamsService.updateTeams(teams);
// 调用服务层方法更新社团信息
if(count == 0) {
// 检查更新结果
return R.error("社团团长ID无效");
// 返回错误响应
}
return R.success();
// 返回成功响应
}
@PostMapping("/del")
@ResponseBody
@PostMapping("/del") // 处理 POST 请求,路径为 /del
@ResponseBody // 返回 JSON 格式的响应
public R delInfo(String id) {
// 定义删除社团信息的方法,接收 ID 参数
Log.info("删除社团信息, ID:{}", id);
// 记录删除社团信息的日志
Teams teams = teamsService.getOne(id);
// 根据 ID 获取社团信息
teamsService.delete(teams);
// 调用服务层方法删除社团信息
return R.success();
// 返回成功响应
}
}

@ -1,15 +1,23 @@
package com.rabbiter.association.dao;
// 定义包名,表示该接口属于 com.rabbiter.association.dao 包
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
// 导入 MyBatis-Plus 的分页类
import org.apache.ibatis.annotations.Param;
// 导入 MyBatis 的参数注解
import org.apache.ibatis.annotations.Select;
// 导入 MyBatis 的选择注解
import org.springframework.stereotype.Repository;
// 导入 Spring 的仓库注解
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
// 导入 MyBatis-Plus 的基础映射器接口
import com.rabbiter.association.entity.Members;
// 导入成员实体类
import java.util.Map;
// 导入 Map 接口
/**
*
@ -41,9 +49,12 @@ public interface MembersDao extends BaseMapper<Members> {
"</where>" +
"ORDER BY m.create_time DESC" +
"</script>")
// 选择成员的 ID、创建时间、社团 ID 和用户 ID
// 选择社团名称、总人数、用户姓名、性别、年龄和电话
// 连接条件,确保成员的用户 ID 和社团 ID 匹配
public Page<Map<String, Object>> qryPageAll(Page<Map<String, Object>> page,
@Param("teamName") String teamName,
@Param("userName") String userName);
@Param("teamName") String teamName,
@Param("userName") String userName);
/**
* ID
@ -69,8 +80,14 @@ public interface MembersDao extends BaseMapper<Members> {
"</where>" +
"ORDER BY m.create_time DESC" +
"</script>")
// 选择成员的 ID、创建时间、社团 ID 和用户 ID
// 选择社团名称、总人数、用户姓名、性别、年龄和电话
// 连接条件,确保成员的用户 ID 和社团 ID 匹配
public Page<Map<String, Object>> qryPageByManId(Page<Map<String, Object>> page,
@Param("manId") String manId,
// 接收管理员 ID 参数
@Param("teamName") String teamName,
// 接收社团名称参数
@Param("userName") String userName);
// 接收用户姓名参数
}

@ -1,17 +1,21 @@
package com.rabbiter.association.dao;
// 定义包名,表示该接口属于 com.rabbiter.association.dao 包
import org.springframework.stereotype.Repository;
// 导入 Spring 的仓库注解
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
// 导入 MyBatis-Plus 的基础映射器接口
import com.rabbiter.association.entity.Teams;
// 导入社团实体类
/**
*
*
*
*/
@Repository("teamsDao")
@Repository("teamsDao") // 声明该接口为 Spring 的仓库组件,并指定 bean 名称为 teamsDao
public interface TeamsDao extends BaseMapper<Teams> {
// 定义 TeamsDao 接口,继承自 BaseMapper提供基本的 CRUD 操作
// 该接口不需要额外的方法BaseMapper 已经提供了基本的 CRUD 操作
}

@ -1,97 +1,111 @@
package com.rabbiter.association.entity;
// 定义包名,表示该类属于 com.rabbiter.association.entity 包
import com.baomidou.mybatisplus.annotation.TableField;
// 导入 MyBatis-Plus 的表字段注解
import com.baomidou.mybatisplus.annotation.TableId;
// 导入 MyBatis-Plus 的表主键注解
import com.baomidou.mybatisplus.annotation.TableName;
// 导入 MyBatis-Plus 的表名注解
import java.io.Serializable;
// 导入可序列化接口
/**
*
*
*
*/
@TableName(value = "members")
@TableName(value = "members") // 指定该类对应的数据库表名为 members
public class Members implements Serializable {
// 定义 Members 类,实现 Serializable 接口以支持序列化
private static final long serialVersionUID = 1L;
// 定义序列化版本号
/**
* ID
*/
@TableId(value = "id")
@TableId(value = "id") // 指定该字段为表的主键,映射到数据库中的 id 字段
private String id;
// 定义成员的 ID
/**
/**
*
*/
@TableField(value = "create_time")
@TableField(value = "create_time") // 指定该字段映射到数据库中的 create_time 字段
private String createTime;
// 定义成员的入团时间
/**
/**
*
*/
@TableField(value = "team_id")
@TableField(value = "team_id") // 指定该字段映射到数据库中的 team_id 字段
private String teamId;
// 定义成员所属社团的 ID
/**
/**
*
*/
@TableField(value = "user_id")
@TableField(value = "user_id") // 指定该字段映射到数据库中的 user_id 字段
private String userId;
// 定义申请加入社团的用户 ID
public String getId(){
// 获取成员 ID
public String getId() {
return id;
// 返回成员 ID
}
public void setId(String id){
// 设置成员 ID
public void setId(String id) {
this.id = id;
// 设置成员 ID
}
public String getCreateTime(){
// 获取入团时间
public String getCreateTime() {
return createTime;
// 返回入团时间
}
public void setCreateTime(String createTime){
// 设置入团时间
public void setCreateTime(String createTime) {
this.createTime = createTime;
// 设置入团时间
}
public String getTeamId(){
// 获取社团 ID
public String getTeamId() {
return teamId;
// 返回社团 ID
}
public void setTeamId(String teamId){
// 设置社团 ID
public void setTeamId(String teamId) {
this.teamId = teamId;
// 设置社团 ID
}
public String getUserId(){
// 获取用户 ID
public String getUserId() {
return userId;
// 返回用户 ID
}
public void setUserId(String userId){
// 设置用户 ID
public void setUserId(String userId) {
this.userId = userId;
// 设置用户 ID
}
// 重写 toString 方法,返回成员信息的字符串表示
@Override
public String toString() {
return "Members [id=" + id
return "Members [id=" + id
+ ", createTime=" + createTime
+ ", teamId=" + teamId
+ ", userId=" + userId
+ "]";
// 返回包含成员 ID、入团时间、社团 ID 和用户 ID 的字符串
}
}

@ -1,133 +1,152 @@
package com.rabbiter.association.entity;
// 定义包名,表示该类属于 com.rabbiter.association.entity 包
import com.baomidou.mybatisplus.annotation.TableField;
// 导入 MyBatis-Plus 的表字段注解
import com.baomidou.mybatisplus.annotation.TableId;
// 导入 MyBatis-Plus 的表主键注解
import com.baomidou.mybatisplus.annotation.TableName;
// 导入 MyBatis-Plus 的表名注解
import java.io.Serializable;
// 导入可序列化接口
/**
*
*
*
*/
@TableName(value = "teams")
@TableName(value = "teams") // 指定该类对应的数据库表名为 teams
public class Teams implements Serializable {
// 定义 Teams 类,实现 Serializable 接口以支持序列化
private static final long serialVersionUID = 1L;
// 定义序列化版本号
/**
* ID
*/
@TableId(value = "id")
// 指定该字段为表的主键,映射到数据库中的 id 字段
private String id;
// 定义社团的 ID
/**
/**
*
*/
@TableField(value = "name")
@TableField(value = "name") // 指定该字段映射到数据库中的 name 字段
private String name;
// 定义社团的名称
/**
/**
*
*/
@TableField(value = "create_time")
@TableField(value = "create_time") // 指定该字段映射到数据库中的 create_time 字段
private String createTime;
// 定义社团的建立时间
/**
/**
*
*/
@TableField(value = "total")
@TableField(value = "total") // 指定该字段映射到数据库中的 total 字段
private Integer total;
// 定义社团的总人数
/**
/**
*
*/
@TableField(value = "manager")
@TableField(value = "manager") // 指定该字段映射到数据库中的 manager 字段
private String manager;
// 定义社团的团长 ID
/**
/**
*
*/
@TableField(value = "type_id")
@TableField(value = "type_id") // 指定该字段映射到数据库中的 type_id 字段
private String typeId;
// 定义社团的类型 ID
public String getId(){
// 获取社团 ID
public String getId() {
return id;
// 返回社团 ID
}
public void setId(String id){
// 设置社团 ID
public void setId(String id) {
this.id = id;
// 设置社团 ID
}
public String getName(){
// 获取社团名称
public String getName() {
return name;
// 返回社团名称
}
public void setName(String name){
// 设置社团名称
public void setName(String name) {
this.name = name;
// 设置社团名称
}
public String getCreateTime(){
// 获取建立时间
public String getCreateTime() {
return createTime;
// 返回建立时间
}
public void setCreateTime(String createTime){
// 设置建立时间
public void setCreateTime(String createTime) {
this.createTime = createTime;
// 设置建立时间
}
public Integer getTotal(){
// 获取社团人数
public Integer getTotal() {
return total;
// 返回社团人数
}
public void setTotal(Integer total){
// 设置社团人数
public void setTotal(Integer total) {
this.total = total;
// 设置社团人数
}
public String getManager(){
// 获取社团团长
public String getManager() {
return manager;
// 返回社团团长 ID
}
public void setManager(String manager){
// 设置社团团长
public void setManager(String manager) {
this.manager = manager;
// 设置社团团长 ID
}
public String getTypeId(){
// 获取社团类型 ID
public String getTypeId() {
return typeId;
// 返回社团类型 ID
}
public void setTypeId(String typeId){
// 设置社团类型 ID
public void setTypeId(String typeId) {
this.typeId = typeId;
// 设置社团类型 ID
}
// 重写 toString 方法,返回社团信息的字符串表示
@Override
public String toString() {
return "Teams [id=" + id
return "Teams [id=" + id
+ ", name=" + name
+ ", createTime=" + createTime
+ ", total=" + total
+ ", manager=" + manager
+ ", typeId=" + typeId
+ "]";
// 返回包含社团 ID、名称、建立时间、人数、团长和类型 ID 的字符串
}
}

@ -1,41 +1,48 @@
package com.rabbiter.association.service;
// 定义包名,表示该接口属于 com.rabbiter.association.service 包
import com.rabbiter.association.msg.PageData;
// 导入分页数据类
import com.rabbiter.association.entity.Members;
// 导入成员实体类
/**
*
*
*
*/
public interface MembersService extends BaseService<Members, String> {
// 定义 MembersService 接口,继承自 BaseService提供成员信息的业务处理
/**
*
* @param userId ID
* @param teamId ID
* @return
* @return
*/
public Boolean isManager(String teamId, String userId);
// 定义方法,检查指定用户是否是指定团队的管理员
/**
*
*
* @param pageIndex
* @param pageSize
* @param teamName
* @param userName
* @return
*/
* @return
*/
public PageData getPageAll(Long pageIndex, Long pageSize, String teamName, String userName);
// 定义方法,分页查询所有成员信息
/**
*
*
* @param pageIndex
* @param pageSize
* @param manId ID
* @param teamName
* @param userName
* @return
* @return
*/
public PageData getPageByManId(Long pageIndex, Long pageSize, String manId, String teamName, String userName);
// 定义方法,分页查询指定管理员管理的成员信息
}

@ -1,40 +1,50 @@
package com.rabbiter.association.service;
// 定义包名,表示该接口属于 com.rabbiter.association.service 包
import com.rabbiter.association.msg.PageData;
// 导入分页数据类
import com.rabbiter.association.entity.Teams;
// 导入社团实体类
import java.util.List;
// 导入 List 接口
/**
*
*
*
*/
public interface TeamsService extends BaseService<Teams, String> {
// 定义 TeamsService 接口,继承自 BaseService提供社团信息的业务处理
/**
*
* @return
* @return
*/
public List<Teams> getAll();
// 定义方法,获取所有社团信息
/**
*
* @param manId
* @return
* @return
*/
public List<Teams> getListByManId(String manId);
// 定义方法,获取指定管理员管理的社团列表
/**
*
*
* @param pageIndex
* @param pageSize
* @param teams
* @return
*/
* @return
*/
public PageData getPageInfo(Long pageIndex, Long pageSize, Teams teams);
// 定义方法,分页查询社团信息,支持模糊查询条件
Integer addTeams(Teams teams);
// 定义方法,添加社团信息,返回操作结果
Integer updateTeams(Teams teams);
// 定义方法,更新社团信息,返回操作结果
}

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

@ -1,85 +1,77 @@
<template>
<div class="login-container">
<div class="login-body">
<div class="login-title">社团管理系统</div>
<div class="login-form">
<el-form :model="loginForm" :rules="rules" ref="loginForm">
<el-form-item prop="userName">
<div class="login-container"> <!-- 登录容器 -->
<div class="login-body"> <!-- 登录主体 -->
<div class="login-title">社团管理系统</div> <!-- 登录标题 -->
<div class="login-form"> <!-- 登录表单 -->
<el-form :model="loginForm" :rules="rules" ref="loginForm"> <!-- 使用 Element UI 的表单组件 -->
<el-form-item prop="userName"> <!-- 用户名表单项 -->
<el-input type="text" v-model="loginForm.userName" suffix-icon="iconfont icon-r-user1"
placeholder="请输入您的账号"></el-input>
placeholder="请输入您的账号"></el-input> <!-- -->
</el-form-item>
<el-form-item prop="passWord">
<el-form-item prop="passWord"> <!-- 密码表单项 -->
<el-input type="password" v-model="loginForm.passWord" suffix-icon="iconfont icon-r-lock"
placeholder="请输入您的密码">
</el-input>
placeholder="请输入您的密码"></el-input> <!-- -->
</el-form-item>
<el-form-item>
<el-button style="
margin-top: 15px;
width: 100%;
background-color: #6495ed;
" @click="submitForm('loginForm')" type="primary">
<el-form-item> <!-- 表单项容器 -->
<el-button style="margin-top: 15px; width: 100%; background-color: #6495ed;"
@click="submitForm('loginForm')" type="primary"> <!-- 登录按钮 -->
<b style="font-size: 22px;"> 用户登录</b></el-button><br />
<el-button style="width: 100%; margin-top: 5px" @click="showAddWin()" :underline="false"
type="info">
type="info"> <!-- 注册新账号按钮 -->
<b style="font-size: 22px;"> 注册新账号</b></el-button>
</el-form-item>
</el-form>
</div>
</div>
<el-dialog title="用户注册" width="700px" :modal="false" :visible.sync="showAddFlag">
<el-form label-width="90px" :model="usersForm">
<el-row :gutter="15">
<el-col :span="12">
<el-form-item label="用户账号">
<el-input v-model="usersForm.userName" placeholder="请输入用户账号…" autocomplete="off"></el-input>
<el-dialog title="用户注册" width="700px" :modal="false" :visible.sync="showAddFlag"> <!-- 用户注册对话框 -->
<el-form label-width="90px" :model="usersForm"> <!-- 注册表单 -->
<el-row :gutter="15"> <!-- 行容器 -->
<el-col :span="12"> <!-- 列容器 -->
<el-form-item label="用户账号"> <!-- 用户账号表单项 -->
<el-input v-model="usersForm.userName" placeholder="请输入用户账号…" autocomplete="off"></el-input> <!-- 用户账号输入框 -->
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="用户密码">
<el-input v-model="usersForm.passWord" type="password" placeholder="请输入用户密码…"
autocomplete="off"></el-input>
<el-col :span="12"> <!-- 列容器 -->
<el-form-item label="用户密码"> <!-- 用户密码表单项 -->
<el-input v-model="usersForm.passWord" type="password" placeholder="请输入用户密码…" autocomplete="off"></el-input> <!-- 用户密码输入框 -->
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="15">
<el-col :span="12">
<el-form-item label="用户姓名">
<el-input v-model="usersForm.name" placeholder="请输入用户姓名…" autocomplete="off"></el-input>
<el-row :gutter="15"> <!-- 行容器 -->
<el-col :span="12"> <!-- 列容器 -->
<el-form-item label="用户姓名"> <!-- 用户姓名表单项 -->
<el-input v-model="usersForm.name" placeholder="请输入用户姓名…" autocomplete="off"></el-input> <!-- 用户姓名输入框 -->
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="用户年龄">
<el-input v-model="usersForm.age" placeholder="请输入用户年龄…" autocomplete="off"></el-input>
<el-col :span="12"> <!-- 列容器 -->
<el-form-item label="用户年龄"> <!-- 用户年龄表单项 -->
<el-input v-model="usersForm.age" placeholder="请输入用户年龄…" autocomplete="off"></el-input> <!-- 用户年龄输入框 -->
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="15">
<el-col :span="12">
<el-form-item label="用户性别">
<el-radio-group v-model="usersForm.gender">
<el-radio label="男"></el-radio>
<el-radio label="女"></el-radio>
<el-row :gutter="15"> <!-- 行容器 -->
<el-col :span="12"> <!-- 列容器 -->
<el-form-item label="用户性别"> <!-- 用户性别表单项 -->
<el-radio-group v-model="usersForm.gender"> <!-- -->
<el-radio label="男"></el-radio> <!-- -->
<el-radio label="女"></el-radio> <!-- -->
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="联系电话">
<el-input v-model="usersForm.phone" placeholder="请输入联系电话…" autocomplete="off"></el-input>
<el-col :span="12"> <!-- 列容器 -->
<el-form-item label="联系电话"> <!-- 联系电话表单项 -->
<el-input v-model="usersForm.phone" placeholder="请输入联系电话…" autocomplete="off"></el-input> <!-- 联系电话输入框 -->
</el-form-item>
</el-col>
</el-row>
<el-form-item label="联系地址">
<el-input rows="4" type="textarea" v-model="usersForm.address" placeholder="请输入联系地址…"
autocomplete="off"></el-input>
<el-form-item label="联系地址"> <!-- 联系地址表单项 -->
<el-input rows="4" type="textarea" v-model="usersForm.address" placeholder="请输入联系地址…" autocomplete="off"></el-input> <!-- 联系地址输入框 -->
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="showAddFlag = false" style="font-size: 18px"> </el-button>
<el-button type="primary" @click="addInfo()" style="font-size: 18px"> </el-button>
<div slot="footer" class="dialog-footer"> <!-- 对话框底部 -->
<el-button @click="showAddFlag = false" style="font-size: 18px"> </el-button> <!-- -->
<el-button type="primary" @click="addInfo()" style="font-size: 18px"> </el-button> <!-- -->
</div>
</el-dialog>
</div>
@ -87,60 +79,57 @@
<style>
.login-container {
position: fixed;
left: 0;
top: 0;
bottom: 0;
right: 0;
background-image: url("../assets/back.jpg");
background-repeat: no-repeat;
background-size: 100%;
/* background-color: #b0c4de; */
/* background-image: url("data:image/svg+xml,%3Csvg width='6' height='6' viewBox='0 0 6 6' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%23ffffff' fill-opacity='0.4' fill-rule='evenodd'%3E%3Cpath d='M5 0h1L0 6V5zM6 5v1H5z'/%3E%3C/g%3E%3C/svg%3E"); */
position: fixed; /* 固定定位 */
left: 0; /* 左边距 */
top: 0; /* 上边距 */
bottom: 0; /* 下边距 */
right: 0; /* 右边距 */
background-image: url("../assets/back.jpg"); /* 背景图片 */
background-repeat: no-repeat; /* 不重复 */
background-size: 100%; /* 背景图片覆盖整个容器 */
}
.login-win {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 550px;
height: 300px;
padding: 15px;
border-radius: 5px;
background-size: cover;
position: absolute; /* 绝对定位 */
top: 50%; /* 垂直居中 */
left: 50%; /* 水平居中 */
transform: translate(-50%, -50%); /* 通过变换实现居中 */
width: 550px; /* 宽度 */
height: 300px; /* 高度 */
padding: 15px; /* 内边距 */
border-radius: 5px; /* 边角圆润 */
background-size: cover; /* 背景覆盖 */
}
.login-body {
padding: 30px 40px;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background-color: white;
border-radius: 20px;
border: 2px solid #6495ed;
opacity: 0.9;
padding: 30px 40px; /* 内边距 */
position: absolute; /* 绝对定位 */
top: 50%; /* 垂直居中 */
left: 50%; /* 水平居中 */
transform: translate(-50%, -50%); /* 通过变换实现居中 */
background-color: white; /* 背景颜色 */
border-radius: 20px; /* 边角圆润 */
border: 2px solid #6495ed; /* 边框 */
opacity: 0.9; /* 透明度 */
}
.login-title {
text-align: center;
font-size: 30px;
font-weight: bold;
color: #6495ed;
margin-bottom: 35px;
text-align: center; /* 文本居中 */
font-size: 30px; /* 字体大小 */
font-weight: bold; /* 字体加粗 */
color: #6495ed; /* 字体颜色 */
margin-bottom: 35px; /* 下边距 */
}
</style>
<script>
import initMenu from "../utils/menus.js";
import { login, addUsers } from "../api/index.js";
import initMenu from "../utils/menus.js"; //
import { login, addUsers } from "../api/index.js"; // API
export default {
data() {
return {
showAddFlag: false,
usersForm: {
showAddFlag: false, //
usersForm: { //
id: "",
userName: "",
passWord: "",
@ -149,129 +138,128 @@ export default {
age: "",
phone: "",
address: "",
type: 2,
status: 1,
type: 2, //
status: 1, //
},
loginForm: {
loginForm: { //
userName: "",
passWord: "",
},
rules: {
rules: { //
userName: [
{
required: true,
message: "用户账号必须输入",
trigger: "blur",
required: true, //
message: "用户账号必须输入", //
trigger: "blur", //
},
],
passWord: [
{
required: true,
message: "用户密码必须输入",
trigger: "blur",
required: true, //
message: "用户密码必须输入", //
trigger: "blur", //
},
],
},
};
},
methods: {
showAddWin() {
this.showAddFlag = true;
showAddWin() { //
this.showAddFlag = true; // true
},
submitForm(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
login(this.loginForm)
submitForm(formName) { //
this.$refs[formName].validate((valid) => { //
if (valid) { //
login(this.loginForm) // API
.then((res) => {
this.$store.commit("setToken", res.data);
sessionStorage.setItem("token", res.data);
initMenu(this.$router, this.$store);
this.$router.push("/index");
this.$store.commit("setToken", res.data); // token
sessionStorage.setItem("token", res.data); // token sessionStorage
initMenu(this.$router, this.$store); //
this.$router.push("/index"); //
})
} else {
return false;
return false; //
}
});
},
addInfo() {
if (this.usersForm.userName.trim() == '') {
addInfo() { //
if (this.usersForm.userName.trim() == '') { //
this.$message({
message: "请填写账号",
type: "warning",
message: "请填写账号", //
type: "warning", //
});
return;
return; //
}
if (this.usersForm.passWord.trim() == '') {
if (this.usersForm.passWord.trim() == '') { //
this.$message({
message: "请填写密码",
type: "warning",
message: "请填写密码", //
type: "warning", //
});
return;
return; //
}
if (this.usersForm.name.trim() == '') {
if (this.usersForm.name.trim() == '') { //
this.$message({
message: "请填写姓名",
type: "warning",
message: "请填写姓名", //
type: "warning", //
});
return;
return; //
}
if (this.usersForm.age.trim() == '') {
if (this.usersForm.age.trim() == '') { //
this.$message({
message: "请填写年龄",
type: "warning",
message: "请填写年龄", //
type: "warning", //
});
return;
return; //
}
if (this.usersForm.gender.trim() == '') {
if (this.usersForm.gender.trim() == '') { //
this.$message({
message: "请选择性别",
type: "warning",
message: "请选择性别", //
type: "warning", //
});
return;
return; //
}
if (this.usersForm.phone.trim() == '') {
if (this.usersForm.phone.trim() == '') { //
this.$message({
message: "请填写手机号码",
type: "warning",
message: "请填写手机号码", //
type: "warning", //
});
return;
return; //
}
if (this.usersForm.address.trim() == '') {
if (this.usersForm.address.trim() == '') { //
this.$message({
message: "请填写地址",
type: "warning",
message: "请填写地址", //
type: "warning", //
});
return;
return; //
}
addUsers(this.usersForm).then((resp) => {
if (resp.code == 0) {
this.$confirm("注册成功, 立即登陆?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
login({
addUsers(this.usersForm).then((resp) => { // API
if (resp.code == 0) { //
this.$confirm("注册成功, 立即登陆?", "提示", { //
confirmButtonText: "确定", //
cancelButtonText: "取消", //
type: "warning", //
}).then(() => { //
login({ // API
userName: this.usersForm.userName,
passWord: this.usersForm.passWord,
}).then((res) => {
this.$store.commit("setToken", res.data);
sessionStorage.setItem("token", res.data);
initMenu(this.$router, this.$store);
this.$router.push("/index");
this.$store.commit("setToken", res.data); // token
sessionStorage.setItem("token", res.data); // token sessionStorage
initMenu(this.$router, this.$store); //
this.$router.push("/index"); //
});
});
} else {
this.$message({
message: resp.msg,
type: "warning",
this.$message({ //
message: resp.msg, //
type: "warning", //
});
}
});
},
},
mounted() {
mounted() { //
}
};
</script>

@ -1,119 +1,145 @@
<template>
<div class="fater-body-show">
<!-- 主容器包含整个信息查询组件 -->
<el-card shadow="never">
<!-- 使用 Element UI 的卡片组件 -->
<div
class="el-card-header"
<!-- 卡片头部 -->
slot="header"
<!-- 指定插槽为 header -->
style="font-size: 26px"
<!-- 设置字体大小 -->
>
<i class="iconfont icon-r-find" style="font-size: 26px"></i>
信息查询
<!-- 图标 -->
信息查询 <!-- 卡片标题 -->
</div>
<div>
<el-form :inline="true" :model="qryForm">
<!-- 使用 Element UI 的表单组件设置为行内模式 -->
<el-form-item>
<!-- 表单项 -->
<el-input
v-model="qryForm.teamName"
<!-- 双向绑定社团名称 -->
placeholder="输入社团名称…"
<!-- 输入框提示文本 -->
autocomplete="off"
<!-- 关闭自动完成功能 -->
></el-input>
</el-form-item>
<el-form-item>
<el-form-item> <!-- 表单项 -->
<el-input
v-model="qryForm.userName"
<!-- 双向绑定用户姓名 -->
placeholder="输入用户姓名…"
<!-- 输入框提示文本 -->
autocomplete="off"
<!-- 关闭自动完成功能 -->
></el-input>
</el-form-item>
<el-form-item>
<el-form-item> <!-- 表单项 -->
<el-button
type="primary"
<!-- 按钮类型为主要按钮 -->
@click="getPageLikeInfo()"
<!-- 点击按钮时调用 getPageLikeInfo 方法 -->
style="font-size: 18px"
<!-- 设置字体大小 -->
>
搜索</el-button
>
搜索 <!-- 按钮文本 -->
</el-button>
</el-form-item>
</el-form>
</div>
</el-card>
<el-card shadow="never">
<!-- 使用 Element UI 的卡片组件 -->
<div>
<el-table
v-loading="loading"
<!-- 根据 loading 状态显示加载效果 -->
element-loading-text="拼命加载中"
<!-- 加载时的文本 -->
element-loading-spinner="el-icon-loading"
<!-- 加载时的图标 -->
element-loading-background="rgba(124, 124, 124, 0.8)"
:data="pageInfos"
border
<!-- 加载背景颜色 -->
:data="pageInfos" <!-- 表格数据绑定 -->
border <!-- 显示边框 -->
>
<el-table-column
align="center"
type="index"
align="center" <!-- 列内容居中对齐 -->
type="index" <!-- 显示索引列 -->
></el-table-column>
<el-table-column
align="center"
prop="userId"
label="成员ID"
align="center" <!-- 列内容居中对齐 -->
prop="userId" <!-- 数据字段为 userId -->
label="成员ID" <!-- 列标题 -->
></el-table-column>
<el-table-column
align="center"
prop="userName"
label="成员姓名"
align="center" <!-- 列内容居中对齐 -->
prop="userName" <!-- 数据字段为 userName -->
label="成员姓名" <!-- 列标题 -->
></el-table-column>
<el-table-column
align="center"
align="center" <!-- 列内容居中对齐 -->
prop="userGender"
label="成员性别"
<!-- 数据字段为 userGender -->
label="成员性别" <!-- 列标题 -->
></el-table-column>
<el-table-column
align="center"
prop="userAge"
label="成员年龄"
align="center" <!-- 列内容居中对齐 -->
prop="userAge" <!-- 数据字段为 userAge -->
label="成员年龄" <!-- 列标题 -->
></el-table-column>
<el-table-column
align="center"
prop="userPhone"
label="成员电话"
align="center" <!-- 列内容居中对齐 -->
prop="userPhone" <!-- 数据字段为 userPhone -->
label="成员电话" <!-- 列标题 -->
></el-table-column>
<el-table-column
align="center"
prop="teamName"
label="社团名称"
align="center" <!-- 列内容居中对齐 -->
prop="teamName" <!-- 数据字段为 teamName -->
label="社团名称" <!-- 列标题 -->
></el-table-column>
<el-table-column
align="center"
prop="createTime"
label="入团时间"
align="center" <!-- 列内容居中对齐 -->
prop="createTime" <!-- 数据字段为 createTime -->
label="入团时间" <!-- 列标题 -->
></el-table-column>
<el-table-column
align="center"
label="操作处理"
fixed="right"
width="140"
align="center" <!-- 列内容居中对齐 -->
label="操作处理" <!-- 列标题 -->
fixed="right" <!-- 固定在右侧 -->
width="140" <!-- 列宽 -->
>
<template slot-scope="scope">
<template slot-scope="scope"> <!-- 自定义列内容 -->
<el-button
type="danger"
<!-- 按钮类型为危险按钮 -->
style="font-size: 18px"
<!-- 设置字体大小 -->
@click="delInfo(scope.row.id)"
<!-- 点击按钮时调用 delInfo 方法传入当前行的 ID -->
>
删除</el-button
>
删除 <!-- 按钮文本 -->
</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
v-if="pageTotal >= 0"
style="margin-top: 15px"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="pageIndex"
:page-sizes="[5, 10, 20, 50]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="totalInfo"
v-if="pageTotal >= 0" <!-- pageTotal 大于等于 0 时显示分页 -->
style="margin-top: 15px" <!-- 设置上边距 -->
@size-change="handleSizeChange" <!-- 页大小变化时调用 handleSizeChange 方法 -->
@current-change="handleCurrentChange" <!-- 当前页变化时调用 handleCurrentChange 方法 -->
:current-page="pageIndex" <!-- 当前页码绑定 -->
:page-sizes="[5, 10, 20, 50]" <!-- 可选的每页数据量 -->
:page-size="pageSize" <!-- 每页数据量绑定 -->
layout="total, sizes, prev, pager, next, jumper" <!-- 分页组件布局 -->
:total="totalInfo" <!-- 总数据量绑定 -->
>
</el-pagination>
</div>
@ -125,91 +151,123 @@
</style>
<script>
import { getPageMembers, delMembers } from "../../api";
import { getPageMembers, delMembers } from "../../api"; // API
export default {
data() {
return {
pageInfos: [],
//
pageIndex: 1,
//
pageSize: 10,
//
pageTotal: 0,
//
totalInfo: 0,
//
loading: true,
qryForm: {
//
qryForm: { //
token: this.$store.state.token,
// Vuex token
teamName: "",
//
userName: "",
//
},
};
},
methods: {
getPageInfo(pageIndex, pageSize) {
getPageMembers(pageIndex, pageSize, this.qryForm.token).then(
getPageInfo(pageIndex, pageSize) { //
getPageMembers(pageIndex, pageSize, this.qryForm.token).then( // API
(resp) => {
this.pageInfos = resp.data.data;
//
this.pageIndex = resp.data.pageIndex;
//
this.pageSize = resp.data.pageSize;
//
this.pageTotal = resp.data.pageTotal;
//
this.totalInfo = resp.data.count;
//
this.loading = false;
this.loading = false; // false
}
);
},
getPageLikeInfo() {
//
getPageMembers(
1,
1, //
this.pageSize,
//
this.qryForm.token,
// token
this.qryForm.teamName,
//
this.qryForm.userName
//
).then((resp) => {
this.pageInfos = resp.data.data;
//
this.pageIndex = resp.data.pageIndex;
//
this.pageSize = resp.data.pageSize;
//
this.totalInfo = resp.data.count;
//
this.pageTotal = resp.data.pageTotal;
//
this.loading = false;
// false
});
},
handleSizeChange(pageSize) {
handleSizeChange(pageSize) { //
this.getPageInfo(
this.pageIndex,
//
pageSize,
//
this.qryForm.token,
// token
this.qryForm.teamName,
//
this.qryForm.userName
//
);
},
handleCurrentChange(pageIndex) {
handleCurrentChange(pageIndex) { //
this.getPageInfo(
pageIndex,
//
this.pageSize,
//
this.qryForm.token,
// token
this.qryForm.teamName,
//
this.qryForm.userName
//
);
},
delInfo(id) {
this.$confirm("移除成员将移除相关记录,确认继续吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
delInfo(id) { //
this.$confirm("移除成员将移除相关记录,确认继续吗?", "提示", { //
confirmButtonText: "确定", //
cancelButtonText: "取消", //
type: "warning", //
}).then(() => {
delMembers(id).then((resp) => {
if (resp.code == 0) {
this.$message({
delMembers(id).then((resp) => { // API
if (resp.code == 0) { //
this.$message({ //
message: resp.msg,
type: "success",
});
this.getPageInfo(1, this.pageSize, this.qryForm.token);
} else {
this.$message({
this.getPageInfo(1, this.pageSize, this.qryForm.token); //
} else { //
this.$message({ //
message: resp.msg,
type: "warning",
});
@ -218,8 +276,8 @@ export default {
});
},
},
mounted() {
this.getPageInfo(1, this.pageSize, this.qryForm.token);
mounted() { //
this.getPageInfo(1, this.pageSize, this.qryForm.token); //
},
};
</script>

@ -1,245 +1,235 @@
<template>
<div class="fater-body-show">
<el-card shadow="never">
<div class="fater-body-show"> <!-- 主容器 -->
<el-card shadow="never"> <!-- 使用 Element UI 的卡片组件 -->
<div
class="el-card-header"
slot="header"
style="font-size: 26px"
style="font-size: 26px" <!-- 卡片头部样式 -->
>
<i class="iconfont icon-r-find" style="font-size: 26px"></i>
信息查询
<i class="iconfont icon-r-find" style="font-size: 26px"></i> <!-- 图标 -->
信息查询 <!-- 卡片标题 -->
</div>
<div>
<el-form :inline="true" :model="qryForm">
<el-form-item>
<el-form :inline="true" :model="qryForm"> <!-- 使用 Element UI 的表单组件设置为行内模式 -->
<el-form-item> <!-- 表单项 -->
<el-input
v-model="qryForm.name"
placeholder="输入社团名称…"
autocomplete="off"
v-model="qryForm.name" <!-- 双向绑定查询表单的社团名称 -->
placeholder="输入社团名称…" <!-- 输入框提示文本 -->
autocomplete="off" <!-- 关闭自动完成功能 -->
></el-input>
</el-form-item>
<el-form-item>
<el-form-item> <!-- 表单项 -->
<el-select
v-model="qryForm.typeId"
placeholder="请选择社团类型"
v-model="qryForm.typeId" <!-- 双向绑定查询表单的社团类型 -->
placeholder="请选择社团类型" <!-- 下拉框提示文本 -->
>
<el-option label="查看全部" value=""></el-option>
<el-option label="查看全部" value=""></el-option> <!-- -->
<el-option
v-for="(item, index) in teamTypes"
:key="index"
:label="item.name"
:value="item.id"
v-for="(item, index) in teamTypes" <!-- 遍历社团类型 -->
:key="index" <!-- 唯一键 -->
:label="item.name" <!-- 显示的标签 -->
:value="item.id" <!-- 选中的值 -->
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-form-item> <!-- 表单项 -->
<el-button
type="primary"
@click="getPageLikeInfo()"
style="font-size: 18px"
type="primary" <!-- 按钮类型 -->
@click="getPageLikeInfo()" <!-- 点击事件调用查询方法 -->
style="font-size: 18px" <!-- 按钮样式 -->
>
搜索</el-button
>
搜索</el-button> <!-- -->
</el-form-item>
</el-form>
</div>
</el-card>
<el-card shadow="never">
<div v-if="userType == 0" slot="header">
<el-card shadow="never"> <!-- 另一个卡片组件 -->
<div v-if="userType == 0" slot="header"> <!-- -->
<el-button
type="primary"
style="font-size: 18px"
@click="showAddWin()"
>
新增</el-button
type="primary" <!-- 按钮类型 -->
style="font-size: 18px" <!-- 按钮样式 -->
@click="showAddWin()" <!-- 点击事件显示添加窗口 -->
>
新增</el-button> <!-- -->
</div>
<div>
<el-table
v-loading="loading"
element-loading-text="拼命加载中"
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(124, 124, 124, 0.8)"
:data="pageInfos"
border
v-loading="loading" <!-- 加载状态 -->
element-loading-text="拼命加载中" <!-- 加载文本 -->
element-loading-spinner="el-icon-loading" <!-- 加载图标 -->
element-loading-background="rgba(124, 124, 124, 0.8)" <!-- 加载背景 -->
:data="pageInfos" <!-- 表格数据 -->
border <!-- 表格边框 -->
>
<el-table-column
align="center"
type="index"
align="center" <!-- 列内容居中 -->
type="index" <!-- 索引列 -->
></el-table-column>
<el-table-column
align="center"
prop="name"
label="社团名称"
align="center" <!-- 列内容居中 -->
prop="name" <!-- 数据字段 -->
label="社团名称" <!-- 列标题 -->
></el-table-column>
<el-table-column
align="center"
prop="typeName"
label="社团类型"
align="center" <!-- 列内容居中 -->
prop="typeName" <!-- 数据字段 -->
label="社团类型" <!-- 列标题 -->
></el-table-column>
<el-table-column
align="center"
prop="managerName"
label="社团团长"
align="center" <!-- 列内容居中 -->
prop="managerName" <!-- 数据字段 -->
label="社团团长" <!-- 列标题 -->
></el-table-column>
<el-table-column
align="center"
prop="createTime"
label="建立时间"
align="center" <!-- 列内容居中 -->
prop="createTime" <!-- 数据字段 -->
label="建立时间" <!-- 列标题 -->
></el-table-column>
<el-table-column
align="center"
prop="total"
label="社团人数"
align="center" <!-- 列内容居中 -->
prop="total" <!-- 数据字段 -->
label="社团人数" <!-- 列标题 -->
></el-table-column>
<el-table-column
v-if="userType == 0"
align="center"
width="250"
label="操作处理"
fixed="right"
v-if="userType == 0" <!-- 根据用户类型显示操作列 -->
align="center" <!-- 列内容居中 -->
width="250" <!-- 列宽 -->
label="操作处理" <!-- 列标题 -->
fixed="right" <!-- 固定在右侧 -->
>
<template slot-scope="scope">
<template slot-scope="scope"> <!-- 自定义列内容 -->
<el-button
type="primary"
style="font-size: 18px"
@click="showUpdWin(scope.row)"
type="primary" <!-- 按钮类型 -->
style="font-size: 18px" <!-- 按钮样式 -->
@click="showUpdWin(scope.row)" <!-- 点击事件显示编辑窗口 -->
>
编辑</el-button
>
编辑</el-button> <!-- -->
<el-button
type="danger"
style="font-size: 18px"
@click="delInfo(scope.row.id)"
type="danger" <!-- 按钮类型 -->
style="font-size: 18px" <!-- 按钮样式 -->
@click="delInfo(scope.row.id)" <!-- 点击事件删除信息 -->
>
删除</el-button
>
删除</el-button> <!-- -->
</template>
</el-table-column>
<el-table-column
v-if="userType == 2"
align="center"
label="操作处理"
fixed="right"
width="140"
v-if="userType == 2" <!-- 根据用户类型显示申请列 -->
align="center" <!-- 列内容居中 -->
label="操作处理" <!-- 列标题 -->
fixed="right" <!-- 固定在右侧 -->
width="140" <!-- 列宽 -->
>
<template slot-scope="scope">
<template slot-scope="scope"> <!-- 自定义列内容 -->
<el-button
type="primary"
style="font-size: 18px"
@click="apply(scope.row.id)"
type="primary" <!-- 按钮类型 -->
style="font-size: 18px" <!-- 按钮样式 -->
@click="apply(scope.row.id)" <!-- 点击事件申请加入社团 -->
>
申请</el-button
>
申请</el-button> <!-- -->
</template>
</el-table-column>
</el-table>
<el-pagination
v-if="pageTotal >= 0"
style="margin-top: 15px"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="pageIndex"
:page-sizes="[5, 10, 20, 50]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="totalInfo"
v-if="pageTotal >= 0" <!-- 根据总页数显示分页 -->
style="margin-top: 15px" <!-- 分页样式 -->
@size-change="handleSizeChange" <!-- 页大小变化事件 -->
@current-change="handleCurrentChange" <!-- 当前页变化事件 -->
:current-page="pageIndex" <!-- 当前页 -->
:page-sizes="[5, 10, 20, 50]" <!-- 可选的每页条数 -->
:page-size="pageSize" <!-- 每页条数 -->
layout="total, sizes, prev, pager, next, jumper" <!-- 分页布局 -->
:total="totalInfo" <!-- 总条数 -->
>
</el-pagination>
</div>
</el-card>
<el-dialog title="添加信息" width="600px" :visible.sync="showAddFlag">
<el-form label-width="90px" :model="teamsForm">
<el-form-item label="社团名称">
<el-dialog title="添加信息" width="600px" :visible.sync="showAddFlag"> <!-- 添加信息对话框 -->
<el-form label-width="90px" :model="teamsForm"> <!-- 表单组件 -->
<el-form-item label="社团名称"> <!-- 表单项 -->
<el-input
v-model="teamsForm.name"
placeholder="请输入社团名称…"
autocomplete="off"
v-model="teamsForm.name" <!-- 双向绑定社团名称 -->
placeholder="请输入社团名称…" <!-- 输入框提示文本 -->
autocomplete="off" <!-- 关闭自动完成功能 -->
></el-input>
</el-form-item>
<el-form-item label="社团类型">
<el-form-item label="社团类型"> <!-- 表单项 -->
<el-select
style="width: 100%"
v-model="teamsForm.typeId"
placeholder="请选择社团类型"
style="width: 100%" <!-- 下拉框样式 -->
v-model="teamsForm.typeId" <!-- 双向绑定社团类型 -->
placeholder="请选择社团类型" <!-- 下拉框提示文本 -->
>
<el-option
v-for="(item, index) in teamTypes"
:key="index"
:label="item.name"
:value="item.id"
v-for="(item, index) in teamTypes" <!-- 遍历社团类型 -->
:key="index" <!-- 唯一键 -->
:label="item.name" <!-- 显示的标签 -->
:value="item.id" <!-- 选中的值 -->
></el-option>
</el-select>
</el-form-item>
<el-form-item label="社团团长ID">
<el-form-item label="社团团长ID"> <!-- 表单项 -->
<el-input
v-model="teamsForm.manager"
placeholder="请输入社团管理员ID…"
autocomplete="off"
v-model="teamsForm.manager" <!-- 双向绑定社团团长ID -->
placeholder="请输入社团管理员ID…" <!-- 输入框提示文本 -->
autocomplete="off" <!-- 关闭自动完成功能 -->
></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="showAddFlag = false" style="font-size: 18px"
<div slot="footer" class="dialog-footer"> <!-- 对话框底部 -->
<el-button @click="showAddFlag = false" style="font-size: 18px" <!-- -->
>
</el-button
>
</el-button>
<el-button
type="primary"
@click="addInfo()"
type="primary" <!-- 确定按钮类型 -->
@click="addInfo()" <!-- 点击事件添加信息 -->
style="font-size: 18px"
>
</el-button
>
</el-button> <!-- -->
</div>
</el-dialog>
<el-dialog title="修改信息" width="600px" :visible.sync="showUpdFlag">
<el-form label-width="90px" :model="teamsForm">
<el-form-item label="社团名称">
<el-dialog title="修改信息" width="600px" :visible.sync="showUpdFlag"> <!-- 修改信息对话框 -->
<el-form label-width="90px" :model="teamsForm"> <!-- 表单组件 -->
<el-form-item label="社团名称"> <!-- 表单项 -->
<el-input
v-model="teamsForm.name"
placeholder="请输入社团名称…"
autocomplete="off"
v-model="teamsForm.name" <!-- 双向绑定社团名称 -->
placeholder="请输入社团名称…" <!-- 输入框提示文本 -->
autocomplete="off" <!-- 关闭自动完成功能 -->
></el-input>
</el-form-item>
<el-form-item label="社团类型">
<el-form-item label="社团类型"> <!-- 表单项 -->
<el-select
style="width: 100%"
v-model="teamsForm.typeId"
placeholder="请选择社团类型"
style="width: 100%" <!-- 下拉框样式 -->
v-model="teamsForm.typeId" <!-- 双向绑定社团类型 -->
placeholder="请选择社团类型" <!-- 下拉框提示文本 -->
>
<el-option
v-for="(item, index) in teamTypes"
:key="index"
:label="item.name"
:value="item.id"
v-for="(item, index) in teamTypes" <!-- 遍历社团类型 -->
:key="index" <!-- 唯一键 -->
:label="item.name" <!-- 显示的标签 -->
:value="item.id" <!-- 选中的值 -->
></el-option>
</el-select>
</el-form-item>
<el-form-item label="社团团长ID">
<el-form-item label="社团团长ID"> <!-- 表单项 -->
<el-input
v-model="teamsForm.manager"
placeholder="请输入社团管理员ID…"
autocomplete="off"
v-model="teamsForm.manager" <!-- 双向绑定社团团长ID -->
placeholder="请输入社团管理员ID…" <!-- 输入框提示文本 -->
autocomplete="off" <!-- 关闭自动完成功能 -->
></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="showUpdFlag = false" style="font-size: 18px"
<div slot="footer" class="dialog-footer"> <!-- 对话框底部 -->
<el-button @click="showUpdFlag = false" style="font-size: 18px" <!-- -->
>
</el-button
>
</el-button>
<el-button
type="primary"
@click="updInfo()"
type="primary" <!-- 确定按钮类型 -->
@click="updInfo()" <!-- 点击事件更新信息 -->
style="font-size: 18px"
>
</el-button
>
</el-button> <!-- -->
</div>
</el-dialog>
</div>
@ -250,193 +240,190 @@
<script>
import {
getAllTypes,
getPageTeams,
getLoginUser,
addTeams,
updTeams,
delTeams,
addApplyLogs,
} from "../../api";
getAllTypes, // API
getPageTeams, // API
getLoginUser, // API
addTeams, // API
updTeams, // API
delTeams, // API
addApplyLogs, // API
} from "../../api"; // API
export default {
data() {
return {
teamTypes: [],
userType: "",
pageInfos: [],
pageIndex: 1,
pageSize: 10,
pageTotal: 0,
totalInfo: 0,
loading: true,
showAddFlag: false,
showUpdFlag: false,
qryForm: {
name: "",
typeId: "",
token: this.$store.state.token,
teamTypes: [], //
userType: "", //
pageInfos: [], //
pageIndex: 1, //
pageSize: 10, //
pageTotal: 0, //
totalInfo: 0, //
loading: true, //
showAddFlag: false, //
showUpdFlag: false, //
qryForm: { //
name: "", //
typeId: "", // ID
token: this.$store.state.token, // token
},
teamsForm: {
id: "",
name: "",
total: 1,
manager: "",
typeId: "",
teamsForm: { //
id: "", // ID
name: "", //
total: 1, //
manager: "", // ID
typeId: "", // ID
},
};
},
methods: {
getPageInfo(pageIndex, pageSize) {
getPageInfo(pageIndex, pageSize) { //
getPageTeams(pageIndex, pageSize, this.qryForm.token).then(
(resp) => {
this.pageInfos = resp.data.data;
this.pageIndex = resp.data.pageIndex;
this.pageSize = resp.data.pageSize;
this.pageTotal = resp.data.pageTotal;
this.totalInfo = resp.data.count;
this.pageInfos = resp.data.data; //
this.pageIndex = resp.data.pageIndex; //
this.pageSize = resp.data.pageSize; //
this.pageTotal = resp.data.pageTotal; //
this.totalInfo = resp.data.count; //
this.loading = false;
this.loading = false; //
}
);
},
getPageLikeInfo() {
getPageLikeInfo() { //
getPageTeams(
1,
this.pageSize,
this.qryForm.token,
this.qryForm.name,
this.qryForm.typeId
1, //
this.pageSize, //
this.qryForm.token, // token
this.qryForm.name, //
this.qryForm.typeId // ID
).then((resp) => {
this.pageInfos = resp.data.data;
this.pageIndex = resp.data.pageIndex;
this.pageSize = resp.data.pageSize;
this.totalInfo = resp.data.count;
this.pageTotal = resp.data.pageTotal;
this.loading = false;
this.pageInfos = resp.data.data; //
this.pageIndex = resp.data.pageIndex; //
this.pageSize = resp.data.pageSize; //
this.totalInfo = resp.data.count; //
this.pageTotal = resp.data.pageTotal; //
this.loading = false; //
});
},
handleSizeChange(pageSize) {
handleSizeChange(pageSize) { //
this.getPageInfo(
this.pageIndex,
pageSize,
this.qryForm.token,
this.qryForm.name,
this.qryForm.typeId
this.pageIndex, //
pageSize, //
this.qryForm.token, // token
this.qryForm.name, //
this.qryForm.typeId // ID
);
},
handleCurrentChange(pageIndex) {
handleCurrentChange(pageIndex) { //
this.getPageInfo(
pageIndex,
this.pageSize,
this.qryForm.token,
this.qryForm.name,
this.qryForm.typeId
pageIndex, //
this.pageSize, //
this.qryForm.token, // token
this.qryForm.name, //
this.qryForm.typeId // ID
);
},
initForm() {
initForm() { //
this.teamsForm = {
id: "",
name: "",
total: 1,
manager: "",
typeId: "",
id: "", // ID
name: "", //
total: 1, //
manager: "", // ID
typeId: "", // ID
};
},
showAddWin() {
this.initForm();
this.showAddFlag = true;
showAddWin() { //
this.initForm(); //
this.showAddFlag = true; //
},
showUpdWin(row) {
this.teamsForm = row;
this.showUpdFlag = true;
showUpdWin(row) { //
this.teamsForm = row; //
this.showUpdFlag = true; //
},
addInfo() {
addInfo() { //
addTeams(this.teamsForm).then((resp) => {
if (resp.code == 0) {
if (resp.code == 0) { //
this.$message({
message: resp.msg,
type: "success",
message: resp.msg, //
type: "success", //
});
this.getPageInfo(1, this.pageSize, this.qryForm.token);
this.getPageInfo(1, this.pageSize, this.qryForm.token); //
this.showAddFlag = false;
this.showAddFlag = false; //
} else {
this.$message({
message: resp.msg,
type: "warning",
message: resp.msg, //
type: "warning", //
});
}
});
},
updInfo() {
updInfo() { //
updTeams(this.teamsForm).then((resp) => {
this.$message({
message: resp.msg,
type: "success",
message: resp.msg, //
type: "success", //
});
this.getPageInfo(1, this.pageSize, this.qryForm.token);
this.getPageInfo(1, this.pageSize, this.qryForm.token); //
this.showUpdFlag = false;
this.showUpdFlag = false; //
});
},
delInfo(id) {
this.$confirm("即将删除相关信息, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
delInfo(id) { //
this.$confirm("即将删除相关信息, 是否继续?", "提示", { //
confirmButtonText: "确定", //
cancelButtonText: "取消", //
type: "warning", //
}).then(() => {
delTeams(id).then((resp) => {
delTeams(id).then((resp) => { // API
this.$message({
message: resp.msg,
type: "success",
message: resp.msg, //
type: "success", //
});
this.getPageInfo(1, this.pageSize, this.qryForm.token);
this.getPageInfo(1, this.pageSize, this.qryForm.token); //
});
});
},
apply(id) {
this.$confirm("确认申请加入社团吗", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
apply(id) { //
this.$confirm("确认申请加入社团吗", "提示", { //
confirmButtonText: "确定", //
cancelButtonText: "取消", //
type: "warning", //
}).then(() => {
addApplyLogs({
teamId: id,
status: 0,
token: this.$store.state.token,
addApplyLogs({ //
teamId: id, // ID
status: 0, //
token: this.$store.state.token, // token
}).then((resp) => {
if (resp.code == 0) {
if (resp.code == 0) { //
this.$message({
message: "申请已提交,请耐心等待",
type: "success",
message: "申请已提交,请耐心等待", //
type: "success", //
});
this.getPageInfo(1, this.pageSize, this.qryForm.token);
this.getPageInfo(1, this.pageSize, this.qryForm.token); //
} else {
this.$message({
message: resp.msg,
type: "warning",
message: resp.msg, //
type: "warning", //
});
}
});
});
},
},
mounted() {
this.getPageInfo(1, this.pageSize, this.qryForm.token);
mounted() { //
this.getPageInfo(1, this.pageSize, this.qryForm.token); //
getAllTypes().then((resp) => {
this.teamTypes = resp.data;
getAllTypes().then((resp) => { //
this.teamTypes = resp.data; //
});
getLoginUser(this.$store.state.token).then((resp) => {
this.userType = resp.data.type;
getLoginUser(this.$store.state.token).then((resp) => { //
this.userType = resp.data.type; //
});
},
};

Loading…
Cancel
Save