index.html 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <template>
  2. <el-card shadow="never">
  3. <template #header>
  4. <el-alert effect="dark" :closable="false" title="使用说明">菜单规则包含两部分,(1)菜单(2)规则,菜单如果不存在子菜单,需要设置控制器与方法,表示点击菜单时访问位置。菜单仅提供显示功能,如果要设置访问位置的权限,需要继续配置规则。</el-alert>
  5. </template>
  6. <yun-table
  7. :columns="indexColumns"
  8. toolbar="refresh,add,edit,del,more"
  9. @render="onRender"
  10. ref="yuntable"
  11. :is-tree="true"
  12. :common-search="false"
  13. :pagination="false"
  14. :auth="auth"
  15. :extend="extend">
  16. <template #formatter="item">
  17. <div v-if="item.field=='icon'">
  18. <i :class="item.rows.icon"></i>
  19. </div>
  20. </template>
  21. </yun-table>
  22. </el-card>
  23. </template>
  24. <script>
  25. import table from "@components/Table.js";
  26. export default{
  27. components:{'YunTable':table},
  28. data:{
  29. auth:{
  30. add:Yunqi.auth.check('app\\admin\\controller\\auth\\Rule','add'),
  31. edit:Yunqi.auth.check('app\\admin\\controller\\auth\\Rule','edit'),
  32. del:Yunqi.auth.check('app\\admin\\controller\\auth\\Rule','del'),
  33. multi:Yunqi.auth.check('app\\admin\\controller\\auth\\Rule','multi'),
  34. download:Yunqi.auth.check('app\\admin\\controller\\auth\\Rule','download'),
  35. },
  36. extend:{
  37. index_url: 'auth/rule/index',
  38. add_url: 'auth/rule/add',
  39. edit_url: 'auth/rule/edit',
  40. del_url: 'auth/rule/del',
  41. multi_url: 'auth/rule/multi',
  42. download_url: 'auth/rule/download',
  43. },
  44. indexColumns:[
  45. {checkbox: true,selectable:function (row,index){
  46. if(!row.ismenu){
  47. return false;
  48. }
  49. return true;
  50. }},
  51. {field: 'id',title: __('ID'),width:80},
  52. {field: 'title',expand:true,title: __('标题'),align:'left',formatter:function (data,row){
  53. if(row.ismenu){
  54. return data;
  55. }else{
  56. data=JSON.parse(data);
  57. return data.join(',');
  58. }
  59. }},
  60. {field: 'controller', title: __('控制器'),align:'left',formatter:function (data,row){
  61. if(!data){
  62. return '';
  63. }
  64. return data;
  65. }},
  66. {field: 'action', title: __('方法'),align:'left',formatter:function (data,row){
  67. if(!data){
  68. return '';
  69. }
  70. if(row.ismenu){
  71. return data;
  72. }else{
  73. data=JSON.parse(data);
  74. return data.join(',');
  75. }
  76. }},
  77. {field: 'icon',width:80, title: __('图标'),formatter:Yunqi.formatter.slot},
  78. {field: 'ismenu',width:80, title: __('菜单'),formatter:function(data){
  79. if(data==1){
  80. return __('是');
  81. }
  82. return __('否');
  83. }},
  84. {field: 'isplatform', title: __('平台'),width:80,formatter: function(data,row){
  85. if(row.pid===0 && row.ismenu){
  86. let t=Yunqi.formatter.switch;
  87. t.value=data;
  88. return t;
  89. }
  90. }},
  91. {field: 'weigh', title: __('权重'),width:80},
  92. {field: 'status', title: __('状态'),width:80,searchList: {'normal': __('正常'),'hidden': __('隐藏')},formatter: Yunqi.formatter.switch},
  93. {treeExpand: true},
  94. {
  95. field: 'operate',
  96. title: __('操作'),
  97. width:150,
  98. action:{sort:true,edit:true, del:true}
  99. }
  100. ]
  101. },
  102. methods: {
  103. onRender:function (data){
  104. if(Yunqi.config.action=='edit'){
  105. if(parseInt(data.ismenu)===0){
  106. let title=JSON.parse(data.title);
  107. let action=JSON.parse(data.action);
  108. let actions={};
  109. for(let i=0;i<title.length;i++){
  110. actions[action[i]]=title[i];
  111. }
  112. data.actions=actions;
  113. this.changeMenu(0);
  114. }
  115. }
  116. }
  117. }
  118. }
  119. </script>
  120. <style>
  121. </style>