add.html 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. <template>
  2. <el-card shadow="never" style="border: 0;">
  3. <template #header v-if="action=='edit'">
  4. <el-alert
  5. type="warning"
  6. show-icon>
  7. 非调试模式下,提交后请清空缓存才能生效!
  8. </el-alert>
  9. </template>
  10. <yun-form
  11. ref="yunform"
  12. :data="data"
  13. @submit="onSubmit"
  14. :columns="columns">
  15. <template #default>
  16. {:token_field()}
  17. </template>
  18. <template #pid="{rows}">
  19. <el-form-item label="{:__('父级')}:" required>
  20. <el-tree-select
  21. v-model="rows.pid"
  22. :data="groupdata"
  23. check-strictly
  24. :default-expand-all="true"
  25. @change="changePid"
  26. :props='{label:"name",children:"childlist",value:"id"}'
  27. >
  28. </el-tree-select>
  29. </el-form-item>
  30. </template>
  31. <template #rules="item">
  32. <el-form-item label="{:__('权限')}:" required>
  33. <div style="position: relative;left: 5px;">
  34. <el-checkbox v-model="checkAll">{:__('全部选中')}</el-checkbox>
  35. <el-checkbox v-model="expandAll">{:__('全部展开')}</el-checkbox>
  36. </div>
  37. <el-tree ref="tree" :props="{children:'childlist',label:'title'}" node-key="id" show-checkbox :default-checked-keys="checkedKey" :data="treedata" style="width: 100%; left: -18px;"></el-tree>
  38. </el-form-item>
  39. </template>
  40. </yun-form>
  41. </el-card>
  42. </template>
  43. <script>
  44. import form from "@components/Form.js";
  45. import {TreeIdtoString} from "@util.js";
  46. const doCheck=function (tree,checkKey){
  47. tree.forEach(res=>{
  48. checkKey.push(res.id);
  49. if(res.children && res.children.length>0){
  50. doCheck(res.children,checkKey);
  51. }
  52. });
  53. }
  54. export default{
  55. components:{'YunForm':form},
  56. data:{
  57. action:Yunqi.config.action,
  58. data:Yunqi.data.row || {pid:Yunqi.data.groupdata[0].id},
  59. groupdata:TreeIdtoString(Yunqi.data.groupdata),
  60. columns:[
  61. {field: 'id',title: __('ID'),edit:'hidden'},
  62. {field: 'pid', title: __('父级'),edit:'slot',rules:'required'},
  63. {field: 'rules',title: __('权限'),edit:'slot'},
  64. {field: 'auth_rules',edit:'hidden'},
  65. {field: 'name', title: __('名称'),edit:'text',rules:'required'},
  66. {field: 'status', title: __('状态'), edit:{form:'radio',value:'normal'},searchList: {'normal': __('正常'),'hidden': __('隐藏')}}
  67. ],
  68. checkAll:false,
  69. expandAll:false,
  70. checkedKey:[],
  71. treedata:[]
  72. },
  73. onShow:function (){
  74. if(Yunqi.config.action=='add'){
  75. this.roletree(Yunqi.data.groupdata[0].id);
  76. }
  77. if(Yunqi.config.action=='edit'){
  78. this.roletree(Yunqi.data.row.pid);
  79. this.checkedKey = Yunqi.data.row.rules.split(',');
  80. }
  81. },
  82. watch:{
  83. checkAll:function (data){
  84. if (data) {
  85. let checkedKey = [];
  86. doCheck(this.treedata, checkedKey);
  87. this.checkedKey = checkedKey;
  88. } else {
  89. for(let i=0;i<this.$refs.tree.store._getAllNodes().length;i++){
  90. this.$refs.tree.store._getAllNodes()[i].checked = false;
  91. }
  92. }
  93. },
  94. expandAll:function (data) {
  95. if (data) {
  96. for(let i=0;i<this.$refs.tree.store._getAllNodes().length;i++){
  97. this.$refs.tree.store._getAllNodes()[i].expanded = true;
  98. }
  99. } else {
  100. for(let i=0;i<this.$refs.tree.store._getAllNodes().length;i++){
  101. this.$refs.tree.store._getAllNodes()[i].expanded = false;
  102. }
  103. }
  104. }
  105. },
  106. methods: {
  107. changePid:function (pid){
  108. this.roletree(pid);
  109. },
  110. roletree:function (pid){
  111. Yunqi.ajax.get('auth/group/roletree',{groupid:pid},true,false,true).then(res=>{
  112. this.treedata=res;
  113. });
  114. },
  115. onSubmit:function (data){
  116. let row=this.$refs.yunform.form_.data;
  117. let s1=this.$refs.tree.getCheckedKeys();
  118. let s2=this.$refs.tree.getHalfCheckedKeys();
  119. row.rules=s1.join(',');
  120. row.auth_rules=s2.concat(s1).join(',');
  121. return true;
  122. }
  123. }
  124. }
  125. </script>
  126. <style>
  127. </style>