若依[RuoYi-Vue]使用(五)- 认识ruoyi前端文件

28秒前 58阅读

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 1. 前端项目结构
  • 一、index.vue
    • 1. 控件在网页、代码之间的映对
      • 1.1.1 控件
      • 1.1.2 参数
      • 1.3
      • 二、dept.js
        • 1.代码
        • 2.未完待续
        • 总结

          前言

          以“系统管理 - 部门管理”

          认识若依前端 index.vue

          认识若依前端 dept.js

          若依[RuoYi-Vue]使用(五)- 认识ruoyi前端文件


          1. 前端项目结构

          项目结构

          ├── build // 构建相关

          ├── bin // 执行脚本

          ├── public // 公共文件

          │ ├── favicon.ico // favicon图标

          │ └── index.html // html模板

          ├── src // 源代码

          │ ├── api // 所有请求

          │ ├── assets // 主题 字体等静态资源

          │ ├── components // 全局公用组件

          │ ├── directive // 全局指令

          │ ├── layout // 布局

          │ ├── router // 路由

          │ ├── store // 全局 store管理

          │ ├── utils // 全局公用方法

          │ ├── views // view

          │ ├── App.vue // 入口页面

          │ ├── main.js // 入口 加载组件 初始化等

          │ ├── permission.js // 权限管理

          │ └── settings.js // 系统配置

          ├── .editorconfig // 编码格式

          ├── .env.development // 开发环境配置

          ├── .env.production // 生产环境配置

          ├── .env.staging // 测试环境配置

          ├── .eslintignore // 忽略语法检查

          ├── .eslintrc.js // eslint 配置项

          ├── .gitignore // git 忽略项

          ├── babel.config.js // babel.config.js

          ├── package.json // package.json

          └── vue.config.js // vue.config.js

          ——————————————————————————————————————————

          原文链接:https://blog.csdn.net/qq_41607217/article/details/118962345

          若依[RuoYi-Vue]使用(五)- 认识ruoyi前端文件

          ——————————————————————————————————————————

          一、index.vue

          1. 控件在网页、代码之间的映对

          若依[RuoYi-Vue]使用(五)- 认识ruoyi前端文件

          ——————————————————————————————————————————

          若依[RuoYi-Vue]使用(五)- 认识ruoyi前端文件

          ——————————————————————————————————————————

            
            
            
          搜索 重置 新增 展开/折叠 } 去解构数据 --> {{ parseTime(scope.row.createTime) }} 修改 新增 删除 {{dict.label}}
          import { listDept, getDept, delDept, addDept, updateDept, listDeptExcludeChild } from "@/api/system/dept"; // 2024.05.31 注释:引入注册 // @riophae/vue-treeselect 是一个基于 Vue.js 的树形选择器组件,可以用于选择树形结构的数据 import Treeselect from "@riophae/vue-treeselect"; import "@riophae/vue-treeselect/dist/vue-treeselect.css"; // 2024.05.31 注释 // export主要用于对外输出本模块变量的接口,一个文件就可以被理解为一个模块。export就是导出。 // import就是在一个模块中加载另一个含有export接口的模块, import就是导入。 // export default和export都能导出一个模块里面的常量,函数,文件,模块等,在其它文件或模块中通过import来导入常量,函数,文件或模块。 // 在一个文件或模块中,export,import可以有多个,export default却只能有一个。 // 通过export方式导出,在导入的时候需要加{}大括号,export default 就不需要{}. export default { name: "Dept", // 字典:sys_normal_disable,包括:“正常,停用”两种状态 dicts: ['sys_normal_disable'], // 组件:下拉树 components: { Treeselect }, // data 必须声明为返回一个初始数据对象的函数,因为组件可能被用来创建多个实例。 // 如果 data 仍然是一个纯粹的对象,则所有的实例将共享引用同一个数据对象! // 通过提供 data 函数,每次创建一个新实例后,我们能够调用 data函数,从而返回初始数据的一个全新副本数据对象。 // 简言之,组件复用下,不会造成数据同时指向一处,造出牵一发而动全身的问题。 // 不使用return包裹的数据会在项目的全局可见,会造成变量污染; // 使用return包裹后数据中变量只在当前组件中生效,不会影响其他组件。 data() { return { // 遮罩层,遮罩层(Mask)是放置在特定区域上面的一个半透明层,用于阻止用户与该区域的交互,并突出显示上层的内容。遮罩层可以覆盖整个页面,或者只覆盖指定的区域。 loading: true, // 显示搜索条件 showSearch: true, // 表格树数据 deptList: [], // 部门树选项 deptOptions: [], // 弹出层标题 title: "", // 是否显示弹出层 open: false, // 是否展开,默认全部展开 isExpandAll: true, // 重新渲染表格状态 refreshTable: true, // 查询参数 queryParams: { deptName: undefined, status: undefined }, // 表单参数 form: {}, // 表单校验 rules: { parentId: [ { required: true, message: "上级部门不能为空", trigger: "blur" } ], deptName: [ { required: true, message: "部门名称不能为空", trigger: "blur" } ], orderNum: [ { required: true, message: "显示排序不能为空", trigger: "blur" } ], email: [ { type: "email", message: "请输入正确的邮箱地址", trigger: ["blur", "change"] } ], phone: [ { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" } ] } }; }, created() { this.getList(); }, methods: { /** 查询部门列表 */ getList() { this.loading = true; listDept(this.queryParams).then(response => { this.deptList = this.handleTree(response.data, "deptId"); this.loading = false; }); }, /** 转换部门数据结构 */ normalizer(node) { if (node.children && !node.children.length) { delete node.children; } return { id: node.deptId, label: node.deptName, children: node.children }; }, // 取消按钮 cancel() { this.open = false; this.reset(); }, // 表单重置 reset() { this.form = { deptId: undefined, parentId: undefined, deptName: undefined, orderNum: undefined, leader: undefined, phone: undefined, email: undefined, status: "0" }; this.resetForm("form"); }, /** 搜索按钮操作 */ handleQuery() { this.getList(); }, /** 重置按钮操作 */ resetQuery() { this.resetForm("queryForm"); this.handleQuery(); }, /** 新增按钮操作 */ handleAdd(row) { this.reset(); if (row != undefined) { this.form.parentId = row.deptId; } this.open = true; this.title = "添加部门"; listDept().then(response => { this.deptOptions = this.handleTree(response.data, "deptId"); }); }, /** 展开/折叠操作 */ toggleExpandAll() { this.refreshTable = false; this.isExpandAll = !this.isExpandAll; this.$nextTick(() => { this.refreshTable = true; }); }, /** 修改按钮操作 */ handleUpdate(row) { this.reset(); getDept(row.deptId).then(response => { this.form = response.data; this.open = true; this.title = "修改部门"; listDeptExcludeChild(row.deptId).then(response => { this.deptOptions = this.handleTree(response.data, "deptId"); if (this.deptOptions.length == 0) { const noResultsOptions = { deptId: this.form.parentId, deptName: this.form.parentName, children: [] }; this.deptOptions.push(noResultsOptions); } }); }); }, /** 提交按钮 */ submitForm: function() { this.$refs["form"].validate(valid => { if (valid) { if (this.form.deptId != undefined) { updateDept(this.form).then(response => { this.$modal.msgSuccess("修改成功"); this.open = false; this.getList(); }); } else { addDept(this.form).then(response => { this.$modal.msgSuccess("新增成功"); this.open = false; this.getList(); }); } } }); }, /** 删除按钮操作 */ handleDelete(row) { // 2024.05.31 this.$modal.confirm() 就是一个信息提示框 this.$modal.confirm('是否确认删除名称为"' + row.deptName + '"的数据项?').then(function() { return delDept(row.deptId); }).then(() => { this.getList(); this.$modal.msgSuccess("删除成功"); }).catch(() => {}); }, } };

          1.1.1 控件

          el-input:编辑框

          el-select:下拉框

          el-button:按钮

          1.1.2 参数

                
                  
                
          

          // 传入的参数

          v-model=“queryParams.deptName”

          // 提示文本

          placeholder

          // 可以将选择的内容进行清除

          clearable

          // 相关联的函数名

          @keyup.enter.native=“handleQuery”

          // 按钮

          type=“primary” //按钮是蓝色

          type=“warning” //按钮是橙色

          type=“danger” //按钮是红色

          type=“view” //按钮是透明白色

          type=“success” //按钮是绿色

          若依[RuoYi-Vue]使用(五)- 认识ruoyi前端文件

          1.3

          二、dept.js

          1.代码

          代码如下(示例):

          import request from '@/utils/request'
          // 查询部门列表
          export function listDept(query) {
            return request({
              url: '/system/dept/list',
              method: 'get',
              params: query
            })
          }
          // 查询部门列表(排除节点)
          export function listDeptExcludeChild(deptId) {
            return request({
              url: '/system/dept/list/exclude/' + deptId,
              method: 'get'
            })
          }
          // 查询部门详细
          export function getDept(deptId) {
            return request({
              url: '/system/dept/' + deptId,
              method: 'get'
            })
          }
          // 新增部门
          export function addDept(data) {
            return request({
              url: '/system/dept',
              method: 'post',
              data: data
            })
          }
          // 修改部门
          export function updateDept(data) {
            return request({
              url: '/system/dept',
              method: 'put',
              data: data
            })
          }
          // 删除部门
          export function delDept(deptId) {
            return request({
              url: '/system/dept/' + deptId,
              method: 'delete'
            })
          }
          

          2.未完待续


          总结

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]