egg(76)–egg之商品导航curd

效果

model
app/model/nav.js
module.exports = app => {
const mongoose = app.mongoose;
const Schema = mongoose.Schema;
var d=new Date();
const NavSchema = new Schema({
title: { type: String },
link: { type: String },
position: {
type:Number,
default:2 //1最顶部 2中间 3底部
},
is_opennew:{
type:Number,
default:1 //1、本窗口 2、新窗口
},
sort:{
type:Number,
default:100
},
relation:{ // 1,2,3
type:String,
default:”
},
status: { type: Number,default:1 },
add_time: {
type:Number,
default: d.getTime()
}

});

return mongoose.model(‘Nav’, NavSchema,’nav’);
}
router.js
router.get(‘/admin/nav’, controller.admin.nav.index);
router.get(‘/admin/nav/add’, controller.admin.nav.add);
router.get(‘/admin/nav/edit’, controller.admin.nav.edit);
router.post(‘/admin/nav/doEdit’, controller.admin.nav.doEdit);
router.post(‘/admin/nav/doAdd’, controller.admin.nav.doAdd);
controller
app/controller/admin/nav.js
‘use strict’;

var BaseController =require(‘./base.js’);

class NavController extends BaseController {
async index() {

var page=this.ctx.request.query.page || 1;
var pageSize=5;
//获取当前数据表的总数量
var totalNum=await this.ctx.model.Nav.find({}).count();
//分页查询
var result=await this.ctx.model.Nav.find({}).skip((page-1)*pageSize).limit(pageSize);

await this.ctx.render(‘admin/nav/index’,{
list:result,
totalPages:Math.ceil(totalNum/pageSize),
page:page
});

}

async add() {

await this.ctx.render(‘admin/nav/add’);

}

async doAdd() {

// console.log();

var nav=new this.ctx.model.Nav(this.ctx.request.body)

await nav.save(); //注意

await this.success(‘/admin/nav’,’增加导航成功’);

}

async edit() {

var id=this.ctx.query.id;

var result=await this.ctx.model.Nav.find({“_id”:id});

await this.ctx.render(‘admin/nav/edit’,{

list:result[0]
});

}

async doEdit() {

var _id=this.ctx.request.body._id;

await this.ctx.model.Nav.updateOne({“_id”:_id},this.ctx.request.body)
await this.success(‘/admin/nav’,’编辑导航成功’);

}
}

module.exports = NavController;

view
查找
app/view/admin/nav/index.html
<%- include ../public/page_header.html %>

<!– 引入分页插件 –>

<script src=”/public/admin/js/jqPaginator.js”></script>

<div class=”panel panel-default”>
<div class=”panel-heading clear”>
<span>网站导航</span> <a href=”/admin/nav/add” class=”btn btn-primary fr”>增加导航</a>
</div>
<div class=”panel-body”>
<!–
列表展示
–>
<div class=”table-responsive”>
<table class=”table table-bordered”>
<thead>
<tr class=”th”>
<th>分类名称</th>
<th>关联商品</th>
<th>跳转地址</th>
<th>位置</th>
<th class=”text-center”>排序</th>
<th class=”text-center”>状态</th>

<th class=”text-center”>操作</th>
</tr>
</thead>
<tbody>
<%for(var i=0;i<list.length;i++){%>
<tr>
<td><%=list[i].title%></td>

<td><%=list[i].relation%></td>

<td><%=list[i].link%></td>

<td>

<%if(list[i].position==1){%>

顶部

<%}else if(list[i].position==2){%>
中间

<%}else{%>
底部
<%}%>

</td>

<td class=”text-center”><span onclick=”app.editNum(this,’Nav’,’sort’,'<%=list[i]._id%>’)”><%=list[i].sort%></span></td>
<td class=”text-center”>

<%if(list[i].status==1){%>
<img src=”/public/admin/images/yes.gif” onclick=”app.changeStatus(this,’Nav’,’status’,'<%=list[i]._id%>’)” />

<%}else{%>
<img src=”/public/admin/images/no.gif” onclick=”app.changeStatus(this,’Nav’,’status’,'<%=list[i]._id%>’)” />
<%}%>

</td>
<td class=”text-center”> <a href=”/admin/nav/edit?id=<%=list[i]._id%>”>修改</a> <a class=”delete” href=”/admin/delete?model=Nav&id=<%=list[i]._id%>”>删除</a></td>
</tr>

<%}%>

</tbody>
</table>

<div id=”page” class=”pagination fr”></div>
</div>
</div>
</div>

<script>

$(‘#page’).jqPaginator({
totalPages: <%=totalPages%>,
visiblePages: 8,
currentPage: <%=page%>,
onPageChange: function (num, type) {
console.log(‘当前第’ + num + ‘页’,type);

if(type==’change’){

location.href=”/admin/nav?page=”+num;
}
}
});

</script>
</body>
</html>

增加
app/view/admin/nav/add.html
<%- include ../public/page_header.html %>

<div class=”panel panel-default”>
<div class=”panel-heading”>
增加导航
</div>
<div class=”panel-body”>
<div class=”table-responsive input-form”>
<form action=”/admin/nav/doAdd” method=”post” >
<ul class=”form_input”>
<input type=”hidden” name=”_csrf” value=”<%=csrf%>”>
<li> <span>导航名称:</span> <input type=”text” name=”title”/></li>

<li> <span>导航位置: </span>

<select name=”positon” id=”positon”>
<option value=”1″>顶部</option>
<option value=”2″ selected>中间</option>
<option value=”3″>底部</option>
</select>
</li>

<li> <span>关联商品:</span> <input type=”text” name=”relation”/></li>

<li> <span>导航连接地址:</span> <input type=”text” name=”link”/></li>

<li> <span>新窗口打开: </span>
<select name=”is_opennew” id=”is_opennew”>
<option value=”1″>否</option>
<option value=”2″>是</option>
</select>

<li> <span>排序:</span> <input type=”text” name=”sort” value=”10″/></li>

<li> <span>状态: </span> <input type=”radio” name=”status” checked value=”1″ id=”a”/> <label for=”a”>显示</label> <input type=”radio” name=”status” value=”0″ id=”b”/><label for=”b”>隐藏</label>  </li>

<li>
<br/>
<button type=”submit” class=”btn btn-primary”>提交</button>
</li>

</ul>

</form>
</div>
</div>

</div>

</body>
</html>

编辑
app/view/admin/nav/edit.html
<%- include ../public/page_header.html %>

<div class=”panel panel-default”>
<div class=”panel-heading”>
修改导航
</div>
<div class=”panel-body”>
<div class=”table-responsive input-form”>
<form action=”/admin/nav/doEdit” method=”post” >
<ul class=”form_input”>
<input type=”hidden” name=”_csrf” value=”<%=csrf%>”>

<input type=”hidden” name=”_id” value=”<%=list._id%>”/>
<li> <span>导航名称:</span> <input type=”text” name=”title” value=”<%=list.title%>”/></li>

<li> <span>导航位置: </span>

<select name=”position” id=”position”>
<option value=”1″ <%if(list.position==1){%>selected<%}%>>顶部</option>
<option value=”2″ <%if(list.position==2){%>selected<%}%>>中间</option>
<option value=”3″ <%if(list.position==3){%>selected<%}%>>底部</option>
</select>
</li>

<li> <span>关联商品:</span> <input type=”text” name=”relation” value=”<%=list.relation%>”/></li>

<li> <span>导航连接地址:</span> <input type=”text” name=”link” value=”<%=list.link%>”/></li>

<li> <span>新窗口打开: </span>
<select name=”is_opennew” id=”is_opennew”>
<option value=”2″ <%if(list.is_opennew==1){%>selected<%}%>>否</option>
<option value=”1″ <%if(list.is_opennew==2){%>selected<%}%>>是</option>
</select>

<li> <span>排序:</span> <input type=”text” name=”sort” value=”10″ value=”<%=list.sort%>”/></li>

<li> <span>状  态:</span> <input type=”radio” name=”status” <%if(list.status==1){%> checked <%}%> value=”1″ id=”a”/> <label for=”a”>显示</label> <input type=”radio” <%if(list.status==0){%> checked <%}%> name=”status” value=”0″ id=”b”/><label for=”b”>隐藏</label>  </li>

<li>
<br/>
<button type=”submit” class=”btn btn-primary”>提交</button>
</li>

</ul>

</form>
</div>
</div>

</div>

</body>
</html>

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理