Day05-組織架構-角色管理

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔

文章目錄

  • 1.組織架構-編輯部門-彈出層獲取數據
  • 2.組織架構-編輯部門-編輯表單校驗
  • 3.組織架構-編輯部門-確認取消
  • 4.組織架構-刪除部門
  • 5.角色管理-搭建頁面結構
  • 6.角色管理-獲取數據
  • 7.角色管理-表格自定義結構
  • 8.角色管理-分頁功能
  • 9.角色管理-新增
  • 10.角色管理-表單數據校驗
  • 11.角色管理-新增角色-確定取消


1.組織架構-編輯部門-彈出層獲取數據

  • 🍕🍕🍕編輯部門和新增部門會共用一個組件,也就是add-dept組件要支持兩種場景-新增場景-編輯場景
    在這里插入圖片描述
  • 獲取部門詳情的API-代碼位置(src/api/department.js)
//獲取部門詳情
export function getDepartmentDetail(id){return request({url:`/company/department/${id}`})
}
  • 點擊編輯時,彈出層,通過ref獲取組件實例,調用獲取詳情的方法-代碼位置(src/views/department/index.vue)
   <addDept ref="addDept" :current-node-id="currentNodeId"  :show-dialog.sync="showDialog" @updateDepartment="getDepartment" />
  • 調用子組件方法-代碼位置(src/views/department/index.vue)
 //操作部門方法operateDept(type,id){// this.$message('click' + type)if(type === 'add'){//添加子部門this.showDialog = true;//顯式彈窗this.currentNodeId = id}else if(type === 'edit'){//編輯部門this.showDialog = true;this.currentNodeId = id;//記錄id 用它獲取數據//更新props-異步動作//直接調用了子組件的方法,同步的方法//要在子組件獲取數據 父組件調用子組件的方法來獲取數據this.$nextTick(()=>{this.$refs.addDept.getDepartmentDetail();//this.$refs.addDept等同于子組件的this})}}
  • 子組件提供方法-位置(src/views/department/components/add-dept.vue)
  async getDepartmentDetail(){this.formData = await  getDepartmentDetail(this.currentNodeId)}

2.組織架構-編輯部門-編輯表單校驗

在這里插入圖片描述

  • 編輯部門表單校驗和新增部門表單校驗的區別就是編輯的數據已經在數據庫存在了,必然是存在重復的
    在這里插入圖片描述
  • 編輯場景下排除自身
  • 檢查部門編碼-代碼位置(src/views/department/components/add-dept.vue)
 //部門編碼code:[{required:true,message:'部門編碼不能為空',trigger:'blur'},{min:2,max:10,message:'部門編碼的長度為2-10個字符',trigger:'blur',//自定義校驗模式validator:async(rule,value,callback)=>{//value是輸入的編碼let result =await getDepartment();console.log(result)//判斷是否是編輯模式if(this.formData.id){//編輯場景result = result.filter(item=>item.id !== this.formData.id)console.log(result)}//result數組中是否存在value值if(result.some(item=>item.code === value)){callback(new Error('部門中已經有該編碼了'))}else{callback()}}}],
  • 部門名稱-位置(src/views/department/components/add-dept.vue)
 //部門名稱name:[{required:true,message:'部門名稱不能為空',trigger:'blur',validator:async(rule,value,callback)=>{//value就是輸入的名稱let result = await getDepartment();if(this.formData.id){//編輯 排除自身 id不相等說明不是自身result = result.filter(item=>{return item.id !== this.formData.id})}//result 數組中是否存在value值if(result.some(item=>item.name === value)){callback(new Error('部門中已經有該名稱了'))}else{callback()}}}]

3.組織架構-編輯部門-確認取消

示例:pandas 是基于NumPy 的一種工具,該工具是為了解決數據分析任務而創建的。
在這里插入圖片描述

  • 更新部門的API-代碼位置(src/api/department.js)
//更新部門
export function updateDepartment(data){return request({method:'put',url:`/company/department/${data.id}`,data})
}
  • 確認時區分當前是編輯還是新增-代碼位置(src/views/department/components/add-dept.vue)
 btnOk(){this.$refs.addDept.validate(async isOK=>{if(isOK){let msg = '新增'//通過formData中的idif(this.formData.id){//編輯msg = '更新'await updateDepartment(this.formData)}else{//新增await addDepartment({...this.formData,pid:this.currentNodeId})}//通知父組件更新this.$emit('updateDepartment')//提示消息this.$message.success(`${msg}部門成功`)this.close()}})},
  • 使用計算屬性生成當前顯示的彈層標題-代碼位置(src/views/department/components/add-dept.vue)
<el-dialog :title="showTitle" :visible="showDialog" @close="close">
computed:{
showTitle(){return this.formData.id ?'編輯部門':'新增部門'}
}

4.組織架構-刪除部門

在這里插入圖片描述

  • 刪除部門的API-代碼位置(src/api/department.js)
//刪除部門
export function delDepartment(id){return request({method:'delete',url:`/company/department/${id}`})
}
  • 在刪除場景下調用API刪除-代碼位置(src/views/department/index.vue)
operateDept(type,id){if(type === 'add'){//添加子部門this.showDialog = true;//顯式彈窗this.currentNodeId = id;}else if(type === 'edit'){//編輯部門場景this.showDialog = true;this.currentNodeId = id;//記錄id this.$nextTick(()=>{this.$refs.addDept.getDepartmentDetail();//this.$refs.addDept等同于子組件的this }) }else{//刪除部門this.$confirm('確認要刪除該部門嗎?').then(async()=>{await delDepartment(id)//提示信息this.$message.success('刪除部門成功')this.getDepartment()})}
}

5.角色管理-搭建頁面結構

在這里插入圖片描述

  • 角色管理對應的路由-位置(src/router/modules/role.js)
import layout from '@/layout'
export default{path:'/role',component:layout,children:[{path:'',name:'role',component:()=>import('@/views/role'),meta:{title:'角色',icon:'tree'}}]
}
  • 根路由文件(src/router/index.js)
import roleRouter from '@/router/modules/role'
export const constantRoutes = [departmentRouter,roleRouter,
]
  • 搭建角色管理的頁面結構-代碼位置(src/views/role/index.vue)
<template><div class="container"><div class="app-container"><!-- 角色管理內容 --><div class="role-operate"><el-button size="mini" type="primary">添加角色</el-button></div><!-- 放置table組件 --><el-table><!-- 列 --><el-table-column align="center" width="200" label="角色" /><el-table-column align="center" width="200" label="啟用" /><el-table-column align="center"  label="描述" /><el-table-column align="center"  label="操作" /></el-table><!-- 放置分頁組件 --><el-row type="flex" style="height:60px;" align="middle" justify="end"><!-- 放置分頁組件 --><el-pagination layout="prev,pager,next" /></el-row></div></div>
</template>
<style scoped>.role-operate{padding:10px;}
</style>

6.角色管理-獲取數據

在這里插入圖片描述

  • 封裝獲取角色API-代碼位置(src/api/role.js)
import request from '@/utils/request'
export function getRoleList(params){return request({url:'/sys/role',params//查詢參數})
}
  • 在初始化時調用API-賦值給數據-代碼位置(src/views/role/index.vue)
import {getRoleList} from '@/api/role'
data() {return {list:[]}},components: {},created(){this.getRoleList()},methods:{async getRoleList(){const {rows} = await getRoleList()this.list = rows;//賦值}}
  • 綁定表格屬性-代碼位置(src/views/role/index.vue)
 <!-- 放置table組件 --><el-table :data="list"><!-- 列 --><el-table-column prop="name" align="center" width="200" label="角色" /><el-table-column prop="state" align="center" width="200" label="啟用" /><el-table-column prop="description" align="center"  label="描述" /><el-table-column align="center"  label="操作" /></el-table>

7.角色管理-表格自定義結構

在這里插入圖片描述

  • 自定義啟用列和操作列的結構-代碼位置(src/views/role/index.vue)
 <el-table-column prop="state" align="center" width="200" label="啟用" ><template v-slot="{row}"><span>{{ row.state === 1 ?'已啟用':row.state === 0 ?"未啟用":'無' }}</span></template></el-table-column>
  • 自定義操作列結構-代碼位置(src/views/role/index.vue)
  <el-table-column align="center"  label="操作" ><!-- 操作按鈕 --><template><el-button size="mini" type="text">分配權限</el-button><el-button size="mini" type="text">編輯</el-button><el-button size="mini" type="text">刪除</el-button></template></el-table-column>

8.角色管理-分頁功能

  • 分頁
  • 展示頁面
  • 切換分頁獲取數據
  • 分頁組件屬性
  • 當前頁碼
  • 每頁條數
  • 總數
    在這里插入圖片描述
  • 定義分頁信息-代碼位置(src/views/role/index.vue)
 pageParams:{page:1,//第幾頁pagesize:5,//每頁多少條total:0}
  • 綁定分頁信息-(src/views/role/index.vue)
 <el-pagination :page-size="pageParams.pagesize" :current-page="pageParams.page" :total="pageParams.total" @current-change="changePage" layout="prev,pager,next" /></el-row>
  • 初始化時將總數賦值-(src/views/role/index.vue)
async getRoleList(){const {rows,total} = await getRoleList(this.pageParams);this.list = rows;//賦值this.pageParams.total = total
}
  • 切換分頁時,獲取對應頁碼的數據-代碼位置(src/views/role/index.vue)
//切換分頁時,請求新的數據
changePage(newPage){this.pageParams.page = newPage;this.getRoleList()
}

9.角色管理-新增

在這里插入圖片描述
在這里插入圖片描述

  • 放置彈層組件-代碼位置(src/views/role/index.vue)
<el-dialog width="500px" title="新增角色" :visible.sync="showDialog"><!-- 表單 --><el-form label-width="120px"><el-form-item label="角色名稱"><el-input style="width:300px" size="mini"></el-input></el-form-item><el-form-item label="啟用"><el-switch size="mini"></el-switch></el-form-item>><el-form-item label="角色描述"><el-input type="textarea" :rows="3" style="width:300px;" size="mini"></el-input></el-form-item><el-form-item><el-row type="flex" justify="center"><el-col :span="12"><el-button type="primary" size="mini">確定</el-button><el-button size="mini">取消</el-button></el-col></el-row></el-form-item></el-form></el-dialog>
  • 變量控制彈窗
showDialog:false

10.角色管理-表單數據校驗

在這里插入圖片描述

  • 聲明數據和規則(src/views/role/index.vue)
export default{data(){roleForm:{name:'',description:'',state:0 //默認未啟用 1 關閉0},rules:{name:[{required:true,message:'角色名稱不能為空',trigger:'blur' } ],description:[{required:true,message:'角色描述不能為空',trigger:'blur' } ]}}
}
  • 綁定表單校驗和數據
 <el-form ref="roleForm" :model="roleForm" :rules="rules" label-width="120px"><el-form-item prop="name" label="角色名稱"><el-input v-model="roleForm.name" style="width:300px" size="mini"></el-input></el-form-item><el-form-item prop="" label="啟用"><!-- 如果不需要校驗 就不需要寫prop屬性 --><el-switch v-model="roleForm.state" :active-value="1" :inactive-value="0" size="mini"></el-switch></el-form-item>><el-form-item prop="description" label="角色描述"><el-input type="textarea" v-model="roleForm.description" :rows="3" style="width:300px;" size="mini"></el-input></el-form-item><el-form-item><el-row type="flex" justify="center"><el-col :span="12"><el-button type="primary" size="mini">確定</el-button><el-button size="mini">取消</el-button></el-col></el-row></el-form-item></el-form>

11.角色管理-新增角色-確定取消

在這里插入圖片描述

  • 新增角色的api-(src/api/role.js)
export function addRole{data}{return request({url:'/sys/role',method:'post',data })
}
  • 確定和取消
btnOK(){this.$refs.roleForm.validate(async valid=>{if(valid){await addRole(this.roleForm) this.$message.success('新增角色成功')this.getRoleList()this.btnCancel()}})
},
btnCancel(){this.$refs.roleForm.resetFields();this.showDialog = false;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/41476.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/41476.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/41476.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL中的DDL語句

第一題 輸入密碼登錄mysql&#xff0c;創建數據庫zoo&#xff0c;轉換到zoo數據庫&#xff0c; mysql> create database zoo character set gbk; mysql> use zoo查看創建數據庫zoo信息 mysql> show create database zoo;刪除數據庫zoo mysql> drop database zo…

【后端面試題】【中間件】【NoSQL】MongoDB查詢優化2(優化排序、mongos優化)

優化排序 在MongoDB里面&#xff0c;如果能夠利用索引來排序的話&#xff0c;直接按照索引順序加載數據就可以了。如果不能利用索引來排序的話&#xff0c;就必須在加載了數據之后&#xff0c;再次進行排序&#xff0c;也就是進行內存排序。 可想而知&#xff0c;如果內存排序…

【居家養老實訓室】:看中醫保健在養老中的應用

本文以居家養老實訓室為視角&#xff0c;深入探討了中醫保健在養老中的應用。通過對中醫保健理念、常用方法以及在居家養老中的具體實踐進行分析&#xff0c;闡述了其在改善老年人健康狀況、提高生活質量方面的重要作用。同時&#xff0c;也指出了目前應用中存在的問題&#xf…

Apache Kylin模型構建全解析:深入理解大數據的多維分析

引言 Apache Kylin是一個開源的分布式分析引擎&#xff0c;旨在為大數據提供快速的多維分析能力。它通過預計算技術&#xff0c;將數據轉化為立方體模型&#xff08;Cube&#xff09;&#xff0c;從而實現對Hadoop大數據集的秒級查詢響應。本文將詳細介紹Kylin中模型構建的全過…

Windchill的Debug配置

在windchillshell中運行以下命令 xconfmanager -s "wt.manager.cmd.MethodServer.debug.args- agentlib:jdwptransportdt_socket,servery,suspendn,address0.0.0.0:{19}" -p - t codebase/wt.properties xconfmanager -s "wt.manager.cmd.MethodServer.param.19…

2024暑假集訓第三次考試

3004. Sleepy Cow Sorting 思路分析 這道題是一道思維題。 這個就要結合之前學習過的算法&#xff0c;看這個題目的排序方式&#xff0c;我們就理所當然的想到了插入排序&#xff0c;也是這道題的正解。只需要看看前面有幾個數是無序的就是需要排的次數。轉換一下&#xff0c;也…

【第19章】MyBatis-Plus自定義ID生成器

文章目錄 前言一、如何自定義二、Spring Boot 集成1. 方式一&#xff1a;聲明為Bean供Spring掃描注入2. 方式二&#xff1a;使用配置類3. 方式三&#xff1a;通過MybatisPlusPropertiesCustomizer自定義 三、Spring 集成1. 方式一&#xff1a;XML配置2. 方式二&#xff1a;注解…

【CUDA】 矩陣乘法 matMatMul

矩陣乘法 matMatMul 矩陣乘法是基本線性代數子程序&#xff08;BLAS&#xff09;的重要組成部分&#xff0c;而且線性代數中許多其他操作以此為基礎。 圖1是兩個矩陣的乘法。 基礎方法&#xff0c;正方形tile和長方形tile 基礎方法 執行矩陣乘法的基礎方法是使用單個線程執…

Linux上web服務器搭建(Apache、Nginx)

第五章 web服務器 第一節 DNS&#xff1a;對域名進行解析&#xff0c;查詢對應的地址 1.1 web服務器簡介 www是world wide web的縮寫&#xff0c;也就是全球信息廣播的意思 1.2.網址及HTTP簡介 web服務器提供的這些數據大部分都是文件&#xff0c;那么我們需要在服務器端…

傳統視覺Transformer的替代者:交叉注意力Transformer(CAT)

傳統視覺Transformer的替代者:交叉注意力Transformer(CAT) 在深度學習的世界里,Transformer架構以其在自然語言處理(NLP)領域的卓越表現而聞名。然而,當它進入計算機視覺(CV)領域時,卻面臨著計算成本高昂和推理速度慢的雙重挑戰。現在,一項革命性的創新——交叉注意…

Qualcomm QCS6490 開發板運行高通AI Hub圖像分類程序

相關代碼可以在如下鏈接下載&#xff1a; ai-hub-models/apps/android/ImageClassification at main quic/ai-hub-models GitHub 所用硬件有&#xff1a; 1. UBUNTU20.04 2. 高通QCS6490 開發板 對下載下來的代碼進行編譯 1. ubuntu環境配置 1. python環境配置 如果你…

[SAP ABAP] 子例程

子例程 示例1 主程序(Z437_TEST_2024) INCLUDE文件(Z437_TEST_2024_F01) 輸出結果如下所示 示例2 主程序(Z437_TEST_2024) INCLUDE文件(Z437_TEST_2024_F01) 輸出結果如下所示 補充擴展練習 主程序(Z437_TEST_2024) INCLUDE文件(Z437_TEST_2024_F01) 輸出結果如下所示 提示…

驗證圖像傳感器性能

文章目錄 驗證圖像傳感器性能 驗證圖像傳感器性能 測試類別測試項目具體方法與描述圖像質量測試分辨率測試使用分辨率測試卡&#xff08;如1951 USAF分辨率測試卡&#xff09;拍攝圖像&#xff0c;分析成像的清晰度。動態范圍測試測試傳感器在高對比度場景中的表現&#xff0c…

odoo 物聯網 設備數據采集方案

圖一 架構手稿(許老師專屬) 圖二 架構簡圖 部署 方案一&#xff1a; odoo業務數據庫與設備采集數據庫使用一個instance。 缺點&#xff1a;重啟pg服務相互影響。 方案二&#xff1a; odoo業務數據庫與設備采集數據庫獨立部署&#xff0c;使用兩個instance。 優點&#xff1a;…

RedHat / CentOS安裝FTP服務

本章教程,記錄在RedHat / CentOS中安裝FTP的具體步驟。FTP默認端口:21 1、安裝 epel 源 yum install -y epel-release2、安裝 pure-ftpd yum -y install pure-ftpd3、修改默認配置 # 默認配置位于 /etc/pure-ftpd/pure-ftpd.conf,在配置文件中找到下面幾個參數進行修改:#…

AI視頻生成技術爆發 引領虛擬數字人產業新潮流

2024年剛開局&#xff0c;先有OpenAI的AI視頻生成模型Sora驚艷全網&#xff0c;隨后阿里巴巴發布EMO&#xff0c;一張照片音頻&#xff0c;就能生成具有生動表情和各種頭部姿勢、口型完全匹配高保真的人聲頭像動態視頻。 技術的革新不僅為內容創作者打開了新世界的大門&#xf…

數據結構——隊列練習題

在C語言中&#xff0c;.和->運算符用于訪問結構體的成員變量。它們之間的區別在于&#xff1a;.運算符用于訪問結構體變量的成員。->運算符用于訪問結構體指針變量的成員 1a&#xff08;rear指向隊尾元素后一位&#xff0c;判空判滿時犧牲一個存儲單元&#xff09; 首先…

小抄 20240703

1 “這么多年&#xff0c;什么都沒有變化。” 同樣看到這句話&#xff0c;有人會覺得幸福&#xff0c;有人會覺得悲傷。 好的事沒變&#xff0c;就覺得幸福。 壞的事沒變&#xff0c;會覺得悲傷。 2 人類預測不到的大趨勢&#xff0c;只有技術大爆炸&#xff0c;關于人的那…

PEFT - 安裝及簡單使用

LLM、AIGC、RAG 開發交流裙&#xff1a;377891973 文章目錄 一、關于 PEFT二、安裝1、使用 PyPI 安裝2、使用源碼安裝 三、快速開始1、訓練2、保存模型3、推理4、后續步驟 本文翻譯整理自&#xff1a;https://huggingface.co/docs/peft/index 一、關于 PEFT &#x1f917;PEFT…

算力共享解決方案

目錄 算力共享解決方案 一、引言 二、目標 三、技術架構 一、基礎設施層 二、服務層 三、應用層 四、實施步驟 五、安全與隱私保護 六、經濟模型(信用評估-博弈論) 算力共享解決方案 一、引言 背景分析&#xff1a; 隨著大數據、人工智能、區塊鏈等技術的飛速發展&…