当前位置:   article > 正文

VUE弹窗加载另一个VUE页面_vue弹窗加载另一个页面

vue弹窗加载另一个页面

之前实现了一个功能VUE利用tree-transfer插件实现角色菜单动态设置

在这个功能的基础上,进一步完善

角色列表Uacter.vue页面,点击【菜单设置】按钮,弹出角色菜单MenuRole.vue页面,也就是说实现的是一个弹窗功能,只不过加载的vue页面

说来惭愧,这是我应用vue的第4天,好多东西都不知道,然后就是现学现用

首先肯定是找百度啊

主要参考的列子:vue编辑、新增弹框(引用外部页面)

但是按照上边这个方法,我的弹窗一直都没有显示出来,一个大的改动点是我Uacter.vue页面引用MenuRole时直接包裹在dialog里边

菜单权限按钮:

<el-button type="info" @click="handleClick3(scope.row.id)"   size="mini">菜单权限</el-button>

引入MenuRole页面:

  1. <el-dialog :visible.sync="menuRoleVisible" append-to-body>
  2. <menu-role v-if="menuRoleVisible" ref="menuRole"></menu-role>
  3. </el-dialog>

编辑按钮触发方法:

  1. //设置菜单权限
  2. handleClick3(id){
  3. let roleId = id;
  4. this.menuRoleVisible = true;
  5. this.$nextTick(()=>{
  6. this.$refs.menuRole.dataInitialization(roleId);
  7. })
  8. }

MenuRole.vue完整代码:

  1. <template>
  2. <div class="widget-content">
  3. <tree-transfer :title="title"
  4. :from_data='fromData'
  5. :to_data='toData'
  6. :defaultProps="{label:'label',value:'id'}"
  7. @addBtn='add'
  8. @removeBtn='remove'
  9. @change="changeMode"
  10. :mode='mode' height='640px' filter openAll>
  11. </tree-transfer>
  12. <el-button type="primary" size="mini" @click="save" style="margin-left:30%;">保存</el-button>
  13. </div>
  14. </template>
  15. <script>
  16. import treeTransfer from 'el-tree-transfer' // 引入
  17. export default {
  18. components: {
  19. treeTransfer
  20. },
  21. data(){
  22. return{
  23. roleId:"",
  24. title:["已有菜单权限","可选菜单权限"],
  25. mode: "transfer", // transfer addressList
  26. fromData:[],
  27. toData:[]
  28. }
  29. },
  30. methods:{
  31. //初始化数据
  32. dataInitialization(id){
  33. let that = this;
  34. that.roleId = id;
  35. that.axios
  36. .get(
  37. "/qsmonitor/menu/getMenuByRole?roleId="+id
  38. )
  39. .then(res => {
  40. that.fromData = res.data.data.fromData;
  41. that.toData = res.data.data.toData;
  42. console.info("this id ");
  43. console.info(res);
  44. that.$notify({
  45. title: "成功",
  46. message: res.data.message,
  47. type: "success"
  48. });
  49. })
  50. .catch(err => {
  51. that.$notify.error({
  52. title: "错误",
  53. message: err
  54. });
  55. console.log(err);
  56. });
  57. },
  58. // 切换模式 现有树形穿梭框模式transfer 和通讯录模式addressList
  59. changeMode() {
  60. if (this.mode == "transfer") {
  61. this.mode = "addressList";
  62. } else {
  63. this.mode = "transfer";
  64. }
  65. },
  66. // 减少权限设置
  67. add(fromData,toData,obj){
  68. this.fromData = fromData;
  69. this.toData = toData;
  70. },
  71. // 增加权限设置
  72. remove(fromData,toData,obj){
  73. this.fromData = fromData;
  74. this.toData = toData;
  75. },
  76. save(){
  77. let addIds = "";
  78. this.fromData.forEach((item,i)=>{
  79. addIds += item.id+",";
  80. });
  81. this.axios
  82. .put(
  83. "/qsmonitor/menu/setMenu?roleId="+this.roleId+"&addIds="+addIds
  84. )
  85. .then(res => {
  86. if (res.data.data) {
  87. this.loading = false;
  88. }
  89. this.dataInitialization(this.roleId);
  90. this.$notify({
  91. title: "成功",
  92. message: res.data.message,
  93. type: "success"
  94. });
  95. })
  96. .catch(err => {
  97. console.info(err);
  98. this.$notify.error({
  99. title: "错误",
  100. message: "系统异常"
  101. });
  102. console.log(err);
  103. });
  104. }
  105. }
  106. }
  107. </script>

最终实现效果:

后记:用这个tree-transfer插件真的完美解决了我的问题,而且不需要再去给左移、右移按钮添加事件。看别人实现的代码好像很顺利,但真的做起来的时候总会遇到各种bug,我就一点一点去改去测,方法有些笨,毕竟刚开始接触vue呢,但是感觉以我现在混迹后端的水平,vue我也就只能实现基本的功能,做不出很酷炫的效果,慢慢来吧

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/119005
推荐阅读
相关标签
  

闽ICP备14008679号