new-admin-view/src/views/marketing/exchange/quota/index.vue

276 lines
9.4 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="divBox">
<el-card class="box-card">
<!--顶部搜索栏-->
<div slot="header" class="clearfix">
<div class="container">
<el-form inline size="small" label-width="80px">
<el-form-item label="搜索:">
<el-input v-model="tableFrom.uid" @keyup.enter.native="getList(1)" placeholder="请输入用户ID" class="selWidth" clearable>
<el-button slot="append" icon="el-icon-search" class="el-button-solt" @click="getList(1)" />
</el-input>
</el-form-item>
</el-form>
<cards-data :card-lists="cardLists" />
</div>
</div>
<!--表格信息-->
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane :label="'持有'+ quotaName + quotaTitle + '信息'" name="list">
<el-table v-loading="listLoading" :data="tableData.data" style="width: 100%" size="mini">
<el-table-column prop="id" label="ID" min-width="50" align="center"/>
<el-table-column label="用户信息" min-width="230" align="center">
<template slot-scope="scope">
<div class="user-content">
<div class="user-avatar" v-if="scope.row.avatar && scope.row.avatar != 1">
<img :src="scope.row.avatar" />
</div>
<div class="user-info">
<div class="nickname">{{ scope.row.nickname }}</div>
<div class="user-id">ID{{ scope.row.uid }}</div>
</div>
</div>
</template>
</el-table-column>
<el-table-column label="绑定商户" min-width="230" align="center" v-if="tableFrom.quota_type == 5">
<template slot-scope="scope">
<div class="user-content" v-if="scope.row.mer">
<div class="user-avatar">
<img :src="scope.row.mer.mer_avatar || moren" />
</div>
<div class="user-info">
<div class="nickname">{{ scope.row.mer.mer_name || '' }}</div>
<div class="user-id">ID{{ scope.row.mer.mer_id || '' }}</div>
</div>
</div>
</template>
</el-table-column>
<el-table-column :label="'总获得' + quotaTitle" prop="total_quota" min-width="100" align="center"/>
<el-table-column :label="'已使用' + quotaTitle" prop="use_quota" min-width="100" align="center"/>
<el-table-column :label="'剩余' + quotaTitle" prop="surplus_quota" min-width="100" align="center"/>
<el-table-column :label="'冻结' + quotaTitle" prop="freeze_quota" min-width="100" align="center"/>
<el-table-column :label="'可用' + quotaTitle" prop="number" min-width="100" align="center">
<template slot-scope="scope">
{{ (scope.row.surplus_quota - scope.row.freeze_quota).toFixed(2) }}
</template>
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane :label="quotaName + quotaTitle + '变更记录'" name="record_list">
<el-table v-loading="listLoading" :data="tableData.data" style="width: 100%" size="mini">
<el-table-column prop="id" label="ID" min-width="50" align="center"/>
<el-table-column label="用户信息" min-width="230" align="center">
<template slot-scope="scope">
<div class="user-content">
<div class="user-avatar" v-if="scope.row.avatar && scope.row.avatar != 1">
<img :src="scope.row.avatar" />
</div>
<div class="user-info">
<div class="nickname">{{ scope.row.nickname }}</div>
<div class="user-id">ID{{ scope.row.uid }}</div>
</div>
</div>
</template>
</el-table-column>
<el-table-column label="绑定商户" min-width="230" align="center" v-if="tableFrom.quota_type == 5">
<template slot-scope="scope">
<div class="user-content" v-if="scope.row.mer">
<div class="user-avatar">
<img :src="scope.row.mer.mer_avatar || moren" />
</div>
<div class="user-info">
<div class="nickname">{{ scope.row.mer.mer_name || '' }}</div>
<div class="user-id">ID{{ scope.row.mer.mer_id || '' }}</div>
</div>
</div>
</template>
</el-table-column>
<el-table-column label="变更前数量" prop="change_front" min-width="100" align="center"/>
<el-table-column label="变更数量" prop="change_quantity" min-width="100" align="center"/>
<el-table-column label="变更类型" min-width="100" align="center">
<template slot-scope="scope">
<el-tag v-if="scope.row.change_type == 1" type="success" effect="dark">增加</el-tag>
<el-tag v-else type="danger" effect="dark">减少</el-tag>
</template>
</el-table-column>
<el-table-column label="变更后数量" prop="change_after" min-width="100" align="center"/>
<el-table-column label="变更时间" prop="create_time" min-width="100" align="center"/>
<el-table-column label="备注" prop="remark" min-width="150" align="center"/>
</el-table>
</el-tab-pane>
</el-tabs>
<!--分页-->
<div class="block">
<el-pagination
:page-sizes="[20, 40, 60, 80]"
:page-size="tableFrom.limit"
:current-page="tableFrom.page"
layout="total, sizes, prev, pager, next, jumper"
:total="tableData.total"
@size-change="handleSizeChange"
@current-change="pageChange"
/>
</div>
</el-card>
</div>
</template>
<script>
const nameList = {
1: '瓶装酒',
2: '菜卡',
3: '封坛酒',
4: '加油卡',
5: '惠民',
};
import {exchangeQuotaTitle, exchangeQuotaList } from '@/api/marketing'
import cardsData from '@/components/cards/index'
export default {
name: "preSaleProductList",
components: { cardsData },
data() {
return {
moren: require("@/assets/images/f.png"),
quotaTitle: '额度',
quotaName: '',
activeName: 'list',
listLoading: true,
tableData: {
data: [],
total: 0,
},
tableFrom: {
page: 1,
limit: 20,
uid: '',
quota_type: ''
},
loading: false,
cardLists: [],
};
},
watch: {
// 路由变更
'$route' () {
this.tableFrom.quota_type = this.$route.meta.quota_type || 0;
},
// 商户类型变更
'tableFrom.quota_type' () {
let quotaType = this.tableFrom.quota_type || 0;
this.quotaTitle = Number(quotaType) === 5 ? '积分' : '额度'
this.quotaName = nameList[quotaType] || ''
this.getStatistics();
this.getList(1);
},
},
mounted() {
this.tableFrom.quota_type = this.$route.meta.quota_type || 0;
},
methods: {
// 获取统计数据
getStatistics() {
let _this = this;
exchangeQuotaTitle(_this.tableFrom).then((res) => {
this.cardLists = res.data
}).catch((res) => {
this.$message.error(res.message)
})
},
// 获取列表
getList(num) {
let _this = this;
this.listLoading = true;
this.tableFrom.page = num ? num : this.tableFrom.page;
exchangeQuotaList(_this.activeName,this.tableFrom)
.then((res) => {
this.tableData.data = res.data.list;
this.tableData.total = res.data.count;
this.listLoading = false;
})
.catch((res) => {
this.listLoading = false;
this.$message.error(res.message);
});
},
pageChange(page) {
this.tableFrom.page = page;
this.getList('');
},
handleSizeChange(val) {
this.tableFrom.limit = val;
this.getList('');
},
handleClick(tab, event){
this.tableData = this.$options.data().tableData;
this.getList(1);
}
},
};
</script>
<style scoped lang="scss">
.selWidth {
width: 350px !important;
}
/deep/ .cell{
padding: 0!important;
}
.seachTiele {
line-height: 35px;
}
.title{
margin-bottom: 16px;
color: #17233d;
font-size: 14px;
font-weight: bold;
}
.scollhide::-webkit-scrollbar {
display: none; /* Chrome Safari */
}
.user-content{
--user-content-height-: 80px;
height: var(--user-content-height-);
width: 100%;
display: inline-flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: center;
align-items: center;
.user-avatar{
height: var(--user-content-height-);
width: var(--user-content-height-);
display: inline-flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: center;
align-items: center;
img{
height: 80%!important;
width: 80%!important;
border-radius: 50% !important;
}
}
.user-info{
height: var(--user-content-height-);
display: inline-flex;
flex-direction: column;
flex-wrap: nowrap;
justify-content: center;
align-items: flex-start;
.nickname{
font-size: 15px;
font-weight: bold;
line-height: calc(var(--user-content-height- * 65%));
}
.user-id{
font-size: 13px;
line-height: calc(var(--user-content-height- * 35%));
}
}
}
</style>