index.vue 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <template>
  2. <div class="common-rule">
  3. <div class="tab-btns">
  4. <a-button
  5. v-for="item in menus"
  6. :key="item.id"
  7. :type="item.id == curMenu.id ? 'primary' : undefined"
  8. @click="selectMenu(item)"
  9. >{{ item.name }}</a-button
  10. >
  11. </div>
  12. <component
  13. :is="curMenu.component"
  14. v-if="permissions.button_add"
  15. ref="ruleDetailRef"
  16. ></component>
  17. </div>
  18. </template>
  19. <script setup lang="ts">
  20. import { Message } from '@arco-design/web-vue';
  21. import { ref, shallowRef } from 'vue';
  22. import usePermission from '@/hooks/permission';
  23. import RuleExam from './RuleExam.vue';
  24. import RulePackage from './RulePackage.vue';
  25. import RuleSign from './RuleSign.vue';
  26. defineOptions({
  27. name: 'CommonRule',
  28. });
  29. const { permissions } = usePermission();
  30. const menus = shallowRef([
  31. { id: '1', name: '考务规则配置', component: RuleExam },
  32. { id: '2', name: '卷袋贴字段配置', component: RulePackage },
  33. { id: '3', name: '签到表字段配置', component: RuleSign },
  34. ]);
  35. const curMenu = shallowRef({});
  36. const ruleDetailRef = ref(null);
  37. function selectMenu(item) {
  38. if (
  39. curMenu.value.id === '1' &&
  40. item.id !== '1' &&
  41. !ruleDetailRef.value?.checkRuleExist()
  42. ) {
  43. Message.error('请先保存考务规则配置!');
  44. return;
  45. }
  46. curMenu.value = item;
  47. }
  48. selectMenu(menus.value[0]);
  49. </script>