index.vue 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <template>
  2. <a-row :class="['p-4', `${prefixCls}--box`]" type="flex" :gutter="10" style="margin-top: 10px">
  3. <a-col :xl="12" :lg="24" :md="24" style="margin-bottom: 10px">
  4. <DepartLeftTree ref="leftTree" @select="onTreeSelect" @rootTreeData="onRootTreeData" />
  5. </a-col>
  6. <a-col :xl="12" :lg="24" :md="24" style="margin-bottom: 10px">
  7. <div style="height: 100%">
  8. <a-tabs v-show="departData != null" defaultActiveKey="base-info">
  9. <a-tab-pane tab="基本信息" key="base-info" forceRender style="position: relative">
  10. <div style="padding: 20px">
  11. <DepartFormTab :data="departData" :rootTreeData="rootTreeData" @success="onSuccess" />
  12. </div>
  13. </a-tab-pane>
  14. <a-tab-pane tab="部门权限" key="role-info">
  15. <div style="padding: 0 20px 20px">
  16. <DepartRuleTab :data="departData" />
  17. </div>
  18. </a-tab-pane>
  19. </a-tabs>
  20. <div v-show="departData == null" style="padding-top: 40px">
  21. <a-empty description="尚未选择部门" />
  22. </div>
  23. </div>
  24. </a-col>
  25. </a-row>
  26. </template>
  27. <script lang="ts" setup name="system-depart">
  28. import { provide, ref } from 'vue';
  29. import { useDesign } from '/@/hooks/web/useDesign';
  30. import DepartLeftTree from './components/DepartLeftTree.vue';
  31. import DepartFormTab from './components/DepartFormTab.vue';
  32. import DepartRuleTab from './components/DepartRuleTab.vue';
  33. const { prefixCls } = useDesign('depart-manage');
  34. provide('prefixCls', prefixCls);
  35. // 给子组件定义一个ref变量
  36. const leftTree = ref();
  37. // 当前选中的部门信息
  38. const departData = ref({});
  39. const rootTreeData = ref<any[]>([]);
  40. // 左侧树选择后触发
  41. function onTreeSelect(data) {
  42. console.log('onTreeSelect: ', data);
  43. departData.value = data;
  44. }
  45. // 左侧树rootTreeData触发
  46. function onRootTreeData(data) {
  47. rootTreeData.value = data;
  48. }
  49. function onSuccess() {
  50. leftTree.value.loadRootTreeData();
  51. }
  52. </script>
  53. <style lang="less">
  54. @import './index.less';
  55. </style>
  56. <style lang="less" scoped>
  57. @ventSpace: zxm;
  58. .@{ventSpace}-tabs {
  59. border: 1px solid #44d3ff70 !important;
  60. border-radius: 2px !important;
  61. box-shadow: 0 0 20px #44b4ff33 inset;
  62. background-color: #ffffff11 !important;
  63. }
  64. </style>