index.vue 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. <template>
  2. <div class="app-container">
  3. <el-form
  4. :model="queryParams"
  5. ref="queryForm"
  6. :inline="true"
  7. v-show="showSearch"
  8. label-width="120px"
  9. >
  10. <el-form-item label="渠道/经销商名称">
  11. <el-input
  12. v-model="queryParams.name"
  13. placeholder="请输入渠道/经销商名称"
  14. clearable
  15. size="small"
  16. style="width: 240px"
  17. @keyup.enter.native="handleQuery"
  18. />
  19. </el-form-item>
  20. <el-form-item label="申请时间">
  21. <el-date-picker
  22. v-model="tradeTimeArr"
  23. type="datetimerange"
  24. size="small"
  25. value-format="timestamp"
  26. range-separator="至"
  27. start-placeholder="时间选择"
  28. end-placeholder="时间选择"
  29. @change="tardeTime"
  30. >
  31. </el-date-picker>
  32. </el-form-item>
  33. <el-form-item>
  34. <el-button
  35. type="primary"
  36. icon="el-icon-search"
  37. size="mini"
  38. @click="handleQuery"
  39. >搜索</el-button
  40. >
  41. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
  42. >重置</el-button
  43. >
  44. </el-form-item>
  45. </el-form>
  46. <!-- 刷新 -->
  47. <el-row :gutter="10">
  48. <right-toolbar
  49. :showSearch.sync="showSearch"
  50. @queryTable="getList"
  51. ></right-toolbar>
  52. </el-row>
  53. <!-- 列表状态 -->
  54. <el-tabs type="card" v-model="state" @tab-click="handleClick">
  55. <el-tab-pane label="全部" name="null"></el-tab-pane>
  56. <el-tab-pane label="待提现" name="1"></el-tab-pane>
  57. <el-tab-pane label="已提现" name="2"></el-tab-pane>
  58. <el-tab-pane label="提现失败" name="3"></el-tab-pane>
  59. </el-tabs>
  60. <!-- 列表 -->
  61. <el-table ref="table" v-loading="loading" :data="list">
  62. <!-- 不展开列表 -->
  63. <el-table-column label="申请时间" min-width="100">
  64. <template slot-scope="{ row }">
  65. <div>
  66. {{ parseTime(row.createTime) }}
  67. </div>
  68. </template>
  69. </el-table-column>
  70. <el-table-column label="处理时间" min-width="100">
  71. <template slot-scope="{ row }">
  72. <div v-if="row.status.value === 3">{{ parseTime(row.updateTime) || "--" }}</div>
  73. <div v-else>{{ parseTime(row.transferTime) || "--" }}</div>
  74. </template>
  75. </el-table-column>
  76. <el-table-column label="渠道名称" prop="name" min-width="85" />
  77. <el-table-column label="手机号码" prop="mobile" min-width="85" />
  78. <el-table-column label="渠道类型" prop="addr" min-width="80">
  79. <template slot-scope="{ row }">
  80. <div>{{ row.level == 0 ? "经销商" : "渠道" }}</div>
  81. </template>
  82. </el-table-column>
  83. <el-table-column label="提现金额(元)" align="center">
  84. <template slot-scope="{ row }">
  85. <div>{{ $numberFormat(row.money) }}</div>
  86. </template>
  87. </el-table-column>
  88. <el-table-column label="提现状态" prop="addr" min-width="80">
  89. <template slot-scope="{ row }">
  90. <div>
  91. <el-tag type="success" v-if="row.status.value === 1">待提现</el-tag>
  92. <el-tag type="info" v-else>{{ row.status.desc }}</el-tag>
  93. </div>
  94. </template>
  95. </el-table-column>
  96. <el-table-column label="操作" align="center" width="80">
  97. <template slot-scope="{ row }">
  98. <div>
  99. <el-button
  100. v-hasPermi="['finance:withdraw:query']"
  101. type="text"
  102. @click="getDetail(row)"
  103. >查看</el-button
  104. >
  105. </div>
  106. </template>
  107. </el-table-column>
  108. </el-table>
  109. <!-- 分页 -->
  110. <pagination
  111. v-show="total > 0"
  112. :total="total"
  113. :page.sync="pageParams.pageNum"
  114. :limit.sync="pageParams.pageSize"
  115. @pagination="getList"
  116. />
  117. <!-- 订单详情 -->
  118. <withdraw-detail v-if="detailShow" :dialog-show="detailShow" :info="detailInfo" @close="close" />
  119. </div>
  120. </template>
  121. <script>
  122. import { withdrawList, withdrawDetail } from "@/api/finance/withdraw";
  123. import WithdrawDetail from './components/Detail'
  124. export default {
  125. name: "Withdraw",
  126. components: {
  127. WithdrawDetail
  128. },
  129. data() {
  130. return {
  131. loading: false,
  132. showSearch: true,
  133. // 筛选
  134. queryParams: {
  135. name: "",
  136. startDay: "",
  137. endDay: "",
  138. channelId: "",
  139. status: null,
  140. },
  141. // 分页
  142. pageParams: {
  143. pageNum: 1,
  144. pageSize: 10,
  145. },
  146. // 总条数
  147. total: 0,
  148. list: [],
  149. // 列表状态
  150. state: "null",
  151. // 申请时间
  152. tradeTimeArr: [],
  153. // 弹框显示
  154. detailShow: false,
  155. // 提现id
  156. id: ''
  157. };
  158. },
  159. created() {
  160. this.getList();
  161. },
  162. methods: {
  163. // 提现列表
  164. getList() {
  165. this.loading = true;
  166. withdrawList(
  167. "pageNum=" +
  168. this.pageParams.pageNum +
  169. "&pageSize=" +
  170. this.pageParams.pageSize +
  171. "&",
  172. this.queryParams
  173. )
  174. .then((res) => {
  175. this.loading = false;
  176. if (res.code == 0) {
  177. res.rows.forEach((item) => {
  178. item.status = JSON.parse(item.status);
  179. });
  180. this.total = res.total;
  181. this.list = res.rows;
  182. }
  183. })
  184. .catch(() => {
  185. this.loading = false;
  186. });
  187. },
  188. // 搜索
  189. handleQuery() {
  190. this.getList()
  191. },
  192. // 重置
  193. resetQuery() {
  194. this.queryParams = {
  195. name: "",
  196. startDay: "",
  197. endDay: "",
  198. channelId: "",
  199. status: null,
  200. };
  201. this.state = "null";
  202. this.tradeTimeArr = [];
  203. this.getList();
  204. },
  205. // 列表状态切换
  206. handleClick(e) {
  207. this.queryParams.status = Number(e.name);
  208. this.getList();
  209. },
  210. // 选择申请时间
  211. tardeTime(e) {
  212. if (e) {
  213. this.queryParams.startDay = e[0];
  214. this.queryParams.endDay = e[1];
  215. this.handleQuery();
  216. } else {
  217. this.queryParams.startDay = "";
  218. this.queryParams.endDay = "";
  219. this.handleQuery();
  220. }
  221. },
  222. // 查看详情
  223. getDetail(row) {
  224. this.id = row.id
  225. this.getDetailInfo()
  226. },
  227. // 订单详情
  228. getDetailInfo() {
  229. withdrawDetail({ id: this.id }).then(res=>{
  230. console.log('res', res)
  231. if(res.code == 0){
  232. this.detailInfo = res.data
  233. this.detailShow = true;
  234. }
  235. })
  236. },
  237. // 弹框关闭
  238. close() {
  239. this.detailShow = false;
  240. this.getList();
  241. },
  242. },
  243. };
  244. </script>
  245. <style lang="scss" scoped>
  246. ::v-deep .el-tabs--border-card > .el-tabs__content {
  247. padding: 0;
  248. }
  249. </style>