index.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. <template>
  2. <div class="ma-content-block">
  3. <!-- CRUD 组件 -->
  4. <sa-table
  5. ref="crudRef"
  6. :options="options"
  7. :columns="columns"
  8. :searchForm="searchForm"
  9. >
  10. <!-- 搜索区 tableSearch -->
  11. <template #tableSearch>
  12. <a-col :sm="8" :xs="24">
  13. <a-form-item field="name" label="部门名称">
  14. <a-input
  15. v-model="searchForm.name"
  16. placeholder="请输入部门名称"
  17. allow-clear
  18. />
  19. </a-form-item>
  20. </a-col>
  21. <a-col :sm="8" :xs="24">
  22. <a-form-item field="create_time" label="时间范围">
  23. <a-range-picker v-model="searchForm.create_time" />
  24. </a-form-item>
  25. </a-col>
  26. </template>
  27. <!-- 搜索区 end -->
  28. <!-- Table 自定义渲染 -->
  29. <template #leader="{ record }">
  30. <div v-if="record.leader.length > 0">
  31. <a-tag v-for="item in record.leader" :key="item.id" class="ml-2">{{
  32. item.username
  33. }}</a-tag>
  34. </div>
  35. <div v-else></div>
  36. </template>
  37. <!-- 操作列 -->
  38. <template #operationCell="{ record }">
  39. <div v-if="record.disabled"></div>
  40. </template>
  41. <!-- 操作前置扩展 -->
  42. <template #operationBeforeExtend="{ record }">
  43. <a-link
  44. v-if="!record.disabled"
  45. v-auth="['/core/dept/leaders']"
  46. @click="openLeaderModal(record)"
  47. >
  48. <icon-user /> 组长设置
  49. </a-link>
  50. <a-link
  51. v-if="!record.disabled"
  52. v-auth="['/core/dept/getGameListByDeptId']"
  53. @click="openGameListModal(record)"
  54. >
  55. <icon-game /> 游戏权限
  56. </a-link>
  57. </template>
  58. </sa-table>
  59. <!-- 编辑表单 -->
  60. <edit-form ref="editRef" @success="refresh" />
  61. <!-- 组长列表 -->
  62. <leader-list ref="leaderRef" @success="refresh" />
  63. <!-- 游戏权限设置 -->
  64. <game-list ref="gameListRef" @success="refresh" />
  65. </div>
  66. </template>
  67. <script setup>
  68. import { onMounted, ref, reactive, computed } from "vue";
  69. import { Message } from "@arco-design/web-vue";
  70. import EditForm from "./edit.vue";
  71. import LeaderList from "./leader.vue";
  72. import GameList from "./game.vue";
  73. import api from "@/api/system/dept";
  74. // 引用定义
  75. const crudRef = ref();
  76. const editRef = ref();
  77. const leaderRef = ref();
  78. const gameListRef = ref();
  79. // 打开组长列表设置
  80. const openLeaderModal = (record) => {
  81. leaderRef.value.open(record);
  82. };
  83. // 打开游戏权限设置
  84. const openGameListModal = (record) => {
  85. gameListRef.value.open(record);
  86. };
  87. // 搜索表单
  88. const searchForm = ref({
  89. name: "",
  90. create_time: [],
  91. });
  92. // SaTable 基础配置
  93. const options = reactive({
  94. api: api.getPageList,
  95. rowSelection: { showCheckedAll: true },
  96. isExpand: true,
  97. operationColumnWidth: 320,
  98. add: {
  99. show: true,
  100. auth: ["/core/dept/save"],
  101. func: async () => {
  102. editRef.value?.open();
  103. },
  104. },
  105. edit: {
  106. show: true,
  107. auth: ["/core/dept/update"],
  108. func: async (record) => {
  109. editRef.value?.open("edit");
  110. editRef.value?.setFormData(record);
  111. },
  112. },
  113. delete: {
  114. show: true,
  115. auth: ["/core/dept/destroy"],
  116. func: async (params) => {
  117. const resp = await api.destroy(params);
  118. if (resp.code === 200) {
  119. Message.success(`删除成功!`);
  120. crudRef.value?.refresh();
  121. }
  122. },
  123. },
  124. });
  125. // SaTable 列配置
  126. const columns = reactive([
  127. { title: "部门名称", dataIndex: "name", width: 180 },
  128. { title: "组长列表", dataIndex: "leader" },
  129. { title: "排序", dataIndex: "sort", width: 100 },
  130. {
  131. title: "状态",
  132. dataIndex: "status",
  133. type: "dict",
  134. dict: "data_status",
  135. width: 120,
  136. },
  137. { title: "创建时间", dataIndex: "create_time", width: 180 },
  138. ]);
  139. // 页面数据初始化
  140. const initPage = async () => {};
  141. // SaTable 数据请求
  142. const refresh = async () => {
  143. crudRef.value?.refresh();
  144. };
  145. // 页面加载完成执行
  146. onMounted(async () => {
  147. initPage();
  148. refresh();
  149. });
  150. </script>