index.vue 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <template>
  2. <ContentWrap>
  3. <!-- 列表 -->
  4. <div>
  5. <XTable @register="registerTable">
  6. <!-- 操作:新增 -->
  7. <template #toolbar_buttons>
  8. <XButton
  9. type="primary"
  10. preIcon="ep:zoom-in"
  11. :title="t('action.add')"
  12. v-hasPermi="['system:post:create']"
  13. @click="handleCreate()"
  14. />
  15. </template>
  16. <template #actionbtns_default="{ row }">
  17. <!-- 操作:修改 -->
  18. <XTextButton
  19. preIcon="ep:edit"
  20. :title="t('action.edit')"
  21. v-hasPermi="['bpm:form:update']"
  22. @click="handleUpdate(row.id)"
  23. />
  24. <!-- 操作:详情 -->
  25. <XTextButton
  26. preIcon="ep:view"
  27. :title="t('action.detail')"
  28. v-hasPermi="['bpm:form:query']"
  29. @click="handleDetail(row.id)"
  30. />
  31. <!-- 操作:删除 -->
  32. <XTextButton
  33. preIcon="ep:delete"
  34. :title="t('action.del')"
  35. v-hasPermi="['bpm:form:delete']"
  36. @click="deleteData(row.id)"
  37. />
  38. </template>
  39. </XTable>
  40. <!-- 表单详情的弹窗 -->
  41. <XModal v-model="detailOpen" width="800" title="表单详情">
  42. <form-create :rule="detailPreview.rule" :option="detailPreview.option" v-if="detailOpen" />
  43. </XModal>
  44. </div>
  45. </ContentWrap>
  46. </template>
  47. <script setup lang="ts" name="BpmForm">
  48. // 全局相关的 import
  49. // 业务相关的 import
  50. import * as FormApi from '@/api/bpm/form'
  51. import { allSchemas } from './form.data'
  52. // 表单详情相关的变量和 import
  53. import { setConfAndFields2 } from '@/utils/formCreate'
  54. const { t } = useI18n() // 国际化
  55. const router = useRouter() // 路由
  56. // 列表相关的变量
  57. const [registerTable, { deleteData }] = useXTable({
  58. allSchemas: allSchemas,
  59. getListApi: FormApi.getFormPageApi,
  60. deleteApi: FormApi.deleteFormApi
  61. })
  62. // 新增操作
  63. const handleCreate = () => {
  64. router.push({
  65. name: 'bpmFormEditor'
  66. })
  67. }
  68. // 修改操作
  69. const handleUpdate = async (rowId: number) => {
  70. await router.push({
  71. name: 'bpmFormEditor',
  72. query: {
  73. id: rowId
  74. }
  75. })
  76. }
  77. // 详情操作
  78. const detailOpen = ref(false)
  79. const detailPreview = ref({
  80. rule: [],
  81. option: {}
  82. })
  83. const handleDetail = async (rowId: number) => {
  84. // 设置表单
  85. const data = await FormApi.getFormApi(rowId)
  86. setConfAndFields2(detailPreview, data.conf, data.fields)
  87. // 弹窗打开
  88. detailOpen.value = true
  89. }
  90. </script>