FlowDesign.vue 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <script setup name="FlowDesign">
  2. import { computed, onMounted, reactive, ref } from 'vue'
  3. import ScWorkflow from '@/components/scWorkflow'
  4. import process from '@/api/flow/process'
  5. import useFlowStore from '@/store/modules/flow'
  6. import { storeToRefs } from 'pinia'
  7. import { useRoute } from 'vue-router'
  8. const route = useRoute()
  9. defineProps({
  10. label: {
  11. type: String
  12. },
  13. name: {
  14. type: String
  15. }
  16. })
  17. const flowStore = useFlowStore()
  18. const { flowProcessId, basicInfo, processForm, modelContent } = storeToRefs(flowStore)
  19. const formRef = ref()
  20. let form = ref({
  21. // "name": "请假审批",
  22. processConfig: {
  23. nodeName: '发起人',
  24. type: 0,
  25. nodeRoleList: []
  26. }
  27. })
  28. const validate = () => {
  29. return new Promise(resolve => {
  30. // return new Promise((resolve, reject) => {
  31. resolve(form.value)
  32. /*formRef.value.validate((valid, errObj) => {
  33. if (valid) {
  34. console.error('valid 成功')
  35. // cb?.(form.value)
  36. resolve(form.value)
  37. // return form.value
  38. return
  39. }
  40. return reject([props.name, errObj])
  41. })*/
  42. })
  43. }
  44. // 接口保存审批流程
  45. const saveDesign = async jsonStr => {
  46. try {
  47. const params = {
  48. ...basicInfo.value,
  49. processId: flowProcessId.value,
  50. processForm: processForm.value,
  51. modelContent: JSON.stringify(jsonStr)
  52. }
  53. const res = await process.progressCreateApi(params)
  54. flowProcessId.value = res
  55. } catch (e) {
  56. console.log(e)
  57. }
  58. }
  59. // 当前是否是编辑
  60. const queryObj = computed(() => route.query)
  61. onMounted(() => {
  62. if (queryObj.value.id) {
  63. const _val = JSON.parse(modelContent.value || '{}')
  64. form.value = Object.assign(_val, {})
  65. }
  66. })
  67. defineExpose({
  68. formRef,
  69. validate,
  70. saveDesign
  71. })
  72. </script>
  73. <template>
  74. <ScWorkflow v-model="form.processConfig"></ScWorkflow>
  75. </template>
  76. <style scoped>
  77. .flow-design-wrap {
  78. background: #f6f8f9;
  79. margin-bottom: 10px;
  80. }
  81. </style>