<template>
|
<div>
|
<el-card shadow="never" style="min-height:650px;">
|
<div v-if="search_visible" id="search" class="search">
|
<el-form ref="form" size="small" :model="searchData" inline>
|
<el-form-item label="姓名">
|
<el-input id="name" v-model="searchData.name" style="width:150px;" placeholder="请输入姓名"></el-input>
|
</el-form-item>
|
<el-form-item label="昵称">
|
<el-input id="nick_name" v-model="searchData.nick_name" style="width:150px;" placeholder="请输入昵称"></el-input>
|
</el-form-item>
|
<el-form-item label="手机号">
|
<el-input id="mobile" v-model="searchData.mobile" style="width:150px;" placeholder="请输入手机号"></el-input>
|
</el-form-item>
|
<el-form-item label="openid">
|
<el-input id="openid" v-model="searchData.openid" style="width:150px;" placeholder="请输入openid"></el-input>
|
</el-form-item>
|
<el-form-item label="union_id">
|
<el-input id="union_id" v-model="searchData.union_id" style="width:150px;" placeholder="请输入union_id"></el-input>
|
</el-form-item>
|
<el-form-item label="调用次数">
|
<el-input id="num" v-model="searchData.num" style="width:150px;" placeholder="请输入调用次数"></el-input>
|
</el-form-item>
|
<el-form-item label="邀请人">
|
<select-page :is_clear="is_clear" url="/admin/Member/getShare_id" :selectval.sync="searchData.share_id"></select-page>
|
</el-form-item>
|
<Search :search_data.sync="searchData" @refesh_list="index"></Search>
|
</el-form>
|
</div>
|
<div class="btn-group" style="margin-top:10px;margin-bottom:10px;">
|
<div>
|
<el-button v-for="item in button_group" v-if="checkPermission(item.access)" :key="item.access" :disabled="$data[item.disabled]" :type="item.color" size="mini" :icon="item.icon" @click="fn(item.clickname)">
|
<span v-if="item.batch" v-text="$data['batchUpdateStatus']?'批量保存':'批量编辑'"></span>
|
<span v-else v-text="item.name"></span>
|
</el-button>
|
</div>
|
<div><TableTool :search_visible.sync="search_visible" @refesh_list="index"></TableTool></div>
|
</div>
|
<el-table :row-class-name="rowClass" @selection-change="selection" @row-click="handleRowClick" row-key="member_id" :header-cell-style="{ background: '#eef1f6', color: '#606266' }" @sort-change='sortChange' v-loading="loading" ref="multipleTable" border class="eltable" :data="list" style="width: 100%">
|
<el-table-column align="center" type="selection" width="42"></el-table-column>
|
<el-table-column align="center" type = '' property="member_id" label="编号" width="70">
|
</el-table-column>
|
<el-table-column align="center" property="name" label="姓名" show-overflow-tooltip width="">
|
</el-table-column>
|
<el-table-column align="center" property="nick_name" label="昵称" show-overflow-tooltip width="">
|
</el-table-column>
|
<el-table-column align="center" property="avatar" label="头像" show-overflow-tooltip width="">
|
<template slot-scope="scope">
|
<div class="demo-image__preview">
|
<el-image v-if="scope.row.avatar" class="table_list_pic" :src="scope.row.avatar" :preview-src-list="[scope.row.avatar]"></el-image>
|
</div>
|
</template>
|
</el-table-column>
|
<el-table-column align="center" property="mobile" label="手机号" show-overflow-tooltip width="">
|
</el-table-column>
|
<el-table-column align="center" property="openid" label="openid" show-overflow-tooltip width="">
|
</el-table-column>
|
<el-table-column align="center" property="union_id" label="union_id" show-overflow-tooltip width="">
|
</el-table-column>
|
<el-table-column align="center" property="create_time" label="创建时间" show-overflow-tooltip width="">
|
<template slot-scope="scope">
|
{{parseTime(scope.row.create_time)}}
|
</template>
|
</el-table-column>
|
<el-table-column align="center" property="ip" label="登录ip" show-overflow-tooltip width="">
|
</el-table-column>
|
<el-table-column align="center" property="num" label="调用次数" show-overflow-tooltip width="">
|
</el-table-column>
|
<el-table-column align="center" property="share_id" label="邀请人" show-overflow-tooltip width="">
|
</el-table-column>
|
<el-table-column :fixed="$store.getters.device == 'mobile'?false:'right'" label="操作" align="center" width="190">
|
<template slot-scope="scope">
|
<div v-if="scope.row.member_id">
|
<el-button size="mini" v-if="checkPermission('/admin/Member/update')" icon="el-icon-edit" type="primary" @click="update(scope.row)" >修改</el-button>
|
<el-button size="mini" v-if="checkPermission('/admin/Member/delete')" icon="el-icon-delete" type="danger" @click="del(scope.row)" >删除</el-button>
|
</div>
|
</template>
|
</el-table-column>
|
</el-table>
|
<Page :total="page_data.total" :page.sync="page_data.page" :limit.sync="page_data.limit" @pagination="index" />
|
</el-card>
|
|
<!--添加-->
|
<Add :show.sync="dialog.addDialogStatus" size="small" @refesh_list="index"></Add>
|
<!--修改-->
|
<Update :info="updateInfo" :show.sync="dialog.updateDialogStatus" size="small" @refesh_list="index"></Update>
|
<!--查看详情-->
|
<Detail :info="detailInfo" :show.sync="dialog.detailDialogStatus" size="small" @refesh_list="index"></Detail>
|
<!--重置密码-->
|
<Resetpwd :info="resetPwdInfo" :show.sync="dialog.resetPwdDialogStatus" size="small" @refesh_list="index"></ResetPwd>
|
|
</div>
|
</template>
|
|
<script>
|
import Search from '@/components/common/Search.vue'
|
import Page from '@/components/common/Page.vue'
|
import TableTool from '@/components/common/TableTool.vue'
|
import SelectPage from '@/components/common/SelectPage.vue'
|
import Add from '@/views/admin/member/add.vue'
|
import Update from '@/views/admin/member/update.vue'
|
import Detail from '@/views/admin/member/detail.vue'
|
import Resetpwd from '@/views/admin/member/resetPwd.vue'
|
export default {
|
components: {
|
Search,
|
Page,
|
TableTool,
|
SelectPage,
|
Add,
|
Update,
|
Detail,
|
Resetpwd,
|
},
|
data: function() {
|
return {
|
dialog: {
|
addDialogStatus : false,
|
updateDialogStatus : false,
|
detailDialogStatus : false,
|
resetPwdDialogStatus : false,
|
},
|
searchData:{},
|
button_group:[
|
{name:'添加',color:'success',access:'/admin/Member/add',icon:'el-icon-plus',disabled:'',clickname:'add'},
|
{name:'修改',color:'primary',access:'/admin/Member/update',icon:'el-icon-edit',disabled:'single',clickname:'update'},
|
{name:'删除',color:'danger',access:'/admin/Member/delete',icon:'el-icon-delete',disabled:'multiple',clickname:'del'},
|
{name:'查看详情',color:'info',access:'/admin/Member/detail',icon:'el-icon-view',disabled:'single',clickname:'detail'},
|
{name:'重置密码',color:'primary',access:'/admin/Member/resetPwd',icon:'el-icon-lock',disabled:'single',clickname:'resetPwd'},
|
],
|
loading: false,
|
page_data: {
|
limit: 20,
|
page: 1,
|
total:20,
|
},
|
order:'',
|
sort:'',
|
ids: [],
|
single:true,
|
multiple:true,
|
search_visible:true,
|
list: [],
|
updateInfo:{},
|
detailInfo:{},
|
resetPwdInfo:{},
|
is_clear:false,
|
}
|
},
|
methods:{
|
index(){
|
let param = {limit:this.page_data.limit,page:this.page_data.page,order:this.order,sort:this.sort}
|
Object.assign(param, this.searchData,this.$route.query)
|
this.loading = true
|
this.$axios.post('/admin/Member/index',param).then(res => {
|
if(res.data.status == 200){
|
this.list = res.data.data.data
|
this.page_data.total = res.data.data.total
|
this.loading = false
|
}else{
|
this.$message.error(res.data.msg);
|
}
|
})
|
},
|
updateExt(row,field){
|
if(row.member_id){
|
this.$axios.post('/admin/Member/updateExt',{member_id:row.member_id,[field]:row[field]}).then(res => {
|
if(res.data.status == 200){
|
this.$message({message: res.data.msg, type: 'success'})
|
}else{
|
this.$message.error(res.data.msg)
|
}
|
})
|
}
|
},
|
add(){
|
this.dialog.addDialogStatus = true
|
},
|
update(row){
|
let id = row.member_id ? row.member_id : this.ids.join(',')
|
this.$axios.post('/admin/Member/getUpdateInfo',{member_id:id}).then(res => {
|
if(res.data.status == 200){
|
this.dialog.updateDialogStatus = true
|
this.updateInfo = res.data.data
|
}else{
|
this.$message.error(res.data.msg)
|
}
|
})
|
},
|
del(row){
|
this.$confirm('确定操作吗?', '提示', {
|
confirmButtonText: '确定',
|
cancelButtonText: '取消',
|
type: 'warning'
|
}).then(() => {
|
let ids = row.member_id ? row.member_id : this.ids.join(',')
|
this.$axios.post('/admin/Member/delete',{member_id:ids}).then(res => {
|
if(res.data.status == 200){
|
this.$message({message: res.data.msg, type: 'success'})
|
this.index()
|
}else{
|
this.$message.error(res.data.msg)
|
}
|
})
|
}).catch(() => {})
|
},
|
detail(row){
|
this.dialog.detailDialogStatus = true
|
this.detailInfo = {member_id:row.member_id ? row.member_id : this.ids.join(',')}
|
},
|
resetPwd(row){
|
this.dialog.resetPwdDialogStatus = true
|
this.resetPwdInfo = {member_id:row.member_id ? row.member_id : this.ids.join(',')}
|
},
|
selection(selection) {
|
this.ids = selection.map(item => item.member_id)
|
this.single = selection.length != 1
|
this.multiple = !selection.length
|
},
|
handleRowClick(row, rowIndex,event){
|
if(event.target.className !== 'el-input__inner'){
|
this.$refs.multipleTable.toggleRowSelection(row)
|
}
|
},
|
rowClass ({ row, rowIndex }) {
|
for(let i=0;i<this.ids.length;i++) {
|
if (row.member_id === this.ids[i]) {
|
return 'rowLight'
|
}
|
}
|
},
|
sortChange(val){
|
if(val.order == 'descending'){
|
this.order= 'desc'
|
}
|
if(val.order == 'ascending'){
|
this.order= 'asc'
|
}
|
this.sort = val.prop
|
this.index()
|
},
|
fn(method){
|
this[method](this.ids)
|
},
|
},
|
mounted(){
|
this.index()
|
},
|
}
|
</script>
|
|
<style lang="scss">
|
@import '@/assets/scss/common.scss'
|
</style>
|