audit-cpm-improve-require-form.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <template>
  2. <sd-webflow
  3. ref="webflow"
  4. :class="$style.webflow"
  5. :validate-form="validForm"
  6. @actionBtnClick="actionBtnClick"
  7. >
  8. <template v-slot:form="{ model, FlowData }">
  9. <sd-form-by-builder
  10. :form-data="FlowData.processFormData"
  11. :class="{
  12. [$style.viewForm]:
  13. FlowData.processFormData.processFormPropertyValues.find((item) => {
  14. return item.name === 'CPM_IMPROVE_DETAIL'
  15. }).readonly === true,
  16. }"
  17. />
  18. </template>
  19. </sd-webflow>
  20. </template>
  21. <script>
  22. import { message } from '@/common/one-ui'
  23. import axios from '@/common/services/axios-instance'
  24. import components from './_import-components/audit-cpm-improve-require-form-import'
  25. export default {
  26. name: 'AuditCpmImproveRequireForm',
  27. metaInfo: {
  28. title: '问题整改要求',
  29. },
  30. components,
  31. data() {
  32. return {}
  33. },
  34. methods: {
  35. validForm() {
  36. // return true
  37. const child = this.$refs.webflow.getFieldValue('CPM_IMPROVE_DETAIL')
  38. let flag = true
  39. child.forEach((i) => {
  40. if (child.filter((u) => u.PROBLEM_ID === i.PROBLEM_ID).length > 1) {
  41. flag = false
  42. }
  43. })
  44. if (flag) {
  45. return Promise.resolve(true)
  46. } else {
  47. message.warning('请检查需要整改问题中重复数据!', 3)
  48. return Promise.resolve(false)
  49. }
  50. },
  51. // 提交校验
  52. actionBtnClick(evt, { button, FlowData }) {
  53. if (button.fakeId === 'workflow-push') {
  54. // 提交前校验子表数据是否已经有结束的数据,有的话则提示
  55. evt.waitUntil(
  56. new Promise((resolve, reject) => {
  57. // 不需要判断直接返回
  58. if (FlowData.attrs.cpm$checkRequire !== true || button.buttonName.includes('不通过')) {
  59. resolve()
  60. return
  61. }
  62. // 获取子表数据
  63. const dataList = this.$refs.webflow.getFieldValue('CPM_IMPROVE_DETAIL')
  64. if (dataList === undefined || dataList.length === 0) {
  65. message.warning('请增加至少一条需要整改问题!', 3)
  66. evt.preventDefault()
  67. resolve()
  68. return
  69. }
  70. // 获取子表ID
  71. let ids = []
  72. if (dataList.length > 0) {
  73. ids = dataList.map((item) => item.PROBLEM_ID)
  74. }
  75. axios({
  76. url: `api/xcoa-mobile/v1/cpm-improve-require/checkProblems?problemIds=${ids.join(
  77. ','
  78. )}`,
  79. methods: 'get',
  80. }).then((res) => {
  81. if (res.data.data?.length > 0) {
  82. message.warning(
  83. `问题整改清单"${res.data.data
  84. .map((item) => item.FIND_TITLE)
  85. .join(',')}"已被审批通过,请重新选择!`,
  86. 3
  87. )
  88. evt.preventDefault()
  89. }
  90. resolve()
  91. })
  92. })
  93. )
  94. }
  95. },
  96. },
  97. }
  98. </script>
  99. <style module lang="scss">
  100. @use '@/common/design' as *;
  101. .webflow {
  102. :global(.ant-space-horizontal) {
  103. :global(.ant-space-item):nth-child(4) {
  104. display: none;
  105. }
  106. }
  107. :global(.sd-form-table) {
  108. tr:last-child {
  109. :global(.ant-form-item-control-wrapper) {
  110. :global(.selector-wapper_sd-form-item-td-input_common) {
  111. margin-top: -45px;
  112. }
  113. }
  114. }
  115. }
  116. .view-form {
  117. tr:last-child {
  118. :global(.ant-form-item-control-wrapper) {
  119. :global(.selector-wapper_sd-form-item-td-input_common) {
  120. margin-top: 0px !important;
  121. }
  122. }
  123. }
  124. }
  125. }
  126. </style>