model

model/admin.js
module.exports = app => {
    const mongoose = app.mongoose;
    const Schema = mongoose.Schema;
    var d = new Date();
    const AdminSchema = new Schema({
        username: {
            type: String
        },
        password: {
            type: String
        },
        mobile: {
            type: String
        },
        email: {
            type: String
        },
        status: {
            type: Number,
            default: 1
        },
        role_id: {
            type: Schema.Types.ObjectId
        },
        add_time: {
            type: Number,
            default: d.getTime()
        },
        is_super: {
            type: Number,
            default:0
        }
    });

    return mongoose.model('Admin', AdminSchema, 'admin');
}

router.js

router.js
  router.get('/admin/manager', controller.admin.manager.index);
  router.get('/admin/manager/add', controller.admin.manager.add);
  router.post('/admin/manager/doAdd', controller.admin.manager.doAdd);
  router.get('/admin/manager/edit', controller.admin.manager.edit);
  router.get('/admin/manager/doEdit', controller.admin.manager.doEdit);

增加

controller

controller/admin/manager.js

查找所有的角色数据,新增管理员的时候,选择角色

  async add() {
    //查找所有的角色
    var roelResult = await this.ctx.model.Role.find();
    console.log(roelResult)
    await this.ctx.render('admin/manager/add',{
      roelResult:roelResult
    });
  }

view

admin/manager/add.html
                        <form action="/admin/manager/doAdd" method="post">
                            <ul>
                                    <input type="hidden" name="_csrf" value="<%= csrf %>">
                                <li>  管理员名称: <input type="text" name="username"/></li>
                                <li>  管理员密码: <input type="text" name="password"/></li>
                                <li>  管理员手机号: <input type="text" name="mobile"/></li>
                                <li>  管理员邮箱: <input type="text" name="email"/></li>
                                <li>
                                    管理员角色:
                                    <select name="role_id" id="role_id">
                                        <%for(var i =0;i<roelResult.length;i++ ){%>
                                         <option value="<%= roelResult[i]._id %>"><%= roelResult[i].title %></option>
                                        <%}%>
                                    </select>
                                </li>
                                <li>
                                    <br/>
                                    <button type="submit" class="btn btn-default">提交</button>
                                </li>
                            </ul>
                        </form>

clipboard.png

查找

controller

controller/admin/manager.js
  async index() {
    var result = await this.ctx.model.Admin.aggregate([{
      //关联role表
      $lookup:{
        from:'role',
        localField:'role_id',
        foreignField:'_id',
        as:'role'
      }
    }])
    console.log(JSON.stringify(result))
    await this.ctx.render('admin/manager/index',{
      list:result
    });
  }

view

admin/manager/index.html
                <table class="table table-bordered">
                    <thead>
                        <tr class="th">
                            <th>管理员名称</th>
                            <th>管理员角色</th>
                            <th class="text-center">操作</th>
                        </tr>
                    </thead>
                    <tbody>
                        <%for(var i =0;i<list.length;i++ ){%>
                        <tr>
                            <td>
                                <%= list[i].username%>
                            </td>
                            <td>
                                <%= list[i].role[0].title%>
                            </td>
                            <td class="text-center">修改 删除</td>
                        </tr>
                        <%}%>
                    </tbody>
                </table>

clipboard.png

编辑

controller

判断是否修改了密码

controller/admin/manager.js
  async edit() {
    //获取编辑的数据
    var id = this.ctx.request.query.id;
    var adminResult = await this.ctx.model.Admin.find({"_id":id});
    //获取角色
    var roleResult = await this.ctx.model.Role.find();
    await this.ctx.render('admin/manager/edit',{
      adminResult:adminResult[0],
      roleResult:roleResult
    });
  }
  async doEdit() {
    console.log(this.ctx.request.body)
    var id = this.ctx.request.body.id;
    var password = this.ctx.request.body.password;
    var mobile = this.ctx.request.body.mobile;
    var email = this.ctx.request.body.email;
    var role_id = this.ctx.request.body.role_id;
    
    if(password){ //如果修改了密码
      password = await this.service.tools.md5(password);
      await this.ctx.model.Admin.updateOne({"_id":id},{
        password,
        mobile,
        email,
        role_id
      })
    }else{ //如果没有修改了密码
      await this.ctx.model.Admin.updateOne({"_id":id},{
        mobile,
        email,
        role_id
      })
    }
    await this.success('/admin/manager','编辑管理员成功');
  }

view

select默认选中

    <select name="" id="">
        <option value="0">0</option>
        <option selected value="1">1</option>
        <option value="2">2</option>
    </select>

clipboard.png

默认选中管理员员的角色

admin/manager/edit.html
                        <form action="/admin/manager/doEdit" method="post">
                            <ul>
                                <input type="hidden" name="_csrf" value="<%= csrf %>">
                                <input type="hidden" name="id" value="<%= adminResult._id %>">
                                <li> 管理员名称: <input readonly type="text" name="username" value="<%= adminResult.username %>" /></li>
                                <li> 管理员密码: <input type="text" name="password" /></li>
                                <li> 管理员手机号: <input type="text" name="mobile" value="<%= adminResult.mobile %>" /></li>
                                <li> 管理员邮箱: <input type="text" name="email" value="<%= adminResult.email %>" /></li>
                                <li>
                                    管理员角色:
                                    <select name="role_id" id="role_id">
                                        <%for(var i =0;i<roleResult.length;i++ ){%>
                                        <!-- 选中的角色 -->
                                        <% if(roleResult[i]._id.toString() == adminResult.role_id.toString() ){%>
                                        <option value="<%= roleResult[i]._id %>" selected>
                                            <%= roleResult[i].title %>
                                        </option>
                                        <% }else {%>
                                        <option value="<%= roleResult[i]._id %>">
                                            <%= roleResult[i].title %>
                                        </option>
                                        <% } %>
                                        <%}%>
                                    </select>
                                </li>
                                <li>
                                    <br />
                                    <button type="submit" class="btn btn-default">提交</button>
                                </li>
                            </ul>
                        </form>

clipboard.png

删除

view

admin/manager/index.html
 <a href="/admin/delete?model=Admin&id=<%= list[i]._id %>">删除</a>

渣渣辉
1.3k 声望147 粉丝

引用和评论

0 条评论