index.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. <script setup lang="ts">
  2. import AForm from '@/components/AForm/index.vue'
  3. import { FormConfigType } from '@/components/AForm/type'
  4. import { ToolbarConfigType } from '@/components/AToolbar/type'
  5. import { ColumnConfigType } from '@/components/ATable/type'
  6. import { StrAnyObj, StrAnyObjArr } from '@/typings'
  7. import { useHandleData } from '@/utils/useHandleData'
  8. import { getPageApi, getDetailApi, addApi, editApi, deleteApi } from '@/api/system/config'
  9. import { getToDoPageApi } from '@/api/flow/execute'
  10. const queryRef = ref<InstanceType<typeof AForm>>()
  11. const formRef = ref<InstanceType<typeof AForm>>()
  12. const showQuery = ref<boolean>(true)
  13. const pageTotal = ref<number>(0)
  14. const queryData = ref<StrAnyObj>({ pageNum: 1, pageSize: 10 })
  15. const tableData = ref<StrAnyObjArr>([])
  16. const formData = ref<StrAnyObj>({})
  17. const dialogTitle = ref<string>('')
  18. const dialogVisible = ref<boolean>(false)
  19. const queryConfig: FormConfigType[] = [
  20. {
  21. type: 'input',
  22. prop: 'nodeName',
  23. label: '任务名称'
  24. },
  25. {
  26. type: 'select',
  27. prop: 'flowStatus',
  28. label: '流程状态',
  29. dict: 'flow_status'
  30. },
  31. {
  32. type: 'datePicker',
  33. prop: 'createTime',
  34. label: '创建时间',
  35. datePickerType: 'date',
  36. format: 'YYYY-MM-DD',
  37. valueFormat: 'YYYY-MM-DD 00:00:00'
  38. }
  39. ]
  40. const toolbarConfig: ToolbarConfigType[] = [
  41. {
  42. common: 'search',
  43. click() {
  44. queryData.value.pageNum = 1
  45. getPage()
  46. }
  47. },
  48. {
  49. common: 'reset',
  50. click() {
  51. queryRef.value?.resetFields()
  52. getPage()
  53. }
  54. }
  55. // {
  56. // common: 'add',
  57. // permissions: 'sysConfig:add',
  58. // click() {
  59. // dialogVisible.value = true
  60. // dialogTitle.value = '新增'
  61. // }
  62. // }
  63. ]
  64. const columnConfig: ColumnConfigType[] = [
  65. {
  66. prop: 'flowName',
  67. label: '流程名称'
  68. },
  69. {
  70. prop: 'nodeName',
  71. label: '任务名称'
  72. },
  73. {
  74. prop: 'approver',
  75. label: '审批人'
  76. },
  77. {
  78. prop: 'transferredBy',
  79. label: '转办人'
  80. },
  81. {
  82. prop: 'delegate',
  83. label: '委派人'
  84. },
  85. {
  86. prop: 'flowStatus',
  87. label: '流程状态',
  88. dict: 'flow_status'
  89. },
  90. {
  91. prop: 'activityStatus',
  92. label: '激活状态',
  93. dict: 'activity_status'
  94. },
  95. {
  96. prop: 'createTime',
  97. label: '创建时间'
  98. },
  99. {
  100. width: 200,
  101. handleConfig: [
  102. // {
  103. // common: 'update',
  104. // permissions: 'sysConfig:edit',
  105. // click(row) {
  106. // dialogVisible.value = true
  107. // dialogTitle.value = '编辑'
  108. // getDetailApi({ id: row.id }).then((resp: StrAnyObj) => {
  109. // formData.value = resp
  110. // })
  111. // }
  112. // },
  113. // {
  114. // common: 'delete',
  115. // permissions: 'sysConfig:delete',
  116. // click(row) {
  117. // handleRemove([row.id])
  118. // }
  119. // }
  120. ]
  121. }
  122. ]
  123. const formConfig: FormConfigType[] = [
  124. {
  125. type: 'input',
  126. prop: 'name',
  127. label: '参数名称',
  128. rule: [{ required: true, message: '参数名称不能为空', trigger: 'blur' }]
  129. },
  130. {
  131. type: 'input',
  132. prop: 'code',
  133. label: '参数编码',
  134. rule: [{ required: true, message: '参数编码不能为空', trigger: 'blur' }]
  135. },
  136. {
  137. type: 'input',
  138. prop: 'value',
  139. label: '参数值',
  140. rule: [{ required: true, message: '参数键值不能为空', trigger: 'blur' }]
  141. },
  142. {
  143. type: 'radio',
  144. prop: 'builtin',
  145. label: '系统内置',
  146. dict: 'yes_no',
  147. rule: [{ required: true, message: '系统内置不能为空', trigger: 'blur' }]
  148. },
  149. {
  150. type: 'input',
  151. prop: 'remark',
  152. label: '备注',
  153. itemType: 'textarea',
  154. rows: 5
  155. }
  156. ]
  157. onMounted(() => {
  158. getPage()
  159. })
  160. function getPage() {
  161. getToDoPageApi(queryData.value).then((resp) => {
  162. tableData.value = resp.records
  163. pageTotal.value = resp.total
  164. })
  165. }
  166. function formSubmit() {
  167. formRef.value?.validate(() => {
  168. if (formData.value.id) {
  169. editApi(formData.value).then(() => {
  170. dialogVisible.value = false
  171. ElMessage.success('修改成功')
  172. getPage()
  173. })
  174. } else {
  175. addApi(formData.value).then(() => {
  176. dialogVisible.value = false
  177. ElMessage.success('新增成功')
  178. getPage()
  179. })
  180. }
  181. })
  182. }
  183. function formClosed() {
  184. formRef.value?.resetFields()
  185. }
  186. </script>
  187. <template>
  188. <div>
  189. <el-card v-if="showQuery">
  190. <a-form ref="queryRef" v-model="queryData" :config="queryConfig" :span="6"> </a-form>
  191. </el-card>
  192. <a-table
  193. :data="tableData"
  194. :page-total="pageTotal"
  195. :toolbar-config="toolbarConfig"
  196. :column-config="columnConfig"
  197. v-model:showQuery="showQuery"
  198. v-model:page-num="queryData.pageNum"
  199. v-model:page-size="queryData.pageSize"
  200. @page-num-change="getPage"
  201. @page-size-change="getPage"
  202. >
  203. </a-table>
  204. <a-dialog
  205. v-model="dialogVisible"
  206. :title="dialogTitle"
  207. @submit="formSubmit"
  208. @closed="formClosed"
  209. >
  210. <a-form ref="formRef" v-model="formData" :config="formConfig" :span="24"> </a-form>
  211. </a-dialog>
  212. </div>
  213. </template>