猫眼项目的实现(影院后台):
所用知识:
1.代理服务器
2.三层架构
3.layUI框架
一、首先我们建立两个文件夹
注意:proxy-service为代理服务器,target-service为目标服务器
2.我们在proxy-service文件夹的下面public的mis的modules文件夹中写主要的逻辑。
代码如下:
// 影院模块
export default class Cinema {
constructor() {
this.render();
this.deleteCin();
this.handler();
}
render() {
$("#cinema").html('');
//渲染表格
let template = `
<table id="cinemaInfo" lay-filter="cinemaInfo"></table>
<script type="text/html" id="barDemo">
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
<script type="text/html" id="toolbarDemo">
<div class="layui-inline" style=" margin-left: 222px;">
<button class="layui-btn " lay-event="add">新增</button>
<div class="layui-input-inline" style=" margin-left: 66px;">
<input type="text" name="title" required lay-verify="required" placeholder="请输入查询电影院" autocomplete="off"
class="layui-input" id="search">
</div>
<button type='button' class="layui-btn" data-type="reload" id="looklook">查询</button>
<button type='button' class="layui-btn" data-type="reload" id="return">所有影院</button>
</div>
</script>
`
$("#cinema").html(template);
}
handler() {
$('#cinema').off();
// 渲染
//以下是layUI的操作
layui.use(['table', 'form', 'layer', 'jquery', 'laydate'], function () {
var form = layui.form;
var laydate = layui.laydate;
var table = layui.table;
form.render();
// 判断是第一次刷新还是新增之后的刷新
// if (cinemaToatl) {
// //新增刷新
// cinemaCurrPage = Math.ceil(cinemaToatl / cinemaEachPage);
// }
table.render({
elem: '#cinemaInfo', // 数据渲染的容器
url: '/api/cinemas/some',
method: 'GET',
page: {
limit: 5,
limits: [5, 10, 15, 20],
curr: cinemaCurrPage
}, // 开启分页
toolbar: '#toolbarDemo',//工具栏
response: {
statusName: 'status', //规定数据状态的字段名称,默认:code
statusCode: 200, //规定成功的状态码,默认:0
countName: 'total' //规定数据总数的字段名称,默认:count
},
id: 'cinemaInfo',
cols: [[ // 表头
{
title: 'ID', sort: true, width: 80, type: 'numbers' },
{
field: 'name', title: '影院名称', align: 'center', },
{
field: 'address', title: '影院地址', align: 'center', sort: true },
{
field: 'phone', title: '影院联系方式', align: 'center', },
{
field: 'status', title: '营业状态', align: 'center', sort: true, templet: function (d) {
return d.status ? '营业中' : '未营业';
}
},
{
field: '_id', title: '真实id', align: 'center', hide: true },
{
fixed: 'right', title: '操作', align: 'center', width: 160, toolbar: '#barDemo' },
]],
done: (res, curr, total) => {
cinemaToatl = total;
cinemaEachPage = res.eachPage;
cinemaCurrPage = curr;
}
});
//新增按钮
table.on('toolbar(cinemaInfo)', function (e) {
if (e.event ==