detailDialog.vue 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. <template>
  2. <ele-modal
  3. custom-class="ele-dialog-form long-dialog-form"
  4. :centered="true"
  5. :visible.sync="detailDialogFlag"
  6. :title="title"
  7. :append-to-body="true"
  8. :close-on-click-modal="false"
  9. :maxable="true"
  10. :resizable="true"
  11. width="70%"
  12. :before-close="cancel"
  13. >
  14. <el-card shadow="never">
  15. <div class="switch">
  16. <div class="switch_left">
  17. <ul>
  18. <li
  19. v-for="item in tabOptions"
  20. :key="item.key"
  21. :class="{ active: activeComp == item.key }"
  22. @click="activeComp = item.key"
  23. >
  24. {{ item.name }}
  25. </li>
  26. </ul>
  27. </div>
  28. </div>
  29. </el-card>
  30. <div v-show="activeComp==='main'">
  31. <!--销售表单表单-->
  32. <sale-form :dataForm.sync="dataForm" :datasource.sync="datasource"
  33. dialogType="view"></sale-form>
  34. <headerTitle title="对账明细" style="margin-top: 30px">
  35. <template v-slot>
  36. <el-row style="font-weight: 700; color: red">
  37. <span>订单总金额:</span>
  38. <span>{{ isNonDirectionalSale ? '--' : dataForm.orderTotalAmount || 0 }}</span>
  39. <el-divider direction="vertical"></el-divider>
  40. <span>已对账金额:</span>
  41. <span>{{ dataForm.amountCompletePrice || 0 }}</span>
  42. <el-divider direction="vertical"></el-divider>
  43. <span>未对账金额:</span>
  44. <span>{{ dataForm.amountUnCompletePrice || 0 }}</span>
  45. <el-divider direction="vertical"></el-divider>
  46. <span>本次对账总金额:</span>
  47. <span>{{ dataForm.amountTotalPrice || 0 }}</span>
  48. </el-row>
  49. </template>
  50. </headerTitle>
  51. <!-- <recorpayTableList
  52. ref="recorpayListRef"
  53. :dataForm="dataForm"
  54. :recorpayList.sync="recorpayList"
  55. dialogType="view"
  56. ></recorpayTableList> -->
  57. <inventoryTable ref="inventoryTableref" :dataForm="dataForm" :datasource.sync="datasource" dialogType="view"></inventoryTable>
  58. </div>
  59. <bpmDetail v-if="activeComp==='bpm'&&form.processInstanceId" :id="form.processInstanceId"></bpmDetail>
  60. <div slot="footer" class="footer">
  61. <el-button @click="cancel">返回</el-button>
  62. </div>
  63. </ele-modal>
  64. </template>
  65. <script>
  66. import bpmDetail from '@/views/bpm/processInstance/detail.vue';
  67. import InventoryTable from "@/views/saleManage/saleOrder/accountstatement/components/inventoryTable.vue";
  68. import saleForm from "@/views/saleManage/saleOrder/accountstatement/components/saleForm.vue";
  69. import {accountstatementInfoAPI} from "@/api/saleManage/accountstatement";
  70. import recorpayTableList from '@/views/saleManage/saleOrder/accountstatement/components/recorpayTableList.vue';
  71. export default {
  72. props: ['detailDialogFlag'],
  73. components: {
  74. saleForm,
  75. InventoryTable,
  76. bpmDetail,recorpayTableList
  77. },
  78. data() {
  79. return {
  80. activeComp: 'main',
  81. tabOptions: [
  82. {key: 'main', name: '对账单详情'},
  83. {key: 'bpm', name: '流程详情'}
  84. ],
  85. fullscreen:false,
  86. visible: false,
  87. form: {},
  88. dataForm: {},
  89. datasource: [],
  90. recorpayList:[],
  91. title: '详情',
  92. };
  93. },
  94. computed: {
  95. isNonDirectionalSale() {
  96. return this.datasource.some(item => item.orderCategory == 4);
  97. }
  98. },
  99. methods: {
  100. async open(dialogType, row, type = '') {
  101. console.log(row)
  102. this.form = row
  103. this.dialogType = dialogType
  104. this.dataForm.type = type
  105. let data = await accountstatementInfoAPI(row.id)
  106. this.datasource = data.orderList
  107. // this.recorpayList = data.recorpayList || [];
  108. data.orderTotalAmount = data.orderList.reduce((pre, cur) => pre + Math.round(+cur.orderAmount * 100), 0) / 100;
  109. data.amountTotalPrice = data.orderList.reduce((pre, cur) => pre + Math.round(+cur.statementAmount * 100), 0) / 100;
  110. data.amountCompletePrice = data.orderList.reduce((pre, cur) => pre + Math.round(+cur.statementedAmount * 100), 0) / 100;
  111. data.amountUnCompletePrice = data.orderList.reduce((pre, cur) => pre + Math.round(+cur.unStatementAmount * 100), 0) / 100;
  112. this.dataForm = data
  113. switch (this.dataForm.dateType) {
  114. case 1:
  115. this.dataForm.year = this.dataForm.dateValue
  116. break;
  117. case 2:
  118. //2023年-四季度
  119. let data = this.dataForm.dateValue.split('年-')
  120. this.dataForm.year = data[0]
  121. this.dataForm.quarter = data[1]
  122. break
  123. case 3:
  124. this.dataForm.month = this.dataForm.dateValue
  125. break
  126. default:
  127. this.dataForm.dateValue = ''
  128. this.dataForm.dateTimeRange = [this.dataForm.startDate, this.dataForm.endDate]
  129. }
  130. },
  131. cancel() {
  132. this.$emit('update:detailDialogFlag', false)
  133. },
  134. }
  135. };
  136. </script>
  137. <style scoped lang="scss">
  138. .ele-dialog-form {
  139. .el-form-item {
  140. margin-bottom: 10px;
  141. }
  142. }
  143. .none {
  144. display: none;
  145. }
  146. .headbox {
  147. display: flex;
  148. justify-content: flex-start;
  149. align-items: center;
  150. .amount {
  151. font-size: 14px;
  152. font-weight: bold;
  153. margin-right: 20px;
  154. }
  155. }
  156. ::v-deep.el-divider {
  157. margin: 10px;
  158. font-weight: bold;
  159. }
  160. </style>