ruoyi-vue 前后端分离练习

数据库数据插入

INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);

1.程序开发准备

后端

1、idea open导入

2、打开ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java

3、配置jdk,配置数据库密码 resources/application-druid.yml

4、在mysql创建数据库 ry-vue 配置编码 utf8mb4 排序规则 utf8mb4_general_ci

​ 依次导入sql文件夹下的ry_20240629 、quartz 两个sql文件

5、启动

前端

npm install --registry=https://registry.npmmirror.com
npm run dev

数据库表创建

修改和新增数据表

添加外键时,注意设置数据库引擎

2.基础框架搭建

显示用户名

navbar.vue 路径 layout/components/Navbar.vue

在topNav下面复制一段,修改为userName方法

userName: {
  get() {
    return this.$store.state.user.name
  }
}

在个人中心添加 userName并设置成居中显示

style

<div class="avatar-wrapper" style="display: flex;align-items: center">
  <span>{{userName}}</span>
  <img :src="avatar" class="user-avatar">
  <i class="el-icon-caret-bottom" />
</div>

3.权限管理

创建菜单栏

4.用户管理

参考系统管理配置

添加职工管理菜单

添加用户管理

前端修改

\ruoyi-ui\src\views\system\user
index.vue

用户编号下拉菜单,可以从用户状态复制

<el-form-item label="用户编号" prop="userid">
  <el-select
    v-model="queryParams.userId"
    placeholder="请选择用户编号"
    clearable
    style="width: 240px"
  >
    <el-option
      v-for="dict in userList"
      :key="dict.userId"
      :label="dict.userId"
      :value="dict.userId"
    />
  </el-select>
</el-form-item>

权限设置,管理员显示全部,员工只显示个人信息

后端修改

SysUserController.java

LoginUser loginUser = getLoginUser();
Boolean loginIsAdmin = loginUser.getUser().isAdmin();
if(!loginIsAdmin){
    list = list.stream().filter(su->su.getUserName().equals(loginUser.getUser().getUserName())).collect(Collectors.toList());
}

注意点

修改生成信息-上级菜单 对应xx管理后提交

包路径和模块名和前面生成菜单保持一致

业务名 xxInfo

考勤管理

(1)添加菜单

(2)生成代码

业务名和前面设置一样,可能产生冲突

(3)导入文件

Java

Vue

Sql

(4)后端

增加实体类字段 domain

attendances.java 创建用户姓名,设置get set方法 和 toString方法

/** 员工姓名 */
@Excel(name = "员工姓名")
private String userName;  #nick_name  sql语句查出来是什么就是什么

gen

.append("userName",getUserName())

(5)mapper 修改sql语句

在sql或者select中修改

select a.id,a.personId,a.month,a.days,s.user_name,s.user_id,s.nick_name from attendances a,sys_user s where a.personId = s.user_id

Mapper 新增属性

<result property="userName"    column="user_name"    />

index.vue修改

nick_name

<el-table-column label="员工编号" align="center" prop="personId"  v-if="false"/>
<el-table-column label="员工姓名" align="center" prop="userName" />

下拉菜单从user地方拷贝, 和参数名保持一致
注意 quereParams 和form

<el-form-item label="用户姓名" prop="nick_name">
  <el-select
    v-model="queryParams.nick_name"
    placeholder="请输入用户姓名"
    clearable
    style="width: 240px"
  >
    <el-option
      v-for="dict in attendancesInfoList"
      :key="dict.nick_name"
      :label="dict.nick_name"
      :value="dict.nick_name"
    />
  </el-select>
</el-form-item>

数据支持法

前端 index.vue

# 1.script
<script>
import { listUser} from "@/api/system/user";  #导入

# 2.data
export default {
  name: "AttendancesInfo",
  data() {
    return {
      //用户列表
      userList:[],   #添加数据
      
# 3.method      
methods: {
  getUserList(){
    listUser().then(response =>{
      this.userList= response.rows;  /* rows 还是data*/
    }).catch(error =>{
      console.error("获取用户信息失败",error);
    });
  },
  
 # 4.created
 created() {
  this.getList();
  this.getUserList();
},

# 5.下拉菜单
<el-select v-model="form.userList"  placeholder="请输入用户姓名">
  <el-option
    v-for="dict in userList"
    :key="dict.userId"
    :label="dict.nickName"
    :value="dict.nickName"
  />
  </el-select>


# 最后在 新增和修复 复制代码
 listUser().then(response =>{
      this.userList= response.rows;  /* rows 还是data*/
    }).catch(error =>{
      console.error("获取用户信息失败",error);
    });

权限管理

最后在mapper sql末尾设置

${params.dataScope}

Mapper

@DataScope(userAlias = "s")

工资管理

后端 salary.java 创建用户对象,设置get set方法 和 toString方法

/** 用户*/
private SysUser sysUser;

修改mapper文件,resource/mapper/salaryMapper.xml

<association property="sysUser"    javaType="SysUser">
    <result property="nickName"    column="nick_name"></result>
    <result property="userName"    column="user_name"></result>
</association>

修改sql,注意数据库字段 和sql一致 下划线、大小写有没有

select s.id, s.personId, s.month, s.salary,su.nick_name,su.user_name from salary s join sys_user su on s.personid = su.user_id

前端 index.vue 窗口显示

<el-table-column label="员工姓名" align="center" prop="sysUser.nickName" />
<el-table-column label="员工编号" align="center" prop="personId" v-if="false"/>

下拉菜单

<el-select
  v-model="queryParams.personId"
  placeholder="请输入员工编号"
  clearable
  style="width: 240px"
>
  <el-option
    v-for="item in salarySysList"
    :key="item.personId"
    :label="item.sysUser.nickName"
    :value="item.personId"
  />
</el-select>

权限控制 salaryController

LoginUser loginUser = getLoginUser();
Boolean loginIsAdmin = loginUser.getUser().isAdmin();
if(!loginIsAdmin){
    list = list.stream().filter(su -> su.getSysUser().getUserName().equals(loginUser.getUser().getUserName())).collect(Collectors.toList());
}

请假管理

请假信息,需要先新增数据字典,再生成代码

测试

身份证验证

system/user/index.vue

添加身份证字段

rules

idCard: [
  { required: true, message: "身份证号码不能为空", trigger: "blur" },
  { validator:(rule,text,callback) =>{
      const textLength = text.length;
      if(textLength == 17 && textLength==19){
        callback(new Error("身份证位数不对"))
      }
    },trigger: "blur"}
]

Methods

idCardChecker(text){
  const textLength = text.length;
  if(textLength !== 18 && textLength !== 15){
    return false;
  }
  return true;
},

Watch

"form.idCard"(val){
  console.log(val);
  console.log(this.idCardChecker(val));
  if(this.idCardChecker(val)){
      let sexCode = val.slice(14,17);
      sexCode =parseInt(sexCode);
      let isEven = sexCode % 2 === 0;
      let sex = isEven?"1":"0";
       console.log(sex);
      this.form.sex= sex;
  }else{
      this.form.sex == undefined;
  }
}

1、Data 初始化

2、method 方法

3、import导入

4、created 调用

暂时无法在飞书文档外展示此内容

export  function  getSysUserOption(){
  return request({
    url: '/system/user/list',
    method: 'get'
  })
}
// 查询用户列表
export function listUser(query) {
  return request({
    url: '/system/user/list',
    method: 'get',
    params: query
  })
}
sex= sex;
  }else{
      this.form.sex == undefined;
  }
}

1、Data 初始化

2、method 方法

3、import导入

4、created 调用

暂时无法在飞书文档外展示此内容

export  function  getSysUserOption(){
  return request({
    url: '/system/user/list',
    method: 'get'
  })
}
// 查询用户列表
export function listUser(query) {
  return request({
    url: '/system/user/list',
    method: 'get',
    params: query
  })
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值