一、 先讲解tree树形结构:
1. key是唯一值,也就是后端接口返回的id,
1. 5.2接口1.1 调5.2接口,获取treeData格式,赋值就展示出来tree的样子了
主要是用replaceFields替换key title value标识
Ant Design 必须再data中用这个树形进行key 和title 和value的标识,对上之后就可以展示出来tree
1.2 展示出来
1.3 传id的时候看下面 2.2 怎么把id传给 后端的二、 角色权限,看看怎么调接口
1. 先调分页列表接口:2.6
2.1 新增调 2.2 接口: 获取下拉框和tree的数据接口 2.2,新增调这个接口,传这些参数
2.2 赋值
3. 编辑调接口:
编辑调2.1 接口,传id,
拿到回显数据
3.1 回显数据赋值
3.2 tree树形结构的赋值
修改的时候调2.3 ,修改角色
三、 所有代码:
list.vue:
<template>
<div>
<div class="pageTitle">
<div class="title">
<span class="titleName">角色管理</span>
<span class="content">系统当前所有用户</span>
</div>
</div>
<div class="wrap">
<div class="sea">
<Input
class="search"
v-model="inputValue"
placeholder="输入搜索条件"
@keyup.enter="searchEnterFun"
>
搜索
</Input>
</div>
<base-table
ref="roleList"
@onAction="onAction"
:table="table"
:removeUrl="removeUrl"
:removeMsg="'是否删除该角色?'"
></base-table>
</div>
</div>
</template>
<script>
import path from '@/api/index.js'
import { BaseTable } from '@/components/index.js'
export default {
name: 'UserList',
components: {
BaseTable
},
props: {},
data() {
return {
removeUrl: path.set.role.base,
// removeUrl: '/callsys/role/', //传接口路径-》BaseTable || 删除的接口,成功后直接删除
table: {
url: path.set.role.list,
// url: '/callsys/role/page', // 传接口路径-》BaseTable || table数据的接口,成功后直接拿到数组数据 -558行 527行
rowKey: 'roleId',
selectable: false,
columns: [
{
title: '角色名称',
dataIndex: 'roleName'
},
{
title: '处室名称',
dataIndex: 'tcq'
},
{
title: '描述',
dataIndex: 'roleDesc',
maxLength: 30
}
]
},
inputValue: ''
}
},
watch: {},
computed: {},
mounted() {},
methods: {
onAction({ name = '', data = {} }) {
const actionMap = {
onCreate: this.doCreate.bind(this), //绑定
onEdit: this.doEdit.bind(this, data.original)
}
actionMap.hasOwnProperty(name) && actionMap[name]()
},
doCreate() {
this.$router.push({
path: '/home/system/roleForm',
query: {
mode: 'create'
}
})
},
// 1.点击编辑按钮跳转传id获取列表数据回显
doEdit(data) {
this.$router.push({
path: '/home/system/roleForm',
query: {
mode: 'edit',
id: data.roleId
}
})
},
// 回车搜索
searchEnterFun() {
console.log('调接口')
// this.getDictys()
}
}
}
</script>
form.vue:
<template>
<div class="formPage">
<div class="pageTitle">角色详细信息</div>
<a-form-model
class="pageContent"
ref="form"
v-bind="formItemLayout"
:model="formModel"
:rules="rules"
>
<div class="formContent">
<div class="fomrLeft">
<div class="fomrLeft_box">
<h2>角色信息</h2>
<a-form-model-item label="名称" prop="roleName">
<a-input v-model="formModel.roleName" placeholder="请输入角色名称"></a-input>
</a-form-model-item>
<a-form-model-item label="处室名称" prop="tcq">
<a-select v-model="formModel.tcq" palaceholder="请选择处室" :allowClear="true">
<a-select-option v-for="item in tcqList" :key="item.name" :value="item.name">{ {
item.name
}}</a-select-option>
</a-select>
</a-form-model-item>
<a-form-model-item label="描述" prop="roleDesc">
<a-textarea
v-model="formModel.roleDesc"
palaceholder="角色描述"
:auto-size="{ minRows: 3, maxRows: 5 }"
></a-textarea>
</a-form-model-item>
</div>
</div>
<div class="fomrRight">
<div class="fomrRight_box">
<h2>拥有的权限</h2>
<div class="permissions">功能权限</div>
<div class="treeing">
<!--expandedKeys=选中的id/; autoExpandParent=true/false; onExpand/onSelect=函数;
replaceFields: 替换treeNode中title,key,children 字段为treeData中对应的字段 -->
<a-tree
v-model="checkedKeys"
:tree-data="treeData"
:replaceFields="replaceFields"
checkable
:expanded-keys="expandedKeys"
:auto-expand-parent="autoExpandParent"
:selected-keys="selectedKeys"
@expand="onExpand"
/>
</div>
</div>
</div>
</div>
</a-form-model>
<div class="pageFoot">
<a-button type="primary" class="saveBtn" @click="save">确定</a-button>
<a-button @click="cancle">取消</a-button>
</div>
</div>
</template>
<script>
import { formItemLayout } from '@/constants/base'
import SystemService from '@/service/system.js'
import cdgl from '@/service/cdgl.js'
export default {
name: 'RoleForm',
components: {},
props: {},
data() {
return {
formItemLayout,
tcqList: [],
menuList: [],
formModel: {
roleName: '',
tcq: '',
roleDesc: '',
permissions: [],
tcqList: []
},
rules: {
roleName: [{ required: true, message: '请填写角色名称', trigger: 'blur' }],
tcq: [{ required: true, message: '请选择', trigger: 'blur' }],
permissions: [{ required: true, message: '请选择', trigger: 'blur' }],
tcqList: [{ required: true, message: '请选择', trigger: 'blur' }]
},
// 1. tree
replaceFields: {
children: 'children',
title: 'name',
key: 'id',
value: 'id'
},
treeData: [],
expandedKeys: ['802'], //默认打开tree - 这是key值,也就是后端返回的id
autoExpandParent: true,
checkedKeys: [], //3. 选中的tree-id,
selectedKeys: []
}
},
// 3. 新增-tree树形结构传选中的id
watch: {
checkedKeys(val) {
// console.log(val, 'val----tree树形结构选中的id')
this.formModel.permissions = val
}
},
computed: {},
mounted() {
this.getAllTcqData()
this.getAllMenu()
this.getTrees() //1.
if (this.$route.query.mode === 'edit') {
this.getDetail(this.$route.query.id)
}
},
methods: {
// 1. tree-获取所有菜单tree树形结构
getTrees() {
cdgl.getTree().then((res) => {
this.treeData = res
})
},
// 1. tree右箭头
onExpand(expandedKeys) {
this.expandedKeys = expandedKeys
this.autoExpandParent = true
// console.log(this.autoExpandParent, 'tree-----true/false-默认打开所有选项')
},
// 3. 编辑回显数据(包括tree)
getDetail(id) {
SystemService.getRoleDetail(id).then((res) => {
this.formModel.roleName = res.sysRole.roleName
this.formModel.roleDesc = res.sysRole.roleDesc
this.formModel.roleId = res.sysRole.roleId
this.formModel.tcq = res.sysRole.tcq
this.formModel.tcqList = res.tcqList
res.permissions.length > 0 &&
res.permissions.forEach((item) => {
this.formModel.permissions.push(item.menuId)
this.checkedKeys = this.formModel.permissions //3.1 选中的tree回显
})
})
},
// 2.获取下拉框处室名称
getAllTcqData() {
SystemService.getAllTcq().then((res) => {
this.tcqList = [...res]
// console.log(res, 'res----处室名称')
})
},
// 没用
getAllMenu() {
SystemService.getAllMenu().then((res) => {
this.menuList = [...res]
})
},
save() {
this.$refs.form.validate((valid) => {
if (valid) {
if (this.$route.query.mode === 'create') {
SystemService.addRole(this.formModel).then((res) => {
this.$message.success('操作成功')
this.$router.push('/home/system/role')
})
} else if (this.$route.query.mode === 'edit') {
SystemService.updateRole(this.formModel).then((res) => {
this.$message.success('操作成功')
this.$router.push('/home/system/role')
})
}
} else {
return false
}
})
},
cancle() {
this.$refs.form.resetFields()
this.$router.go(-1)
}
}
}
</script>
文章浏览阅读1.6k次,点赞12次,收藏7次。大家好!大四的同学们毕业设计即将开始了,你们做好准备了吗?学长给大家精心整理了最新的计算机毕业设计选题,希望能为你们提供帮助。如果在选题过程中有任何疑问,都可以随时问我,我会尽力帮助大家。在选择毕业设计选题时,有几个要点需要考虑。首先,选题应与计算机专业密切相关,并且符合当前行业的发展趋势。选择与专业紧密结合的选题,可以使你们更好地运用所学知识,并为未来的职业发展奠定基础。要考虑选题的实际可行性和创新性。选题应具备一定的实践意义和应用前景,能够解决实际问题或改善现有技术。
文章浏览阅读3.4k次。摘要:随着电信业务的发展和电信企业经营方式的转变,DCN网络的定位发生了重大的演变。本文基于这种变化,重点讨论DCN网络的规划方法和运维管理方法。Digest: With the development oftelecommunication bussiness and the change of management of telecomcarrier , DCN’s role will cha..._电信dcn
文章浏览阅读442次。深度学习一部分矩阵求导知识的搬运总结_向量变元是什么
文章浏览阅读8次。近期,裁员的公司越来越多今天想和大家聊聊职场人的新出路。作为席卷全球的新概念ESG已然成为当前各个行业关注的最热风口目前,国内官方发布了一项ESG新证书含金量五颗星、中文ESG证书、完整ESG考试体系、名师主讲...而ESG又是与人力资源直接相关甚至在行业圈内成为大佬们的热门话题...当前行业下行,裁员的公司也越来越多大家还是冲一冲这个新兴领域01 ESG为什么重要?在双碳的大背景下,ESG已然成...
文章浏览阅读356次。云计算快速渗透到众多的行业,使中小企业受益于技术变革。最近微软SMB的一项研究发现,到今年年底,78%的中小企业将以某种方式使用云。企业希望投入少、收益高,来取得更大的发展机会。云计算将中小企业信息化的成本大幅降低,它们不必再建本地互联网基础设施,节省时间和资金,降低了企业经营风险。科技创新已成时代的潮流,中小企业上云是创新前提。云平台稳定、安全、便捷的IT环境,提升企业经营效率的同时,也为企业..._系统上云的前后对比
文章浏览阅读899次。出现选网卡的时候无法选中,这里应该是一个bug。3.保存退出,重启虚拟机即可。1.先随便选择一个网卡。2.勾先取消再重新勾选。_esxi虚拟机无法联网
文章浏览阅读913次。在LaTeX中,可在.tex文件的同一级目录下创建egbib.bib文件,所有的参考文件信息可以统一写在egbib.bib文件中,然后在.tex文件的\end{document}前加入如下几行代码:{\small\bibliographystyle{IEEEtran}\bibliography{egbib}}即可在文章中用~\cite{}宏命令便捷的插入文内引用,且文章的Reference部分会自动排序、编号。..._egbib
文章浏览阅读950次。目录:Unity Shader - 知识点目录(先占位,后续持续更新)原文:Predefined Shader preprocessor macros版本:2019.1Predefined Shader preprocessor macros着色器预处理宏Unity 编译 shader programs 期间的一些预处理宏。(本篇的宏介绍随便看看就好,要想深入了解,还是直接看Unity...
文章浏览阅读195次。本文目录:一、大数据时代还需要数据治理吗?二、如何面向用户开展大数据治理?三、面向用户的自服务大数据治理架构四、总结一、大数据时代还需要数据治理吗?数据平台发展过程中随处可见的数据问题大数据不是凭空而来,1981年第一个数据仓库诞生,到现在已经有了近40年的历史,相对数据仓库来说我还是个年轻人。而国内企业数据平台的建设大概从90年代末就开始了,从第一代架构出现到..._数据治理从0搭建
文章浏览阅读2.2k次,点赞4次,收藏12次。高手请一笑而过。物理实验课别人已经做过3、4个了,自己一个还没做呢。不是咱不想做,而是咱不想起那么早,并且仅有的一次起得早,但是哈工大的服务器竟然超负荷,不停刷新还是不行,不禁感慨这才是真正的“万马争过独木桥“啊!服务器不给力啊……好了,废话少说。其实,我的想法很简单。写一个三重循环,不停地提交,直到所有的数据都accepted。其中最关键的是提交最后一个页面,因为提交用户名和密码后不需要再访问其..._哈尔滨工业大学抢课脚本
文章浏览阅读4.9k次。一些别人收集的英文站点 http://www.lifeinchina.cn (nice) http://www.huaren.us/ (nice) http://www.hindu.com (okay) http://www.italki.com www.talkdatalk.com (transfer)http://www.en8848.com.cn/yingyu/index._study english html
文章浏览阅读5.5k次,点赞19次,收藏78次。什么是栈?在谈M3堆栈之前我们先回忆一下数据结构中的栈。栈是一种先进后出的数据结构(类似于枪支的弹夹,先放入的子弹最后打出,后放入的子弹先打出)。M3内核的堆栈也不例外,也是先进后出的。栈的作用?局部变量内存的开销,函数的调用都离不开栈。了解了栈的概念和基本作用后我们来看M3的双堆栈栈cortex-M3内核使用了双堆栈,即MSP和PSP,这极大的方便了OS的设计。MSP的含义是Main..._stm32 msp psp