[关闭]
@YDS 2017-12-06T14:14:01.000000Z 字数 5896 阅读 305

一级页面功能实现规范1.0

项目相关


多数函数复制代码调用的时候传参就可以实现相应功能,部分函数内部需根据需求相应更改,具体看注释

需要用到的layui模块,大概调用流程,函数在下面详细解释

  1. layui.use(['element','form','table','laypage'], function(){
  2. var element = layui.element;
  3. var form = layui.form;
  4. var YL_table = layui.table;
  5. var YL_laypage = layui.laypage;
  6. form.render();//form渲染
  7. //form.on为下拉框事件,只需要改变('select(你的option值)')
  8. form.on('select(talent)', function(){
  9. //更新表格数据
  10. getPageNum("Talent",YL_table,YL_laypage);
  11. });
  12. //初始化
  13. getPageNum("Talent",YL_table,YL_laypage);
  14. //数据表格操作事件
  15. clickTable(YL_table);
  16. //搜索框事件委派添加
  17. var $ = layui.$, active = {
  18. reload: function(){
  19. var demoReload = $('#demoReload');
  20. // console.log(demoReload.val());
  21. table.reload('testReload', {
  22. where: {
  23. }
  24. });
  25. }
  26. };
  27. $('.demoTable .layui-btn').on('click', function(){
  28. var type = $(this).data('type');
  29. active[type] ? active[type].call(this) : '';
  30. //执行函数
  31. getPageNum("Talent",table,YL_laypage);
  32. });
  33. });

1.初次查询结合联合查找功能,如果不希望采用外部定义filter值可以直接参考ajax请求,但是下面的数据库条数获取请求必须使用外部filter,所以推荐直接使用该方法

函数名:pushFilter(skip)
函数内容:

  1. //没有搜索功能时
  2. var pushFilter = function(skip){
  3. filter = {
  4. "where":{},
  5. "skip": (skip-1)*10,
  6. "limit": 10,
  7. }
  8. return filter;
  9. }
  1. //有搜索条件时
  2. //动态改变查询数据库的filter值
  3. //根据需要更改获取的数值以及if
  4. //skip为filterJSON对象里skip服务,第一次查表置一即可
  5. var pushFilter = function(skip){
  6. var talent = $('#talent').val();
  7. var sate = $('#sate').val();
  8. var demoReload = $('#demoReload').val();
  9. var filter ;
  10. var filterarray = Array();
  11. if(talent && talent!=''){
  12. filterarray.push({"Job":talent});
  13. }
  14. if(sate && sate!=''){
  15. if(sate && sate=='未审核'){
  16. filterarray.push({"Type":0});
  17. }else{
  18. filterarray.push({"Check":sate});
  19. }
  20. }
  21. if(demoReload && demoReload!=''){
  22. filterarray.push({"Name":demoReload});
  23. }
  24. // console.log(JSON.stringify(filterarray));
  25. //下面不需要改动
  26. if(filterarray.length!=0){
  27. filter = {
  28. "where":{"and":filterarray},
  29. "skip": (skip-1)*10,
  30. "limit": 10,
  31. }
  32. }else{
  33. filter = {
  34. "where":{},
  35. "skip": (skip-1)*10,
  36. "limit": 10,
  37. }
  38. }
  39. return filter;
  40. }

配置文件:
使用方法:
注意事项:

2.分页功能

函数名:getPageNum(Class,table,YL_laypage)
函数内容:

  1. //Class:查找数据库表的名称
  2. //table:操作的layui.table数据表
  3. //YL_laypage:操作的layui.laypage分页
  4. var getPageNum = function(Class,table,YL_laypage){
  5. var filter=pushFilter(1);
  6. $.ajax({
  7. "url": "https://d.apicloud.com/mcm/api/"+Class+"/count?filter="+ encodeURIComponent(JSON.stringify(filter)),
  8. "cache": false,
  9. "headers": header,
  10. "type": "GET"
  11. }).success(function (data, status, header) {
  12. //console.log(data.count);
  13. //分页功能,不需要改动
  14. YL_laypage.render({
  15. elem: 'demo7'
  16. ,count: data.count
  17. ,layout: ['count', 'prev', 'page', 'next', 'skip']
  18. ,jump: function(obj){
  19. //点击页数操作,更换数据库查询skip并更新数据库表,如果其他函数配置好了,不出意外这两个函数不用改变
  20. // console.log("obj"+obj.curr);
  21. filter=pushFilter(obj.curr);
  22. getData(Class,table,filter);
  23. }
  24. });
  25. }).fail(function (header, status, errorThrown) {
  26. //fail body
  27. console.log(errorThrown);
  28. });
  29. }

配置文件:
使用方法:
注意事项:

3.数据表格生成功能

函数名:getData(Class,table,filterDB)
函数内容:

  1. //数据库获取函数
  2. //Class:查找数据库表的名称
  3. //table:操作的layui.table数据表
  4. //filterDB:数据库ajax请求的filter
  5. //传参即可不需要改变
  6. var getData = function(Class,table,filterDB){
  7. $.ajax({
  8. "url": "https://d.apicloud.com/mcm/api/"+Class+"?filter="+ encodeURIComponent(JSON.stringify(filterDB)),
  9. "type": "GET",
  10. "headers": header
  11. }).done(function(data, status, header){
  12. //initTableData数据表格渲染函数,如果需要对从数据库返回的data进行修改可以在此处另声明一个变量acdata然后将变量acdata代替data传入,即initTableData(table,acdata);
  13. initTableData(table,data);
  14. }).fail(function(err){
  15. console.log(1);
  16. });
  17. };
  18. //渲染数据表格
  19. //需要自行更改表格数据field其他的不用改变
  20. var initTableData=function(table,detail){
  21. table.render({
  22. elem: '#demo'
  23. ,data: detail
  24. ,cols: [[ //标题栏
  25. {field: 'Num', title: '序号', width: 80,align:'center',}
  26. ,{field: 'Name', title: '姓名', width: 140, align:'center',}
  27. ,{field: 'Job', title: '人才分类', width: 140,align:'center'}
  28. ,{field: 'Check', title: '审核状态', width: 140,align:'center'}
  29. ,{field: 'TracerName', title: '审核人', width: 140,align:'center'}
  30. ,{field: 'updatedAt', title: '更新日期', width: 300,align:'center'}
  31. ,{field:'right', title: '操作', width:137,toolbar:"#barDemo",align:'center'}
  32. ]]
  33. ,skin: 'col' //表格风格
  34. ,even: true
  35. ,page: false //是否显示分页
  36. ,limit:10 //每页默认显示的数量
  37. ,id: 'testReload'
  38. });
  39. }

配置文件:无
使用方法:代码备注中
注意事项:数据表格sort排序慎加

4.select筛选功能

函数名:没有函数

函数内容:
html

  1. <form class="layui-input-inline layui-form">
  2. //区分标识lay-filter需要注意
  3. <select name="quiz2" lay-filter="talent" id="talent">
  4. <option value="">人才分类</option>
  5. <option value="产品">产品</option>
  6. <option value="JAVA">JAVA </option>
  7. <option value="前端">前端</option>
  8. <option value="全栈">全栈</option>
  9. <option value="物联网">物联网</option>
  10. </select>
  11. </form>

js(写在layui.use里)

  1. //form.on为下拉框事件,只需要改变('select(你的option值)')
  2. form.on('select(talent)', function(){
  3. //执行函数,触发分页功能重新查表重新加载数据表,不出意外改一下第一个参数改为你想要搜索的表就行即“Talent”
  4. getPageNum("Talent",YL_table,YL_laypage);
  5. });

配置文件:
使用方法:
注意事项:

5.删除功能

函数名:Delete()

函数内容:

  1. var Delete = function(Class,id){
  2. $.ajax({
  3. "url": "https://d.apicloud.com/mcm/api/"+Class+"/"+id,
  4. "type": "POST",
  5. "cache": false,
  6. "headers": header,
  7. "data": {
  8. "Visible_grade": "1",
  9. "_method": "PUT"
  10. }
  11. }).done(function (data, status, header) {
  12. //success body
  13. console.log('aaa');
  14. getDate();
  15. reloadpage(laypage);
  16. }).fail(function (header, status, errorThrown) {
  17. //fail body
  18. console.log('errer');
  19. })
  20. }

配置文件:无

使用方法:放在需要加删除事件的函数中,Class为所想要发送json请求的表名,id为想要进行删除操作的数据库表内的id。(删除是把表内的Visible_grade值置为1,不是真正的删除,请注意。)

注意事项:Delete()内的getDate()与reloadpage(laypage)是相应的数据表格和分页内容刷新(详情请看1,2),请根据相应业务更改所需的函数操作!!

6.弹出层功能

函数名:无
函数内容:

  • 先声明要弹出元素的变量名;
  • 再初始化变量

配置文件:

  • 先下载layer包(在layui文档弹出层内容中有链接)
  • 再把layer包中的layer文件夹放在asset/js下面
  • 再引layer.js文件(要写在jquery-1.11.3.min.js引用下面,目前自己写功能时需要引用,之后整合完就不用看配置文件这一步了)
    1. <script src="assets/js/layer/layer.js"></script>

使用方法:

  1. var demo1;
  2. demo1 = layer.load(2); //此处为给demo1初始化你想要的弹出层样式
  3. lay.close(demo1); //想关闭这个弹出层就用这个方法随意位置关闭

注意事项:详情可以看我之前的弹出层文档,或直接去layer官网查询。

7.点击跳转页面

函数名:clickTable()
函数内容:
静态代码:
lay-event和obj.event对应

  1. <script type="text/html" id="barDemo">
  2. <a class="layui-btn layui-btn-mini" lay-event="edit">审核</a>
  3. <a class="layui-btn layui-btn-mini" lay-event="delete">删除</a>
  4. </script>

动态代码:

  1. var clickTable=function(table){
  2. table.on('tool(useruv)', function(obj){
  3. var ID = obj.data.id ;
  4. if(obj.event === 'edit'){
  5. }
  6. if(obj.event === 'delete'){
  7. console.log('delete');
  8. }
  9. });
  10. };

配置文件:table为数据表格元素,所以一般把本函数放在数据函数加载完之后调用。
使用方法:按示例中先从一级页面获取要传送内容然后通过location.href传送参数。
注意事项:parseURL方法内参数为location.href。引用时请注意
静态代码里的lay-event与动态代码里的obj.event相对应

8.隔页面传参功能

一级页面跳转页面处的js

  1. window.location.href='页面名?'+"属性="+传参的数值;

二级页面内:
动态代码:

  1. var parseURL = function(loc){
  2. //从父级页面获取传参id
  3. var n1 = loc.length;//地址的总长度
  4. var n2 = loc.indexOf("=");//取得=号的位置
  5. var id = decodeURI(loc.substr(n2+1, n1-n2));//从=号后面的内容
  6. return id;
  7. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注