更新用户状态和删除用户--thinkphp8与uniapp

        先在mysql中创建一张用户表

CREATE TABLE `am8_user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
  `email` varchar(100) DEFAULT NULL,
  `status` int(10) DEFAULT NULL COMMENT '-1:''删除'',0:''禁用'',1:''正常'',2:''待审核''',
  `score` float(5,2) DEFAULT NULL,
  `create_time` datetime DEFAULT NULL,
  `update_time` datetime DEFAULT NULL,
  `login_times` int(11) DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8
        编写用户模型类

<?php

namespace app\mp_toutiao\model;

use think\Model;

class User extends Model {

        public function getStatusTextAttr($value,$data)
    {
        $status = [-1=>'删除',0=>'禁用',1=>'正常',2=>'待审核'];
        return $status[$data['status']];
    }

}

        编写控制器

<?php

namespace app\mp_toutiao\controller;

use app\mp_toutiao\model\User;

class Index {

        public function getUserListForButton()
    {
        $list = User::filter(function($user) {
            $user->status_text  = '';
        })->field('id,name,status')->select();

        
        return mySuccessResponse($list);
    }
    
    public function getUserDetailForButton()
    {
        $list = User::where([
            'id' => request()->param('id')
        ])->find();

        
        return mySuccessResponse($list);  
    }
    
    public function updateUserForButton()
    {
        User::update(['status' => request()->param('status')]
                , ['id' => request()->param('id')]);
        return mySuccessResponse();
    }
    
    public function deleteUserForButton()
    {
        User::destroy(request()->param('id'));
        return mySuccessResponse();
    }

}

        其中getUserListForButton是获取用户列表方法,每个用户只获取id,name,status,status_text这4项。getUserDetailForButton是根据id获取该id所属用户的信息的方法。updateUserForButton是修改用户状态的方法。模型修改数据就save和update静态方法2种,这里用update方法。还有一个批量修改的方法saveAll。deleteUserForButton是根据id删除所属id的用户的方法。模型删除数据方法有2个,一个是delete,一个是静态方法destroy,这里用destroy。

        在common.php文件中新增一个公用方法,封装一个成功时返回的固定数据格式的方法

function mySuccessResponse($data = [])
{
    return json([
        'code' => 1,
        'sub_code' => 0,
        'msg' => '',
        'data' => $data
    ]);
}

        uniapp项目中,在同一目录下新建button.vue和detail.vue2个文件

        在button.vue中编写代码如下

<template>
    <view>
        <view class="user_item" v-for="(item, index) in list" :key="index">
          <view class="content">{{ item.id }},{{item.name}},{{item.status_text}}</view>
          <navigator :url="getDetailUrl(item.id)" hover-class="navigator-hover">
              <button size="mini">详情</button>
          </navigator>
          <button size="mini" @click="delUser(item.id)">删除</button>
        </view>
    </view>
</template>

<script>
    export default {
        data() {
            return {
                list:[],
            }
        },
        onShow()
        {
            this.initUserList();
        },
        methods: {
            initUserList()
            {
                uni.request({
                    url:getApp().globalData.server_url+"index/getUserListForButton",
                    method:"GET",
                    success:(result) => {
                            console.log(result);
                                if (result.data.code === getApp().globalData.my_success_code) {
                                    this.list = result.data.data;
                                } else {
                                    if (result.data.code === getApp().globalData.my_fail_code) {
                                        uni.showModal({
                                            title: '错误',
                                            content: result.data.msg, // 显示后端返回的错误信息
                                            showCancel: false // 不显示取消按钮
                                         });
                                    }
                                }
                        }
                    ,
                    fail:function(error){
                        console.log(error);
                    }
                });
            },
            getDetailUrl(id)
            {
                return "detail?id=" + id;
            },
            delUser(id)
            {
                uni.request({
                    url:getApp().globalData.server_url+"index/deleteUserForButton",
                    method:"POST",
                    data:{
                        id:id,
                    },
                    success:(result) => {
                            console.log(result);
                                if (result.data.code === getApp().globalData.my_success_code) {
                                    // this.list = result.data.data;
                                    this.initUserList();
                                } else {
                                    if (result.data.code === getApp().globalData.my_fail_code) {
                                        uni.showModal({
                                            title: '错误',
                                            content: result.data.msg, // 显示后端返回的错误信息
                                            showCancel: false // 不显示取消按钮
                                         });
                                    }
                                }
                        }
                    ,
                    fail:function(error){
                        console.log(error);
                    }
                });
            }
        },
        
    }
</script>

<style>
    .user_item{
        display: flex;
        
    }
    .user_item .content{
        width:300rpx;
    }
</style>
        在detail.vue中编写代码如下

<template>
    <view>
        <radio-group @change="radioChange">

            <label class="radio_item">
                <radio value="-1" :checked="init_index === -1" />
                <view>删除</view>
            </label>
            <label class="radio_item">
                <radio value="0" :checked="init_index === 0" />
                <view>禁用</view>
            </label>
            <label class="radio_item">
                <radio value="1" :checked="init_index === 1" />
                <view>正常</view>
            </label>
            <label class="radio_item">
                <radio value="2" :checked="init_index === 2" />
                <view>待审核</view>
            </label>

        </radio-group>
        <button size="mini" @click="submit">提交</button>
    </view>
</template>

<script>
    export default {
        data() {
            return {
                init_index:9,
                current_index:0,
                detail_id:0,
            }
        },
        onLoad(option)
        {
            console.log(option.id);
            this.detail_id = option.id;
            uni.request({
                url:getApp().globalData.server_url+"index/getUserDetailForButton",
                method:"GET",
                data:{
                    id:option.id
                },
                success:(result) => {
                        console.log(result);
                            if (result.data.code === getApp().globalData.my_success_code) {
                                this.init_index = result.data.data.status;
                            } else {
                                if (result.data.code === getApp().globalData.my_fail_code) {
                                    uni.showModal({
                                        title: '错误',
                                        content: result.data.msg, // 显示后端返回的错误信息
                                        showCancel: false // 不显示取消按钮
                                     });
                                }
                            }
                    }
                ,
                fail:function(error){
                    console.log(error);
                }
            });
        },
        methods: {
            radioChange: function(evt) {
                // console.log(evt);
                this.current_index = evt.detail.value;
            },
            submit(){
                uni.request({
                    url:getApp().globalData.server_url+"index/updateUserForButton",
                    method:"POST",
                    data:{
                        id:this.detail_id,
                        status:this.current_index
                    },
                    success:(result) => {
                            console.log(result);
                                if (result.data.code === getApp().globalData.my_success_code) {
                                    // this.list = result.data.data;
                                } else {
                                    if (result.data.code === getApp().globalData.my_fail_code) {
                                        uni.showModal({
                                            title: '错误',
                                            content: result.data.msg, // 显示后端返回的错误信息
                                            showCancel: false // 不显示取消按钮
                                         });
                                    }
                                }
                        }
                    ,
                    fail:function(error){
                        console.log(error);
                    }
                });
            }
        }
    }
</script>

<style>
    .radio_item{
        display: flex;
    }
</style>
        运行在H5中效果如下

        运行在抖音小程序效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值