new-admin-view/src/views/user/list/index.vue

1001 lines
35 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">
<el-tabs v-model="user_type" @tab-click="getList(1)">
<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="container">
<el-form inline size="small" :label-position="labelPosition" label-width="100px">
<el-row>
<el-col :xs="24" :sm="24" :md="24" :lg="18" :xl="18">
<el-form-item label="用户昵称:">
<el-input v-model="userFrom.nickname" placeholder="请输入昵称" clearable class="selWidth" />
</el-form-item>
<el-form-item label="手机号:">
<el-input v-model="userFrom.phone" placeholder="请输入手机号" clearable class="selWidth" />
</el-form-item>
<el-form-item label="用户ID">
<el-input v-model="userFrom.uid" placeholder="请输入用户ID" clearable class="selWidth" />
</el-form-item>
</el-col>
<template v-if="collapse">
<el-col :xs="24" :sm="24" :md="24" :lg="18" :xl="18">
<el-col v-bind="grid">
<el-form-item label="用户分组:">
<el-select v-model="userFrom.group_id" placeholder="请选择" class="selWidth" clearable filterable>
<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 v-bind="grid">
<el-form-item label="用户标签:">
<el-select v-model="userFrom.label_id" placeholder="请选择" class="selWidth" clearable filterable>
<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-col v-bind="grid">
<el-form-item label="用户类型:">
<el-select v-model="userFrom.is_svip" placeholder="请选择" class="selWidth" clearable filterable>
<el-option value="" label="全部用户">全部用户</el-option>
<el-option value="0" label="普通用户">普通用户</el-option>
<el-option value="1" label="付费会员">付费会员</el-option>
</el-select>
</el-form-item>
</el-col>
</el-col>
<el-col :xs="24" :sm="24" :md="24" :lg="18" :xl="18">
<el-col v-bind="grid">
<el-form-item label="性别:">
<el-radio-group v-model="userFrom.sex" type="button" class="selWidth">
<el-radio-button label="">
<span>全部</span>
</el-radio-button>
<el-radio-button label="1">
<span>男</span>
</el-radio-button>
<el-radio-button label="2">
<span>女</span>
</el-radio-button>
<el-radio-button label="0">
<span>保密</span>
</el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
<el-col v-bind="grid">
<el-form-item label="身份:">
<el-radio-group v-model="userFrom.is_promoter" type="button" class="selWidth">
<el-radio-button label="">
<span>全部</span>
</el-radio-button>
<el-radio-button label="1">
<span>推广员</span>
</el-radio-button>
<el-radio-button label="0">
<span>普通会员</span>
</el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
</el-col>
<el-col :xs="24" :sm="24" :md="24" :lg="18" :xl="18">
<el-col v-bind="grid">
<el-form-item label="访问情况:">
<el-select v-model="userFrom.user_time_type" placeholder="请选择" class="selWidth" clearable>
<!--<el-option value="visitno" label="时间段未访问" />-->
<el-option value="visit" label="最后访问" />
<el-option value="add_time" label="首次访问" />
</el-select>
</el-form-item>
</el-col>
<el-col v-bind="grid">
<el-form-item label="消费情况:">
<el-select v-model="userFrom.pay_count" placeholder="请选择" class="selWidth" clearable>
<el-option value="-1" label="0次"></el-option>
<el-option value="0" label="1次及以上"></el-option>
<el-option value="1" label="2次及以上"></el-option>
<el-option value="2" label="3次及以上"></el-option>
<el-option value="3" label="4次及以上"></el-option>
<el-option value="4" label="5次及以上"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-col>
<el-col :xs="24" :sm="24" :md="24" :lg="18" :xl="18">
<el-col v-bind="grid">
<el-form-item label="访问时间:" class="timeBox">
<el-date-picker v-model="timeVal" value-format="yyyy/MM/dd" align="right" unlink-panels format="yyyy/MM/dd" size="small" type="daterange" placement="bottom-end" placeholder="自定义时间" class="selWidth" :picker-options="pickerOptions" @change="onchangeTime" />
</el-form-item>
</el-col>
</el-col>
</template>
<el-col :xs="24" :sm="24" :md="24" :lg="6" :xl="6" class="text-right userFrom">
<el-form-item>
<el-button type="primary" icon="ios-search" label="default" class="mr15" size="small" @click="userSearchs">
搜索
</el-button>
<el-button class="ResetSearch mr10" size="small" type="reset" @click="reset('userFrom')">重置
</el-button>
<a class="ivu-ml-8" @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>
</el-col>
</el-row>
</el-form>
</div>
<div class="mb10">
<el-button class="mr10" size="mini" @click="createUser">创建用户</el-button>
<el-button v-show="user_type === 'wechat'" size="mini" class="mr10" @click="sendNews">发送图文消息</el-button>
<el-button v-show="checkedIds.length != 0" size="mini" class="mr10" @click="batchGroup">批量设置分组</el-button>
<el-button v-show="checkedIds.length != 0" size="mini" @click="batchlabel">批量设置标签</el-button>
<el-button type="primary" icon="ios-search" label="default" class="mr15" size="mini" @click="sendCoupon">
发送优惠券
</el-button>
</div>
<el-alert v-if="checkedIds.length>0 || allCheck" :title="allCheck ? `已选择 ${tableData.total} 项` : `已选择 ${checkedIds.length} 项`" type="info" show-icon />
<!-- <el-alert v-if="multipleSelection.length>0" :title="`已选择 ${multipleSelection.length} 项`" type="info" show-icon /> -->
</div>
<el-table v-loading="listLoading" :data="tableData.data" style="width: 100%" size="small" highlight-current-row @selection-change="handleSelectionChange">
<el-table-column type="expand" width="60">
<template slot-scope="props">
<el-form label-position="left" inline class="demo-table-expand">
<el-form-item label="首次访问:">
<span>{{ props.row.create_time }}</span>
</el-form-item>
<el-form-item label="近次访问:">
<span>{{ props.row.last_time }}</span>
</el-form-item>
<el-form-item label="身份证号:">
<span>{{ props.row.card_id }}</span>
</el-form-item>
<el-form-item label="手机号:">
<span>{{ props.row.phone }}</span>
</el-form-item>
<el-form-item label="真实姓名:">
<span>{{ props.row.real_name }}</span>
</el-form-item>
<el-form-item label="标签:">
<span v-for="(item, index) in props.row.label" :key="index" v-text="item" />
</el-form-item>
<el-form-item label="生日:">
<span>{{ props.row.birthday }}</span>
</el-form-item>
<el-form-item label="地址:">
<span>{{ props.row.addres }}</span>
</el-form-item>
<el-form-item label="备注:">
<span>{{ props.row.mark }}</span>
</el-form-item>
</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 label="用户信息" min-width="230" align="center">
<template slot-scope="scope">
<div class="user-content">
<div class="user-avatar">
<el-image calss="avatar" :src="scope.row.avatar ? scope.row.avatar : moren" :preview-src-list="[scope.row.avatar || moren]" />
</div>
<div class="user-info">
<div class="nickname">
<i v-show="scope.row.sex===1" class="el-icon-male mr5" style="font-size: 15px; margin-top: 3px; color:#2db7f5;" />
<i v-show="scope.row.sex===2" class="el-icon-female mr5" style="font-size: 15px; margin-top: 3px; color:#ed4014;" />
{{ scope.row.nickname }}
</div>
<div class="agent-type-text">
<el-tag type="info" effect="dark" size="small">{{ scope.row.uid }}</el-tag>
</div>
</div>
</div>
</template>
</el-table-column>
<el-table-column prop="is_svip" label="付费会员" min-width="80" align="center">
<template slot-scope="{row}">
<span>{{ row.is_svip > 0 ? "是" : "否" }}</span>
</template>
</el-table-column>
<el-table-column prop="phone" label="手机号" min-width="120" align="center"/>
<el-table-column label="等级" min-width="100" align="center">
<template slot-scope="{row}">
<span>{{ row.member ? row.member.brokerage_name : '' }}</span>
</template>
</el-table-column>
<el-table-column label="分组" min-width="100" align="center">
<template slot-scope="{row}">
<span>{{ row.group ? row.group.group_name : '' }}</span>
</template>
</el-table-column>
<el-table-column min-width="140" align="center">
<template slot="header" slot-scope="scope">
推荐人<br />
推荐人UID
</template>
<template slot-scope="{row}">
<div v-if="row.spread">
{{ row.spread.nickname }}<br />
{{ row.spread.uid }}
</div>
</template>
</el-table-column>
<el-table-column min-width="140" align="center">
<template slot="header" slot-scope="scope">
关系绑定状态<br />
预计解绑时间
</template>
<template slot-scope="{row}">
<div v-if="row.spread">
{{ row.is_temporary == 1 ? '临时绑定' : '永久绑定'}}
<br />
{{ row.is_temporary == 1 ? row.spread_limit : '' }}
</div>
</template>
</el-table-column>
<el-table-column label="用户类型" min-width="100" align="center">
<template slot-scope="{row}">
<span v-if="row.user_type === 'routine'">小程序</span>
<span v-else-if="row.user_type === 'wechat'">公众号</span>
<span v-else-if="row.user_type === 'app' || row.user_type === 'App'">App</span>
<span v-else-if="row.user_type === 'pc'">PC</span>
<span v-else>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}" align="center"/>
<el-table-column prop="integral" label="当前可用积分" min-width="100" align="center"/>
<el-table-column label="操作" min-width="130" fixed="right">
<template slot-scope="scope">
<el-button v-if="!scope.row.cancel_time" type="text" size="small" class="mr10" @click="onEdit(scope.row.uid)">
编辑
</el-button>
<el-dropdown>
<span class="el-dropdown-link">
更多<i class="el-icon-arrow-down el-icon--right" />
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item @click.native="onDetails(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="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-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
<div class="block">
<el-pagination :page-sizes="[20, 40, 60, 80]" :page-size="userFrom.limit" :current-page="userFrom.page" layout="total, sizes, prev, pager, next, jumper" :total="tableData.total" @size-change="handleSizeChange" @current-change="pageChange" />
</div>
</el-card>
<el-dialog title="提示" :visible.sync="visible" width="1000px" :before-close="handleClose" class="dia">
<news-category v-if="visible" :is-show-send="isShowSend" :wechat-ids="wechatIds" :user-ids="ids" :max-cols="maxCols" />
<!--<span slot="footer" class="dialog-footer" />-->
</el-dialog>
<!--用户详情-->
<user-detail
@closeDrawer="closeDrawer"
@changeDrawer="changeDrawer"
@onEdit="onEdit"
@setMoney="setMoney"
@changeIntegral="changeIntegral"
@setGroup="setGroup"
@setLabel="setLabel"
@setModify="setModify"
@setPassword="setPassword"
@setMember="setMember"
@giveMember="giveMember"
:drawer="drawer"
:isUser="true"
ref="userDetails"
:cancel-time="cancel_time" />
<!-- 选择优惠券 -->
<el-dialog v-if="visibleCoupon" title="优惠券列表" :visible.sync="visibleCoupon" width="1000px">
<coupon-List v-if="visibleCoupon" ref="couponList" :couponForm="couponForm" :checkedIds="checkedIds" :allCheck="allCheck" :userFrom="userFrom" @sendSuccess="sendSuccess" />
</el-dialog>
</div>
</template>
<script>
import {
userLstApi,
changeGroupApi,
changelabelApi,
changeNowMoneyApi,
changeNowIntegralApi,
batchChangeGroupApi,
batchChangelabelApi,
userUpdateApi,
groupLstApi,
labelLstApi,
modifyUserReferrer,
modifyUserPassword,
changeMemberApi,
createUserApi,
giveMemberApi
} from '@/api/user'
import newsCategory from '@/components/newsCategory/index.vue'
import userDetail from './userDetails'
import couponList from './couponList'
export default {
name: 'UserList',
components: {
newsCategory,
userDetail,
couponList
},
data() {
return {
moren: require("@/assets/images/f.png"),
pickerOptions: {
shortcuts: [{
text: '今天',
onClick(picker) {
const end = new Date()
const start = new Date()
start.setTime(new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate()))
picker.$emit('pick', [start, end])
}
},
{
text: '昨天',
onClick(picker) {
const end = new Date()
const start = new Date()
start.setTime(start.setTime(new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate() - 1)))
end.setTime(end.setTime(new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate())))
picker.$emit('pick', [start, end])
}
},
{
text: '最近7天',
onClick(picker) {
const end = new Date()
const start = new Date()
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
picker.$emit('pick', [start, end])
}
},
{
text: '最近30天',
onClick(picker) {
const end = new Date()
const start = new Date()
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
picker.$emit('pick', [start, end])
}
},
{
text: '本月',
onClick(picker) {
const end = new Date()
const start = new Date()
start.setTime(start.setTime(new Date(new Date().getFullYear(), new Date().getMonth(), 1)))
picker.$emit('pick', [start, end])
}
},
{
text: '本年',
onClick(picker) {
const end = new Date()
const start = new Date()
start.setTime(start.setTime(new Date(new Date().getFullYear(), 0, 1)))
picker.$emit('pick', [start, end])
}
}
]
},
timeVal: [],
collapse: false,
drawer: false,
maxCols: 3,
isShowSend: true,
visible: false,
user_type: '',
tableData: {
data: [],
total: 0
},
uid: "",
listLoading: true,
multipleSelection: [],
ids: '',
wechatIds: '',
uid: '',
labelPosition: 'right',
userProps: {
children: 'children',
label: 'name',
value: 'name'
},
userFrom: {
label_id: '',
user_type: '',
sex: '',
is_promoter: '',
country: '',
pay_count: '',
user_time_type: '',
user_time: '',
nickname: '',
phone: '',
province: '',
city: '',
is_svip: '',
page: 1,
limit: 20,
group_id: ''
},
address: [],
grid: {
xl: 8,
lg: 12,
md: 12,
sm: 24,
xs: 24
},
grid2: {
xl: 18,
lg: 16,
md: 12,
sm: 24,
xs: 24
},
grid3: {
xl: 8,
lg: 12,
md: 12,
sm: 24,
xs: 24
},
addresData: [],
groupList: [],
labelLists: [],
chkName: '',
checkedIds: [], // 订单当前页选中的数据
noChecked: [], // 订单全选状态下当前页不选中的数据
checkedPage: [],
visibleCoupon: false,
couponForm: {
用户标签: '',
用户类型: '',
性别: '',
身份: '',
消费情况: '',
访问情况: '',
访问时间: '',
昵称: ''
},
allCheck: false,
cancel_time: null
}
},
mounted() {
this.groupLists()
this.getTagList()
this.getList('')
},
methods: {
// 用户
onHandle(name) {
this.chkName = this.chkName === name ? '' : name
this.changeType(!(this.chkName === ''))
},
changeType(v) {
if (v) {
if (!this.chkName) {
this.chkName = 'dan'
}
} else {
this.chkName = ''
this.allCheck = false;
}
const index = this.checkedPage.indexOf(this.userFrom.page)
if (this.chkName === 'dan') {
this.checkedPage.push(this.userFrom.page)
} else if (index > -1) {
this.checkedPage.splice(index, 1)
}
this.syncCheckedId()
},
syncCheckedId() {
// const ids = this.tableData.data.map(v => v.uid)
const ids = this.tableData.data.map(v => {
if (!v.cancel_time) {
return v.uid
}
})
if (this.chkName === 'duo') {
this.checkedIds = []
this.allCheck = true;
} else if (this.chkName === 'dan') {
this.allCheck = false;
ids.forEach(id => {
const index = this.checkedIds.indexOf(id)
if (index === -1) {
this.checkedIds.push(id)
}
})
} else {
ids.forEach(id => {
const index = this.checkedIds.indexOf(id)
if (index > -1) {
this.checkedIds.splice(index, 1)
}
})
}
},
// 分开选择
changeOne(v, user) {
if (v) {
if (this.chkName === 'duo') {
const index = this.noChecked.indexOf(user.uid)
if (index > -1) this.noChecked.splice(index, 1)
} else {
const index = this.checkedIds.indexOf(user.uid)
if (index === -1) this.checkedIds.push(user.uid)
}
} else {
if (this.chkName === 'duo') {
const index = this.noChecked.indexOf(user.uid)
if (index === -1) this.noChecked.push(user.uid)
} else {
const index = this.checkedIds.indexOf(user.uid)
if (index > -1) this.checkedIds.splice(index, 1)
}
}
console.log("分开选择", this.checkedIds)
},
// 发送优惠券
sendCoupon() {
if (this.checkedIds.length == 0 && this.allCheck == false) {
this.$message.warning('请选择用户')
} else {
this.visibleCoupon = true;
}
},
sendSuccess() {
this.visibleCoupon = false;
},
getCoupounParmas() {
let label_id = this.userFrom.label_id == '' ? '' : this.getLabelValue(),
user_type = this.findKey(this.userFrom.user_type, {'': '', '微信用户': 'wechat', '小程序用户': 'routine', 'H5用户': 'h5'}),
sex = this.findKey(this.userFrom.sex, {'男': '1', '女': '2', '保密': '0', '': ''}),
pay_count = this.findKey(this.userFrom.sex, {
'0次': '-1',
'1次以上': '0',
'2次以上': '1',
'3次以上': '2',
'4次以上': '3',
'5次以上': '4',
'': ''
}),
is_promoter = this.findKey(this.userFrom.is_promoter, {'推广员': '1', '普通用户': '0', '': ''}),
user_time_type = this.userFrom.user_time_type == 'visit' ? '最后访问' : this.userFrom.user_time_type == 'add_time' ? '首次访问' : ''
this.couponForm = {
用户标签: label_id,
用户类型: user_type,
性别: sex,
消费情况: pay_count,
身份: is_promoter,
访问情况: user_time_type,
访问时间: this.userFrom.user_time,
昵称: this.userFrom.nickname
}
},
findKey(value, data, compare = (a, b) => a === b) {
return Object.keys(data).find(k => compare(data[k], value))
},
getLabelValue() {
let labelName = ''
for (let i = 0; i < this.labelLists.length; i++) {
if (this.labelLists[i]['label_id'] === this.userFrom.label_id) {
labelName = this.labelLists[i]['label_name']
return labelName
}
}
},
// 选择时间
selectChange(tab) {
this.timeVal = []
this.userFrom.user_time = tab
this.getList('')
},
// 具体日期
onchangeTime(e) {
this.timeVal = e
this.userFrom.user_time = e ? this.timeVal.join('-') : ''
},
userSearchs() {
if (this.userFrom.user_time_type && (!this.userFrom.user_time)) {
this.$message.error('请选择访问时间')
} else if (!this.userFrom.user_time_type && (this.userFrom.user_time)) {
this.$message.error('请选择访问情况')
} else {
this.getList(1)
}
},
// 创建用户
createUser() {
this.$modalForm(createUserApi()).then(() => this.getList(''))
},
// 分组列表
groupLists() {
groupLstApi({
page: 1,
limit: 9999
}).then(async res => {
this.groupList = res.data.list
}).catch(res => {
this.$message.error(res.message)
})
},
// 标签列表
getTagList() {
labelLstApi({
page: 1,
limit: 9999
}).then(res => {
this.labelLists = res.data.list
}).catch(res => {
this.$message.error(res.message)
})
},
// 账户详情
onDetails(id) {
this.drawer = true
this.uid = id
this.cancel_time = this.tableData.data.find(item => item.uid === id).cancel_time
this.$refs.userDetails.getData(id);
},
closeDrawer() {
this.drawer = false
},
changeDrawer(v) {
this.drawer = v;
},
sendNews() {
if (this.checkedIds.length === 0 && this.allCheck == false) return this.$message.warning('请先选择用户')
this.visible = true
this.wechatIds = this.getWechatUsers(this.tableData.data, this.checkedIds)
},
handleClose() {
this.visible = false
},
/**获取选中的微信用户Id */
getWechatUsers(arr1, arr2) {
let newArr = [];
if (this.allCheck) {
for (let i = 0; i < arr1.length; i++) {
if (arr1[i]['wechat_user_id']) {
newArr.push(arr1[i]['wechat_user_id']);
}
}
} else {
for (let i = 0; i < arr1.length; i++) {
for (let j = 0; j < arr2.length; j++) {
if (arr1[i]['uid'] === arr2[j] && arr1[i]['wechat_user_id']) {
newArr.push(arr2[j]);
}
}
}
}
return newArr;
},
handleSelectionChange(val) {
this.multipleSelection = val
const data = []
const wechatData = []
this.multipleSelection.map((item) => {
data.push(item.uid)
wechatData.push(item.wechat_user_id)
})
this.ids = data.join(',')
this.wechatIds = wechatData.join(',')
},
// 修改分组
setGroup(row) {
this.$modalForm(changeGroupApi(row.uid)).then(() => this.getList(''))
},
// 批量分组
batchGroup() {
if (this.checkedIds.length === 0) return this.$message.warning('请先选择用户')
this.$modalForm(batchChangeGroupApi({
ids: (this.checkedIds).join(",")
}))
},
// 批量标签
batchlabel() {
if (this.checkedIds.length === 0) return this.$message.warning('请先选择用户')
this.$modalForm(batchChangelabelApi({
ids: (this.checkedIds).join(",")
}))
},
// 修改标签
setLabel(row) {
this.$modalForm(changelabelApi(row.uid)).then(() => this.getList(''))
},
// 编辑会员等级
setMember(row) {
this.$modalForm(changeMemberApi(row.uid)).then(() => this.getList(''))
},
// 赠送付费会员
giveMember(row) {
this.$modalForm(giveMemberApi(row.uid)).then(() => this.getList(''))
},
// 修改推荐人
setModify(row) {
this.$modalForm(modifyUserReferrer(row.uid)).then(({message}) => {
this.getList('');
});
},
// 修改密码
setPassword(row) {
this.$modalForm(modifyUserPassword(row.uid)).then(() => this.getList(''));
},
// 修改余额
setMoney(row) {
this.$modalForm(changeNowMoneyApi(row.uid)).then(() => this.getList(''))
},
// 修改积分余额
changeIntegral(row) {
this.$modalForm(changeNowIntegralApi(row.uid)).then(() => this.getList(''))
},
// 列表
getList(num) {
this.listLoading = true
this.userFrom.page = num ? num : this.userFrom.page;
this.userFrom.user_type = this.user_type
this.userFrom.province = this.address[0]
this.userFrom.city = this.address[1]
if (this.userFrom.user_type === '0') this.userFrom.user_type = ''
userLstApi(this.userFrom).then(res => {
this.tableData.data = res.data.list
this.tableData.total = res.data.count
this.listLoading = false
this.getCoupounParmas();
this.checkedIds = [];
}).catch(res => {
this.listLoading = false
this.$message.error(res.message)
})
},
pageChange(page) {
this.userFrom.page = page
this.getList('')
},
handleSizeChange(val) {
this.userFrom.limit = val
this.getList('')
},
// 编辑
onEdit(id) {
this.$modalForm(userUpdateApi(id)).then(() => this.getList(''))
},
// 重置
reset() {
this.userFrom = {
label_id: '',
user_type: '',
sex: '',
is_promoter: '',
country: '',
pay_count: '',
user_time_type: '',
user_time: '',
nickname: '',
province: '',
city: '',
page: 1,
limit: 20,
group_id: ''
}
this.timeVal = []
this.getList(1)
}
}
}
</script>
<style lang="scss" scoped>
.check {
color: #00a2d4;
}
.selWidth {
// width: 100% !important;
}
.dia {
/deep/ .el-dialog__body {
height: 700px !important;
}
}
.text-right {
text-align: right;
}
.container {
min-width: 821px;
/deep/ .el-form-item {
width: 100%;
}
/deep/ .el-form-item__content {
width: 72%;
}
}
.vipName {
color: #dab176
}
.el-dropdown-link {
cursor: pointer;
color: #409EFF;
font-size: 12px;
}
.el-icon-arrow-down {
font-size: 12px;
}
.demo-table-expand {
font-size: 0;
}
.demo-table-expand label {
width: 90px;
color: #99a9bf;
}
.demo-table-expand .el-form-item {
margin-right: 0;
margin-bottom: 0;
width: 33.33%;
}
/deep/ [type=reset],
[type=submit],
button,
html [type=button] {
-webkit-appearance: none !important;
}
//重写表格部分样式
/deep/ .el-table .cell{
padding: 0!important;
}
/deep/ .el-table .el-table__expand-icon {
width: 50px !important;
height: 50px;
font-size: 30px;
font-weight: bold;
line-height: 50px;
display: inline-flex;
flex-direction: row;
flex-wrap: nowrap;
align-items: center;
justify-content: center;
.el-icon{
position: unset!important;
}
}
.user-content{
--user-content-height-: 80px;
height: var(--user-content-height-);
width: 100%;
display: inline-flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: flex-start;
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;
/deep/ .el-image{
height: 80%!important;
width: 80%!important;
border-radius: 50% !important;
}
}
.user-info{
max-width: calc(100% - var(--user-content-height-));
height: var(--user-content-height-);
display: inline-flex;
flex-direction: column;
flex-wrap: nowrap;
justify-content: center;
align-items: flex-start;
.nickname{
width: 100%;
height: 25px;
line-height: 25px;
text-align: left;
font-size: 15px;
font-weight: bold;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
display: inline-flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: flex-start;
align-items: center;
.user-id{
color: #fff;
background-color: #409eff;
border-color: #409eff;
height: 18px;
line-height: 20px;
font-size: 13px;
padding: 0 5px;
border-radius: 5px;
margin-left: 10px;
width: max-content!important;
}
}
.user-id{
width: 100%;
text-align: left;
font-size: 13px;
line-height: calc(var(--user-content-height- * 35%));
}
}
}
</style>