BalanceLogDialog.vue 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <template>
  2. <el-dialog
  3. :visible.sync="visible"
  4. title="余额流水"
  5. width="860px">
  6. <div class="form-wrap">
  7. <div class="searchBox">
  8. <el-form
  9. :inline="true"
  10. :model="form"
  11. ref="form"
  12. size="mini"
  13. label-width="80px">
  14. <el-form-item
  15. prop="type"
  16. label="类型">
  17. <el-select
  18. v-model="form.type"
  19. placeholder="全部"
  20. clearable
  21. style="width: 140px">
  22. <el-option
  23. v-for="(label, value) in SELF_BALANCE_LOG_TYPE"
  24. :key="value"
  25. :label="label"
  26. :value="Number(value)"></el-option>
  27. </el-select>
  28. </el-form-item>
  29. <el-form-item
  30. prop="timeRange"
  31. label="交易时间">
  32. <el-date-picker
  33. v-model="form.timeRange"
  34. type="datetimerange"
  35. value-format="yyyy-MM-dd HH:mm:ss"
  36. range-separator="~"
  37. start-placeholder="开始时间"
  38. end-placeholder="结束时间"
  39. style="width: 360px"
  40. ></el-date-picker>
  41. </el-form-item>
  42. <el-form-item class="btn-wrap">
  43. <el-button
  44. type="primary"
  45. icon="el-icon-search"
  46. @click="reload">查询</el-button>
  47. </el-form-item>
  48. </el-form>
  49. </div>
  50. <div class="tableBox">
  51. <el-table
  52. v-loading="loading"
  53. :data="tableData"
  54. border
  55. stripe
  56. row-class-name="is-center"
  57. max-height="420">
  58. <el-table-column
  59. label="类型"
  60. width="100"
  61. align="center">
  62. <template slot-scope="{ row }">
  63. <el-tag
  64. :type="tagType(row.type)"
  65. size="small">{{ SELF_BALANCE_LOG_TYPE[row.type] || row.type }}</el-tag>
  66. </template>
  67. </el-table-column>
  68. <el-table-column
  69. label="发生额(元)"
  70. width="110"
  71. align="right">
  72. <template slot-scope="{ row }">{{ fmtMoney(row.amount) }}</template>
  73. </el-table-column>
  74. <el-table-column
  75. label="变动前(元)"
  76. width="110"
  77. align="right">
  78. <template slot-scope="{ row }">{{ fmtMoney(row.beforeBalance) }}</template>
  79. </el-table-column>
  80. <el-table-column
  81. label="变动后(元)"
  82. width="110"
  83. align="right">
  84. <template slot-scope="{ row }">{{ fmtMoney(row.afterBalance) }}</template>
  85. </el-table-column>
  86. <el-table-column
  87. prop="orderId"
  88. label="关联订单"
  89. width="180"
  90. show-overflow-tooltip></el-table-column>
  91. <el-table-column
  92. prop="operatorAdminName"
  93. label="操作人"
  94. width="100"></el-table-column>
  95. <el-table-column
  96. prop="tradeTime"
  97. label="交易时间"
  98. width="160">
  99. <template slot-scope="{ row }">{{ parseTime(row.tradeTime) }}</template>
  100. </el-table-column>
  101. </el-table>
  102. <el-pagination
  103. background
  104. layout="total, prev, pager, next"
  105. :current-page.sync="form.pageNum"
  106. :page-size="form.pageSize"
  107. :total="total"
  108. @current-change="reload"
  109. ></el-pagination>
  110. </div>
  111. </div>
  112. <div
  113. slot="footer"
  114. class="dialog-btn-wrap">
  115. <el-button @click="visible = false">关 闭</el-button>
  116. </div>
  117. </el-dialog>
  118. </template>
  119. <script>
  120. import { getThirdPartyBalanceLog } from '@/api/selfManage'
  121. import { SELF_BALANCE_LOG_TYPE } from '@/const'
  122. import { parseTime } from '@/utils'
  123. const TAG_MAP = { 1: 'success', 2: 'warning', 3: 'info', 4: 'danger' }
  124. export default {
  125. name: 'SelfThirdPartyBalanceLogDialog',
  126. data () {
  127. return {
  128. visible: false,
  129. loading: false,
  130. SELF_BALANCE_LOG_TYPE,
  131. form: {
  132. pageNum: 1,
  133. pageSize: 10,
  134. userThirdPartyId: '',
  135. type: '',
  136. timeRange: []
  137. },
  138. tableData: [],
  139. total: 0
  140. }
  141. },
  142. methods: {
  143. parseTime,
  144. fmtMoney (v) {
  145. return Number(v || 0).toFixed(2)
  146. },
  147. tagType (type) {
  148. return TAG_MAP[type] || 'info'
  149. },
  150. show (row) {
  151. this.visible = true
  152. this.form = {
  153. pageNum: 1,
  154. pageSize: 10,
  155. userThirdPartyId: row.id,
  156. type: '',
  157. timeRange: []
  158. }
  159. this.reload()
  160. },
  161. reload () {
  162. this.loading = true
  163. const params = {
  164. pageNum: this.form.pageNum,
  165. pageSize: this.form.pageSize,
  166. userThirdPartyId: this.form.userThirdPartyId,
  167. type: this.form.type
  168. }
  169. if (this.form.timeRange && this.form.timeRange.length === 2) {
  170. params.tradeTimeStart = this.form.timeRange[0]
  171. params.tradeTimeEnd = this.form.timeRange[1]
  172. }
  173. getThirdPartyBalanceLog(params)
  174. .then(res => {
  175. const data = res.data || {}
  176. this.tableData = data.records || []
  177. this.total = data.total || 0
  178. })
  179. .finally(() => {
  180. this.loading = false
  181. })
  182. }
  183. }
  184. }
  185. </script>