skip.vue 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <template>
  2. <div>
  3. <el-form ref="formRef" :model="form" label-width="120px" size="small" :disabled="disabled">
  4. <slot name="form-item-task-skipName" v-if="skipConditionShow" :model="form" field="skipName">
  5. <el-form-item label="跳转名称">
  6. <el-input v-model="form.skipName" placeholder="跳转名称" />
  7. </el-form-item>
  8. </slot>
  9. <slot name="form-item-task-skipType" :model="form" field="skipType">
  10. <el-form-item label="跳转类型">
  11. <el-select v-model="form.skipType">
  12. <el-option sel label="审批通过" value="PASS" />
  13. <el-option label="退回" value="REJECT" />
  14. </el-select>
  15. </el-form-item>
  16. </slot>
  17. <slot
  18. name="form-item-task-skipCondition"
  19. v-if="skipConditionShow"
  20. :model="form"
  21. field="skipCondition"
  22. >
  23. <el-form-item label="跳转条件">
  24. <el-input
  25. v-model="form.condition"
  26. v-if="!spelFlag"
  27. placeholder="条件名"
  28. style="width: 20%"
  29. />
  30. <el-select
  31. v-model="form.conditionType"
  32. placeholder="请选择条件方式"
  33. style="width: 35%; margin-left: 1%"
  34. @change="changeOper"
  35. >
  36. <el-option label="大于" value="gt" />
  37. <el-option label="大于等于" value="ge" />
  38. <el-option label="等于" value="eq" />
  39. <el-option label="不等于" value="ne" />
  40. <el-option label="小于" value="lt" />
  41. <el-option label="小于等于" value="le" />
  42. <el-option label="包含" value="like" />
  43. <el-option label="不包含" value="notNike" />
  44. <el-option label="spel表达式" value="spel" />
  45. </el-select>
  46. <el-input
  47. v-model="form.conditionValue"
  48. placeholder="条件值"
  49. style="width: 42%; margin-left: 1%; margin-right: 1%"
  50. />
  51. </el-form-item>
  52. </slot>
  53. </el-form>
  54. </div>
  55. </template>
  56. <script setup lang="ts">
  57. const props = defineProps({
  58. modelValue: {
  59. type: Object,
  60. default() {
  61. return {}
  62. }
  63. },
  64. disabled: {
  65. // 是否禁止
  66. type: Boolean,
  67. default: false
  68. },
  69. skipConditionShow: {
  70. // 是否显示跳转条件
  71. type: Boolean,
  72. default: true
  73. }
  74. })
  75. const spelFlag = ref(false)
  76. const form = ref(props.modelValue)
  77. const emit = defineEmits(['change'])
  78. watch(
  79. () => form,
  80. (n) => {
  81. n = n.value
  82. let skipCondition = n.skipCondition
  83. skipCondition = '@@' + n.conditionType + '@@|'
  84. if (n.conditionType !== 'spel') {
  85. skipCondition =
  86. skipCondition + (n.condition ? n.condition : '') + '@@' + n.conditionType + '@@'
  87. }
  88. n.skipCondition = skipCondition + (n.conditionValue ? n.conditionValue : '')
  89. if (n) {
  90. emit('change', n)
  91. }
  92. },
  93. { deep: true }
  94. )
  95. function changeOper(obj) {
  96. spelFlag.value = obj === 'spel'
  97. }
  98. if (props.modelValue?.conditionType === 'spel') spelFlag.value = true
  99. </script>
  100. <style scoped></style>