<template> <div class="integral-page"> <el-form ref="searchFrom" :model="form" style="padding-top: 20px;background: white" label-width="80px" inline size="small" > <el-form-item label="昵称"> <el-input v-model="form.nickname" style="width: 120px;"></el-input> </el-form-item> <el-form-item label="用户ID"> <el-input v-model="form.user_id" style="width: 80px;"></el-input> </el-form-item> <el-form-item label="手机号"> <el-input v-model="form.mobile"></el-input> </el-form-item> <el-form-item label="获/抵方式"> <el-select v-model="form.source" @change="getList" style="width: 150px;" clearable> <el-option v-for="(data,index) in sourceOption" :key="index" :label="data.value" :value="data.id" ></el-option> </el-select> </el-form-item> <el-form-item> <el-button type="primary" plain @click="getList">搜索</el-button> <el-button type="success" plain @click="addIntegral" v-if="!$store.state.readonly">变更用户积分</el-button> </el-form-item> </el-form> <el-tabs v-model="form.is_add" type="card" style="background: white;padding-top: 10px" @tab-click="getList" > <el-tab-pane label="全部" name="-1" /> <el-tab-pane label="添加积分" name="1" /> <el-tab-pane label="减少积分" name="0" /> <el-tab-pane label="积分排行" name="-2" /> </el-tabs> <el-table :data="list" size="mini" :style="{width: width+'px'}"> <el-table-column width="220" className="f-c" label="用户"> <template slot-scope="scope"> <img class="avatar" :src="scope.row.avatar" /> {{scope.row.nickname}}(ID:{{scope.row.user_id}}) <br /> 手机:{{scope.row.mobile}} </template> </el-table-column> <el-table-column v-if="form.is_add !== '-2'" label="来源"> <template slot-scope="scope">{{scope.row.source | INTEGRALFUN}}</template> </el-table-column> <el-table-column prop="desc" v-if="form.is_add !== '-2'" label="积分变更描述" /> <el-table-column v-if="form.is_add !== '-2'" label="变更积分值"> <template slot-scope="scope"> <span v-if="scope.row.is_add===1" style="color: green">+{{scope.row.value}}</span> <span v-if="scope.row.is_add===0" style="color: red">-{{scope.row.value}}</span> </template> </el-table-column> <el-table-column prop="last_value" :label="form.is_add !== '-2'?'变更后积分值':'最新积分'" /> <el-table-column prop="created_at" :label="form.is_add !== '-2'?'创建时间':'最新变更时间'" /> </el-table> <page :nowPage="nowPage" :total="total" :limit="limit" @pageChange="onPageChange" @sizeChange="onSizeChange" /> <new-integral :newIntegral="newIntegral" @subAdd="subAdd" @showUserList="showUserList" /> <user-list-page :show="userListShow" @addUser="addUser" /> </div> </template> <script> import { getIntegralListApi, changeIntegralApi, integralApi } from "../../service/api"; import { INTEGRALTYPE, INTEGRALFUN } from "../../util/wordbook"; import page from "../framework/page"; import newIntegral from "./newIntegral"; import userListPage from "./userList"; export default { name: "index", components: { page, newIntegral, userListPage }, data() { let is_addOption = []; for (let k in INTEGRALTYPE) { is_addOption.push({ id: k, value: INTEGRALTYPE[k] }); } let sourceOption = []; for (let j in INTEGRALFUN) { sourceOption.push({ id: j, value: INTEGRALFUN[j] }); } return { width: 0, list: [], total: 0, newIntegral: { show: false, user_id: "", is_add: "", value: "", desc: "" }, is_addOption: is_addOption, sourceOption: sourceOption, limit: 10, userListShow: { show: false }, nowPage: 1, form: { is_add: "-1", source: "", user_id: "", mobile: "", nickname: "" } }; }, mounted() { this.initPage(); this.width = window.innerWidth - 200; }, filters: { INTEGRALTYPE(value) { return INTEGRALTYPE[value]; }, INTEGRALFUN(value) { return INTEGRALFUN[value]; } }, methods: { subAdd() { let json = { user_id: this.newIntegral.user_id, is_add: this.newIntegral.is_add, value: this.newIntegral.value, desc: this.newIntegral.desc }; changeIntegralApi(json).then(res => { this.getList(); this.newIntegral.show = false; }); }, showUserList() { this.userListShow.show = true; }, addUser(value) { this.userListShow.show = false; this.newIntegral.user_id = value; }, changeUserList() {}, addIntegral() { this.newIntegral = { show: true, user_id: "", is_add: "", value: "", desc: "" }; }, initPage() { this.form = { is_add: "-1", source: "", user_id: "", mobile: "", nickname: "" }; this.getList(); }, onPageChange(val) { this.nowPage = val; this.getList(); }, onSizeChange(val) { this.limit = val; this.nowPage = 1; this.getList(); }, getList() { let json = { limit: this.limit, page: this.nowPage }; if (this.form.is_add === "-2") { integralApi(json).then(res => { this.list = res.list; this.total = res.total; }); } else { if (this.form.is_add !== "" && this.form.is_add !== "-1") { json.is_add = this.form.is_add; } if (this.form.source !== "") { json.source = this.form.source; } if (this.form.user_id !== "") { json.user_id = this.form.user_id; } if (this.form.mobile !== "") { json.mobile = this.form.mobile; } if (this.form.nickname !== "") { json.nickname = this.form.nickname; } getIntegralListApi(json).then(res => { this.list = res.list; this.total = res.total; }); } } } }; </script> <style scoped lang="less"> @import "../../util/public"; .avatar { width: 50px; min-width: 50px; height: 50px; margin-right: 5px; border-radius: 50%; } </style> <style> .f-c > .cell { display: flex !important; flex-flow: row; justify-content: flex-start; align-items: center; } </style>