用户列表

main
home.fengxinyhyl 12 months ago
parent ab1c729032
commit fc5d0a9b12
  1. 2
      app/common/dao/user/UserDao.php
  2. 7
      app/common/repositories/user/UserRepository.php
  3. 3
      app/controller/admin/user/User.php
  4. 134
      view/admin/src/views/user/list/index.vue
  5. 602
      view/admin/src/views/user/list/userDetails.vue

@ -87,6 +87,8 @@ class UserDao extends BaseDao
return $query->where('User.uid|User.real_name|User.nickname|User.phone', 'like', '%' . $where['keyword'] . '%');
})->when(isset($where['user_type']) && $where['user_type'] !== '', function (BaseQuery $query) use ($where) {
return $query->where('User.user_type', $where['user_type']);
})->when(isset($where['is_lottery']) && $where['is_lottery'] !== '', function (BaseQuery $query) use ($where) {
return $query->where('User.is_lottery', $where['is_lottery']);
})->when(isset($where['uid']) && $where['uid'] !== '', function (BaseQuery $query) use ($where) {
return $query->where('User.uid', $where['uid']);
})->when(isset($where['status']) && $where['status'] !== '', function (BaseQuery $query) use ($where) {

@ -307,14 +307,14 @@ class UserRepository extends BaseRepository
$data = app()->make(UserGroupRepository::class)->allOptions();
return Elm::createForm(Route::buildUrl($isArray ? 'systemUserBatchChangeGroup' : 'systemUserChangeGroup', $isArray ? [] : compact('id'))->build(), [
Elm::hidden('ids', $isArray ? $id : [$id]),
Elm::select('group_id', '用户分组:', $isArray ? '' : $user->group_id)->options(function () use ($data) {
Elm::select('group_id', '用户等级:', $isArray ? '' : $user->group_id)->options(function () use ($data) {
$options = [['label' => '请选择', 'value' => 0]];
foreach ($data as $value => $label) {
$options[] = compact('value', 'label');
}
return $options;
})->placeholder('请选择用户分组')
])->setTitle('修改用户分组');
})->placeholder('请选择用户等级')
])->setTitle('修改用户等级');
}
/**
@ -1616,6 +1616,7 @@ class UserRepository extends BaseRepository
$info = $this->dao->userOrderDetail($uid);
// 添加用户扩展信息
$info['extend_info'] = app()->make(UserFieldsRepository::class)->info((int)$uid, false)['extend_info'];
$info['assets'] = app()->make(UserAssetsRepository::class)->assets($uid);
return $info;
}

@ -99,7 +99,8 @@ class User extends BaseController
'fields_value',
'member_level',
'keyword',
'birthday'
'birthday',
'is_lottery'
]);
[$page, $limit] = $this->getPage();
return app('json')->success($this->repository->getList($where, $page, $limit));

@ -14,14 +14,15 @@
</el-select>
</el-input>
</el-form-item>
<el-form-item label="用户分组:" prop="group_id">
<el-form-item label="用户等级:" prop="group_id">
<el-select v-model="userFrom.group_id" placeholder="请选择" class="selWidth" clearable filterable @change="changeSearch(1)">
<el-option v-for="(item, index) in groupList" :key="index" :value="item.group_id" :label="item.group_name" />
</el-select>
</el-form-item>
<el-form-item label="用户标签:" prop="label_id">
<el-select v-model="userFrom.label_id" placeholder="请选择" class="selWidth" clearable filterable @change="changeSearch(1)">
<el-option v-for="(item, index) in labelLists" :key="index" :value="item.label_id" :label="item.label_name" />
<el-form-item label="预存用户:" prop="is_lottery">
<el-select v-model="userFrom.is_lottery" placeholder="请选择" class="selWidth" clearable filterable @change="changeSearch(1)">
<el-option value="1" label="是" />
<el-option value="0" label="否" />
</el-select>
</el-form-item>
</div>
@ -29,8 +30,6 @@
<el-button type="primary" size="small" @click="changeSearch(1)">搜索</el-button>
<el-button size="small" @click="searchReset()">重置</el-button>
<a class="ivu-ml-8 font12 ml10" @click="collapse = !collapse">
<template v-if="collapse"> 展开 <i class="el-icon-arrow-down" /> </template>
<template v-else> 收起 <i class="el-icon-arrow-up" /> </template>
</a>
</el-form-item>
</div>
@ -133,26 +132,26 @@
</el-form>
</div>
<el-card class="mt14">
<div>
<el-tabs v-model="user_type" @tab-click="changeSearch(1)" class="mb5">
<el-tab-pane label="全部用户" name="" />
<el-tab-pane label="微信用户" name="wechat" />
<el-tab-pane label="小程序用户" name="routine" />
<el-tab-pane label="H5用户" name="h5" />
<el-tab-pane label="APP" name="app" />
<el-tab-pane label="PC" name="pc" />
</el-tabs>
<div class="mb20">
<el-button type="primary" size="small" @click="createUser">创建用户</el-button>
<el-button v-show="user_type === 'wechat'" size="small" @click="sendNews">发送图文消息</el-button>
<el-button :disabled="checkedIds.length == 0" size="small" @click="batchGroup">批量设置分组</el-button>
<el-button :disabled="checkedIds.length == 0" size="small" @click="batchlabel">批量设置标签</el-button>
<el-button :disabled="checkedIds.length == 0" size="small" @click="setDistributor">批量设置分销员</el-button>
<el-button :disabled="checkedIds.length == 0" label="default" size="small" @click="sendCoupon">发送优惠券</el-button>
<el-button size="small" @click="exportList">导出列表</el-button>
</div>
<el-alert v-if="checkedIds.length>0 || allCheck" :title="allCheck ? `已选择 ${tableData.total}` : `已选择 ${checkedIds.length}`" type="info" show-icon class="mb10" />
</div>
<!-- <div>-->
<!-- <el-tabs v-model="user_type" @tab-click="changeSearch(1)" class="mb5">-->
<!-- <el-tab-pane label="全部用户" name="" />-->
<!-- <el-tab-pane label="微信用户" name="wechat" />-->
<!-- <el-tab-pane label="小程序用户" name="routine" />-->
<!-- <el-tab-pane label="H5用户" name="h5" />-->
<!-- <el-tab-pane label="APP" name="app" />-->
<!-- <el-tab-pane label="PC" name="pc" />-->
<!-- </el-tabs>-->
<!-- <div class="mb20">-->
<!-- <el-button type="primary" size="small" @click="createUser">创建用户</el-button>-->
<!-- <el-button v-show="user_type === 'wechat'" size="small" @click="sendNews">发送图文消息</el-button>-->
<!-- <el-button :disabled="checkedIds.length == 0" size="small" @click="batchGroup">批量设置分组</el-button>-->
<!-- <el-button :disabled="checkedIds.length == 0" size="small" @click="batchlabel">批量设置标签</el-button>-->
<!-- <el-button :disabled="checkedIds.length == 0" size="small" @click="setDistributor">批量设置分销员</el-button>-->
<!-- <el-button :disabled="checkedIds.length == 0" label="default" size="small" @click="sendCoupon">发送优惠券</el-button>-->
<!-- <el-button size="small" @click="exportList">导出列表</el-button>-->
<!-- </div>-->
<!-- <el-alert v-if="checkedIds.length>0 || allCheck" :title="allCheck ? `已选择 ${tableData.total}` : `已选择 ${checkedIds.length}`" type="info" show-icon class="mb10" />-->
<!-- </div>-->
<el-table v-loading="listLoading" :data="tableData.data" size="small" highlight-current-row @selection-change="handleSelectionChange">
<el-table-column type="expand">
<template slot-scope="props">
@ -187,20 +186,20 @@
</el-form>
</template>
</el-table-column>
<el-table-column width="50">
<template slot="header" slot-scope="scope">
<el-popover placement="top-start" width="100" trigger="hover" class="tabPop">
<div>
<span class="spBlock onHand" :class="{'check': chkName === 'dan'}" @click="onHandle('dan',scope.$index)">选中本页</span>
<span class="spBlock onHand" :class="{'check': chkName === 'duo'}" @click="onHandle('duo')">选中全部</span>
</div>
<el-checkbox slot="reference" :value="(chkName === 'dan' && checkedPage.indexOf(userFrom.page) > -1) || chkName === 'duo'" @change="changeType" />
</el-popover>
</template>
<template slot-scope="scope">
<el-checkbox :disabled="scope.row.cancel_time" :value="!scope.row.cancel_time && (checkedIds.indexOf(scope.row.uid) > -1 || (chkName === 'duo' && noChecked.indexOf(scope.row.uid) === -1))" @change="(v)=>changeOne(v,scope.row)" />
</template>
</el-table-column>
<!-- <el-table-column width="50">-->
<!-- <template slot="header" slot-scope="scope">-->
<!-- <el-popover placement="top-start" width="100" trigger="hover" class="tabPop">-->
<!-- <div>-->
<!-- <span class="spBlock onHand" :class="{'check': chkName === 'dan'}" @click="onHandle('dan',scope.$index)">选中本页</span>-->
<!-- <span class="spBlock onHand" :class="{'check': chkName === 'duo'}" @click="onHandle('duo')">选中全部</span>-->
<!-- </div>-->
<!-- <el-checkbox slot="reference" :value="(chkName === 'dan' && checkedPage.indexOf(userFrom.page) > -1) || chkName === 'duo'" @change="changeType" />-->
<!-- </el-popover>-->
<!-- </template>-->
<!-- <template slot-scope="scope">-->
<!-- <el-checkbox :disabled="scope.row.cancel_time" :value="!scope.row.cancel_time && (checkedIds.indexOf(scope.row.uid) > -1 || (chkName === 'duo' && noChecked.indexOf(scope.row.uid) === -1))" @change="(v)=>changeOne(v,scope.row)" />-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column prop="uid" label="ID" min-width="60" />
<el-table-column label="头像" min-width="50">
<template slot-scope="scope">
@ -218,18 +217,18 @@
</div>
</template>
</el-table-column>
<el-table-column prop="is_svip" label="付费会员" min-width="120">
<template slot-scope="{row}">
<span>{{row.is_svip > 0 ? "是" : "否"}}</span>
</template>
</el-table-column>
<!-- <el-table-column prop="is_svip" label="付费会员" min-width="120">-->
<!-- <template slot-scope="{row}">-->
<!-- <span>{{row.is_svip > 0 ? "是" : "否"}}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column prop="phone" label="手机号" min-width="120" />
<el-table-column label="等级" min-width="100">
<template slot-scope="{row}">
<span>{{ row.member?row.member.brokerage_name:'-' }}</span>
</template>
</el-table-column>
<el-table-column label="分组" min-width="100">
<!-- <el-table-column label="等级" min-width="100">-->
<!-- <template slot-scope="{row}">-->
<!-- <span>{{ row.member?row.member.brokerage_name:'-' }}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="用户等级" min-width="100">
<template slot-scope="{row}">
<span>{{ row.group?row.group.group_name:'无' }}</span>
</template>
@ -239,13 +238,18 @@
<span>{{ row.spread ? row.spread.nickname + ' / ' + row.spread.uid : '-' }}</span>
</template>
</el-table-column>
<el-table-column label="用户类型" min-width="100">
<el-table-column label="预存用户" min-width="140">
<template slot-scope="{row}">
<span>{{ row.user_type === 'routine' ? '小程序' : row.user_type === 'wechat' ? '公众号' : row.user_type === 'app' || row.user_type === 'App' ? 'App' : row.user_type === 'pc' ? 'PC' : 'H5' }}</span>
<span>{{ row.is_lottery ? '是' : '否' }}</span>
</template>
</el-table-column>
<el-table-column prop="now_money" label="余额" sortable min-width="100" :sort-method="(a,b)=>{return a.now_money - b.now_money}"/>
<el-table-column prop="integral" label="当前可用积分" min-width="100" />
<!-- <el-table-column label="用户类型" min-width="100">-->
<!-- <template slot-scope="{row}">-->
<!-- <span>{{ row.user_type === 'routine' ? '小程序' : row.user_type === 'wechat' ? '公众号' : row.user_type === 'app' || row.user_type === 'App' ? 'App' : row.user_type === 'pc' ? 'PC' : 'H5' }}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column prop="now_money" label="余额" sortable min-width="100" :sort-method="(a,b)=>{return a.now_money - b.now_money}"/>-->
<!-- <el-table-column prop="integral" label="当前可用积分" min-width="100" />-->
<el-table-column label="操作" min-width="150" fixed="right">
<template slot-scope="scope">
<el-button v-if="!scope.row.cancel_time" type="text" size="small" @click="onDetails(scope.row.uid)">详情</el-button>
@ -257,15 +261,15 @@
</span>
<el-dropdown-menu slot="dropdown">
<!-- <el-dropdown-item @click.native="onEdit(scope.row.uid)">编辑信息</el-dropdown-item> -->
<el-dropdown-item v-if="!scope.row.cancel_time" @click.native="setMoney(scope.row)">设置余额</el-dropdown-item>
<el-dropdown-item v-if="!scope.row.cancel_time" @click.native="changeIntegral(scope.row)">设置积分</el-dropdown-item>
<el-dropdown-item v-if="scope.row.vip_name && !scope.row.cancel_time">清除等级</el-dropdown-item>
<el-dropdown-item v-if="!scope.row.cancel_time" @click.native="setGroup(scope.row)">设置分组</el-dropdown-item>
<el-dropdown-item v-if="!scope.row.cancel_time" @click.native="setLabel(scope.row)">设置标签</el-dropdown-item>
<!-- <el-dropdown-item v-if="!scope.row.cancel_time" @click.native="setMoney(scope.row)">设置余额</el-dropdown-item>-->
<!-- <el-dropdown-item v-if="!scope.row.cancel_time" @click.native="changeIntegral(scope.row)">设置积分</el-dropdown-item>-->
<!-- <el-dropdown-item v-if="scope.row.vip_name && !scope.row.cancel_time">清除等级</el-dropdown-item>-->
<el-dropdown-item v-if="!scope.row.cancel_time" @click.native="setGroup(scope.row)">设置用户等级</el-dropdown-item>
<!-- <el-dropdown-item v-if="!scope.row.cancel_time" @click.native="setLabel(scope.row)">设置标签</el-dropdown-item>-->
<el-dropdown-item v-if="!scope.row.cancel_time" @click.native="setModify(scope.row)">修改推荐人</el-dropdown-item>
<el-dropdown-item v-if="!scope.row.cancel_time" @click.native="setPassword(scope.row)">修改密码</el-dropdown-item>
<el-dropdown-item v-if="!scope.row.cancel_time" @click.native="setMember(scope.row)">编辑会员等级</el-dropdown-item>
<el-dropdown-item v-if="!scope.row.cancel_time" @click.native="giveMember(scope.row)">付费会员设置</el-dropdown-item>
<!-- <el-dropdown-item v-if="!scope.row.cancel_time" @click.native="setPassword(scope.row)">修改密码</el-dropdown-item>-->
<!-- <el-dropdown-item v-if="!scope.row.cancel_time" @click.native="setMember(scope.row)">编辑会员等级</el-dropdown-item>-->
<!-- <el-dropdown-item v-if="!scope.row.cancel_time" @click.native="giveMember(scope.row)">付费会员设置</el-dropdown-item>-->
</el-dropdown-menu>
</el-dropdown>
</template>
@ -439,7 +443,6 @@ export default {
multipleSelection: [],
ids: '',
wechatIds: '',
uid: '',
labelPosition: 'right',
userProps: {
children: 'children',
@ -466,7 +469,8 @@ export default {
limit: 20,
group_id: '',
fields_type: '',
fields_value: ''
fields_value: '',
is_lottery: ''
},
address: [],
grid: {

@ -43,44 +43,40 @@
@click="onEdit"
>完成</el-button
>
<el-dropdown @command="handleCommand" class="ml10">
<el-button icon="el-icon-more" size="small"></el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="integral">设置积分</el-dropdown-item>
<el-dropdown-item command="balance">设置余额</el-dropdown-item>
<el-dropdown-item command="group">设置分组</el-dropdown-item>
<el-dropdown-item command="label">设置标签</el-dropdown-item>
<el-dropdown-item command="reference">修改推荐人</el-dropdown-item>
<el-dropdown-item command="password">修改密码</el-dropdown-item>
<el-dropdown-item command="svipLevel">编辑会员等级</el-dropdown-item>
<el-dropdown-item command="svipSet">付费会员设置</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<!-- <el-dropdown @command="handleCommand" class="ml10">-->
<!-- <el-button icon="el-icon-more" size="small"></el-button>-->
<!-- <el-dropdown-menu slot="dropdown">-->
<!-- <el-dropdown-item command="integral">设置积分</el-dropdown-item>-->
<!-- <el-dropdown-item command="balance">设置余额</el-dropdown-item>-->
<!-- <el-dropdown-item command="group">设置分组</el-dropdown-item> -->
<!-- <el-dropdown-item command="label">设置标签</el-dropdown-item> -->
<!-- <el-dropdown-item command="reference">修改推荐人</el-dropdown-item> -->
<!-- <el-dropdown-item command="password">修改密码</el-dropdown-item> -->
<!-- <el-dropdown-item command="svipLevel">编辑会员等级</el-dropdown-item> -->
<!-- <el-dropdown-item command="svipSet">付费会员设置</el-dropdown-item> -->
<!-- </el-dropdown-menu>-->
<!-- </el-dropdown>-->
</div>
</div>
<div>
<ul class="list">
<li class="item">
<div class="title">余额</div>
<div class="title">消费积分</div>
<div>
<div class="value1">{{psInfo.now_money}}</div>
<div>{{psInfo.assets.integral_buy}}</div>
</div>
</li>
<li class="item">
<div class="title">总计订单</div>
<div>{{psInfo.pay_count}}</div>
<div class="title">提现积分</div>
<div>{{psInfo.assets.integral_withdraw}}</div>
</li>
<li class="item">
<div class="title">总消费金额</div>
<div>{{psInfo.pay_price}}</div>
<div class="title">钻石</div>
<div>{{psInfo.assets.diamond}}</div>
</li>
<li class="item">
<div class="title">积分</div>
<div>{{psInfo.integral}}</div>
</li>
<li class="item">
<div class="title">用户成长值</div>
<div>{{psInfo.member_value}}</div>
<div class="title">本票</div>
<div>{{psInfo.assets.stock}}</div>
</li>
</ul>
</div>
@ -120,30 +116,30 @@
<div class="section">
<div class="title">用户概况</div>
<ul class="list">
<li class="item">
<div>推广员</div>
<div class="value">{{psInfo.is_promoter == 1 ? '是' : '否'}}</div>
</li>
<li class="item">
<div>用户状态</div>
<div class="value">{{psInfo.status == 1 ? '开启' : '关闭'}}</div>
</li>
<li class="item">
<div>用户等级</div>
<div class="value">{{psInfo.member_level}}</div>
</li>
<li class="item">
<div>用户标签</div>
<div class="value">
<span v-for="(item,index) in psInfo.userLabel" :key="index">
{{item.label_name}}
</span>
</div>
</li>
<li class="item">
<div>用户分组</div>
<div class="value">{{psInfo.group && psInfo.group.group_name || '无'}}</div>
</li>
<!-- <li class="item">-->
<!-- <div>推广员</div>-->
<!-- <div class="value">{{psInfo.is_promoter == 1 ? '是' : '否'}}</div>-->
<!-- </li>-->
<!-- <li class="item">-->
<!-- <div>用户状态</div>-->
<!-- <div class="value">{{psInfo.status == 1 ? '开启' : '关闭'}}</div>-->
<!-- </li>-->
<!-- <li class="item">-->
<!-- <div>用户等级</div>-->
<!-- <div class="value">{{psInfo.member_level}}</div>-->
<!-- </li>-->
<!-- <li class="item">-->
<!-- <div>用户标签</div>-->
<!-- <div class="value">-->
<!-- <span v-for="(item,index) in psInfo.userLabel" :key="index">-->
<!-- {{item.label_name}}-->
<!-- </span>-->
<!-- </div>-->
<!-- </li>-->
<!-- <li class="item">-->
<!-- <div>用户分组</div>-->
<!-- <div class="value">{{psInfo.group && psInfo.group.group_name || '无'}}</div>-->
<!-- </li>-->
<li class="item">
<div>推广人</div>
<div class="value">{{psInfo.spread && psInfo.spread.nickname || '无'}}</div>
@ -156,21 +152,21 @@
<div>登录时间</div>
<div class="value">{{psInfo.last_time}}</div>
</li>
<li v-if="psInfo.is_svip == 1 || psInfo.is_svip == 2" class="item">
<div>会员到期时间</div>
<div class="value">{{psInfo.svip_endtime}}</div>
</li>
</ul>
</div>
<div class="section">
<div class="title">用户备注</div>
<ul class="list">
<li class="item">
<div>备注</div>
<div class="value">{{ psInfo.mark ? psInfo.mark : '-' }}</div>
</li>
<!-- <li v-if="psInfo.is_svip == 1 || psInfo.is_svip == 2" class="item">-->
<!-- <div>会员到期时间</div>-->
<!-- <div class="value">{{psInfo.svip_endtime}}</div>-->
<!-- </li>-->
</ul>
</div>
<!-- <div class="section">-->
<!-- <div class="title">用户备注</div>-->
<!-- <ul class="list">-->
<!-- <li class="item">-->
<!-- <div>备注</div>-->
<!-- <div class="value">{{ psInfo.mark ? psInfo.mark : '-' }}</div>-->
<!-- </li>-->
<!-- </ul>-->
<!-- </div>-->
<div class="section">
<div class="title">补充信息</div>
<ul class="list">
@ -265,75 +261,75 @@
</el-col> -->
</el-row>
</div>
<div class="section">
<div class="title">用户概况</div>
<el-row :gutter="24" class="mt20">
<el-col :span="12">
<el-form-item label="用户等级:">
<el-select
size="small"
v-model="psInfo.member_level"
placeholder="请选择"
class="selWidth"
>
<el-option
v-for="item in memberList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="用户分组:">
<el-select
size="small"
v-model="psInfo.group_id"
placeholder="请选择"
class="selWidth"
>
<el-option value="">全部</el-option>
<el-option v-for="(item, index) in groupList" :key="index" :value="item.group_id" :label="item.group_name" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="用户标签:">
<el-select
size="small"
v-model="psInfo.label_id"
multiple
placeholder="请选择"
class="selWidth"
>
<el-option value="">全部</el-option>
<el-option v-for="(item, index) in labelLists" :key="index" :value="item.label_id" :label="item.label_name" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-form-item label="推广员:" prop="is_promoter">
<el-radio-group
v-model="psInfo.is_promoter"
>
<el-radio :label="1" class="radio">开启</el-radio>
<el-radio :label="0">关闭</el-radio>
</el-radio-group>
</el-form-item>
</el-row>
<el-row :gutter="24">
<el-form-item label="用户状态:" prop="status">
<el-radio-group
v-model="psInfo.status"
>
<el-radio :label="1" class="radio">开启</el-radio>
<el-radio :label="0">关闭</el-radio>
</el-radio-group>
</el-form-item>
</el-row>
</div>
<!-- <div class="section">-->
<!-- <div class="title">用户概况</div>-->
<!-- <el-row :gutter="24" class="mt20">-->
<!-- <el-col :span="12">-->
<!-- <el-form-item label="用户等级:">-->
<!-- <el-select-->
<!-- size="small"-->
<!-- v-model="psInfo.member_level"-->
<!-- placeholder="请选择"-->
<!-- class="selWidth"-->
<!-- >-->
<!-- <el-option-->
<!-- v-for="item in memberList"-->
<!-- :key="item.value"-->
<!-- :label="item.label"-->
<!-- :value="item.value"-->
<!-- />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- <el-col :span="12">-->
<!-- <el-form-item label="用户分组:">-->
<!-- <el-select-->
<!-- size="small"-->
<!-- v-model="psInfo.group_id"-->
<!-- placeholder="请选择"-->
<!-- class="selWidth"-->
<!-- >-->
<!-- <el-option value="">全部</el-option>-->
<!-- <el-option v-for="(item, index) in groupList" :key="index" :value="item.group_id" :label="item.group_name" />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- <el-col :span="12">-->
<!-- <el-form-item label="用户标签:">-->
<!-- <el-select-->
<!-- size="small"-->
<!-- v-model="psInfo.label_id"-->
<!-- multiple-->
<!-- placeholder="请选择"-->
<!-- class="selWidth"-->
<!-- >-->
<!-- <el-option value="">全部</el-option>-->
<!-- <el-option v-for="(item, index) in labelLists" :key="index" :value="item.label_id" :label="item.label_name" />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- </el-row>-->
<!-- <el-row :gutter="24">-->
<!-- <el-form-item label="推广员:" prop="is_promoter">-->
<!-- <el-radio-group-->
<!-- v-model="psInfo.is_promoter"-->
<!-- >-->
<!-- <el-radio :label="1" class="radio">开启</el-radio>-->
<!-- <el-radio :label="0">关闭</el-radio>-->
<!-- </el-radio-group>-->
<!-- </el-form-item>-->
<!-- </el-row>-->
<!-- <el-row :gutter="24">-->
<!-- <el-form-item label="用户状态:" prop="status">-->
<!-- <el-radio-group-->
<!-- v-model="psInfo.status"-->
<!-- >-->
<!-- <el-radio :label="1" class="radio">开启</el-radio>-->
<!-- <el-radio :label="0">关闭</el-radio>-->
<!-- </el-radio-group>-->
<!-- </el-form-item>-->
<!-- </el-row>-->
<!-- </div>-->
<div class="section">
<div class="title">用户备注</div>
<el-row :gutter="24" class="mt20">
@ -451,8 +447,8 @@
</div>
</template>
</el-tab-pane>
<el-tab-pane label="积分明细" name="detailed">
<template v-if="activeName == 'detailed'">
<el-tab-pane label="积分" name="integral">
<template v-if="activeName == 'integral'">
<el-table :data="tableData.data" size="small">
<el-table-column
v-for="(item, index) in columns"
@ -461,19 +457,6 @@
:label="item.title"
width="item.minWidth"
>
<template slot-scope="scope">
<div v-if="item.key == 'number'">
<span v-if="scope.row.pm == 1" style="color:rgb(255, 59, 48);">+{{scope.row.number}}</span>
<span v-else-if="scope.row.pm == 0" style="color:rgb(130, 228, 147);">-{{scope.row.number}}</span>
</div>
<div v-else-if="item.key == 'status'">
<span v-if="scope.row.status == 1">已解冻</span>
<span v-else-if="scope.row.status == 0">冻结中</span>
</div>
<div v-else>
<span>{{scope.row[item.key]}}</span>
</div>
</template>
</el-table-column>
</el-table>
<div class="block">
@ -488,78 +471,11 @@
</div>
</template>
</el-tab-pane>
<el-tab-pane label="签到记录" name="signRecord">
<template v-if="activeName == 'signRecord'">
<el-table :data="tableData.data" size="small">
<el-table-column
v-for="(item, index) in columns"
:key="index"
:prop="item.key"
:label="item.title"
width="item.minWidth"
/>
</el-table>
<div class="block">
<el-pagination
:page-size="tableFrom.limit"
:current-page="tableFrom.page"
layout="prev, pager, next"
:total="tableData.total"
@size-change="handleSizeChange"
@current-change="pageChange"
/>
</div>
</template>
</el-tab-pane>
<el-tab-pane label="持有优惠券" name="coupon">
<template v-if="activeName == 'coupon'">
<el-table :data="tableData.data" size="small">
<el-table-column
v-for="(item, index) in columns"
:key="index"
:prop="item.key"
:label="item.title"
width="item.minWidth"
/>
</el-table>
<div class="block">
<el-pagination
:page-size="tableFrom.limit"
:current-page="tableFrom.page"
layout="prev, pager, next"
:total="tableData.total"
@size-change="handleSizeChange"
@current-change="pageChange"
/>
</div>
</template>
</el-tab-pane>
<el-tab-pane label="余额变更" name="balance" size="small">
<template v-if="activeName == 'balance'">
<el-table :data="tableData.data" size="small">
<el-table-column
v-for="(item, index) in columns"
:key="index"
:prop="item.key"
:label="item.title"
width="item.minWidth"
/>
</el-table>
<div class="block">
<el-pagination
:page-size="tableFrom.limit"
:current-page="tableFrom.page"
layout="prev, pager, next"
:total="tableData.total"
@size-change="handleSizeChange"
@current-change="pageChange"
/>
</div>
</template>
</el-tab-pane>
<el-tab-pane label="用户成长值" name="growth" size="small">
<template v-if="activeName == 'growth'">
<el-tab-pane label="钻石" name="diamond">
<template v-if="activeName == 'diamond'">
<el-table :data="tableData.data" size="small">
<template>
<el-table-column
v-for="(item, index) in columns"
:key="index"
@ -567,14 +483,9 @@
:label="item.title"
width="item.minWidth"
>
<template slot-scope="scope">
<div v-if="item.key == 'number'">
<span v-if="scope.row['pm']>0" style="color: #ff0000;">+{{scope.row[item.key]}}</span>
<span v-else style="color: #00C050;">-{{scope.row[item.key]}}</span>
</div>
<span v-else>{{scope.row[item.key]}}</span>
</template>
</el-table-column>
</template>
</el-table>
<div class="block">
<el-pagination
@ -588,8 +499,8 @@
</div>
</template>
</el-tab-pane>
<el-tab-pane label="浏览足迹" name="footsteps">
<template v-if="activeName == 'footsteps'">
<el-tab-pane label="本票" name="stock">
<template v-if="activeName == 'stock'">
<el-table :data="tableData.data" size="small">
<template>
<el-table-column
@ -599,45 +510,9 @@
:label="item.title"
width="item.minWidth"
>
<template slot-scope="scope">
<div v-if="item.key == 'image'" class="acea-row" style="align-items: center;">
<div class="demo-image__preview">
<el-image v-if="scope.row.spu" :src="scope.row.spu&&scope.row.spu.image" :preview-src-list="[scope.row.spu.image]" />
</div>
<span class="priceBox" style="margin-left: 10px;width: 220px;">{{scope.row.spu&&scope.row.spu.store_name}}</span>
</div>
<span v-else-if="item.key == 'create_time'">{{scope.row[item.key]}}</span>
<span v-else>{{scope.row.spu&&scope.row.spu[item.key]}}</span>
</template>
</el-table-column>
</template>
</el-table>
<div class="block">
<el-pagination
:page-size="tableFrom.limit"
:current-page="tableFrom.page"
layout="prev, pager, next"
:total="tableData.total"
@size-change="handleSizeChange"
@current-change="pageChange"
/>
</div>
</template>
</el-tab-pane>
<el-tab-pane label="推荐人变更记录" name="recommend">
<template v-if="activeName == 'recommend'">
<el-table :data="tableData.data" size="small">
<el-table-column prop="spread.uid" label="上级推荐人ID" min-width="100">
<template slot-scope="scope">
<span>{{(scope.row.spread && scope.row.spread.uid) || '-'}}</span>
</template>
</el-table-column>
<el-table-column prop="spread.nickname" label="上级推荐人昵称" min-width="100">
<template slot-scope="scope">
<span>{{(scope.row.spread && scope.row.spread.nickname) || '用户已注销'}}</span>
</template>
</el-table-column>
<el-table-column prop="create_time" label="绑定时间" min-width="100" />
</el-table>
<div class="block">
<el-pagination
@ -667,7 +542,7 @@
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import { userOrderApi, userDetailApi, userCouponApi, userBillApi,
import { userOrderApi, userDetailApi, userCouponApi, userBillApi,assetsLogList,
modifyUserRefLog, userPointsApi, userSignLogApi, userHistoryApi, memberGrowthLog, userEditApi } from '@/api/user'
import { verifyEmail } from '@/utils/toolsValidate';
export default {
@ -816,23 +691,24 @@ export default {
this.loading = false
})
break
case 'recommend':
modifyUserRefLog(this.uid, this.tableFrom).then(res => {
case 'integral':
let data = {'uid':this.uid,asset_type:1,page:this.tableFrom.page, limit:this.tableFrom.limit}
assetsLogList(data).then(res => {
this.tableData.data = res.data.list
this.tableData.total = res.data.count
this.columns = [
{
title: '上级推荐人ID',
key: 'spread.uid',
title: '分值来源',
key: 'type',
minWidth: 120
},
{
title: '上级推荐人昵称',
key: 'spread.nickname',
title: '变动情况',
key: 'count',
minWidth: 120
},
{
title: '绑定时间',
title: '变动时间',
key: 'create_time',
minWidth: 120
}
@ -842,171 +718,27 @@ export default {
this.loading = false
})
break
case 'signRecord':
userSignLogApi(this.uid, this.tableFrom).then(res => {
this.tableData.data = res.data.list
this.tableData.total = res.data.count
this.columns = [
{
title: '获得积分',
key: 'number',
minWidth: 120
},
{
title: '签到时间',
key: 'create_time',
minWidth: 120
},
{
title: '备注',
key: 'title',
minWidth: 120
},
]
this.loading = false
}).catch(() => {
this.loading = false
})
break
case 'coupon':
userCouponApi(this.uid, this.tableFrom).then(res => {
case 'diamond':
data = {'uid':this.uid,asset_type:2,page:this.tableFrom.page, limit:this.tableFrom.limit}
assetsLogList(data).then(res => {
this.tableData.data = res.data.list
this.tableData.total = res.data.count
this.columns = [
{
title: '优惠券名称',
key: 'coupon_title',
minWidth: 120
},
{
title: '面值',
key: 'coupon_price',
title: '分值来源',
key: 'type',
minWidth: 120
},
{
title: '最低消费额',
key: 'use_min_price',
title: '变动情况',
key: 'count',
minWidth: 120
},
{
title: '兑换时间',
key: 'use_time',
minWidth: 120
}
]
this.loading = false
}).catch(() => {
this.loading = false
})
break
case 'balance':
userBillApi(this.uid, this.tableFrom).then(res => {
this.tableData.data = res.data.list
this.tableData.total = res.data.count
this.columns = [
{
title: '变动金额',
key: 'number',
minWidth: 90
},
{
title: '变动后',
key: 'balance',
minWidth: 90
},
{
title: '类型',
key: 'title',
minWidth: 100
},
{
title: '创建时间',
key: 'create_time',
minWidth: 150
},
{
title: '备注',
key: 'mark',
minWidth: 200
}
]
this.loading = false
}).catch(() => {
this.loading = false
})
break
case 'growth':
this.tableFrom.uid = this.uid
memberGrowthLog(this.tableFrom).then(res => {
this.tableData.data = res.data.list
this.tableData.total = res.data.count
this.columns = [
{
title: '成长值来源',
key: 'title',
minWidth: 90
},
{
title: '成长值变化',
key: 'number',
minWidth: 90
},
{
title: '变化后成长值',
key: 'balance',
minWidth: 100
},
{
title: '日期',
title: '变动时间',
key: 'create_time',
minWidth: 150
},
{
title: '备注',
key: 'mark',
minWidth: 200
}
]
this.loading = false
}).catch(() => {
this.loading = false
})
break
case 'detailed':
userPointsApi(this.uid, this.tableFrom).then(res => {
this.tableData.data = res.data.list
this.tableData.total = res.data.count
this.columns = [
{
title: '来源/用途',
key: 'title',
minWidth: 90
},
{
title: '积分变化',
key: 'number',
minWidth: 90
},
{
title: '状态',
key: 'status',
minWidth: 90
},
{
title: '当前有效积分',
key: 'balance',
minWidth: 100
},
{
title: '日期',
key: 'create_time',
minWidth: 150
},
{
title: '备注',
key: 'mark',
minWidth: 200
minWidth: 120
}
]
this.loading = false
@ -1014,25 +746,27 @@ export default {
this.loading = false
})
break
case 'footsteps':
userHistoryApi(this.uid, this.tableFrom).then(res => {
case 'stock':
data = {'uid':this.uid,asset_type:3,page:this.tableFrom.page, limit:this.tableFrom.limit}
assetsLogList(data).then(res => {
console.log(res);
this.tableData.data = res.data.list
this.tableData.total = res.data.count
this.columns = [
{
title: '商品信息',
key: 'image',
minWidth: 200
title: '分值来源',
key: 'type',
minWidth: 120
},
{
title: '价格',
key: 'price',
minWidth: 50
title: '变动情况',
key: 'count',
minWidth: 120
},
{
title: '浏览时间',
title: '变动时间',
key: 'create_time',
minWidth: 50
minWidth: 120
}
]
this.loading = false

Loading…
Cancel
Save