law-check-apply-form.vue 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <template>
  2. <sd-webflow ref="webflow" :class="$style.webflow" :validate-form="validForm">
  3. <template v-slot:extra-tabs="{ FlowData }">
  4. <!-- 增加的tab页默认在最后,通过sd-before、sd-after可以指定位置 -->
  5. <a-tab-pane key="other" :tab="tabTitle" sd-before="sdFlowchart">
  6. <!-- 关联案件组件 -->
  7. <law-case-report-relate-doc
  8. v-model="relatedDoc"
  9. :flow-data="FlowData"
  10. :fields="
  11. FlowData.processFormData.processFormPropertyValues.find(
  12. (item) => item.name === 'LAW_APPLY_RELATED'
  13. ).attrFD.dync
  14. "
  15. :related.sync="relatedDoc"
  16. @update:related="fnRelatedDoc"
  17. ></law-case-report-relate-doc>
  18. </a-tab-pane>
  19. </template>
  20. <template v-slot:form="{ model, FlowData }">
  21. <sd-form-by-builder
  22. :class="$style.builderTable"
  23. :form-data="filter(FlowData.processFormData)"
  24. />
  25. </template>
  26. </sd-webflow>
  27. </template>
  28. <script>
  29. import lawCaseReportRelateDoc from '../report/law-case-report-relate-doc.vue'
  30. import components from './_import-components/law-check-apply-form-import'
  31. import { getUserInfo } from '@/common/store-mixin'
  32. export default {
  33. name: 'LawCheckApplyForm',
  34. metaInfo: {
  35. title: '法律审查申请',
  36. },
  37. components: {
  38. lawCaseReportRelateDoc,
  39. ...components,
  40. },
  41. data() {
  42. return {
  43. tabTitle: '关联文件',
  44. relatedDoc: [],
  45. }
  46. },
  47. mounted() {
  48. const ini = setInterval(() => {
  49. if (
  50. this.$refs.webflow &&
  51. (this.$refs.webflow.$refs.form || this.$refs.webflow.$refs.sdForm)
  52. ) {
  53. clearInterval(ini)
  54. this.relatedDoc = this.$refs.webflow.getFieldValue('LAW_APPLY_RELATED') || []
  55. this.setTabTitle()
  56. // 进入页面后 将选中的流程参与者赋值到审核人字段
  57. const userinfo = getUserInfo()
  58. const authUser = this.$refs.webflow.getFieldValue('AUTH_USER')
  59. const checkUser = this.$refs.webflow.getFieldValue('CHECK_USER')
  60. const curuser = userinfo.account
  61. if (
  62. this.$refs.webflow.FlowData.mode === 'EDIT' &&
  63. authUser?.some((user) => user.code === curuser) &&
  64. !checkUser?.some((user) => user.code === curuser)
  65. ) {
  66. const userArr = [
  67. ...checkUser,
  68. { code: userinfo.account, name: userinfo.name, type: 'User' },
  69. ]
  70. this.$refs.webflow.setFieldValue('CHECK_USER', userArr)
  71. }
  72. }
  73. }, true)
  74. },
  75. methods: {
  76. validForm() {
  77. // 自定义校验,适用于多个字段联合校验,支持promise
  78. const arr = this.$refs.webflow.getFieldValue('CHECK_USER')
  79. if (arr) {
  80. const str = arr
  81. .map((obj) => {
  82. return obj.code
  83. })
  84. .join(',')
  85. this.$refs.webflow.setFieldValue('CHECK_USER_ID', str)
  86. return Promise.resolve(true)
  87. } else {
  88. return Promise.resolve(true)
  89. }
  90. },
  91. fnRelatedDoc(data) {
  92. this.$refs.webflow.setFieldValue('LAW_APPLY_RELATED', data)
  93. this.setTabTitle()
  94. },
  95. setTabTitle() {
  96. if (this.relatedDoc.length > 0) {
  97. this.tabTitle = '关联案件' + ' (' + this.relatedDoc.length + ')'
  98. } else {
  99. this.tabTitle = '关联案件'
  100. }
  101. },
  102. filter(pageFormData) {
  103. const formData = pageFormData
  104. formData.processFormPropertyValues.forEach((item) => {
  105. // 关联文件
  106. if (item.name === 'LAW_APPLY_RELATED') {
  107. item.attrFD.formItemProps.inputProps.class = this.$style.relateTable
  108. }
  109. })
  110. return formData
  111. },
  112. },
  113. }
  114. </script>
  115. <style module lang="scss">
  116. @use '@/common/design' as *;
  117. .webflow {
  118. :global(.ant-space-horizontal) {
  119. :global(.ant-space-item):nth-child(4) {
  120. display: none;
  121. }
  122. }
  123. .lawyer-table {
  124. :global(.header_sd-child-table_common) {
  125. button {
  126. &:first-child {
  127. display: none;
  128. }
  129. }
  130. }
  131. }
  132. .relate-table {
  133. display: none;
  134. }
  135. .builder-table {
  136. & > tr {
  137. &:last-child {
  138. display: none;
  139. }
  140. }
  141. }
  142. }
  143. </style>