DetailModal.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282
  1. <template>
  2. <el-dialog :visible.sync="visible" v-bind="modalOptions">
  3. <div>
  4. <el-descriptions title="" :column="2" border>
  5. <el-descriptions-item label="店铺名称:">
  6. {{ formData.shopName }}
  7. </el-descriptions-item>
  8. <el-descriptions-item label="店铺编码:">
  9. {{ formData.shopCode }}
  10. </el-descriptions-item>
  11. <el-descriptions-item label="银行名称:">
  12. {{ formData.bankName }}
  13. </el-descriptions-item>
  14. <el-descriptions-item label="银行卡号:">
  15. {{ formData.bankCard }}
  16. </el-descriptions-item>
  17. <el-descriptions-item label="收款人姓名:">
  18. {{ formData.collectionName }}
  19. </el-descriptions-item>
  20. <el-descriptions-item label="提现金额:">
  21. {{ formData.withdrawalMoney }}
  22. </el-descriptions-item>
  23. <el-descriptions-item label="处理编号:">
  24. {{ formData.handleSn }}
  25. </el-descriptions-item>
  26. <el-descriptions-item label="申请时间:">
  27. {{ formData.applyTime }}
  28. </el-descriptions-item>
  29. <el-descriptions-item v-if="formData.handleTime" label="处理时间:">
  30. {{ formData.handleTime }}
  31. </el-descriptions-item>
  32. <el-descriptions-item label="审核状态">
  33. <div>
  34. <span v-if="formData.state === 0">待处理</span>
  35. <span v-else-if="formData.state === 1">已处理</span>
  36. <span v-else-if="formData.state === 2">通过</span>
  37. <span v-else-if="formData.state === 3">拒绝</span>
  38. <span v-else-if="formData.state === 4">待确认</span>
  39. <span v-else>--</span>
  40. </div>
  41. </el-descriptions-item>
  42. <el-descriptions-item label="备注:">
  43. {{ formData.cause || '--' }}
  44. </el-descriptions-item>
  45. <el-descriptions-item label="惠市宝订单的分账状态:">
  46. <div>
  47. <span v-if="formData.summaryHsbSplitState === -1">无需分账</span>
  48. <span v-else-if="formData.summaryHsbSplitState === 0">未分账</span>
  49. <span v-else-if="formData.summaryHsbSplitState === 1">部分分账</span>
  50. <span v-else-if="formData.summaryHsbSplitState === 2">已分账</span>
  51. <span v-else>--</span>
  52. </div>
  53. </el-descriptions-item>
  54. <el-descriptions-item label="惠市宝已分账金额:">
  55. {{ formData.summaryHsbSplitedAmount }}
  56. </el-descriptions-item>
  57. <el-descriptions-item label="惠市宝剩余分账金额:">
  58. {{ formData.summaryHsbSplitRemainAmount }}
  59. </el-descriptions-item>
  60. <el-descriptions-item label="非惠市宝订单的相关提现金额:">
  61. {{ formData.summaryNotHsbAmount }}
  62. </el-descriptions-item>
  63. <el-descriptions-item label="已认证身份姓名">
  64. {{ cardData.name }}
  65. </el-descriptions-item>
  66. <el-descriptions-item label="已认证身份证">
  67. {{ cardData.idCard }}
  68. </el-descriptions-item>
  69. <el-descriptions-item label="已认证电话号码">
  70. {{ cardData.phone}}
  71. </el-descriptions-item>
  72. </el-descriptions>
  73. </div>
  74. <el-tabs v-model="tabsValue">
  75. <el-tab-pane label="结算列表" name="relatedSettlement" v-if="![3, 4].includes(formData.withdrawalType)">
  76. <div v-if="formData.relatedSettlement && formData.relatedSettlement.length" style="margin-top: 32px">
  77. <el-table
  78. v-loading="!formData.relatedSettlement.length"
  79. height="60vh"
  80. element-loading-text="暂无结算数据"
  81. :data="formData.relatedSettlement"
  82. v-bind="{ stripe: true, size: 'small', border: true, fit: true, highlightCurrentRow: true }"
  83. >
  84. <el-table-column align="center" min-width="80" prop="id" label="ID" show-overflow-tooltip />
  85. <el-table-column align="center" width="120" prop="canWithdrawalAmount" label="可提现金额" show-overflow-tooltip />
  86. <el-table-column align="center" prop="createTime" label="创建时间" width="150" />
  87. <el-table-column align="center" min-width="150" prop="curWithdrawalAmount" label="占关联提现申请总额的金额" show-overflow-tooltip />
  88. <el-table-column align="center" min-width="120" prop="refundAmount" label="回退金额" show-overflow-tooltip />
  89. <el-table-column align="center" width="100" prop="shopId" label="关联店铺ID" show-overflow-tooltip />
  90. <el-table-column align="center" width="150" prop="sn" label="结算编号" show-overflow-tooltip />
  91. <el-table-column align="center" label="结算状态" prop="state">
  92. <template slot-scope="{ row }">
  93. <el-tag v-if="row.state === '0'" effect="plain" type="info">未清算</el-tag>
  94. <el-tag v-else-if="row.state === '1'" effect="plain" type="success">已清算</el-tag>
  95. <span v-else>--</span>
  96. </template>
  97. </el-table-column>
  98. <el-table-column align="center" min-width="140" label="是否惠市宝订单结算" prop="isHsb">
  99. <template slot-scope="{ row }">
  100. <div style="display: flex; justify-content: center; align-items: center">
  101. <div>
  102. <el-tag v-if="row.isHsb === '0'" effect="plain" type="info">否</el-tag>
  103. <el-tag v-else-if="row.isHsb === '1'" effect="plain" type="success">是</el-tag>
  104. <span v-else>--</span>
  105. </div>
  106. <el-button v-if="row.isHsb === '1'" style="margin-left: 6px" type="warning" size="mini" @click="$refs.LedgerInformation && $refs.LedgerInformation.handleOpen(formData, row.sn)">
  107. 分账状态
  108. </el-button>
  109. </div>
  110. </template>
  111. </el-table-column>
  112. <el-table-column align="center" width="100" prop="totalPrice" label="总金额" />
  113. <el-table-column align="center" width="100" prop="withdrawaledAmount" label="已提现金额" show-overflow-tooltip />
  114. <el-table-column align="center" width="100" prop="withdrawalingAmount" label="提现中的金额" show-overflow-tooltip />
  115. <el-table-column align="center" label="操作" width="120" fixed="right" class-name="small-padding fixed-width">
  116. <template slot-scope="{ row }">
  117. <el-button v-if="formData.relatedOrders[row.sn]" type="success" size="mini" @click="$refs.RelatedOrders && $refs.RelatedOrders.handleOpen(formData, row.sn)">关联订单</el-button>
  118. </template>
  119. </el-table-column>
  120. </el-table>
  121. <!-- 关联订单 -->
  122. <RelatedOrders ref="RelatedOrders" />
  123. <!-- 订单的分账状态信息 -->
  124. <LedgerInformation ref="LedgerInformation" @success="getInfo(formData.withdrawalId)" />
  125. </div>
  126. <div v-else style="font-size: 16px; font-weight: bold">无结算数据</div>
  127. </el-tab-pane>
  128. <el-tab-pane v-if="[3, 4].includes(formData.withdrawalType)" label="入账列表" name="entry">
  129. <el-table :data="formData.withdrawalType === 3 ? formData.shopVoucherEntryRecordList : formData.shopVoucherExchangeEntryRecordList" border stripe>
  130. <el-table-column type="index" width="50"></el-table-column>
  131. <el-table-column align="center" prop="orderFormId" label="来源订单号"></el-table-column>
  132. <el-table-column align="center" prop="number" label="代金券数量"></el-table-column>
  133. <el-table-column align="center" prop="createTime" label="入账时间"></el-table-column>
  134. </el-table>
  135. </el-tab-pane>
  136. <el-tab-pane v-if="[3, 4].includes(formData.withdrawalType)" label="出账列表" name="disbursement">
  137. <el-table :data="formData.withdrawalType === 3 ? formData.shopVoucherOutgoinRecordList : formData.shopVoucherExchangeOutgoinRecordList" border stripe>
  138. <el-table-column type="index" width="50"></el-table-column>
  139. <el-table-column align="center" prop="orderFormId" label="来源订单号"></el-table-column>
  140. <el-table-column align="center" prop="number" label="代金券数量"></el-table-column>
  141. <el-table-column align="center" prop="createTime" label="出账时间"></el-table-column>
  142. </el-table>
  143. </el-tab-pane>
  144. </el-tabs>
  145. </el-dialog>
  146. </template>
  147. <script>
  148. import RelatedOrders from './RelatedOrders'
  149. import LedgerInformation from './LedgerInformation'
  150. import { withdrawalGetById, withdrawalGetById2,getWithdrawalAccount } from '@/api/withdrawal'
  151. export default {
  152. name: 'DetailModal',
  153. components: {
  154. RelatedOrders,
  155. LedgerInformation
  156. },
  157. data() {
  158. return {
  159. modalOptions: {
  160. closeOnClickModal: false,
  161. width: '1220px',
  162. title: '查看提现详情'
  163. },
  164. visible: false,
  165. tabsValue: 'relatedSettlement',
  166. formData: {
  167. withdrawalId: '',
  168. shopName: '',
  169. shopCode: '',
  170. bankName: '',
  171. bankCard: '',
  172. collectionName: '',
  173. withdrawalMoney: '',
  174. handleSn: '',
  175. applyTime: '',
  176. handleTime: '',
  177. state: '',
  178. cause: '',
  179. relatedSettlement: [], // 结算记录
  180. relatedOrders: {}, // 相关订单
  181. relatedPresenterVoucherLogs: {}, // 代金券记录
  182. relatedCommissionLogs: {}, // 佣金记录
  183. relatedBuyerUsers: [], // 用户列表
  184. summaryHsbSplitState: '',
  185. summaryHsbSplitedAmount: '',
  186. summaryHsbSplitRemainAmount: '',
  187. summaryNotHsbAmount: ''
  188. },
  189. // 身份证信息
  190. cardData:{}
  191. }
  192. },
  193. methods: {
  194. handleClose() {
  195. this.visible = false
  196. },
  197. handleOpen(params = {}) {
  198. this.formData = Object.assign(this.$options.data().formData, params)
  199. if (params.withdrawalId) {
  200. this.getInfo(params.withdrawalId)
  201. this.getWithdrawalInfo(params.shopId)
  202. }
  203. this.visible = true
  204. },
  205. async getInfo(id) {
  206. const loading = this.$loading({ text: '加载中' })
  207. try {
  208. let api = null
  209. if (![3, 4].includes(this.formData.withdrawalType)) {
  210. api = withdrawalGetById
  211. this.tabsValue = 'relatedSettlement'
  212. } else {
  213. api = withdrawalGetById2
  214. this.tabsValue = 'entry'
  215. }
  216. const res = await api({ withdrawalId: id })
  217. this.formData = Object.assign(this.$options.data().formData, res.data, {
  218. withdrawalId: res.data.withdrawalId || '',
  219. shopName: res.data.shopName || '',
  220. shopCode: res.data.shopCode || '',
  221. bankName: res.data.bankName || '',
  222. bankCard: res.data.bankCard || '',
  223. collectionName: res.data.collectionName || '',
  224. withdrawalMoney: res.data.withdrawalMoney || 0,
  225. handleSn: res.data.handleSn || '',
  226. applyTime: res.data.applyTime || '',
  227. handleTime: res.data.handleTime || '',
  228. state: res.data.state || 0,
  229. cause: res.data.cause || '',
  230. relatedSettlement: res.data.relatedSettlement || [],
  231. relatedOrders: res.data.relatedOrders || {},
  232. relatedPresenterVoucherLogs: res.data.relatedPresenterVoucherLogs || {},
  233. relatedCommissionLogs: res.data.relatedCommissionLogs || {},
  234. relatedBuyerUsers: res.data.relatedBuyerUsers || [],
  235. summaryHsbSplitState: res.data.summaryHsbSplitState,
  236. summaryHsbSplitedAmount: res.data.summaryHsbSplitedAmount,
  237. summaryHsbSplitRemainAmount: res.data.summaryHsbSplitRemainAmount,
  238. summaryNotHsbAmount: res.data.summaryNotHsbAmount,
  239. withdrawalType: this.formData.withdrawalType
  240. })
  241. } finally {
  242. loading.close()
  243. }
  244. },
  245. // 单独用来请求提现的身份证以及手机号姓名等
  246. async getWithdrawalInfo(id){
  247. let {data} = await getWithdrawalAccount({ shopIds: id })
  248. this.cardData = data[0]
  249. }
  250. }
  251. }
  252. </script>
  253. <style lang="scss" scoped>
  254. // ::v-deep .el-collapse {
  255. // .el-collapse-item__header {
  256. // height: auto;
  257. // }
  258. // .el-descriptions {
  259. // flex: 1;
  260. // margin-right: 20px;
  261. // }
  262. // }
  263. .small-padding {
  264. .cell {
  265. padding-left: 5px;
  266. padding-right: 5px;
  267. }
  268. }
  269. .fixed-width {
  270. .el-button--mini {
  271. padding: 7px 10px;
  272. }
  273. }
  274. </style>