最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue項(xiàng)目業(yè)務(wù)邏輯模塊介紹

 更新時(shí)間:2022年11月22日 08:35:45   作者:爭(zhēng)兒不脫發(fā)  
這篇文章主要介紹了Vue項(xiàng)目業(yè)務(wù)邏輯,不同的項(xiàng)目有不同的功能,不同的功能需要不同的實(shí)現(xiàn),實(shí)現(xiàn)這些核心功能的代碼就叫業(yè)務(wù)邏輯。所以說業(yè)務(wù)邏輯是指一個(gè)實(shí)體單元為了向另一個(gè)實(shí)體單元提供服務(wù),應(yīng)該具備的規(guī)則與流程

一.什么是業(yè)務(wù)邏輯

我們可以先簡(jiǎn)單理解一下業(yè)務(wù)邏輯。不同的項(xiàng)目有不同的功能,不同的功能需要不同的實(shí)現(xiàn),實(shí)現(xiàn)這些核心功能的代碼就叫業(yè)務(wù)邏輯。所以說業(yè)務(wù)邏輯是指一個(gè)實(shí)體單元為了向另一個(gè)實(shí)體單元提供服務(wù),應(yīng)該具備的規(guī)則與流程。

二.Vue項(xiàng)目中的模塊業(yè)務(wù)

1. 權(quán)限管理功能模塊的業(yè)務(wù)邏輯

首先是頁面框架。明確這個(gè)權(quán)限管理模塊分為三個(gè)頁面,分別是員工管理,角色管理,菜單管理。

(1)實(shí)現(xiàn)員工管理頁面

01 獲取員工的數(shù)據(jù)(其中有員工列表和搜索框),定義一個(gè)獲取員工列表以及刪除員工管理的api方法,可以多次調(diào)用

02 渲染員工管理頁面的數(shù)據(jù)

其中user_group 對(duì)應(yīng)的是角色

(2)實(shí)現(xiàn)角色管理頁面

01 定義角色管理的api

02 定義角色管理的路由

03 渲染角色

permission 對(duì)應(yīng)的該角色的權(quán)限

(3)實(shí)現(xiàn)菜單管理頁面

01 定義菜單管理的api

02 定義菜單管理的路由

03 渲染菜單

其中id 與角色的permission對(duì)應(yīng)

菜單的渲染是如何實(shí)現(xiàn)的

01 用戶登錄,獲取token

02 請(qǐng)求用戶的菜單(帶上token)

03 存儲(chǔ)在vuex中存儲(chǔ)菜單

04 admin頁面根據(jù)vuex中store的menus來動(dòng)態(tài)的渲染菜單

動(dòng)態(tài)路由(實(shí)現(xiàn)了動(dòng)態(tài)路由,也就實(shí)現(xiàn)動(dòng)態(tài)權(quán)限菜單)

01 獲取后端給到菜單信息

02 把菜單映射為路由配置

03 通過router.addRoute() 動(dòng)態(tài)添加路由

如何動(dòng)態(tài)的把菜單,路由,角色聯(lián)動(dòng)(重要)

01 編輯員工時(shí)候,能夠指定不同的角色

02 編輯角色時(shí)候,可以給每個(gè)角色不同的菜單與權(quán)限

03 對(duì)所有的菜單進(jìn)行增刪改查

04 用戶登錄時(shí)候

(1)后端通過token來識(shí)別當(dāng)前用戶拿到用的角色,通過角色拿到用戶的權(quán)限與菜單

(2)前端把菜單存儲(chǔ)在vuex里面并渲染出來

(3)前端根據(jù)菜單通過addRoute方法動(dòng)態(tài)的更新路由

2. 訂單管理模塊的業(yè)務(wù)邏輯(子菜單無限分類)

訂單管理分為訂單列表,訂單設(shè)置,退款申請(qǐng)等,他與上一個(gè)的不同就是,他的側(cè)邊欄是無限分類的,可以無限點(diǎn)開,點(diǎn)擊一項(xiàng)展開一項(xiàng)。下圖就是一個(gè)子菜單無限分類的簡(jiǎn)單案例。

將菜單存儲(chǔ)在vuex

01 定義permission權(quán)限模塊,里面設(shè)置api等方法

02 在adminVue獲取菜單

03 在側(cè)邊欄渲染菜單

新創(chuàng)建一個(gè)subMenu組件,形成遞歸嵌套。然后在subMenu組件引用subMenu實(shí)現(xiàn)無限分類

根據(jù)用戶自動(dòng)切換菜單

服務(wù)器是根據(jù)用戶傳遞的token判斷當(dāng)前用戶的

三.實(shí)現(xiàn)上述業(yè)務(wù)邏輯的代碼

定義方法的api

// 導(dǎo)入request
import request from '@/utils/request.js'
// 導(dǎo)出登錄方法
export function GetStaffList(data){
    return request.get("/api/user",{params:data})
}
export function DelStaff(id){
    return request.delete("/api/user/"+id)
}
// 導(dǎo)出獲取用戶組件的角色
export function GetUserGroup(data){
    return request.get("/api/yp/user_group",{params:data})
}
// 定義菜單管理的api
export function GetMenu(data){
    return request.get("/api/yp/permission",{params:data})
}
// 獲取當(dāng)前用戶的菜單
export function GetUserMenu(data){
    return request.get("/api/yp/user_permission",{params:data})
}

子菜單無限分類的組件代碼

<template>
    <template v-for="item in children" :key="item.id">
            <!-- 沒有子菜單就是菜單項(xiàng) -->
            <el-sub-menu v-if="item.children" :index="item.path">
                <template #title>                    
                    <span>{{item.name}}</span>
                </template>  
                <!-- 形成了遞歸嵌套 -->
                <SubMenu :children="item.children"></SubMenu>          
            </el-sub-menu>
            <el-menu-item :index="item.path" v-else>
            <span>{{item.name}}</span>
            </el-menu-item>
    </template>
</template>
<script>
export default {
    // 默認(rèn)有子選項(xiàng)children 默認(rèn)值是[]
    props:{
        children:{type:Array,default:()=>[]}
    }
}
</script>

員工管理的代碼

<template>
    <div>
        <h1>員工管理</h1>
        <el-form :inline="true"  ref="searchRef"   :model="searchObj"  >
            <el-form-item label="id" prop="id">
                <el-input v-model="searchObj.id"  />
            </el-form-item>           
            <el-form-item>
                <el-button type="primary" @click="getStaffList">查詢</el-button>
                <el-button type="primary" @click="resetSearch()">重置</el-button>
            </el-form-item>
        </el-form>
        <el-table :data="staffList" style="width: 100%">
            <el-table-column prop="id" label="賬號(hào)" width="180" />
            <el-table-column prop="name" label="真實(shí)姓名" width="180" />
            <el-table-column prop="shop" label="所屬門店" />
            <el-table-column prop="tel" label="手機(jī)號(hào)" />
            <el-table-column prop="user_group" label="角色id" />
            <el-table-column prop="gname" label="角色" />
            <el-table-column prop="state" label="狀態(tài)" />
            <el-table-column prop="lastTime" label="最后登錄時(shí)間" />
            <el-table-column prop="address" label="操作">
                <template #default="scope">
                    <span>編輯</span> <span  @click="delStaff(scope.row)">刪除</span>
                </template>
            </el-table-column>
        </el-table>
    </div>
</template>
<script setup>
// 導(dǎo)入api方法
import { GetStaffList,DelStaff} from '@/api/permission.js'
// 導(dǎo)入響應(yīng)式創(chuàng)建方法
import { ref } from 'vue'
// 定義引用對(duì)象
const searchRef = ref();
// 定義搜索條件
var searchObj = ref({id:'',order:'asc'})
// 定義員工列表
var staffList = ref([]);
// 執(zhí)行獲取員工列表方法
getStaffList();
// 定義獲取員工列表的方法(需要多次使用)
function getStaffList() {
    // 使用api方法
    GetStaffList(searchObj.value)
        .then(res => {
            if (res.data.code == 0) {
                staffList.value = res.data.data;
            } else {
                alert(res.data.msg || "員工列表獲取失敗")
            }

        })
}
// 重置
function resetSearch(){
    searchRef.value.resetFields()
    getStaffList();
}
// type導(dǎo)入不用
// import type { FormInstance, FormRules } from 'element-plus'
// 帶泛型的去掉泛型<> 對(duì)象或數(shù)組的類型
// const ruleFormRef = ref<FormInstance>()   =>  const ruleFormRef = ref()
// 帶類型的函數(shù)去掉類型  :代表參數(shù)的類型
/* 
const resetForm = (formEl: FormInstance | undefined) => {
  if (!formEl) return
  formEl.resetFields()
}
=>    */  
/* 
const resetForm = (formEl) => {
  if (!formEl) return
  formEl.resetFields()
}
*/  
function delStaff(row){
    // 正常情況應(yīng)該會(huì)有個(gè)彈框
    DelStaff(row.id)
    .then(res=>{
        if(res.data.code==0){
            getStaffList() //重新獲取員工列表
        }else{
            alert(res.data.msg)
        }
    })
}
</script>

角色管理的代碼

<template>
    <div>
        角色管理
        <el-table :data="userGroup.reverse()" style="width: 100%">
            <el-table-column prop="id" label="id" />
            <el-table-column prop="name" label="名稱"  />
            <el-table-column prop="ranges" label="范圍" />
            <el-table-column prop="description" label="描述" width="480"  />
            <el-table-column prop="permission" label="權(quán)限" width="480"  />
            <el-table-column prop="address" label="操作">
                <template #default="scope">
                    <span  @click="editGroup(scope.row)">操作</span>
                </template>
            </el-table-column>
        </el-table>
    </div>
</template>
<script setup>
// 導(dǎo)入獲取用組的api
import {GetUserGroup} from '@/api/permission'
// 導(dǎo)入引用對(duì)象
import {ref} from 'vue'
// 定義用戶組件數(shù)據(jù)
const userGroup = ref([]);
// 獲取用戶組
GetUserGroup({size:30,order:'asc'})
.then(res=>{
    if(res.data.code==0){
        // 更新用戶組信息
        userGroup.value = res.data.data;
    }else{
        alert(res.data.msg)
    }
})
// 定義操作api
function editGroup(row){
    console.log(row)
}
</script>

菜單管理的代碼

<template>
    <div>
        菜單管理
        <!-- 有children的時(shí)候默認(rèn)會(huì)有子表格 -->
        <el-table :data="menuList" style="width: 100%"  
         row-key="id">
            <el-table-column type="selection" width="55" />
            <el-table-column prop="id" label="id" />
            <el-table-column prop="name" label="名稱"  />
            <el-table-column prop="icon" label="圖表" />
            <el-table-column prop="path" label="URL" />
            <el-table-column prop="des" label="描述" />
            <el-table-column prop="component" label="組件" />
        </el-table>
    </div>
</template>
<script setup>
// 獲取菜單api
import  {GetMenu} from '@/api/permission'
import {ref} from 'vue';
const menuList = ref([]);
GetMenu()
.then(res=>{
    if(res.data.code==0){
        menuList.value = res.data.list;
    }else{
        alert("菜單獲取失敗");
    }
})
</script>

以上就是個(gè)人vue項(xiàng)目功能模塊的業(yè)務(wù)邏輯的簡(jiǎn)單介紹,希望對(duì)你有所幫助哈。

到此這篇關(guān)于Vue項(xiàng)目業(yè)務(wù)邏輯模塊介紹的文章就介紹到這了,更多相關(guān)Vue業(yè)務(wù)邏輯內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue中g(shù)et方法\post方法如何傳遞數(shù)組參數(shù)詳解

    vue中g(shù)et方法\post方法如何傳遞數(shù)組參數(shù)詳解

    在前后端交互的時(shí)候,有時(shí)候需要通過get或者delete傳遞一個(gè)數(shù)組給后臺(tái),下面下面這篇文章主要給大家介紹了關(guān)于vue中g(shù)et方法\post方法如何傳遞數(shù)組參數(shù),文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • 詳解vue-template-admin三級(jí)路由無法緩存的解決方案

    詳解vue-template-admin三級(jí)路由無法緩存的解決方案

    這篇文章主要介紹了vue-template-admin三級(jí)路由無法緩存的解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • 關(guān)于vue的列表圖片選中打鉤操作

    關(guān)于vue的列表圖片選中打鉤操作

    這篇文章主要介紹了關(guān)于vue的列表圖片選中打鉤操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • vue?點(diǎn)擊刪除常用方式小結(jié)

    vue?點(diǎn)擊刪除常用方式小結(jié)

    這篇文章主要介紹了vue?點(diǎn)擊刪除常用方式小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vscode中使用vue的一些插件總結(jié)(方便開發(fā))

    vscode中使用vue的一些插件總結(jié)(方便開發(fā))

    對(duì)于很多使用vscode編寫vue項(xiàng)目的新手同學(xué)來說,可能不知道使用什么插件,下面這篇文章主要給大家介紹了關(guān)于vscode中使用vue的一些插件,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • 基于vue3.0.1beta搭建仿京東的電商H5項(xiàng)目

    基于vue3.0.1beta搭建仿京東的電商H5項(xiàng)目

    這篇文章主要介紹了基于vue3.0.1beta搭建仿京東的電商H5項(xiàng)目,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • elementui+vue+axios實(shí)現(xiàn)文件上傳本地服務(wù)器

    elementui+vue+axios實(shí)現(xiàn)文件上傳本地服務(wù)器

    這篇文章主要為大家詳細(xì)介紹了elementui+vue+axios實(shí)現(xiàn)文件上傳本地服務(wù)器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • vue實(shí)現(xiàn)頁面刷新動(dòng)畫

    vue實(shí)現(xiàn)頁面刷新動(dòng)畫

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)頁面刷新動(dòng)畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • vue3使用ref和reactive的示例詳解

    vue3使用ref和reactive的示例詳解

    Vue 3引入了兩個(gè)新的API,ref和reactive,用于創(chuàng)建響應(yīng)式對(duì)象,這兩個(gè)方法都位于Vue.prototype上,因此可以在組件實(shí)例中直接使用,本文給大家介紹vue3使用ref和reactive的示例,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • vue 防止頁面加載時(shí)看到花括號(hào)的解決操作

    vue 防止頁面加載時(shí)看到花括號(hào)的解決操作

    這篇文章主要介紹了vue 防止頁面加載時(shí)看到花括號(hào)的解決操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11

最新評(píng)論

涿州市| 陇川县| 商南县| 鹤壁市| 宁安市| 池州市| 定襄县| 泾源县| 高清| 垣曲县| 房产| 马公市| 开阳县| 伊宁市| 凤庆县| 景东| 津南区| 墨竹工卡县| 正蓝旗| 巴楚县| 南乐县| 莒南县| 大丰市| 白朗县| 白城市| 扶绥县| 昌乐县| 宁强县| 西乌珠穆沁旗| 和田县| 林甸县| 仁布县| 抚顺县| 剑阁县| 阿瓦提县| 莱阳市| 那曲县| 阿克陶县| 溧阳市| 固始县| 德保县|