首页 > 其他分享 >vue3管理系统常用代码总结

vue3管理系统常用代码总结

时间:2024-07-08 11:30:50浏览次数:10  
标签:const 管理系统 import 代码 title vue3 return selectData data

管理系统常用基本模块,可满足大部分管理系统的基础模块需求。 技术选型vue3+typescript

1.登录功能

  // 登录
    const ruleFormRef = ref<FormInstance>();
    const router=useRouter()//-->$router   
    const submitForm = (formEl: FormInstance | undefined) => {
      if (!formEl) return;
      // 对表单的内容进行验证
      // valid布尔类型,为true表示验证成功,反之
      formEl.validate((valid) => {
        if (valid) {
          // console.log("submit!");
          login(data.ruleForm).then((res) => {
            // console.log(res);
            // 将token进行保存
            localStorage.setItem("token", res.data.token);
            // 跳转页面,首页   
            router.push('/')   //路由跳转到其他vue界面
          });
        } else {
          console.log("error submit!");
          return false;
        }
      });
      // console.log(formEl);
    };
     // 重置输入框的账号密码
    const resetForm = () => {
      data.ruleForm.username = "";
      data.ruleForm.password = "";
    };

 2.查询功能

 // 查询
    const onSubmit = () => {
      // console.log(data.selectData.title);
      // console.log(data.selectData.introduce);
      let arr: ListInt[] = []; //定义数组,用来接受查询过后要展示的数据
      if (data.selectData.title || data.selectData.introduce) {
        //判断两个是否其中一个有值
        if (data.selectData.title) {
          arr = data.list.filter((value) => {
            //将过滤出来数组赋值给arr
            return value.title.indexOf(data.selectData.title) !== -1;
          });
        }
        if (data.selectData.introduce) {
          arr = data.list.filter((value) => {
            //将过滤出来数组赋值给arr
            return value.introduce.indexOf(data.selectData.introduce) !== -1;
          });
        }
      } else {
        arr = data.list;
      }
      data.selectData.count = arr.length;
      data.list = arr;
    };
    
// 监听输入框的两个属性  当输入框里没有值的时候,会显示出未搜索前的数据
    watch(
      [() => data.selectData.title, () => data.selectData.introduce],
      () => {
        if (data.selectData.title == "" && data.selectData.introduce == "") {
          getGoods();
        }
      }
    );

3.添加角色权限

可以查看左边导航栏哪些功能的权限

  const addRole = () => {     //用了element的ElMessageBox组件
      ElMessageBox.prompt("请输入角色名称", "添加", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
      })
        .then(({ value }) => {//value表示你在输入中填写的值
        if(value){//判断输入框中有值,就将对应的值添加到列表中
        data.list.push({roleId:data.list.length+1,roleName:value,authority:[]})
        }
          ElMessage({
            type: "success",
            message: `${value}角色添加成功`,
          });
        })
        .catch(() => {
          ElMessage({
            type: "info",
            message: "取消操作",
          });
        });
    };

4.改变角色权限

可以查看左边导航栏哪些功能的权限

  const changeRole=(row:ListInt)=>{
        router.push({
            name:"authority",
            params:{
                id:row.roleId,
                authority:row.authority
            }
        })
    }

5.创建axios实例,登录拦截

在目录/request/index.ts

import axios from 'axios'
// 创建axios实例
const service=axios.create({
    baseURL:"https://www.fastmock.site/mock/bf1fcb3c2e2945669c2c8d0ecb8009b8/api",
    timeout:5000,
    headers:{
        "Content-Type":"application/json;charset=utf-8"
    }
})
// 请求拦截
service.interceptors.request.use((config)=>{
    config.headers=config.headers || {}
    if(localStorage.getItem('token')){
        config.headers.token=localStorage.getItem('token') || ""
    }
    return config
})
// 响应拦截
service.interceptors.response.use((res)=>{
    const code:number=res.data.code
    if(code!=200){
        return Promise.reject(res.data)
    }
    return res.data
},(err)=>{
    console.log(err);
})
export default service

6.路由配置

import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'
import HomeView from '../views/HomeView.vue'

const routes: Array<RouteRecordRaw> = [
  {
    path: '/',
    name: 'home',
    component: HomeView,
    redirect:"goods",//设置重定向
    children:[
      {
        path:"goods",
        name:"goods",
        meta:{
          isShow:true,
          title:"商品列表"
        },
        component: () => import(/* webpackChunkName: "goods" */ '../views/GoodsView.vue')
      },
      {
        path:"user",
        name:"user",
        meta:{
          isShow:true,
          title:"用户列表"
        },
        component: () => import(/* webpackChunkName: "user" */ '../views/UserView.vue')
      }
      ,
      {
        path:"role",
        name:"role",
        meta:{
          isShow:true,
          title:"角色列表"
        },
        component: () => import(/* webpackChunkName: "role" */ '../views/RoleView.vue')
      }
      ,
      {
        path:"authority",
        name:"authority",
        meta:{
          isShow:false,
          title:"权限列表"
        },
        component: () => import(/* webpackChunkName: "authority" */ '../views/AuthorityView.vue')
      }
    ]
  },
  {
    path: '/about',
    name: 'about',
    // route level code-splitting
    // this generates a separate chunk (about.[hash].js) for this route
    // which is lazy-loaded when the route is visited.
    component: () => import(/* webpackChunkName: "about" */ '../views/AboutView.vue')
  },
  {
    path: '/login',
    name: 'login',
    // route level code-splitting
    // this generates a separate chunk (about.[hash].js) for this route
    // which is lazy-loaded when the route is visited.
    component: () => import(/* webpackChunkName: "login" */ '../views/LoginView.vue')
  }
]

const router = createRouter({
  history: createWebHistory(process.env.BASE_URL),
  routes
})
//导航守卫
 router.beforeEach((to,from,next)=>{
   const token: string | null =localStorage.getItem('token')
    if(!token && to.path!=='/login'){
     next('/login')
  }else{
    next()
  }
})
export default router

7.设置api接口

在目录/request/api.ts
import service from ".";           //service是axios里的后端接口
interface loginData{
    username:string,
    password:string
}
// 登录接口
export function login(data:loginData){
    return service({
        url:"/login",
        method:"post",
        data
    })
}
// 商品列表接口
export function getGoodsList(){
    return service({
        url:"/getGoodsList",
        method:"get"
    })
}
// 用户列表接口
export function getUserList(){
    return service({
        url:"/getUserList",
        method:"get"
    })
}

8.设置各个界面的参数

标签:const,管理系统,import,代码,title,vue3,return,selectData,data
From: https://blog.csdn.net/weixin_46918091/article/details/140237840

相关文章

  • VMware vCenter Server 7.0U3r 下载 - 修复堆溢出 (远程执行代码) 和本地权限提升漏洞
    VMwarevCenterServer是一款高级服务器管理软件,提供了一个集中式平台来控制vSphere环境,以实现跨混合云的可见性。简化且高效的服务器管理什么是vCenterServer?实现集中式可见性、简化且高效的大规模管理,以及在整个混合云中的可延展性,所有这一切,均可通过单一控制台来实现......
  • Java计算机毕业设计的图书管理系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和知识经济的兴起,图书馆作为知识传播与存储的重要机构,其管理效率与服务质量直接关系到读者的满意度与知识获取的便捷性。传统......
  • 解码技术债:AI代码助手与智能体的革新之道
    技术债技术债可能来源于多种原因,比如时间压力、资源限制、技术选型不当等。它可以表现为代码中的临时性修补、未能彻底解决的设计问题、缺乏文档或测试覆盖等。虽然技术债可以帮助快速推进项目进度,但长期来看,它会增加软件维护的成本和风险,降低系统的稳定性和可维护性。今天,我们......
  • 新知识get,vue3是如何实现在style中使用响应式变量?
    前言vue2的时候想必大家有遇到需要在style模块中访问script模块中的响应式变量,为此我们不得不使用css变量去实现。现在vue3已经内置了这个功能啦,可以在style中使用v-bind指令绑定script模块中的响应式变量,这篇文章我们来讲讲vue是如何实现在style中使用script模块中的响应式变量......
  • SSM-企业人事信息管理系统-98194(免费领源码)可做计算机毕业设计JAVA、PHP、爬虫、APP、
    企业人事信息管理系统的设计与实现摘 要由于数据库和数据仓库技术的快速发展,企业人事信息管理系统建设越来越向模块化、智能化、自我服务和管理科学化的方向发展。人事管理系统对处理对象和服务对象,自身的系统结构,处理能力,都将适应技术发展的要求发生重大的变化。企业人事......
  • 基于springboot + vue3 +遗传算法的智能组卷在线考试系统的设计与开发
    目录一、项目介绍1、项目简介 二、项目实现1、数据库设计E-R图2、数据库级联思路3、SpringSecurity的认证思路......
  • 代码随想录算法训练营第56天 | 42. 接雨水 、84.柱状图中最大的矩形
    图论理论基础大家可以在看图论理论基础的时候,很多内容看不懂,例如也不知道看完之后还是不知道邻接矩阵,邻接表怎么用,别着急。理论基础大家先对各个概念有个印象就好,后面在刷题的过程中,每个知识点都会得到巩固。https://www.programmercarl.com/kamacoder/图论理论基础.html......
  • 写代码常用100个单词
    基础编程概念Variable-变量Constant-常量DataType-数据类型Integer-整数Float-浮点数String-字符串Boolean-布尔值Array-数组List-列表Dictionary-字典Tuple-元组Set-集合Function-函数Method-方法Parameter-参数Return-返回Loop-循环Cond......
  • 前端JS特效第20集:HTML5图片瀑布流带筛选功能代码
    HTML5图片瀑布流带筛选功能代码,先来看看效果:部分核心的代码如下(全部代码在文章末尾):<!DOCTYPEhtml><htmllang="en"class="no-js"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,init......
  • 前端JS特效第21集:HTML5响应式多种切换效果轮播大图切换js特效代码
    HTML5响应式多种切换效果轮播大图切换js特效代码,先来看看效果:部分核心的代码如下(全部代码在文章末尾):<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999......