| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- <template>
- <div class="list-view">
- <div class="filters-container">
- <el-input placeholder="输入关键字" v-model="search" clearable class="filter-item"></el-input>
- <el-button @click="getData" type="primary" icon="el-icon-search" class="filter-item">搜索 </el-button>
- <el-button @click="addRow" type="primary" icon="el-icon-plus" class="filter-item">添加 </el-button>
- <el-button
- @click="download"
- type="primary"
- icon="el-icon-download"
- :loading="downloading"
- class="filter-item"
- >导出EXCEL
- </el-button>
- <el-select v-model="status" multiple clearable @change="getData" placeholder="请选择提现状态">
- <el-option v-for="item in statusOptions" :key="item.value" :label="item.label" :value="item.value">
- </el-option>
- </el-select>
- </div>
- <el-table
- :data="tableData"
- row-key="id"
- ref="table"
- header-row-class-name="table-header-row"
- header-cell-class-name="table-header-cell"
- row-class-name="table-row"
- cell-class-name="table-cell"
- :height="tableHeight"
- >
- <el-table-column v-if="multipleMode" align="center" type="selection" width="50"> </el-table-column>
- <el-table-column prop="id" label="ID" width="80"> </el-table-column>
- <el-table-column prop="user.nickname" label="昵称"> </el-table-column>
- <el-table-column prop="amount" label="提现金额"> </el-table-column>
- <el-table-column prop="payMethod" label="提现方式" :formatter="payMethodFormatter"> </el-table-column>
- <el-table-column prop="status" label="提现状态" :formatter="statusFormatter"> </el-table-column>
- <el-table-column prop="account" label="账号"> </el-table-column>
- <el-table-column prop="realName" label="真实姓名"> </el-table-column>
- <el-table-column prop="createdAt" label="申请时间" show-overflow-tooltip> </el-table-column>
- <el-table-column prop="auditTime" label="审核时间" show-overflow-tooltip> </el-table-column>
- <el-table-column label="操作" align="left" fixed="right" min-width="150">
- <template slot-scope="{ row }">
- <!-- <el-button @click="editRow(row)" type="primary" size="mini" plain>详情</el-button> -->
- <el-button
- v-if="row.status === 'PENDING'"
- :loading="row.loading"
- @click="audit(row, true)"
- type="success"
- size="mini"
- plain
- >
- 通过
- </el-button>
- <el-button
- v-if="row.status === 'PENDING'"
- :loading="row.loading"
- @click="audit(row, false)"
- type="warning"
- size="mini"
- plain
- >
- 拒绝
- </el-button>
- <el-button @click="deleteRow(row)" type="danger" size="mini" plain v-else>删除</el-button>
- </template>
- </el-table-column>
- </el-table>
- <div class="pagination-wrapper">
- <!-- <div class="multiple-mode-wrapper">
- <el-button v-if="!multipleMode" @click="toggleMultipleMode(true)">批量编辑</el-button>
- <el-button-group v-else>
- <el-button @click="operation1">批量操作1</el-button>
- <el-button @click="operation2">批量操作2</el-button>
- <el-button @click="toggleMultipleMode(false)">取消</el-button>
- </el-button-group>
- </div> -->
- <el-pagination
- background
- @size-change="onSizeChange"
- @current-change="onCurrentChange"
- :current-page="page"
- :page-sizes="[10, 20, 30, 40, 50]"
- :page-size="pageSize"
- layout="total, sizes, prev, pager, next, jumper"
- :total="totalElements"
- >
- </el-pagination>
- </div>
- </div>
- </template>
- <script>
- import { mapState } from 'vuex';
- import pageableTable from '@/mixins/pageableTable';
- export default {
- name: 'WithdrawList',
- mixins: [pageableTable],
- data() {
- return {
- multipleMode: false,
- search: '',
- url: '/withdraw/backAll',
- downloading: false,
- payMethodOptions: [
- { label: '微信', value: 'WEIXIN' },
- { label: '余额', value: 'YUE' },
- { label: '支付宝', value: 'ALI' }
- ],
- statusOptions: [
- { label: '提现成功', value: 'SUCCESS' },
- { label: '提现失败', value: 'FAIL' },
- { label: '待处理', value: 'PENDING' }
- ],
- status: []
- };
- },
- computed: {
- selection() {
- return this.$refs.table.selection.map(i => i.id);
- }
- },
- methods: {
- payMethodFormatter(row, column, cellValue, index) {
- let selectedOption = this.payMethodOptions.find(i => i.value === cellValue);
- if (selectedOption) {
- return selectedOption.label;
- }
- return '';
- },
- statusFormatter(row, column, cellValue, index) {
- let selectedOption = this.statusOptions.find(i => i.value === cellValue);
- if (selectedOption) {
- return selectedOption.label;
- }
- return '';
- },
- beforeGetData() {
- return {
- sort: 'createdAt,desc',
- search: this.search,
- query: {
- status: this.status
- }
- };
- },
- toggleMultipleMode(multipleMode) {
- this.multipleMode = multipleMode;
- if (!multipleMode) {
- this.$refs.table.clearSelection();
- }
- },
- addRow() {
- this.$router.push({
- path: '/withdrawEdit',
- query: {
- ...this.$route.query
- }
- });
- },
- editRow(row) {
- this.$router.push({
- path: '/withdrawEdit',
- query: {
- id: row.id
- }
- });
- },
- download() {
- this.downloading = true;
- this.$axios
- .get('/withdraw/excel', {
- responseType: 'blob',
- params: { size: 10000 }
- })
- .then(res => {
- console.log(res);
- this.downloading = false;
- const downloadUrl = window.URL.createObjectURL(new Blob([res.data]));
- const link = document.createElement('a');
- link.href = downloadUrl;
- link.setAttribute('download', res.headers['content-disposition'].split('filename=')[1]);
- document.body.appendChild(link);
- link.click();
- link.remove();
- })
- .catch(e => {
- console.log(e);
- this.downloading = false;
- this.$message.error(e.error);
- });
- },
- operation1() {
- this.$notify({
- title: '提示',
- message: this.selection
- });
- },
- operation2() {
- this.$message('操作2');
- },
- deleteRow(row) {
- this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' })
- .then(() => {
- return this.$http.post(`/withdraw/del/${row.id}`);
- })
- .then(() => {
- this.$message.success('删除成功');
- this.getData();
- })
- .catch(e => {
- if (e !== 'cancel') {
- this.$message.error(e.error);
- }
- });
- },
- audit(row, pass) {
- this.$set(row, 'loading', true);
- this.$http
- .post('/withdraw/audit', {
- id: row.id,
- pass: pass
- })
- .then(res => {
- this.$set(row, 'loading', false);
- this.$message.success('OK');
- this.getData();
- })
- .catch(e => {
- console.log(e);
- this.$set(row, 'loading', false);
- this.$message.error(e.error);
- });
- }
- }
- };
- </script>
- <style lang="less" scoped></style>
|