case-execute-zxjz-form.vue 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. <template>
  2. <sd-webflow
  3. ref="webflow"
  4. @afterDispatch="afterDispatch"
  5. @saveproject="save"
  6. @sdFormReady="initData"
  7. @actionBtnClick="actionBtnClick"
  8. >
  9. <template v-slot:form="{ model, FlowData }">
  10. <amount-watcher :model="model" @amoutChange="amoutChange" />
  11. <amount-host-watcher :model="model" @amoutHostChange="amoutHostChange" />
  12. <sd-form-by-builder ref="builderform" :form-data="FlowData.processFormData" />
  13. </template>
  14. </sd-webflow>
  15. </template>
  16. <script>
  17. import axios from '@/common/services/axios-instance'
  18. import CaseMixins from '../case-mixins'
  19. import components from './_import-components/case-execute-zxjz-form-import'
  20. export default {
  21. name: 'CaseExecuteZxjzForm',
  22. metaInfo: {
  23. title: '执行程序-执行进展详情',
  24. },
  25. components: {
  26. // EXECUTE_AMOUNT 监听
  27. amountWatcher: {
  28. props: ['model'],
  29. created() {
  30. this.$watch('model.EXECUTE_AMOUNT', (val) => {
  31. this.$emit('amoutChange', val)
  32. })
  33. },
  34. render: () => {},
  35. },
  36. // EXECUTE_AMOUNT_HOST 监听
  37. amountHostWatcher: {
  38. props: ['model'],
  39. created() {
  40. this.$watch('model.EXECUTE_AMOUNT_HOST', (val) => {
  41. this.$emit('amoutHostChange', val)
  42. })
  43. },
  44. render: () => {},
  45. },
  46. ...components,
  47. },
  48. mixins: [CaseMixins],
  49. data() {
  50. return {
  51. ACCUMULATED_EXECUTE_AMOUNT: null,
  52. }
  53. },
  54. created() {
  55. this.type = 'execute'
  56. this.$nextTick(() => {
  57. axios({
  58. method: 'post',
  59. url:
  60. 'api/framework/v1/lawexecuteamounthost/findExecuteAmountByCaseId?caseId=' +
  61. this.$route.query.id,
  62. }).then((res) => {
  63. if (this.$refs.webflow.getFieldValue('EXECUTE_AMOUNT_HOST') !== undefined) {
  64. return
  65. }
  66. // 累计执行金额
  67. if (res.data.ACCUMULATED_EXECUTE_AMOUNT !== null) {
  68. this.$refs.webflow.setFieldValue(
  69. 'ACCUMULATED_EXECUTE_AMOUNT',
  70. res.data.ACCUMULATED_EXECUTE_AMOUNT
  71. )
  72. this.ACCUMULATED_EXECUTE_AMOUNT = res.data.ACCUMULATED_EXECUTE_AMOUNT
  73. } else {
  74. this.$refs.webflow.setFieldValue('ACCUMULATED_EXECUTE_AMOUNT', 0)
  75. this.ACCUMULATED_EXECUTE_AMOUNT = 0
  76. }
  77. // 执行余额
  78. if (res.data.EXECUTE_BALANCE !== null) {
  79. this.$refs.webflow.setFieldValue('EXECUTE_BALANCE', res.data.EXECUTE_BALANCE)
  80. } else {
  81. this.$refs.webflow.setFieldValue('EXECUTE_BALANCE', 0)
  82. }
  83. // 总执行金额
  84. if (res.data.EXECUTE_AMOUNT_HOST !== null) {
  85. this.$refs.webflow.setFieldValue('EXECUTE_AMOUNT_HOST', res.data.EXECUTE_AMOUNT_HOST)
  86. this.$refs.webflow.FlowData.processFormData.processFormPropertyValues.find(
  87. (item) => item.name === 'EXECUTE_AMOUNT_HOST'
  88. ).readonly = true
  89. }
  90. })
  91. })
  92. },
  93. mounted() {
  94. this.type = 'execute'
  95. },
  96. methods: {
  97. // 执行金额变化时
  98. amoutChange(val) {
  99. // 计算累计执行金额
  100. const amount = (this.ACCUMULATED_EXECUTE_AMOUNT + val).toFixed(2)
  101. this.$refs.webflow.setFieldValue('ACCUMULATED_EXECUTE_AMOUNT', amount)
  102. // 计算执行余额
  103. const allAmount = this.$refs.webflow.getFieldValue('EXECUTE_AMOUNT_HOST')
  104. const executeAmount = this.$refs.webflow.getFieldValue('ACCUMULATED_EXECUTE_AMOUNT')
  105. this.$refs.webflow.setFieldValue('EXECUTE_BALANCE', allAmount - executeAmount)
  106. },
  107. // 总执行金额监听
  108. amoutHostChange(val) {
  109. // 计算执行余额
  110. const ACCUMULATED_EXECUTE_AMOUNT = this.$refs.webflow.getFieldValue(
  111. 'ACCUMULATED_EXECUTE_AMOUNT'
  112. )
  113. const amount = val - ACCUMULATED_EXECUTE_AMOUNT
  114. this.$refs.webflow.setFieldValue('EXECUTE_BALANCE', amount)
  115. },
  116. },
  117. }
  118. </script>
  119. <style module lang="scss">
  120. @use '@/common/design' as *;
  121. </style>