说明:

  1. 请大家先行阅读此文,建立demo实验,如有问题请咨询刘勇虎。
  2. 样例:SVN 上html文件: btnPage、temp、jump、model-liuyonnghu、demo-pageControl、demo-resourceSelectTreeNode 文件为对应的使用样例,可参照使用

文件引入规范:

  1. baseSource.js、jquery.js、css样式文件必须在<head>标签中引入,
  2. 目前引入顺序:css文件 -> jquery.js - >baseSource.js

  3. golbalComponent.js 要求在 <body>底部引入
  4. 样例中initjson.js文件目前为自定义文件,即使用中不要使用原文件内容,应于新建,使用相应配置(等项目趋于稳定后我会合并相关文件信息);

SVN使用注意:

  1. 最好不要在public中新建任何文件,如在本地文件夹中已经新建,切勿提交!

组件使用约定:

方法约定:

  1. 本文涉及组件全部应在jquery方法:$(document).ready();方法中调用。标签中引入,

参数约定:

  1. node : ( jquery object) 生成组件的父级标签,它决定了目标组件的位置和默认大小
  2. firstChange :( bool ) 首列是否显示序号
  3. url :( string ) 数据请求连接
  4. type :( string ) 数据请求类型
  5. dataParament :( object ) 数据请求参数
  6. sendKey :( string ) 发送到服务器参数
  7. displayKey :( string ) 显示数据参数
  8. tableName :( string ) 指定组件类型
  9. callback :( function ) 组件回调函数
  10. tableNameInit :( string ) 表格源样式名不可更改
  11. tableTitleInit :(json arrary) 表格标题
  12. tableKeyListInit :(json arrary) 表格标题对应后端返回的Key
  13. activeShowInit:( bool ) 用来标示这个table模板是否存在点击动作。
  14. activeListInit : (json arrary) 用来配置table最后一列的图标和动作。
  15. activeImgInit : (string) 图标的url。
  16. activeDescInit : (string) 点击动作跳转的页面
  17. activeFromInit : ( bool ) 跳转形式
  18. 如:bool = true - > model小窗口,bool = false - >打开新页面

  19. activeValueInit : (json arrary) 页面跳转传参列表。
  20. 如:[“id”,“reqIp”]代表从ajax的返回值中取id和reqIp的值传给跳转的页面。

  21. webUrl : (string) model页面
  22. modelWidth : (int) model页面宽度
  23. modelHeight : (int) model页面高度
  24. title : (string) 组件标题
  25. saveBtn : (bool) 是否含有保存键
  26. scroll : (bool) 组件是否可滑动
  27. displayNumber : (int) 显示按钮数
  28. dataKey : (string) 获取的数据对应key
  29. 用于资源树形选择插件,由开发者自由配置

  30. index :选项下标

组件分类::

一、表格(table)

使用介绍:

  1. 在html文件中引入相应文件后,应完成配置文件initjson.js的新建操作,并引入对应页面。
  2. 目前来说按照需求主要实现了以下下几种表格:

调用方法:

  1. appendTable(node, firstChange, url, type, dataParament, tableName);

配置

  1. 有序号、没有按钮事件的表格
    "Log": { //table标识 "tableNameInit": "Log",//源样式名不可更改 //table标题 "tableTitleInit": ["序号", "创建时间", "参数", "操作IP", "操作人", "标识"], //table标题对应后端返回的Key "tableKeyListInit": ["id", "createTime", "dataText", "reqIp", "userId", "threadId"], //最后一列是否有动作展示 "activeShowInit": false }
  2. 有序号、按钮事件的表格
    "Log1": { "tableNameInit": "Log1", "tableTitleInit": ["序号", "创建时间", "参数", "操作IP", "操作人", "操作"], "tableKeyListInit": ["id", "createTime", "dataText", "reqIp", "userId"], "activeShowInit": true,//是否显示btn "activeListInit": [{ "activeImgInit": "../images/xq1.png", "activeTypeInit": "我是操作1", "activeDescInit": "jumptest.html",//配置的跳转页面 "activeFromInit": true,//弹出|新建 页面 "activeValueInit": ["id", "reqIp"] } }
  3. 有选择框、按钮事件的表格
    "SysOrgPosts": { "tableNameInit": "SysOrgPosts", "valueKeyInit": "postId", "tableTitleInit": [" ", "岗位名称", "岗位下人员", "操作"], "tableKeyListInit": [" ", "postName", "users"], "activeShowInit": true, "activeListInit": [{ "activeImgInit": "../images/xq1.png", "activeTypeInit": "修改", "activeDescInit": "jumptest.html", "activeFromInit": false, "activeValueInit": ["id", "reqIp"] } }
  4. 有文本事件、按钮事件的表格
    "selectTextTable": { "tableNameInit": "selectTextTable", "valueKeyInit": "postId", "tableTitleInit": ["序号", "岗位名称", "岗位下人员", "操作"], "tableKeyListInit": [" ", "postName", "users"], "tableDispalyConfig": [{//表格单元格样式配置 "type": "text",//文本样式 没有点击事件 "actionUrl": "none", "actionType": "none" }, { "type": "button",//按钮样式 有点击事件 "actionUrl": "temp.html",//点击事件调转连接 "actionType": "model"//页面跳转样式配置 model:弹窗 }, { "type": "button",//按钮样式 有点击事件 "actionUrl": "temp.html", "actionType": "_target"//页面跳转样式配置 _target:打开新窗口 }, { "type": "text", "actionUrl": "", "actionType": "" }], "activeShowInit": true, "activeListInit": [{ "activeImgInit": "../images/xq1.png", "activeTypeInit": "修改", "activeDescInit": "jumptest.html", "activeFromInit": false, "activeValueInit": ["id", "reqIp"] }, { "activeImgInit": "../images/xq2.png", "activeTypeInit": "岗位人员管理", "activeDescInit": "jumptest.html", "activeFromInit": false, "activeValueInit": ["createTime", "dataText"] }] },

配置

  1. demo code 存放在btnPage.html、demo-selectTextTable.html页面
    <script type="text/javascript"> $(document).ready(function() { appendTable($("#aDiv"), false, "../model/dataDemo.json", "get", { id: 1 }, "Log1"); appendTable($("#sDiv"), false, "../model/sysOrig.json", "get", { id: 1 }, "SysOrgPosts"); $("#selecteBtn").click(function() { // 回调 $("#fDiv").empty(); $("#fDiv").append($("#sDiv").find(".cellSelected").clone(true)); var pararm = ""; for(var i = 0; i < $("#sDiv").find(".cellSelected").length; i++){ pararm+=","+$("#sDiv").find(".cellSelected").eq(i).data("postId"); } alert(pararm.substr(1)); }); appendTable($("#selectTble"), false, "../model/sysOrig.json", "get", { id: 1 }, "selectTextTable"); $("#fDiv").delegate(".cell", "click", function() { alert(JSON.stringify($(this)) + " " + $(this).attr("class") + " " + $(this).data("postId")); $(this).remove(); }); }); </script>

二、下拉框(addSelectNode)

使用介绍:

  1. 在html文件中引入相应文件后,使用调用方法。。

调用方法:

  1. addSelectNode(node, url, type, dataParament, sendKey, displayKey, callback);
  2. getSelectData(node, index);
  3. 填入参数:
    1. node : ( jquery object) 生成组件的父级标签,它决定了目标组件的位置和默认大小
    2. url :( string ) 数据请求连接
    3. type :( string ) 数据请求类型
    4. dataParament :( object ) 数据请求参数
    5. sendKey :( string ) 发送到服务器参数,与服务器返回参数格式对应
    6. displayKey :( string ) 显示数据参数,与服务器返回参数格式对应
    7. callback :( function ) 组件回调函数
    8. index :选项下标
  4. 配置

    1. demo code 存放在temp.html页面
      <script type="text/javascript"> $(document).ready(function() { //添加下拉框 addSelectNode($("#aDiv"), "../model/selectModels.json", "get", {}, "id", "text", function(result) { alert("sendData :\n\n" + "type = " + typeof(result) + "\njsonText = " + JSON.stringify(result)); }); </script>
    2. 后端返回数据格式约定层级不应改变,标注key不可更改
      { "status":"success", "data":[ { "id":1,//此处 "id" 对应sendykey "text":"选项一"//此处 "text" 对应displaykey }, Object{...}, Object{...}, Object{...}, Object{...} ] }
    3. 获取任意位置的选项数据选项下标:index = 0 - 默认选中项
      //结合SVN中html文件demo-temp.html便于理解 //获取选择框默认值 $("#getSND").click(function() { //方法: getSelectData(node, index) var data = getSelectData($("#aDiv"), 0); alert(JSON.stringify(data)); });

    三、树形下拉选择组件(addSelectTreeNode)

    使用介绍:

    1. 在html文件中引入相应文件后,使用调用方法。

    调用方法:

    1. addSelectTreeNode(node, url, type, dataParament, callback);
    2. 填入参数:
      1. node : ( jquery object) 生成组件的父级标签,它决定了目标组件的位置和默认大小
      2. url :( string ) 数据请求连接
      3. type :( string ) 数据请求类型
      4. dataParament :( object ) 数据请求参数
      5. callback :( function ) 组件回调函数

    配置

    1. demo code 存放在temp.html页面
      <script type="text/javascript"> $(document).ready(function() { //添加树形下拉框 addSelectTreeNode($("#sDiv"), "../model/selectTreeNode.json", "get", {}, function(id) { alert('id =' + id); }); }); </script>

    四、model层(showModelView)

    使用介绍:

    1. 在html文件中引入相应文件后,使用调用方法。。

    调用方法:

    1. showModelView(webUrl, modelWidth, modelHeight, title, saveBtn, scroll);
    2. 填入参数:
      1. webUrl : (string) model页面
      2. modelWidth : (int) model页面宽度
      3. modelHeight : (int) model页面高度
      4. title : (string) 组件标题
      5. saveBtn : (bool) 是否含有保存键
      6. scroll : (bool) 组件是否可滑动

    配置

      使用过程中应在子页面 cHtml 中调用使用script标签,实现childCallBackparentCallBack回调方法,其中:
    1. childCallBack -> 子页面回调方法
    2. parentCallBack -> 父页面回调方法
    3. demo code 存放在jumpTest页面
      <script type="text/javascript"> function childCallBack() { alert("保存时会调用model层的的函数"); } function parentCallBack() { window.parent.hideModelView(true); } </script>

    五、分页插件(appendPageControl)

    使用介绍:

    1. 在html文件中引入相应文件后,使用调用方法。
    2. 使用过程中应注意表格、分页插件、下拉框几种控件间的联动

    调用方法:

    1. appendPageControl(node, url, type, dataParament, displayNumber, callback);
    2. 填入参数:
      1. node : (jquery object) 组件所在父级标签
      2. url :( string ) 数据请求连接
      3. type :( string ) 数据请求类型
      4. dataParament :( object ) 数据请求参数
      5. displayNumber : (int) 显示按钮数
      6. callback : (function) 方法回调

    配置

    1. demo存放在SVN: demo-pageControl.html页面
      <script type="text/javascript"> $(document).ready(function() { //添加表格 appendTable($(".customTable"), false, "../model/dataDemo.json", "get", { id: 1 }, "Log"); var node = $(".pageControl").find(".selectNode"); //添加下拉框 addSelectNode(node, "../model/pageContol.json", "get", {}, "id", "pageNumber", function(result) { alert("sendData :\n\n" + "type = " + typeof(result) + "\njsonText = " + JSON.stringify(result)); }); //添加分页插件 //node, url, type, dataParament, displayNumber, callback appendPageControl($(".pageControl"), "../model/dataDemo.json", "get", { id: 1 }, 5, function(callbackData) { alert("callbackData = " + callbackData); }); }); </script>
    2. 后端返回数据格式约定层级不应改变,标注key不可更改
      { "codeId":1, "message":"success", "data":{ "pageNum":1,//该key不可更改 "pageSize":2, "total":174,//该key不可更改 "pages":87,//该key不可更改 "list":Array[7], "isFirstPage":true, "isLastPage":false } }

    六、资源树形选择控件(appendResurceSelectNode)

    使用介绍:

    1. 在html文件中引入相应文件后,使用调用方法。

    调用方法:

    1. appendResurceSelectNode(node, url, type, dataParament, dataKey);
    2. 填入参数:
      1. node : ( jquery object) 生成组件的父级标签,它决定了目标组件的位置和默认大小
      2. url :( string ) 数据请求连接
      3. type :( string ) 数据请求类型
      4. dataParament :( object ) 数据请求参数
      5. dataKey : (string) 获取的数据对应key
      6. 用于资源树形选择插件,由开发者自由配置

    配置

    1. demo存放在SVN: demo-resourceSelectTreeNode.html页面
      <body> <div id="" style="margin-left: 100px;"> </div> <div id="abtn" style="margin-top: 20px;border: 1px solid dodgerblue;width: 100%;text-align: center;margin-bottom: 50px;cursor: pointer;"> //点击获取页面数据 </div> <script type="text/javascript"> //定义目标node var node = $("body"); $(document).ready(function() { appendResurceSelectNode($(node), '../model/demo-resourceTreeData.json', 'get', {}, 'id'); }); //获取页面参数方法 $("#abtn").click(function() { //存放数据数组 var valueArr = []; $.each($(".selectedSubcells"), function(i) { var tempVlaue = $(".selectedSubcells").eq(i).data("id"); valueArr.push(tempVlaue); }); //数组转字符串 var stringValue = valueArr.toString(); var jsonValue = $(node).find(".selectResourceTreeCell").data("value"); alert("vlaueArrary = " + stringValue + "\n\n jsonString = " + JSON.stringify(jsonValue)); }); </script> </body>
    2. 后端返回数据格式约定层级不应改变,标注key不可更改
      { "codeId":1, "message":"success", "data":{//该key不可更改 "treebo":[//该key不可更改 { "id":1, "parentId":null, "name":"我的工作台",//该key不可更改 "iconPath":"/amidn/img", "path":"/amidn/img", "grade":1,//该key不可更改 "sn":1, "createTime":"2017-08-31 11:36:35", "updateTime":null, "operator":null, "struts":"1",//该key不可更改,选中:"1" 未选:"0" "childOrgs":Array[3] }, Object{...}, Object{...}, Object{...}, Object{...} ], "sysrols":Array[1]//插件绑定数据 } }

全局工具函数:

获取当前页面参数:

  1. GetRequest(key);
  2. 如:页面链接 xxxhtml?key=value

    var value =GetRequest(key);

维护信息:

builder:刘勇虎