StartEndPanel.vue 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <template>
  2. <div>
  3. <el-collapse v-model="currentCollapseItem">
  4. <el-collapse-item name="1">
  5. <template #title>
  6. <div class="collapse__title">
  7. <el-icon>
  8. <InfoFilled />
  9. </el-icon>
  10. 常规
  11. </div>
  12. </template>
  13. <div>
  14. <el-form ref="formRef" :model="formData" :rules="formRules" label-width="90px">
  15. <el-form-item prop="id" label="节点 ID">
  16. <el-input v-model="formData.id" @change="idChange"> </el-input>
  17. </el-form-item>
  18. <el-form-item prop="name" label="节点名称">
  19. <el-input v-model="formData.name" @change="nameChange"> </el-input>
  20. </el-form-item>
  21. </el-form>
  22. </div>
  23. </el-collapse-item>
  24. <el-collapse-item name="2">
  25. <template #title>
  26. <div class="collapse__title">
  27. <el-icon>
  28. <BellFilled />
  29. </el-icon>
  30. 执行监听器
  31. </div>
  32. </template>
  33. <div>
  34. <ExecutionListener :element="element"></ExecutionListener>
  35. </div>
  36. </el-collapse-item>
  37. </el-collapse>
  38. </div>
  39. </template>
  40. <script setup lang="ts">
  41. import ExecutionListener from './property/ExecutionListener.vue';
  42. import useParseElement from '../hooks/useParseElement';
  43. import usePanel from '../hooks/usePanel';
  44. import type { Modeler, ModdleElement } from 'bpmn';
  45. import type { StartEndPanel } from 'bpmnDesign';
  46. interface PropType {
  47. element: ModdleElement;
  48. }
  49. const props = withDefaults(defineProps<PropType>(), {});
  50. const { nameChange, idChange } = usePanel({
  51. element: toRaw(props.element)
  52. });
  53. const { parseData } = useParseElement({
  54. element: toRaw(props.element)
  55. });
  56. const formData = ref(parseData<StartEndPanel>());
  57. const currentCollapseItem = ref(['1', '2']);
  58. const formRules = ref<ElFormRules>({
  59. id: [{ required: true, message: '请输入', trigger: 'blur' }],
  60. name: [{ required: true, message: '请输入', trigger: 'blur' }]
  61. });
  62. </script>
  63. <style lang="scss" scoped></style>