批改状态:合格
老师批语:
<template><div class="container"><div style="text-align: center"><!--<img src="@/assets/logo.jpg" alt="logo" />--><h3>后台管理</h3></div><div class="main"><!-- label-width="auto" 导致ElementPlusError: [ElForm] unexpected width 0 --><el-form :model="form" size="large"><el-form-item prop="account"><el-input v-model="form.account" name="account" class="w-50 m-2" placeholder="请输入账号"><template #prefix><el-icon class="el-input__icon" style="color: #1890ff"><Avatar /></el-icon></template></el-input></el-form-item><el-form-item prop="password"><el-input v-model="form.password" name="password" type="password" class="w-50 m-2" placeholder="请输入密码" show-password><template #prefix><el-icon class="el-input__icon" style="color: #1890ff"><Lock /></el-icon></template></el-input></el-form-item><el-form-item prop="remember"><el-checkbox v-model="form.remember" label="1" size="large">保存账密</el-checkbox></el-form-item><el-form-item><el-button type="primary" style="width: 100%" @click="onSubmit()">登录</el-button></el-form-item></el-form></div></div></template><style>.container {position: relative;width: 100%;min-height: 100%;padding: 110px 0 144px;background-repeat: no-repeat;background-position: center 110px;background-size: 100%;}.main {width: 368px;min-width: 260px;margin: 50px auto;}.el-icon {color: #359eff;}</style><script>import { reactive } from "vue";//import { request } from "../network/request.js";import { login } from "../network/index.js";// 登录成功用路由进行跳转:import { useRouter } from "vue-router";export default {setup() {const form = reactive({account: "123",password: "123",remember: true,});const router = useRouter();const onSubmit = ()=>{login({account : form.account,password : form.password,}).then(res =>{alert(res.data.msg);if(res.data.code == 0){// 跳转到新页面router.push("/Index");}})}return {form,onSubmit};}};</script>
<template><el-container class="layout-container-demo" style="height: 500px"><el-aside width="200px"><el-scrollbar><el-menu :default-openeds="['-1']"><!--二级路由,跳转--><router-link to="/index/home"><el-menu-item index="-1">首页</el-menu-item></router-link><el-sub-menu index="1"><template #title><el-icon><message /></el-icon>系统管理</template><el-menu-item-group><router-link to="/index/menu"><el-menu-item index="1-2">菜单管理</el-menu-item></router-link></el-menu-item-group></el-sub-menu><el-sub-menu index="2"><template #title><el-icon><User /></el-icon>管理员管理</template><el-menu-item-group><router-link to="/index/user"><el-menu-item index="2-1">管理员列表</el-menu-item></router-link><router-link to="/index/group"><el-menu-item index="2-2">管理组列表</el-menu-item></router-link></el-menu-item-group></el-sub-menu><el-sub-menu index="3"><template #title><el-icon><setting /></el-icon>商城相关</template><el-menu-item-group><template #title>商品</template><el-menu-item index="3-1">商品列表</el-menu-item></el-menu-item-group><el-menu-item-group title="订单"><el-menu-item index="3-3">订单列表</el-menu-item></el-menu-item-group><el-menu-item-group title="用户"><el-menu-item index="3-4">用户列表</el-menu-item></el-menu-item-group></el-sub-menu></el-menu></el-scrollbar></el-aside><el-container><el-main><router-view></router-view></el-main></el-container></el-container></template><script>import { defineComponent, ref } from "vue";export default defineComponent({data() {return {collapsed: ref(false),selectedKeys: ref(["1"]),};},});</script><style scoped>.logo {height: 32px;margin: 16px;background: rgba(255, 255, 255, 0.3);}.site-layout .site-layout-background {background: #fff;}[data-theme="dark"] .site-layout .site-layout-background {background: #141414;}.layout-container-demo .el-header {position: relative;background-color: var(--el-color-primary-light-7);color: var(--el-text-color-primary);}.layout-container-demo .el-aside {color: var(--el-text-color-primary);background: var(--el-color-primary-light-8);}.layout-container-demo .el-menu {border-right: none;}.layout-container-demo .el-main {padding: 0;}.layout-container-demo .toolbar {display: inline-flex;align-items: center;justify-content: center;height: 100%;right: 20px;}</style>
import { request } from "./request.js";// 跳转至tp项目文件export function login(data){return request ({url : "Login/index",data})}export function UserLists(data){return request ({url : "Index/UserLists",data})}
<?phpnamespace app\admin\controller;use app\BaseController;use think\facade\Db;class Index extends BaseController{public function index(){return '<style type="text/css">*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} a{color:#2E5CD5;cursor: pointer;text-decoration: none} a:hover{text-decoration:underline; } body{ background: #fff; font-family: "Century Gothic","Microsoft yahei"; color: #333;font-size:18px;} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.6em; font-size: 42px }</style><div style="padding: 24px 48px;"> <h1>:) </h1><p> ThinkPHP V' . \think\facade\App::version() . '<br/><span style="font-size:30px;">16载初心不改 - 你值得信赖的PHP框架</span></p><span style="font-size:25px;">[ V6.0 版本由 <a href="https://www.yisu.com/" target="yisu">亿速云</a> 独家赞助发布 ]</span></div><script type="text/javascript" src="https://e.topthink.com/Public/static/client.js"></script><think id="ee9b1aa918103c4fc"></think>';}// 管理员列表public function UserLists(){$p = input('post.p',1);$search = input('post.search','');// 在查询数出来的时候,// $user = Db::table('xpcms_admin')->select()->toArray();// limit方法、pgae方法// count方法统计数据库有多少条数据$where = [];if(!empty($search)){$where1 = [['username','like','%'.$search.'%']];$where2 = [['real_name','like','%'.$search.'%']];$where3 = [['mobile','like','%'.$search.'%']];$where = [$where1,$where2,$where3];}$count = Db::table('xpcms_admin')->whereOr($where)->count();$user = Db::table('xpcms_admin')->whereOr($where)->page($p,5)->select()->toArray();$arr = ['count' => $count,'user' => $user,];// php接口、只能有一次输出结果值echo json_encode(['code' => 0,'msg' => '成功','data' => $arr]);}public function hello($name = 'ThinkPHP6'){return 'hello,' . $name;}}
<template><div><el-input v-model="data.search" size="small" placeholder="Type to search" /><el-button type="" @click="search()">搜索</el-button><el-table:data="data.table"stripestyle="width: 100%"@select="select"><el-table-column label="选择" type="selection" /><el-table-column prop="id" label="id" /><el-table-column prop="username" label="username" /><el-table-column prop="real_name" label="姓名1" /><el-table-column prop="mobile" label="手机号" /><el-table-column prop="status" label="状态"><!--插槽--><!-- scope 相当于循环里的一次数据foreach ( $data['table] as $v)scope.row 就是相当于是 $v--><template #default="scope"><span>{{ scope.row.status == 0 ? "正常" : "冻结" }}</span></template></el-table-column></el-table><el-paginationlayout="prev,pager,next":total="data.total":page-size="5"@current-change="fun"/><!--total:总条数page-size:一页显示多少条--></div></template><script>import { reactive } from "vue"; // 引入动态创建import { UserLists } from "../network/index";export default{setup () {const data = reactive({table : [],total : 0,});UserLists().then( (e)=>{data.table = e.data.data.user;data.total = e.data.data.count;console.log(data.table);})const select = (selection,row)=>{alert('这是选择事件')console.log(selection);console.log(row);}const fun = (p) => {UserLists({p:p}).then( (e)=>{data.table = e.data.data.user;data.total = e.data.data.count;})// Index.php接收传值}const search = () => {UserLists({search:data.search}).then( (e)=>{data.table = e.data.data.user;data.total = e.data.data.count;})}return {data,select,fun,search,}}}</script>
实际目前只是使用ele写固定栏目,实行二级路由跳转
<router-link to="/index/home"><el-menu-item index="-1">首页</el-menu-item></router-link>

使用ele框架,引入动态创建 import { reactive } from "vue";
// 管理员列表public function UserLists(){// 在查询数出来的时候,$user = Db::table('xpcms_admin')->select()->toArray();echo json_encode(['code' => 0,'msg' => '成功','data' => $user]);}
UserLists().then( (e)=>{data.table = e.data.data.user;})
<el-paginationlayout="prev,pager,next":total="data.total":page-size="5"@current-change="fun"/><!--total:总条数page-size:一页显示多少条-->const fun = (p) => {UserLists({p:p}).then( (e)=>{data.table = e.data.data.user;data.total = e.data.data.count;})// Index.php接收传值}
public function UserLists(){$p = input('post.p',1);// 在查询数出来的时候,// $user = Db::table('xpcms_admin')->select()->toArray();// limit方法、pgae方法// count方法统计数据库有多少条数据$count = Db::table('xpcms_admin')->count();$user = Db::table('xpcms_admin')->page($p,5)->select()->toArray();$arr = ['count' => $count,'user' => $user];// php接口、只能有一次输出结果值echo json_encode(['code' => 0,'msg' => '成功','data' => $arr]);}
public function UserLists(){$p = input('post.p',1);$search = input('post.search','');// 在查询数出来的时候,// $user = Db::table('xpcms_admin')->select()->toArray();// limit方法、pgae方法// count方法统计数据库有多少条数据$where = [];if(!empty($search)){$where1 = [['username','like','%'.$search.'%']];$where2 = [['real_name','like','%'.$search.'%']];$where3 = [['mobile','like','%'.$search.'%']];$where = [$where1,$where2,$where3];}$count = Db::table('xpcms_admin')->whereOr($where)->count();$user = Db::table('xpcms_admin')->whereOr($where)->page($p,5)->select()->toArray();$arr = ['count' => $count,'user' => $user,];// php接口、只能有一次输出结果值echo json_encode(['code' => 0,'msg' => '成功','data' => $arr]);}
const search = () => {UserLists({search:data.search}).then( (e)=>{data.table = e.data.data.user;data.total = e.data.data.count;})}

搜索与一开始读取用户列表,用一个语句,涉及到多个条件查询使用whereOr,若没有输入搜索条件,则全部展示,若输入条件,则判断3个where条件进行查询。分页使用page(data1,data2),data1:第几页;data2:一页显示多少条


Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号