Sfoglia il codice sorgente

新增提现申请

hwb0 3 anni fa
parent
commit
e90bfde585

+ 29 - 0
src/api/finance/withdraw.js

@@ -0,0 +1,29 @@
+import request from '@/utils/request'
+
+// 提现申请列表
+export function withdrawList(urlParams, data) {
+  return request({
+    url: '/api/v1/mp/admin/channel/withdraw/list',
+    method: 'post',
+    data,
+    urlParams
+  })
+}
+
+// 提现申请详情
+export function withdrawDetail(data) {
+  return request({
+    url: '/api/v1/mp/admin/channel/withdraw/detail',
+    method: 'post',
+    data
+  })
+}
+
+// 审核提现申请
+export function withdrawVerify(data) {
+  return request({
+    url: '/api/v1/mp/admin/channel/withdraw/verify',
+    method: 'post',
+    data
+  })
+}

+ 142 - 0
src/views/finance/withdraw/components/Detail.vue

@@ -0,0 +1,142 @@
+<template>
+  <div>
+    <el-dialog
+      title="提现申请"
+      :visible.sync="dialogShow"
+      width="800px"
+      :before-close="close"
+    >
+      <el-form label-width="130px">
+        <div class="form-flex">
+          <el-form-item label="渠道/经销商名称:">
+            <span>{{ info.name || "--" }}</span>
+          </el-form-item>
+          <el-form-item label="手机号码:">
+            <span>{{ info.mobile || "--" }}</span>
+          </el-form-item>
+        </div>
+        <div class="form-flex">
+          <el-form-item label="渠道类型:">
+            <span>{{ info.level == 0 ? "经销商" : "渠道" }}</span>
+          </el-form-item>
+          <el-form-item label="提现状态:">
+            <span>{{ JSON.parse(info.status).desc || "--" }}</span>
+          </el-form-item>
+        </div>
+        <div class="form-flex">
+          <el-form-item label="申请时间:">
+            <span>{{ parseTime(info.createTime) || "--" }}</span>
+          </el-form-item>
+          <el-form-item label="处理时间:">
+            <span>{{ parseTime(info.transferTime) || "--" }}</span>
+          </el-form-item>
+        </div>
+        <div class="form-flex">
+          <el-form-item label="提现金额:">
+            <span>¥{{ $numberFormat(info.money) || "--" }}</span>
+          </el-form-item>
+          <el-form-item label="银行卡号:">
+            <span>{{ info.cardNo || "--" }}</span>
+          </el-form-item>
+        </div>
+        <div class="form-flex">
+          <el-form-item label="持卡人:">
+            <span>{{ info.userName || "--" }}</span>
+          </el-form-item>
+          <el-form-item label="开户行:">
+            <span>{{ info.branchName || "--" }}</span>
+          </el-form-item>
+        </div>
+      </el-form>
+      <div
+        slot="footer"
+        class="dialog-footer"
+        v-if="JSON.parse(info.status).value == 1"
+      >
+        <el-button :disabled="loading" @click="toWithdrawal(3)"
+          >提现失败</el-button
+        >
+        <el-button type="primary" :disabled="loading" @click="toWithdrawal(2)"
+          >提现成功</el-button
+        >
+      </div>
+      <div slot="footer" class="dialog-footer" v-else>
+        <el-button @click="close">关闭</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+<script>
+import { withdrawVerify } from "@/api/finance/withdraw";
+export default {
+  props: {
+    // 弹框显示
+    dialogShow: {
+      type: Boolean,
+      default: false,
+    },
+    // 提现id
+    info: {
+      type: Object,
+      default: {},
+    },
+  },
+  mounted() {
+    this.getDetail;
+  },
+  data() {
+    return {
+      loading: false,
+    };
+  },
+  methods: {
+    // 订单详情
+    getDetail() {
+      withdrawDetail({ id: this.detailId }).then((res) => {
+        console.log("res", res);
+      });
+    },
+
+    // 关闭弹框
+    close() {
+      this.$emit("close");
+    },
+
+    toWithdrawal(status) {
+      this.loading = true;
+      withdrawVerify({
+        id: this.info.id,
+        status,
+        verifyContent: "",
+      })
+        .then((res) => {
+          this.loading = false;
+          if (res.code == 0) {
+            if (status == 2) {
+              this.msgSuccess("操作成功");
+              this.close();
+            } else {
+              this.msgSuccess("操作成功");
+              this.close();
+            }
+          }
+        })
+        .catch(() => {
+          this.loading = false;
+        });
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+.form-flex {
+  padding: 0 50px;
+  display: flex;
+  align-items: center;
+  // justify-content: space-between;
+  span {
+    display: inline-block;
+    width: 200px;
+  }
+}
+</style>

+ 259 - 0
src/views/finance/withdraw/index.vue

@@ -0,0 +1,259 @@
+<template>
+  <div class="app-container">
+    <el-form
+      :model="queryParams"
+      ref="queryForm"
+      :inline="true"
+      v-show="showSearch"
+      label-width="120px"
+    >
+      <el-form-item label="渠道/经销商名称">
+        <el-input
+          v-model="queryParams.name"
+          placeholder="请输入渠道/经销商名称"
+          clearable
+          size="small"
+          style="width: 240px"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="申请时间">
+        <el-date-picker
+          v-model="tradeTimeArr"
+          type="datetimerange"
+          size="small"
+          value-format="timestamp"
+          range-separator="至"
+          start-placeholder="时间选择"
+          end-placeholder="时间选择"
+          @change="tardeTime"
+        >
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button
+          type="primary"
+          icon="el-icon-search"
+          size="mini"
+          @click="handleQuery"
+          >搜索</el-button
+        >
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
+          >重置</el-button
+        >
+      </el-form-item>
+    </el-form>
+    <!-- 刷新 -->
+    <el-row :gutter="10">
+      <right-toolbar
+        :showSearch.sync="showSearch"
+        @queryTable="getList"
+      ></right-toolbar>
+    </el-row>
+    <!-- 列表状态 -->
+    <el-tabs type="card" v-model="state" @tab-click="handleClick">
+      <el-tab-pane label="全部" name="null"></el-tab-pane>
+      <el-tab-pane label="待提现" name="1"></el-tab-pane>
+      <el-tab-pane label="已提现" name="2"></el-tab-pane>
+      <el-tab-pane label="提现失败" name="3"></el-tab-pane>
+    </el-tabs>
+    <!-- 列表 -->
+    <el-table ref="table" v-loading="loading" :data="list">
+      <!-- 不展开列表 -->
+      <el-table-column label="下单时间" min-width="100">
+        <template slot-scope="{ row }">
+          <div>
+            {{ parseTime(row.createTime) }}
+          </div>
+        </template>
+      </el-table-column>
+      <el-table-column label="处理时间" min-width="100">
+        <template slot-scope="{ row }">
+          <div>
+            {{ parseTime(row.transferTime) || "--" }}
+          </div>
+        </template>
+      </el-table-column>
+      <el-table-column label="渠道名称" prop="name" min-width="85" />
+      <el-table-column label="手机号码" prop="mobile" min-width="85" />
+      <el-table-column label="渠道类型" prop="addr" min-width="80">
+        <template slot-scope="{ row }">
+          <div>{{ row.level == 0 ? "经销商" : "渠道" }}</div>
+        </template>
+      </el-table-column>
+      <el-table-column label="提现金额(元)" align="center">
+        <template slot-scope="{ row }">
+          <div>{{ $numberFormat(row.money) }}</div>
+        </template>
+      </el-table-column>
+      <el-table-column label="提现状态" prop="addr" min-width="80">
+        <template slot-scope="{ row }">
+          <div>
+            <el-tag type="success" v-if="row.status.value === 1">待提现</el-tag>
+            <el-tag type="info" v-else>{{ row.status.desc }}</el-tag>
+          </div>
+        </template>
+      </el-table-column>
+      <el-table-column label="操作" align="center" width="80">
+        <template slot-scope="{ row }">
+          <div>
+            <el-button
+              v-hasPermi="['finance:withdraw:query']"
+              type="text"
+              @click="getDetail(row)"
+              >查看</el-button
+            >
+          </div>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <!-- 分页 -->
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="pageParams.pageNum"
+      :limit.sync="pageParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 订单详情 -->
+    <withdraw-detail v-if="detailShow" :dialog-show="detailShow" :info="detailInfo" @close="close" />
+  </div>
+</template>
+<script>
+import { withdrawList, withdrawDetail } from "@/api/finance/withdraw";
+import WithdrawDetail from './components/Detail'
+export default {
+  name: "Withdraw",
+  components: {
+    WithdrawDetail
+  },
+  data() {
+    return {
+      loading: false,
+      showSearch: true,
+      // 筛选
+      queryParams: {
+        name: "",
+        startDay: "",
+        startTime: "",
+        channelId: "",
+        status: null,
+      },
+      // 分页
+      pageParams: {
+        pageNum: 1,
+        pageSize: 10,
+      },
+      // 总条数
+      total: 0,
+      list: [],
+      // 列表状态
+      state: "null",
+      // 申请时间
+      tradeTimeArr: [],
+      // 弹框显示
+      detailShow: false,
+      // 提现id
+      id: ''
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    // 提现列表
+    getList() {
+      this.loading = true;
+      withdrawList(
+        "pageNum=" +
+          this.pageParams.pageNum +
+          "&pageSize=" +
+          this.pageParams.pageSize +
+          "&",
+        this.queryParams
+      )
+        .then((res) => {
+          this.loading = false;
+          if (res.code == 0) {
+            res.rows.forEach((item) => {
+              item.status = JSON.parse(item.status);
+            });
+            this.total = res.total;
+            this.list = res.rows;
+          }
+        })
+        .catch(() => {
+          this.loading = false;
+        });
+    },
+
+    // 搜索
+    handleQuery() {
+      this.getList()
+    },
+
+    // 重置
+    resetQuery() {
+      this.queryParams = {
+        name: "",
+        startDay: "",
+        startTime: "",
+        channelId: "",
+        status: null,
+      };
+      this.state = "null";
+      this.tradeTimeArr = [];
+      this.getList();
+    },
+
+    // 列表状态切换
+    handleClick(e) {
+      this.queryParams.status = Number(e.name);
+      this.getList();
+    },
+
+    // 选择申请时间
+    tardeTime(e) {
+      if (e) {
+        this.queryParams.startDay = e[0];
+        this.queryParams.startTime = e[1];
+        this.handleQuery();
+      } else {
+        this.queryParams.startDay = "";
+        this.queryParams.startTime = "";
+        this.handleQuery();
+      }
+    },
+
+    // 查看详情
+    getDetail(row) {
+      this.id = row.id
+      this.getDetailInfo()
+    },
+
+    // 订单详情
+    getDetailInfo() {
+      withdrawDetail({ id: this.id }).then(res=>{
+        console.log('res', res)
+        if(res.code == 0){
+          this.detailInfo = res.data
+          this.detailShow = true;
+        }
+      })
+    },
+
+    // 弹框关闭
+    close() {
+      this.detailShow = false;
+      this.getList();
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+::v-deep .el-tabs--border-card > .el-tabs__content {
+  padding: 0;
+}
+</style>