Aucune description

userInfo.vue 7.9KB

    <template> <div id="userInfo"> <div class="userInfo-title"> <p>用户</p> </div> <div style="margin-top: 15px;"> <el-input placeholder="请输入手机号" v-model="searchContent" @keyup.enter.native="handleSearch" clearable > </el-input> </div> <el-table v-loading="loading" :data="userInfos" border style="width: 100%;" @expand-change="handleExpandChange" > <el-table-column type="expand"> <template slot-scope="props"> <el-form label-position="left" class="demo-table-expand"> <el-form-item label="头像"> <el-avatar shape="square" :size="100" :src="props.row.avatar" ></el-avatar> </el-form-item> <el-form-item label="昵称"> <span>{{ props.row.nickname }}</span> </el-form-item> <el-form-item label="会员等级"> <span>{{ levels[props.row.level] }}</span> </el-form-item> <el-form-item label="性别"> <span>{{ props.row.sex }}</span> </el-form-item> <el-form-item label="电话"> <span>{{ props.row.phone }}</span> </el-form-item> <el-form-item label="位置"> <span>{{ props.row.province }}, {{ props.row.city }}</span> </el-form-item> <el-form-item label="积分"> <span>{{ props.row.integral }}</span> </el-form-item> <el-form-item label="镜头信息" v-if="props.row.level > 0"> <el-table :data="goods"> <el-table-column prop="model_name" label="型号"> </el-table-column> <el-table-column prop="serialNo" label="序列号"> </el-table-column> <el-table-column prop="integral" label="积分"> </el-table-column> <el-table-column prop="dupload" label="重复提交"> <template slot-scope="scope"> <i v-if="scope.row.dupload" class="el-icon-success"></i> <i v-else class="el-icon-error"></i> </template> </el-table-column> <el-table-column prop="distributor_name" label="经销商"> </el-table-column> <el-table-column prop="created_at" label="绑定时间"> </el-table-column> </el-table> </el-form-item> <el-form-item label="会员卡编号"> <span>{{ props.row.membercardid }}</span> </el-form-item> <el-form-item label="用户卡号"> <span>{{ props.row.memberusercardcode }}</span> </el-form-item> </el-form> </template> </el-table-column> <el-table-column prop="user_id" label="用户ID"> </el-table-column> <el-table-column prop="nickname" label="昵称"> </el-table-column> <el-table-column prop="level" label="会员等级"> <template slot-scope="scope"> <span>{{ levels[scope.row.level] }}</span> </template> </el-table-column> <el-table-column prop="integral" label="积分"> <template slot-scope="{ row }"> <template v-if="row.edit"> <el-input v-model="row.title" class="edit-input" size="small" /> <el-button class="cancel-btn" size="small" icon="el-icon-refresh" type="warning" @click="cancelEdit(row)" > 取消 </el-button> </template> <span v-else>{{ row.integral }}</span> </template> </el-table-column> <el-table-column prop="province" label="省份"> </el-table-column> <el-table-column prop="subscribe" label="是否关注公众号"> <template slot-scope="scope"> <i v-if="scope.row.subscribe" class="el-icon-success"></i> <i v-else class="el-icon-error"></i> </template> </el-table-column> <el-table-column prop="created_at" label="注册时间"> </el-table-column> <el-table-column label="操作"> <template slot-scope="scope"> <el-button size="mini" @click="handleEdit(scope.$index)" v-if="!isEditors[scope.$index]" >编辑</el-button > <el-button size="mini" @click="handleSave(scope.$index, scope.row)" v-else >保存</el-button > </template> </el-table-column> </el-table> <el-pagination background @current-change="handleCurrentChange" layout="total, prev, pager, next" :page-size="20" :total="count" class="pagination" > </el-pagination> </div> </template> <script> export default { data() { return { userInfos: [], goods: [], loading: false, count: 0, levels: [ '影友', 'LRC会员', '银卡会员', '金卡会员', '白金卡会员', '黑金卡会员' ], isEditors: [], searchContent: '', isEditor: false, currIndex: 0 } }, created() { var self = this this.$axios .post('admin/userinfo', { page: 1, num: 20 }) .then(function(response) { self.$nextTick(function() { self.userInfos = response.data.data.userinfos self.count = response.data.data.count self.isEditors = new Array(response.data.data.userinfos.length).fill( false ) }) }) }, methods: { handleCurrentChange(index) { this.currIndex = index var self = this this.$axios .post('admin/userinfo', { page: index, num: 20 }) .then(function(response) { self.$nextTick(function() { self.userInfos = response.data.data.userinfos self.count = response.data.data.count self.isEditors = new Array( response.data.data.userinfos.length ).fill(false) }) }) }, handleExpandChange(userInfo, isExpand) { if (isExpand.length === 0) { return } var self = this this.$axios .post('admin/query_usergoods', { user_id: userInfo.user_id }) .then(function(response) { self.$nextTick(function() { self.goods = response.data.data.logs }) }) }, handleSearch(phone) { var self = this this.$axios .post('admin/query_userinfo', { phone: this.searchContent }) .then(function(response) { self.$nextTick(function() { self.userInfos = response.data.data.userinfos self.count = response.data.data.userinfos.length self.isEditors = new Array( response.data.data.userinfos.length ).fill(false) }) }) }, handleEdit(index) { this.$set(this.isEditors, index, true) }, handleSave(index, row) { var self = this this.$set(this.isEditors, index, false) this.$axios .post('admin/userinfo_update', { user_id: row.user_id, integral: row.integral }) .then(function(response) { self.handleCurrentChange(self.currIndex) }) } } } </script> <style lang="scss"> #consumer-table { min-width: 800px; padding: 5px 40px 20px 40px; margin-top: 30px; background-color: #fff; box-shadow: 0 1px 2px rgba(150, 150, 150, 0.3); .consumer-title { margin-bottom: 40px; p { float: left; font-size: 20px; line-height: 20px; } a { float: right; } } .pagination { margin: 40 auto; } } </style>