index.php 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. <?php
  2. use common\helpers\ComponentHelper;
  3. ComponentHelper::loadComponentView('com-user-info');
  4. ?>
  5. <div id="app" v-cloak>
  6. <el-card shadow="never" style="border:0;" body-style="background-color: #f3f3f3;padding: 10px 0 0;">
  7. <div slot="header">
  8. <div>
  9. <span>退款订单</span>
  10. </div>
  11. </div>
  12. <div class="table-body">
  13. <el-form
  14. :inline="true"
  15. :model="searchData"
  16. size="mini"
  17. >
  18. <el-row>
  19. <el-form-item label="会员ID">
  20. <el-input v-model="searchData.user_id" placeholder="会员ID"></el-input>
  21. </el-form-item>
  22. <el-form-item label="会员昵称/手机号">
  23. <el-input v-model="searchData.user_keyword" placeholder="会员昵称/手机号"></el-input>
  24. </el-form-item>
  25. <el-form-item label="退款单号">
  26. <el-input v-model="searchData.order_no" placeholder="退款单号"></el-input>
  27. </el-form-item>
  28. </el-row>
  29. <el-row>
  30. <el-form-item label="创建时间">
  31. <el-date-picker
  32. v-model="searchData.time"
  33. type="datetimerange"
  34. range-separator="至"
  35. start-placeholder="开始日期"
  36. end-placeholder="结束日期"
  37. >
  38. </el-date-picker>
  39. </el-form-item>
  40. </el-row>
  41. <el-row>
  42. <el-form-item>
  43. <el-button type="primary" @click="onSubmit">查询</el-button>
  44. <el-button @click="resetForm">重置</el-button>
  45. </el-form-item>
  46. </el-row>
  47. </el-form>
  48. <!-- 订单信息 -->
  49. <template>
  50. <el-table ref="multipleTable" :data="list" @selection-change="handleSelectionChange">
  51. <!-- 空数据 -->
  52. <template slot="empty">
  53. <el-empty description="暂无退款订单"></el-empty>
  54. </template>
  55. <!-- 数据 -->
  56. <el-table-column type="selection"></el-table-column>
  57. <el-table-column prop="user_id" align="center" label="会员ID"></el-table-column>
  58. <el-table-column prop="user_id" align="center" label="会员名称">
  59. <template slot-scope="scope">
  60. <com-user-info :user="scope.row.user"></com-user-info>
  61. </template>
  62. </el-table-column>
  63. <el-table-column prop="order_no" align="center" label="退款订单号">
  64. <template slot-scope="scope">
  65. <span class="jump" @click="jumpRefundOrder(scope.row.refund_id)">
  66. {{ scope.row.order_no }}
  67. </span>
  68. </template>
  69. </el-table-column>
  70. <el-table-column prop="refund_amount" align="center" label="退款金额"></el-table-column>
  71. <el-table-column prop="status" align="center" label="状态">
  72. <template slot-scope="scope">
  73. <el-tag size="mini" type="success" v-if="scope.row.status == '100'">退款成功</el-tag>
  74. <el-tag size="mini" v-if="scope.row.status == '101'">待退款</el-tag>
  75. <el-tag size="mini" type="danger" v-if="scope.row.status == '102'">
  76. 退款失败
  77. <el-tooltip
  78. effect="dark"
  79. :content="scope.row.res_data.chnlRespMsg"
  80. placement="top"
  81. >
  82. <i class="el-icon-warning"></i>
  83. </el-tooltip>
  84. </el-tag>
  85. <el-tag size="mini" type="danger" v-if="scope.row.status == '103'">订单处理中</el-tag>
  86. <el-tag size="mini" type="info" v-if="scope.row.status == '104'">已撤销</el-tag>
  87. </template>
  88. </el-table-column>
  89. <el-table-column prop="created_at" label="创建时间" align="center">
  90. <template slot-scope="scope">
  91. {{ scope.row.created_at|dateTimeFormat('Y-m-d H:i:s') }}
  92. </template>
  93. </el-table-column>
  94. </el-table>
  95. </template>
  96. <!-- 分页 -->
  97. <el-row type="flex" class="page" justify="end" style="margin-top: 15px">
  98. <el-pagination
  99. @current-change="pagination"
  100. background
  101. layout="prev, pager, next"
  102. :page-count="pageCount"
  103. v-if="list"
  104. ></el-pagination>
  105. </el-row>
  106. </div>
  107. </el-card>
  108. </div>
  109. <script>
  110. const app = new Vue({
  111. el: '#app',
  112. data() {
  113. return {
  114. limit: 20,
  115. searchData: {
  116. user_id : undefined,
  117. user_keyword : undefined,
  118. order_no : undefined,
  119. time : [],
  120. },
  121. list: [],
  122. pageCount: 0,
  123. page: 1,
  124. currentPage: null,
  125. listLoading: false,
  126. btnLoading: false,
  127. };
  128. },
  129. methods: {
  130. handleSelectionChange(val) {
  131. this.select_order = val
  132. },
  133. // 全选
  134. allSelect() {
  135. if (this.checked) {
  136. this.goods_list.forEach(function(item, index) {
  137. if (!item.storage) {
  138. item.is_select = true
  139. }
  140. })
  141. } else {
  142. this.goods_list.forEach(function(item, index) {
  143. item.is_select = false
  144. })
  145. }
  146. },
  147. //搜索
  148. onSubmit() {
  149. this.page = 1
  150. this.getOrderList()
  151. },
  152. pagination(currentPage) {
  153. this.page = currentPage
  154. this.getOrderList()
  155. },
  156. getOrderList() {
  157. this.listLoading = true;
  158. request({
  159. params: {
  160. r: 'yunfast-pay/refund/index',
  161. page: this.page,
  162. limit: this.limit
  163. },
  164. method: 'post',
  165. data: this.searchData,
  166. }).then(e => {
  167. if (e.data.code === 0) {
  168. this.list = e.data.data.list
  169. this.pageCount = e.data.data.page_count
  170. this.currentPage = e.data.data.pagination.current_page
  171. } else {
  172. this.$message.error(e.data.msg)
  173. }
  174. this.listLoading = false
  175. }).catch(e => {
  176. this.listLoading = false
  177. })
  178. },
  179. //重置
  180. resetForm() {
  181. this.searchData = {
  182. user_id : undefined,
  183. user_keyword : undefined,
  184. order_no : undefined,
  185. time : [],
  186. }
  187. },
  188. jumpRefundOrder(id) {
  189. navigateTo({
  190. r: 'mall/order/refund-detail',
  191. id: id,
  192. });
  193. },
  194. },
  195. mounted: function() {
  196. this.page = getQuery('page') ? getQuery('page') : 1
  197. this.limit = getQuery('limit') ? getQuery('limit') : 20
  198. this.getOrderList()
  199. }
  200. });
  201. </script>
  202. <style>
  203. .jump {
  204. cursor: pointer;
  205. }
  206. </style>