栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > Cocos2d-x

04前端WEB编写规范(二)

Cocos2d-x 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

04前端WEB编写规范(二)

4. 通用JS-API

通用JS的使用为 类名.属性,类名.方法,与java对象用法一致。

4.1. 通用操作类commons

页面的通用操作类,包含了增删改查、关闭等事件,具体见以下描述:

4.1.1. 新增 – 跳转页面
commons.addGrid(data,back);

其中data包含如下参数描述:
grid:当前表格的实体对象,如果调用commons.addGrid(data,back)方法没有传回调函数时,会在退出弹出的页面时自动执行grid.load(grid.getLoadParams());(相当于是在弹出的框关闭时,自动刷新本页面的grid的数据),否则执行回调函数;
url:跳转操作的url;
titleName:窗口显示的标题名称;
width,height:填出窗口的宽和高,如果为null,则为系统默认设置大小;
data:传递数据,格式{ action: "add", id:id,level:node.level},action为必填项,会调用弹出页面的SetData(data)方法将其数据传递给新页面;
back:对应页面跳转关闭后的回调函数,子页面调用该回调函数时会传入两个参数action(默认是“close") 和currentWindow(包含了子窗口所有的对象,包括其下的grid等全局变量);。如果不传则自动调用grid.load(grid.getLoadParams())方法来刷新所传入的grid表格的数据;

示例:

//新增操作
function add(){
	var id = getSelectTreeNodeID();
	var node = tree.getSelectedNode();
	var data={
		grid:grid,
		url: "editMenu.action",
		titleName:"添加菜单",
		data: { action: "add", id:id,level:node.level}
	};
	commons.addGrid(data,back);
}
//从弹窗返回后的处理函数(tree重新加载,表格刷新)
function back(action,subWindow){
	//获取在子页面表格选中的行
	let selectedRows = subWindow.grid.getSelecteds();
    //只刷新本页面的表格
	var node =  tree.getSelectedNode();
	tree.load();
	tree.selectNode(node);
}
4.1.2. 普通修改 – 跳转页面

通过唯一字段ID进行条件修改,对于功能模块不复杂的简单业务经常使用。

commons.edit(data,back);

data包含如下参数描述:
grid:当前表格的实体对象,如果调用commons.edit(data,back)方法没有传回调函数时,会在退出弹出的页面时自动执行grid.load(grid.getLoadParams());(相当于是在弹出的框关闭时,自动刷新本页面的grid的数据),否则执行回调函数;
url:跳转操作的url;
titleName:窗口显示的标题名称;
width,height:填出窗口的宽和高,默认都是90%;
id:处理业务的唯一识别字段,一般默认id;
back:对应页面跳转关闭后的回调函数,根据传入的参数提示成功与否,刷新等动作。如果不传则自动调用grid.load(grid.getLoadParams())方法来刷新所传入的grid表格的数据;
示例:

//修改操作
function editRow(id){
	var data = {grid:grid,url:"editMenu.action",titleName:"修改菜单",id:id};
	commons.edit(data,back);
}
4.1.3. 复杂修改 – 跳转页面

当修改的条件还有id之外的字段的时候,允许开发人员自行设置带入的数据信息。

commons.intricateEdit(data,back);

data包含如下参数描述:
grid:当前表格的实体对象,如果调用commons.intricateEdit(data,back)方法没有传回调函数时,会在退出弹出的页面时自动执行grid.load(grid.getLoadParams());(相当于是在弹出的框关闭时,自动刷新本页面的grid的数据),否则执行回调函数;
url:跳转操作的url;
titleName:窗口显示的标题名称;
width,height:填出窗口的宽和高,默认都是90%;
data:复杂页面的修改操作,格式:{action: “edit”,id:id,perid:perid }
back:对应页面跳转关闭后的回调函数,根据传入的参数提示成功与否,刷新等动作。如果不传则自动调用grid.load(grid.getLoadParams())方法来刷新所传入的grid表格的数据;

4.1.4. 查看跳转页面

适用于简单的查看,与commons.edit方法对应,复杂的查看可以使用commons. intricateEdit

commons.view(data,back);

data包含如下参数描述:
grid:当前表格的实体对象,如果调用commons.addGrid(data,back)方法没有传回调函数时,会在退出弹出的页面时自动执行grid.load(grid.getLoadParams());(相当于是在弹出的框关闭时,自动刷新本页面的grid的数据),否则执行回调函数;
url:跳转操作的url;
titleName:窗口显示的标题名称;
width,height:填出窗口的宽和高,默认都是90%;
id:处理业务的唯一识别字段,一般默认id;
back:对应页面跳转关闭后的回调函数,根据传入的参数提示成功与否,刷新等动作。如果不传则自动调用grid.load(grid.getLoadParams())方法来刷新所传入的grid表格的数据;

4.1.5. 删除单行 – 普通表格
commons.del(data,back);

参数描述:
grid:当前表格的实体对象,如果调用commons.del(data,back)方法没有传回调函数时,会在退出弹出的页面时自动执行grid.reload();(相当于是在弹出的框关闭时,自动刷新本页面的grid的数据),否则执行回调函数;
url:跳转操作的url;
id:处理业务的唯一识别字段,一般默认id;
back:对应页面跳转关闭后的回调函数,根据传入的参数提示成功与否,刷新等动作。如果不传则自动调用grid.reload()方法来刷新所传入的grid表格的数据;

4.1.6. 删除单行 – 复杂表格
commons. intricateDel(data,back);
4.1.6.1. 参数描述:

grid:当前表格的实体对象,如果调用commons.addGrid(data,back)方法没有传回调函数时,会在退出弹出的页面时自动执行grid.load(grid.getLoadParams());(相当于是在弹出的框关闭时,自动刷新本页面的grid的数据),否则执行回调函数;
url:跳转操作的url;
key:jsonObject,多个值;例如:{ids:row.id,conId:conId}
back:对应页面跳转关闭后的回调函数,根据传入的参数提示成功与否,刷新等动作。如果不传则自动调用grid.load(grid.getLoadParams())方法来刷新所传入的grid表格的数据;

4.1.7. 删除 – 表格批量
commons.remove(data,back)

参数描述:
grid:当前页面要操作的表格的实体对象,会自动调用grid.getSelecteds()来获得当前表格中已选择的项目并执行删除;如果调用时没有传递back回调方法,则会在退出弹出的页面时自动执行grid.reload()(相当于是在方法执行完毕时,自动刷新本页面的grid的数据),否则执行回调函数;
url:跳转操作的url;

4.1.8. 删除 – 表单中
commons.fromDel(data, back);

参数描述:
id:处理业务的唯一识别字段,一般默认id;
url:跳转操作的url;
back:对应页面跳转关闭后的回调函数,根据传入的参数提示成功与否,刷新等动作;

4.1.9. 保存 – 表格单行(行编辑器模式)

虽然名称是保存单行,且data参数里面也要求传uid但,实际保存的是grid.getChanges()得到的所有发生了改变的行,所以是保存的已变动的所有行。

commons.saveRow(data, back)

参数描述:
grid:表格实体;
form:表格外围包含的form标签对象;(这种行编辑必须在表格外面包含一层form表单,否则无法实现表单验证功能,具体可以参考角色的页面 role_list.jsp,如下是部分代码:


uid:单元格ID号,不是数据的ID;
url:处理业务地址;

4.1.10. 保存 – 单个表单
commons.saveForm(data, back);

参数描述:
form:form表单对象;
url:处理业务地址;
applyOrSave:操作按钮标定,主要区分就是操作完成是否离开页面,可选值 apply 和 save

  • apply:表示操作完成不离开页面,会调用reset(resText)函数;
  • save:表示保存完成离开页面;

如果返回值为-1,则表示验证了重复值,需要调用repeat()处理;

4.1.11. 保存 – 编辑表格形式

保存grid中被修改了的那些行,即grid.getChanges()返回的数据

commons.saveTable(data, back);

参数描述:
grid:表格对象;
url:处理业务地址;
applyOrSave:操作按钮标定,主要区分就是操作完成是否离开页面,可选值apply 和 save

  • apply:表示操作完成不离开页面,并调用 reset(resText)如果有后续处理,请在reset(resText)方法里面定义;
  • save:表示保存完成离开页面;
  • pageSave:表示当前页面的保存操作,保存后不离开当前页面

如果返回值=-1,则表示验证了重复值,需要调用repeat()处理;

4.1.12. 保存 – 多行保存(行编辑器模式)

通过外围包裹的form来执行规则校验,验证通过后调用grid.commitEdit()实现grid的单元格完成编辑模式,即刚点击进入修改状态的单元格,从等待输入状态变成已修改状态,然后保存grid.isChanged()返回的数据

commons. saveRowEditTables (data, back);

参数描述:
grid:表格对象;
url:处理业务地址;
form:表单对象,行编辑器验证的唯一方式,将grid包围起来;
applyOrSave:操作按钮标定,主要区分就是操作完成是否离开页面,可选值 apply 和 save

  • apply:表示操作完成不离开页面,需要调用reset()函数完成后续操作;
  • save:表示保存完成离开页面,保存成功后会调用back(resText),否则调用data.event(resText),否则调用commons.closeWindow(messageText.success)

如果返回值=-1,则表示验证了重复值,需要调用repeat()处理;

4.1.13. 保存 –主从表同步保存
commons.saveFromAddRowEditTables(data)

参数描述:
grid:表格对象;
url:处理业务地址;
tabs:选项卡布局,如果没有可以不写;
form:表单对象,行编辑器验证的唯一方式,将grid包围起来;

gridFrom:字表的from外壳,用于提交验证;
applyOrSave:操作按钮标定,主要区分就是操作完成是否离开页面,可选值 apply 和 save

  • apply:表示操作完成不离开页面,需要调用 reset()函数完成后续操作;
  • save:表示保存完成离开页面;

如果返回值=-1,则表示验证了重复值,需要调用repeat()处理;

4.1.14. 保存 – 单独保存数据

单纯的保存一个数据,没有验证等信息

commons.saveData(data,back)

参数描述:
data:提交的数据;
url:提交处理的Action;
applyOrSave:操作按钮标定,主要区分就是操作完成是否离开页面,可选值 apply 和 save

  • apply:表示操作完成不离开页面,需要调用 reset()函数完成后续操作;
  • save:表示保存完成离开页面;

如果返回值=-1,则表示验证了重复值,需要调用repeat()处理;

4.1.15. 关闭
commons.closeWindow(action)

参数描述:
action:

  • "close",在离开页面前检验form的数据是否被修改,否则直接关闭;
  • "0",表示操作失败,提示错误信息;
  • "1",表示操作成功,提示成功信息;
4.1.16. 回车调用查询(适用于单个查询条件)

按下回车调用查询(适用于多个查询条件)

commons.keyDownEnter(keyInput,queryFunction)

参数描述:
keyInput:查询条件的Id;
queryFunction:调用的查询方法;

4.1.17. 回车调用查询(适用于多个查询条件)

回车调用查询(适用于多个查询条件)

commons.enterFind(queryFunction,name)

示例:

HTML代码,该组查询条件的input的name属性都是persionQueryKey




JS代码:

commons.enterFind(find,"persionQueryKey")

参数描述:
queryFunction:调用的查询方法;
name:设置查询组建所属的name组,不设置默认 name="queryKey"

4.1.18. 设置表单只读
commons.formReadOnly(myform)

参数描述:
myform:要被设置成只读的form表单对象;

4.1.19. 设置表单数据

向指定url发起请求,并将响应数据交给formSetDataSuccess(text,data);来处理

commons.formSetData(data,url)

参数描述:
data:查询到的对象,一般为json格式;var data = { action: "add",id:id};
本操作设置之外还需要特殊设置,需要在当前页面声明函数formSetDataSuccess(text,data);
该函数的参数:

  • Text:从数据库读取的数据,一般为json格式;
  • data:查询到的对象,从前一个页面传递过来的;
4.1.20. 复杂表单设置数据

data参数的格式进行加工在设置,适用于不是单一ID的方法

commons.intricateFormSetData(data,url)

参数描述:
data:查询到的对象,一般为json格式;var data = { action: "add",id:id,orgid:orgid};

注意事项: 一般使用此函数表示,查询的实例无法通过一个ID获取,使用比较少;

4.1.21. 编号验证是否重复(表格中的编辑器)

验证编号是否 重复(表格中的编辑器,id判断重复)

commons.codeRepeat(e,id,url, messageInfo)

示例:

//验证编号不可重复
function onCodeRepeat(e) {
	var row = grid.getSelected();
	var id= row.id;
	commons.codeRepeat(e,id,"proContractcptCodeRepeat.action","编号已存在,请重新输入。");
}

服务器端:返回影响的行数;

4.1.22. 编号验证是否重复(表格中的编辑器—自定义条件)
commons. codeDiyRepeat (e,key,url, messageInfo)

示例:

//验证编号不可重复
function onCodeRepeat(e) {
	var row = grid.getSelected();
	var key=mini.encode({'id':"!"+row.id,'code':e.value});
	commons.codeDiyRepeat(e,key,"getCodeRepeatControlInvestmentsettings.action","编号已存在,请重新设置。");
}

服务器端:返回影响的行数;

4.1.23. 文本框验证重复(表单中的文本框)
commons.repeatJudgment(e,id,url ,messageInfo)

示例:

//编号是否重复
code.on("validation",function(e){
	var id = mini.get("id").value;
	commons.repeatJudgment(e,id,"repeatProjectCode.action" ,"该编号已存在,请重新输入!");
});

参数描述:
e:当前文本框对象;
url:请求action地址;
id:对应当前对象的主键ID;
messageInfo:错误提示消息,可以为null,默认值:您输入的信息已存在,请重新输入!

注意事项: 服务器端:返回影响的行数;

4.1.24. 文本框验证重复(表单中的文本框—自定义条件)
commons.repeatJudgmentMore(e,key,url ,messageInfo)

示例:

//编号是否重复
code.on("validation",function(e){
	var code_txt=e.source.value;
	var id = mini.get("id").value==""?"0":mini.get("id").value;  //不能为空否则会不起作用
	var proId = cookie.get("proId");
	
	var key=[id,code_txt,proId];
	commons.repeatJudgmentMore(e,key,"getContractCodeRepeat.action","该编号已存在,请重新输入!");
});

参数描述:
e:当前文本框对象;
url:请求action地址;
key:查询条件的数组,和后台的条件对应顺序;
messageInfo:错误提示消息,可以为null,默认值:您输入的信息已存在,请重新输入!

注意事项: 服务器端:返回影响的行数;

4.1.25. 获取系统环境配置

根据编号获取系统的参数设置

commons.getSysParameter(code,event)

参数描述:
code:查询的编号;
event:返回参数执行的事件;
示例:

commons.getSysParameter("fileService", function (value) {
	LsySession.setItem("fileService", value);
	fileService = value;
});
4.1.26. 禁止选择当天以后的日期

注意:到2022.4.25时的commons.js里面已经找不到这个方法了

commons.onDrawDate(e)
4.1.27. 功能帮助说明

在html页中的mini-panel中添加ID如下图

在对应JS页面的Init方法中添加

commons.helpBtn("titlePanel");

titlePanel:对应planel的ID;
效果如下:

本功能通过菜单模块维护对应的说明;

4.1.28. 查询条件获取

根据标准查询条件返回一组查询值

commons.getFindKey(key)

参数描述:
key:数组查询对象;
示例:

var key = [
        {id:"key_proId",sim:"C"},
        {id:"key_title",sim:"C",where:"$"},
        {id:"key_status",sim:"C"},
        ];
// 得到的是一个对象,属性是key_后面的值,值是属性对应的页面上的值
key = commons.getFindKey(key);
    	  var json = mini.encode(key);
 		 grid.load({key:json});	

数组其中一个的描述:
{id:"key_title",sim:"C",where:"$"}

  • id:查询组件的ID,以key_开头,后面对应数据库的字段;
  • sim:查询表分缩写,一般在后台用于字符串拼接使用,如果给数据库表设置的缩写则设置;
  • where:查询条件,与查询条件的缩写方法一致。$表示like 不设置表示= ,!表示不等于,详见权

限中相关描述,对应后台的Action的,getwhere方法;

4.1.28.1 日期范围查询
  1. 前端代码添加dateCloumn、startDate、endDate,三个属性。
    dateCloumn:指要对数据库表中的哪一个列进行日期范围的查询
    startDate:开始时间,后端生成语句是>=
    endDate:结束时间,后端是<=
//根据业务在这里设置查询条件查询
var key = [
    {id: "key_proName", where: "$"},
    {id: "key_leaderName", where: "$"},
    // {id:"key_state"},//完善流程后再取消注释
    {id: "key_proType"},
    {id: "key_majorField"}
];
// 首先转成对象
key = commons.getFindKey(key);

let years = mini.get("key_years").getValue();
if (years) {
    let startDate = new Date(years, 0, 1).getTime() / 1000;
    let endDate = new Date(parseInt(years) + 1, 0, 1).getTime() / 1000 - 1;
    //设置开始和结束日期的值,条件限定为包含这两个日期的,即 <= 和 >=
    key['startDate'] = startDate;
    key['endDate'] = endDate;
    //添加dateCloumn属性指定要对数据库表中哪一列进行日期限定查询
    key['dateCloumn'] = "applyDate";
}
  1. 后端代码,需要修改getDataList方法的实现代码如下,中间即为需要修改的部分
public void getDataList() throws Exception {
    Map keys = FastJsonUtil.deCodeMap(key);
    //分页条件,这里要把这三个属性值过滤掉,因为不是这个方法要用的
    String whereSQL = QueryWhere.getWhere(keys, new String[]{"dateCloumn", "startDate", "endDate"});
    //该方法会根据上面的三个属性来生成对应的语句
    String dateSQL = QueryWhere.getStartOrEndTime(keys);
    //进行语句的动态拼接
    whereSQL = !"".equals(whereSQL) ? whereSQL : " WHERe 1=1 ";
    if (!dateSQL.equals("")) {
        whereSQL += " and " + dateSQL;
    }
    //排序
    String orderBy = this.getOrderBy();
    //分页查询
    pageMsgType = scienceApplyEstablishService.getHDataList(tableName, whereSQL, orderBy, pageIndex, pageSize);

    this.setWriter(pageMsgType);
}
4.1.29. 树结构展开保存前的位置

展开保存前的位置 适用于全部加载的菜树

commons.expandTreePath(tree,field,treeFun);

参数描述:
tree:树对象;
field:比较字段,用来找到保存前的位置,一般设置为"id"比较即可。
treeFun:查询的方法,默认 tree.load()
示例:

commons.expandTreePath(tree, "id");
4.1.30. 行编辑器单选框编辑器设置值不选中的补充操作
commons.selectChecked(opt);

参数描述:
opt.name:列的name名字;
opt.row:行数据;
opt.grid:表格对象;
示例:

//启动行编辑
grid.on("update", function (e) {
	for (i = 0; i < grid.data.length; i++) {
		var row = grid.data[i];
		grid.beginEditRow(row);
		selectChecked("yesNo",row);
	}
});
4.1.31. 文件大小的单位转换
commons.getFileChangeSize(value);

参数描述:
value:数值
转换规则:(保留2位小数)
低于1MB,显示 xx KB
低于1T,显示 xx MB
其他显示 xx T
示例:

if (field == "filesize") {
    e.cellHtml = commons.getFileChangeSize(e.value);
}
4.2. 表格类myGrid

表格模板类,用于生成表格和表格相关的设置;

4.2.1. 生成普通表格
myGrid.gridConfig(data,queryFunction)

参数描述:
grid:表格对象;
url:数据请求地址
idField: 唯一主键ID
sortField: 排序字段名称,可以为null
sortOrder: 排序方式,可以为null,正常值 asc desc
columns:列数据设置,格式参考如下
multiSelect:是否多选, true 多选, false 单选 默认多选

queryFunction:查询方法

var grid  = mini.get("gridList");
var colunms = [
	{ type: "checkcolumn" },
	{ field: "name",name: "name",header: "项目名称", width: 100, headerAlign: "center",align:"center",  allowSort: true,editor:editGrid.textbox(true)}
];
var data ={
	grid:grid,
	url:"orgGetDataList.action",
	columns:colunms,
	idField:"id",
	sortField:"orgcode",
	sortOrder:"asc",
	showPager:true,
	multiSelect:true
};
myGrid.gridConfig(data,find);

showPager: 是否显示分页,true 显示 false 不显示

4.2.2. 生成编辑表格
myGrid.gridConfigEditTable(data,queryFunction)

参数描述:
参数同 4.2.1. 生成普通表格

4.2.3. 生成树表

注意事项: 返回值,不需要像grid填写 data 列,否则接收不到数据;

myGrid.treeGridConfig(data,queryFunction)

参数描述:
grid:表格对象;
url:数据请求地址
idField: 唯一主键ID
textField:显示的文本字段
parentField:父节点ID
treeColumn:树和表的关联字段 ,重要,重要,重要
sortField: 排序字段名称,可以为null
sortOrder: 排序方式,可以为null,正常值 asc desc
columns:列数据设置,格式参考如下

var grid = mini.get("gridList");
var colunms = [
	{ type: "checkcolumn" },
	{ field: "sort",name: "sort",header: "排序", width: 60, headerAlign: "center",align:"center",  allowSort: true,visible:false},
	{ field: "name",name: "name",header: "名称", width: 200, headerAlign: "center",align:"left",  allowSort: true},
	{ field: "ischild",name: "ischild",header: "是否子节点", width: 40, headerAlign: "center",align:"center",  allowSort: true,visible:false},
	{ field: "remark",name: "remark",header: "备注", width: 200, headerAlign: "center",align:"center",  allowSort: true,visible:false}
];
var data ={
    grid:grid,
    url:"getDataListPcdWbs.action",
    idField:"id",
    textField:"name",
    parentField:"pid",
    treeColumn:"name",
    sortField:"sort",
    sortOrder:"asc",
    columns:colunms,
    expandOnLoad:true,
    onBeforeTreeLoad:onBeforeTreeLoad
};
myGrid.treeGridConfig(data);
4.2.4. 设置表格中下拉框值对应的文本
gridConfig.setComboxValueText(e,values)

参数描述:
e:对应单元格相应的事件;
values:对应值字段数组;
示例:

//具体下拉框设置的事件(根据字典名称获取)
function onStatusRenderer(e){
	return myGrid.setComboxValueText(e,attributeGroup["yesNo"]);
}
4.3. 通用分页配置类pageParameter

分页通用配置类,该配置服务于表格模板,了解即可。
pageParameter.pageSize:设置每页数量,默认10
pageParameter.sizeList:设置可选每页数量,默认[10,20,50,100,500]

4.4. 超链接类a_btn

按钮生成类,用于生成表格行数据中的a标签的按钮,此方法适用于无需权限控制的页面生成,也可使用buttonsGroup方法实现。

4.4.1. 修改
a_btn.edit(uid,title, colorCss)

对应响应事件:editRow(uid);
示例:

//绑定操作列事件   
function onActionRenderer(e) {
	var grid = e.sender;
	var record = e.record;
	var uid = record._uid;
	//配置获取菜单
	var s=  a_btn.edit(uid,"办理");          
	return s;
}
4.4.2. 删除
a_btn.del(uid,title, colorCss)

对应响应事件:delRow (uid);
示例:

function onActionRenderer(e) {
	var grid = e.sender;
	var record = e.record;
	var uid = record._uid;
	var id = record.id;
	var s =a_btn.del(id,"删除",null);
	return s;
}
4.4.3. 设置
a_btn.setUp(uid,title, colorCss)

对应响应事件:setRow (uid);
示例:

function onGxActionRenderer(e) {
    var record = e.record;
    var s = "";
    if (record.state != -1) {
        s += a_btn.item(e.uid);
    }
    if (record.meteringType == 1) {
        s += a_btn.setUp(e.uid, "查看清单计量", "color_blues");
    }
    return s;
}
4.4.4. 保存
a_btn.save(uid,title, colorCss)

对应响应事件:saveRow (uid);
示例:

//绑定操作列事件
function onActionRenderer(e) {
    var grid = e.sender;
    var record = e.record;
    var uid = record._uid;
    //配置获取菜单
    var s = "";
    if (action != "view") {
        s = a_btn.del(uid);
        s += a_btn.edit(uid);
        if (grid.isEditingRow(record)) {
            s = a_btn.save(uid);
            s += a_btn.reply(uid);
        }
    }

    return s;
}
4.4.5. 打印、报表
a_btn.print(uid,title, colorCss)

对应响应事件:printRow(uid);

4.4.6. 锁定
a_btn.key(uid,title, colorCss)

对应响应事件:keyRow(uid);

4.4.7. 解锁
a_btn.lock(uid,title, colorCss)

对应响应事件:lockRow(uid);

4.4.8. 审批
a_btn.userMd(uid,title, colorCss)

对应响应事件:userMdRow(uid);
示例:

function onActionRenderer(e) {
    var record = e.record;
    var uid = record._uid;
    var rowIndex = e.rowIndex;
    if(record.createUserName && !record.modifyUserName){
        return a_btn.userMd(uid);
    }
}
4.4.9. 上报
a_btn.circleUp(uid,title, colorCss)

对应响应事件:circleUpRow(uid);

4.4.10. 退回
a_btn.circleDown(uid,title, colorCss)

对应响应事件:circleDownRow(uid);

4.4.11. 计算
a_btn.calculator(uid,title, colorCss)

对应响应事件:calculatorRow(uid);

4.4.12. 预览
a_btn.preview(uid,title, colorCss)

对应响应事件:previewRow(uid);

4.4.13. 返回
a_btn.reply(uid,title, colorCss)

对应响应事件:replyRow(uid);

4.4.14. 报表册
a_btn. book (uid,title, colorCss)

对应响应事件:bookRow(uid);

4.4.15. 查询
a_btn.search (uid,title, colorCss)

对应响应事件:searchRow(uid);

参数描述:
uid:行数据唯一ID值;
title:按钮中文名称;
colorCss:按钮颜色css样式,可以为null,当为null时则按照系统默认颜色设置;
示例:

//操作按钮
function myActionRenderer(e) {
    var grid = e.sender;
    var record = e.record;
    var uid = record._uid;
    var id = record.id;
    //配置获取菜单
    var s = a_btn.search(uid, "选择变更令");
    return s;
}
4.5. 下拉框类myCombox 4.5.1. 普通下拉框

通过“通用属性”设置获取下拉框信息;

myCombox.getCombox(data);

data参数描述:
Id:控件ID;
TypeName:通用属性中设置的分类编号;
required:是否必填 false, true;
showNullItem:是否允许空值 false, true;
defaultSelectType:默认值的类型,sys:通用属性设置,find:查询的全部,diy:自定义

  • sys:不设置,并且isFind=false,则默认
  • find:不设置,并且isFind = true,则默认
  • diy:则由调用位置,自行设置属性值;

defultValue:默认值,联合defaultSelectType生效,一般不用设置;
isFind:是否查询的下拉框,默认false; true:增加全部选项,默认选择“全部”,值=-1,查询的时候需要特殊处理一下;

4.5.2. 根据URL获取下拉(合同专用)
myCombox.getUrlCombox(data)

Data参数描述:
url:查询地址;
key:查询参数:格式支持数组、json和字符串,如果需要同一个字段可取多个值请使用{key:"value1,value2,value3"}这种格式;
id: 控件ID;
required:是否必填;
showNullItem:是否允许空项;
textField:文本显示字段;
valueField:值字段;
async:true异步,false 同步,默认true;
isFind:是否是查询模式,默认false,设置true后会添加一个全部选项,值-1;
defaultValue:默认值,获取数据后的默认数据,如果不需要默认值,请显式设置为"";
isDoValueChanged:是否获取数据后激活值变化事件,如果激活会默认选中第一行数据,默认true;
示例:1

myCombox.getUrlCombox({
	id:"selectContract",
	url:"getContractTypeConList.action",
	key: conType.SGHT,required:false,showNullItem:false,textField:"code",
	valueField:"id"
});

示例:2

let unitNaturesArray = [1,2,3];//这三个值代表外部部门
// 意向合作单位下拉框
myCombox.getUrlCombox({
    url: "getDataListScienceUnitInformation.action",
    key: "{unitNature:""+unitNaturesArray.join(",")+""}",// 外部单位
    id: "intentionCompany",//页面元素ID
    defaultValue:"",// 不需要默认值,所以显式声明默认""
    required: false,//是否必需,会影响校验
    textField: "unitName",//会显示在下拉框里面的值
    valueField: "id",//实际会保存到数据库中的值
    async: true,//是否异步
    isFind: false//是否查询字段
});
4.5.3. 根据URL获取下拉框
myCombox. getCustomCombox (data)

data参数描述:
url:查询地址;
key:查询参数:格式支持数组、json和字符串;
id: 控件ID;
required:是否必填;
showNullItem:是否允许空项;
textField:文本显示字段;
valueField:值字段;
async:true异步,false 同步,默认true;
isFind:是否是查询模式,默认false,设置true后会添加一个全部选项,值-1;
defaultValue:默认值,获取数据后的默认数据;
isDoValueChanged:是否获取数据后激活值变化事件,如果激活会默认选中第一行数据,默认true;
示例:

myCombox.getCustomCombox({id:"beamId",url:"getTreeBeamEntity.action",showNullItem:false,
        textField:"beamName",valueField:"id",required:true,});

普通下拉框客户端版

MyCombox.getComboxClient(data)

data参数描述:
id:控件ID;
values:下拉框值数组; 例如:showValues=[{name:"显示",value:1},{ name:"不显示", value:0}];
defultValue:默认值;对应 value字段的值
required:是否必填 false, true;
showNullItem:是否允许空值 false, true;

4.5.4. 简单表格下拉框
myCombox.getComboxGrid(data)

参数描述:
id:控件ID;
data:数据;
columns:表格样式;
textField:文本显示字段;
valueField:值字段;
required:是否必填 false, true;
multiSelect:是否允许多选;
示例:

myCombox.getComboxGrid({
	id:"totalConId",
	values:data,
	columns:columns,
	textField:"name",
	valueField:"id",
	multiSelect:false,
	oncloseclick:function(e){
		e.sender.setValue("");
	}
});
4.5.5. 树结构下拉框
MyCombox.getComboxTrees(data)

参数描述:
id:控件ID;
textField:文本显示字段;
valueField:值字段;
url:对应数据获取的地址;
parentField:父节点字段;
checkRecursive:是否联动选择,选择父节点字段选择子节点;
multiSelect:是否多选;
showFolderCheckBox:是否显示父节点的checkBox;
示例:

//获取组织机构列表
myCombox.getComboxTrees({
    id: "orgid", 
    url: "getProAllOrgList.action", 
    textField: "name", 
    valueField: "id", 
    parentField: "parertId",
    checkRecursive: false, 
    multiSelect: false, 
    showFolderCheckBox: true
});

注意事项: 如果显示的列表不是树形结构,检查parentField字段,是否设置正确;

4.5.6. 获取属性字典中的指定属性的列表(适用于表格中值换成文本的操作)
MyCombox.AttributeValues(typeName)

参数描述:
typeName:对应分类编号;
返回值需要配合setAttributeValues(typeName,values),使用,详见描述
示例:

function init(){
	myCombox.AttributeValues("review_major_type");
	myCombox.AttributeValues("expert_category_type");
	myCombox.AttributeValues("qystatus");
}
//设置下拉框属性函数 
function setAttributeValues(typeName, values) {
    attributeGroup[typeName] = values;
}
//具体下拉框设置的事件(根据字典名称获取)
function onStatusRenderer(e) {
    var typeName = null;
    if (e.field == "reviewMajor") {
        typeName = "review_major_type";
    } else if (e.field == "expertCategory") {
        typeName = "expert_category_type";
    } else if (e.field == "expertState") {
        typeName = "qystatus";
    }
    return myGrid.setComboxValueText(e, attributeGroup[typeName]);
}
4.5.7. 获取属性字典中的指定属性的列表和默认值(适用于编辑表格中的下拉框)

返回属性列表带默认值

myCombox. AttributeValuesAndDefault(typeName)

参数描述:
typeName:对应分类编号;
返回值需要配合setAttributeValues(typeName,values),使用,详见描述
示例:

myCombox.AttributeValuesAndDefault("yesNo");
4.6. 编辑表格类

适用于表格中直接编辑的控件类;用于在grid的配置columns里面的editor属性

4.6.1. 文本框
editGrid.textbox(required, enabled)

参数描述:
required:是否必填;
enabled:是否禁用;
示例:

let cloums = [{
	field: "pro",
	name: "pro",
	header: "",
	headerAlign: "center",
	align: "center",
	editor:editGrid.textbox(false)
}];
var colunms = [
	{ type: "checkcolumn" },
	{ 
		field: "name",name: "name",header: "项目名称", width: 100, headerAlign: "center",align:"center",  allowSort: true,
		editor:editGrid.textbox(true)
	},{ 
		field: "amount",name: "amount",header: "金额", width: 100, headerAlign: "center",align:"center",  allowSort: true,
		editor:editGrid.spinner_blur(true,setAmount,true,_amount,_amountD)
	},{ 
		field: "remark",name: "remark",header: "备注", width: 100, headerAlign: "center",align:"center",  allowSort: true,
		editor:editGrid.textbox(false)
	},{ 
		renderer:"onActionRenderer",header: "操作", width: 120, headerAlign: "center",align:"center" 
	}
];
4.6.2. 失去焦点事件文本框
editGrid.textbox_blur(onBlur,required,enabled)

onBlur:失去焦点的事件;

参数描述:
required:是否必填;
onBlur:失去焦点的判断事件;

4.6.3. 数字框
editGrid.spinner(required ,enabled, format,decimalPlaces)
editGrid.spinner_blur(required,onBlur,enabled, format,decimalPlaces)

参数描述:
onBlur:失去焦点的事件;
required:是否必填;
enabled:是否禁用;
format:格式化字符;例如:format="n2"
decimalPlaces:保存数据的实际精度;例如:decimalPlaces=2
示例:

var columns = [
	{
		field: "wageamount", 
		name: "wageamount", 
		header: "本月工资", 
		width: 100, 
		headerAlign: "center", 
		align: "center", 
		allowSort: true, 
		editor: editGrid.spinner_blur(true,"onWage",true, "n2", 2)
	}
];
4.6.4. 下拉框
editGrid.combobox(values,required)

参数描述:
values:值数组;
required:是否必填;
注意事项:
设置默认值操作,在新增操作的时候进行行数据编辑初始化;
示例:

var columns = [
	{
	     renderer: "onRuleRenderer",
	     field: "rule",
	     name: "rule",
	     header: "修约规则",
	     width: 100,
	     headerAlign: "center",
	     align: "center",
	     allowSort: true,
	     editor: editGrid.combobox(attributeGroup["sys_rule"], true)
	}
];
//具体下拉框设置的事件(根据字典名称获取)
//通过此函数把属性的值翻译成对应的文字名称
function onRuleRenderer(e) {
    return myGrid.setComboxValueText(e, attributeGroup["sys_rule"]);
}
4.6.5. 单选按钮组
editGrid.radioList(values,required)

参数描述:
values:值数组;
required:是否必填;
示例:

var columns = [
	{
		renderer:"onMainworkRenderer",
		field: "mainwork",
		name:"mainwork",
		header: "关键作业", 
		width: 200, 
		headerAlign: "center",t
		ype:"rediocolumn",
		editor:editGrid.radioList(attributeGroup["mainworkType"].values,true)
	}
];
//把属性值翻译回对应的文字名称
function onMainworkRenderer(e){
    return myGrid.setComboxValueText(e,attributeGroup["mainworkType"].values);
}
4.6.6. 日期框
editGrid.dateTime(required)

参数描述:
required:是否必填;
format:日期格式化,默认 2012-12-12
isDefault :true false,是否默认当前日期;
示例:

var columns = [
	{
		field: "createDate",
		name: "createDate",
		header: "更新时间", 
		width: 100, 
		headerAlign: "center",
		align:"center",
		renderer:"myDate.gridLongDateFormat",
		editor:editGrid.dateTime(true)
	}
];
4.6.7. 弹出窗体
editGrid.buttonedit(onbuttonclick,required)

参数描述:
onbuttonclick:弹出窗体的事件;
required:是否必填;
示例:

var columns = [
	{
		field: "btncss",
		header: "按钮样式", 
		width: 100, 
		headerAlign: "center", 
		allowSort: true,
		editor:editGrid.buttonedit(onButtonEdit),
		visible:true
	}
];

未做的控件:数字等,需要的时候在进行扩展

4.7. 消息提醒(废弃)
showTips(message);

参数描述:
Message:

  • messageText.success表示数据提交成功
  • messageText.error 表示数据提交失败
  • messageText.repeat 表示数据重复
  • messageText.repeat2 表示数据重复
    其他文本信息,则按照文本内容提示;
    示例:
//审核
function examineRow(uid) {
    var row = grid.getRowByUID(uid);
    mini.confirm("确认是否提交?", "提示", function (e) {
        if (e == "ok") {
            var key = mini.encode({id: row.id, type: "status", value: "1"});
            commons.myAjax({"url": "updateState"+table+".action", json: {"key": key}}, function (e) {
                myMessage.showTips(e);
                find();
            });
        }
    });
}
4.8. 消息管理myMessage 4.8.1. myMessage.showTips(e)

示例一:简化使用

myMessage.showTips("1"); //简易版调用具体的提示错误信息

e:对应messagesInfo 的数组数字。
示例二:格式化消息提示

var info ={ 
	code:"1",  //消息数组顺序
	parameter:[
		{
			id:0,
			txt:"编号等于:001,",
			color:"red"
		}
	]
};
myMessage.showTips(info)

参数:
消息设置格式如下:

{
	code:15,
	txt:"操作提示:
本期{0},还存在未上报数据,请与相关单位联系!", cssStyle:"danger", timeout:5000 }

code:对应messagesInfo 的数组数字;
parameter:格式化字符串对应的内容,id:是序号,txt:替换文本,color:替换部分显示的颜色;
效果如下:

messagesInfo数组内容如下:

messagesInfo:[
 	{code:0,txt:"操作提示:
数据操作失败!",cssStyle:"danger"}, {code:1,txt:"操作提示:
数据操作成功!",cssStyle:"success"}, {code:2,txt:"友情提醒:
存在相同数据!",cssStyle:"info"}, {code:3,txt:"友情提醒:
项目业主机构已初始化成功!
下一步:请添加流程记录!",cssStyle:"info",timeout:5000}, {code:4,txt:"友情提醒:
流程保存成功!
下一步:请生成配置文件!",cssStyle:"info",timeout:5000}, {code:5,txt:"友情提醒:
配置文件生成成功!
下一步:请重启服务,否则项目报表无法生效!",cssStyle:"info",timeout:5000}, {code:6,txt:"友情提醒:
无法进入项目!
注意:请检查是否已经生成配置文件,并重启服务!",cssStyle:"danger",timeout:5000}, {code:7,txt:"友情提醒:
无法删除!
注意:该级清单或下级清单已经计量,无法删除,请与管理员联系!",cssStyle:"danger",timeout:10000}, {code:8,txt:"操作提示:
锁定成功!",cssStyle:"danger",timeout:3000}, {code:9,txt:"操作提示:
解锁成功!",cssStyle:"info",timeout:3000}, {code:10,txt:"操作提示:
生成合同计量项目出错,请与管理员联系!",cssStyle:"danger",timeout:3000}, {code:11,txt:"操作提示:
生成中期支付证书时出错,请与管理员联系!",cssStyle:"danger",timeout:3000}, {code:12,txt:"操作提示:
生成本期清单汇总时出错,请与管理员联系!",cssStyle:"danger",timeout:3000}, {code:13,txt:"操作提示:
操作成功,可查询相关报表内容!",cssStyle:"info",timeout:3000}, {code:14,txt:"操作提示:
本期合同计量仅允许录入一条,请检查是否已经添加或上报,如有问题请与管理员联系!",cssStyle:"danger",timeout:5000}, {code:15,txt:"操作提示:
本期{0},还存在未上报数据,请与相关单位联系!",cssStyle:"danger",timeout:5000}, {code:16,txt:"操作提示:
不能取消自动计算合同项!",cssStyle:"info",timeout:5000}, {code:17,txt:"操作提示:
重新计算清单累计完成出错,请与管理员联系!",cssStyle:"danger",timeout:5000}, {code:18,txt:"友情提醒:
无法删除!
注意:该期次已经计量,无法删除,请与管理员联系!",cssStyle:"danger",timeout:3000}, {code:19,txt:"友情提醒:
注意:选择完成后,请务必点击生成业务,并重启服务!",cssStyle:"info",timeout:5000}, {code:20,txt:"友情提醒:
注意:请先选择一个节点,在点击“添加下级”按钮!",cssStyle:"danger",timeout:5000}, {code:21,txt:"友情提醒:
流程发布成功!
下一步:请重启服务,否则流程无法使用!",cssStyle:"info",timeout:5000}, {code:22,txt:"友情提醒:
无法删除!
注意:该级分解结构或下级分解结构已经计量,无法删除,请与管理员联系!",cssStyle:"danger",timeout:10000}, {code:23,txt:"友情提醒:
无法删除!
注意:该清单已进行过中间计量,无法删除,请与管理员联系!",cssStyle:"danger",timeout:10000}, {code:24,txt:"友情提醒:
初始化完成!",cssStyle:"info",timeout:10000}, {code:25,txt:"友情提醒:
无法初始化!
注意:工序流程中已存在数据!",cssStyle:"danger",timeout:10000}, {code:26,txt:"友情提醒:
无法初始化!
注意:技术资料中已存在数据!",cssStyle:"danger",timeout:10000}, {code:27,txt:"友情提醒:
当前无可用计量期!
请在项目设置-期次设置中添加计量期或联系系统管理员!",cssStyle:"danger",timeout:10000}, {code:28,txt:"操作提示:
材料价差计量每期仅允许录入一条,请检查是否已经添加或上报,如有问题请与管理员联系!",cssStyle:"danger",timeout:5000}, {code:29,txt:"操作提示:
年计划一年只允许新增一次,如有问题请与管理员联系!",cssStyle:"danger",timeout:5000}, {code:30,txt:"友情提醒:
无法初始化!
注意:该项目中已存在科目数据!",cssStyle:"danger",timeout:10000}, ]
4.8.2. 简化的其他方法

错误消息

myMessage.errTips("初始化流程信息失败,请重新尝试后联系管理员");

成功消息

myMessage. successTips ("保存成功!");

普通消息

myMessage. tips ("请按照步骤一步步操作!");
4.9. 计算公式类 4.9.1. 求和
Calculator.sum(eIdName,arrayIdNames,jd);

参数描述:
eIdName:求和结果赋值字段ID;
arrayIdNames:被计算的控件ID列表,即要加起来的所有的控件的ID
注意事项: 要的是控件的ID名称,不是name名称;
示例:

//计算公式
function reckonEstimate(){
	var idNames=["provinceinvest","centreinvest"];
	Calculator.sum("estimate",idNames);
}
4.9.2. 求乘 4.9.3. 按照项目要求设置保留精度,表单下的方式

将当前项目设置的单价、数量、金额保留小数位数设置到形参的各对应的数据组各个元素的属性上,cookie在登录的时候进行了设置,如果获取不到会进入数据库中查询,解决cookie被禁用的问题。

//设置页面中的单价、金额、数量按照项目设置控制
myProject.setAccuracy(priceGroup,countGroup,amountGroup);

示例:

myProject.getInfo();
var priceGroup=["price","verprice","bidprice"]; //单价控件的ID数组
var countGroup =["count","comcount","comaltercount","comallcount","bidcount","vercount"];//数量
var amountGroup=["amount","sumamount","veramount","bidamount"];//金额
var data ={priceGroup:priceGroup,countGroup:countGroup,amountGroup:amountGroup};
//设置函数		
myProject.setAccuracy(data);
4.9.4. 按照项目要求设置保留精度,表格下的方式
//获取当前项目的小数点精度
myProject.getInfo();
myProject.Price //单价
myProject.count //数量
myProject.amount  //金额

生成表格的colunms时,直接赋值这个变量即可;(详见中间计量单明细的方法)(红色标注的地方就是这个变量)

var _countD = myProject.count;
var _count = "n"+myProject.count;

{
    field: “meCount”,
    name:“meCount”,
    header: “清单数量”,
    width: 80,
    headerAlign: “center”,
    align:“center”,
    editor:editGrid.spinner_blur(true,setPeriodAmount,true,_count,_countD)
},{
    field: “meAlertamount”,
    name:“meAlertamount”,
    header: “变更数量”,
    width: 80,
    headerAlign: “center”,
    align:“center” ,
    numberFormat:_count,
    editor:editGrid.spinner_blur(true,setPeriodAmount,true,_count,_countD)
}

4.9.5. 日期类
myDate.addDate(dateTime,date); //在日期的基础上追加天数
myDate.addMonth(dateTime,month); //在日期的基础上追加月数
myDate.addYear(dateTime,year); //在日期的基础上追加年数
myDate.replaceDate(dateTime,date); //替换日期的:天
myDate.replaceMonth(dateTime,month); //替换日期的:月
myDate.getMonthDate(dateTime);//返回当前月有多少天

Date.Format(formatStr);格式化日期
参数描述:
dateTime:日期类型数据
date、month、year:日、月、年,整数
formatStr:格式化的字符串,例如yyyy-MM-dd
这个方法是后面绑到Date.prototype上的

//格式化日期
Date.prototype.Format = function(formatStr)
{
    var str = formatStr;
    var Week = ['日','一','二','三','四','五','六'];

    str=str.replace(/yyyy|YYYY/,this.getFullYear());
    str=str.replace(/yy|YY/,(this.getYear() % 100)>9?(this.getYear() % 100).toString():'0' + (this.getYear() % 100));
    var  month =parseInt( this.getMonth())+1;

    str=str.replace(/MM/,month>9?month:'0' +month);
    str=str.replace(/M/g,month);

    str=str.replace(/w|W/g,Week[this.getDay()]);

    str=str.replace(/dd|DD/,this.getDate()>9?this.getDate().toString():'0' + this.getDate());
    str=str.replace(/d|D/g,this.getDate());

    str=str.replace(/hh|HH/,this.getHours()>9?this.getHours().toString():'0' + this.getHours());
    str=str.replace(/h|H/g,this.getHours());
    str=str.replace(/mm/,this.getMinutes()>9?this.getMinutes().toString():'0' + this.getMinutes());
    str=str.replace(/m/g,this.getMinutes());

    str=str.replace(/ss|SS/,this.getSeconds()>9?this.getSeconds().toString():'0' + this.getSeconds());
    str=str.replace(/s|S/g,this.getSeconds());

    return str;
}
4.9.6. 数字的大小写转换类
sizeConversion.smallToBig(number);

参数描述:
number:整数,小数会自动截取为整数,非数字会报错!
示例:

sizeConversion.smallToBig(1234567890);//一拾二亿三千四百五拾六万七千八百九十〇
sizeConversion.smallToBig(3141592);//三百一拾四万一千五百九十二
4.9.7. 流程相关类

myFlow对象

4.9.7.1. 判断清单模式
myFlow.isMeteringMode(bit)

参数描述:
bit:1 清单, 2 分解计量
返回值:true:是 false:否

4.9.7.2. 当前用户对应流程环节
myFlow.isActiveFlow(event);

参数描述:
event:检索到当前用户符合条件执行的函数,参数为当前用户反馈的信息;
示例:

//新增执行事件 
function optionEvent(e){
	//e = 环节对应的信息
	var periodId=selectPeriod.getValue();
	var period=selectPeriod.text;
	var conId = selectContract.getValue();
	var data = { action: "add",id:periodId,period:period,conId:conId};
	commons.addGrid(grid,"editGaugeticket.action","新增中间计量单","90%","90%",data);
}   	
myFlow.isActiveFlow(optionEvent);
4.10. 合同类型

合同类型使用比较多,为了方便后续的统一修改,增加合同类型类conType,在general.js文件中维护。

0:总包合同、1:承包合同、2:监理合同、3:采购合同

4.11. 地理桩号转换库(MyGisPile)

实现桩号和地理坐标的转换服务。
引用:

4.11.1. 根据桩号返回地理坐标点
MyGisPile.getPoint(opt,successFun,errorFun)

参数:
opt:配置参数{M: "K100+200",proCode: "WLGS"} ,M:桩号,proCode:项目编号,如果创建对象时设置了项目编号,这里可以不设置,proCode是查询的必要参数,这里不传入,在创建对象时必须输入。
successFun:操作成功的事件,返回点的地理坐标 [x,y]
errorFun:操作失败的事件

4.11.1.1. 示例
var myGisPile = new MyGisPile();
var json={M: "K100+200",proCode: "WLGS"};
myGisPile.getPoint(json,function(point){			
	 alert("x:"+point[0]+ ",y:"+point[1]);
});	

4.11.2. 根据桩号返回线路

MyGisPile.getLine(opt,successFun,errorFun)

参数:
opt:配置参数{S: "K100+200", E: "K200+200",proCode: "WLGS"} ,S:开始桩号,E:结束桩号,proCode:项目编号,如果创建对象时设置了项目编号,这里可以不设置,proCode是查询的必要参数,这里不传入,在创建对象时必须输入。
successFun:操作成功的事件,返回线段的地理坐标 [{line:[[x,y],[x,y], centerPoint:[x,y], centerPile: "K200+200"}]

  • line:线段信息
  • centerPoint:中心点信息
  • centerPile:中心坐标信息

errorFun:操作失败的事件

4.11.2.1. 示例
var myGisPile = new MyGisPile();
var json={S: "K100+200", E: "K200+200",proCode: "WLGS"};
myGisPile. getLine(json,function(line){			
	var l =line["line"];//线段的集合
	var centerPoint = line["centerPoint"];//中线点坐标
	var centerPile = line["centerPile"];//中线点桩号
});	
4.12. 地图封装类(MyMap)

第一版:初步封装,服务于项目调度,后续根据应用需求进行扩展。
地图类基于百度地图进行的封装,实现基于现有业务的快速应用。
引用:



HTML:添加一个地图容器

初始化地图:

var map = new MyMap("allmap",opt);

opt:配置参数{},后续基于实际应用进行扩展

  • centerPoint:地图加载中心点,默认山东
4.12.1. API 4.12.1.1. 添加批量点
map.addPoints(list,groupName,opt);

list: 包含点信息的业务数组

 [{xy:"[121.19914380000012,37.05456454000006]",title:"测试360",url:"demo360.png"}]

groupName:这些点的分组名称,方便图层控制;
opt: 点的设置样式

{icon:"图片地址",size:[24,24], xyName:"xy", labelName:"name", isLabel:true,isshowlabel:true}   
  • icon:图片地址
  • size:点的描述图片大小;
  • xyName:坐标字段 默认xy
  • isLabel: 是否显示标签
  • labelName: 标签字段 默认name,用来在点上标注显示内容的
  • style:点的样式描述{color:“red”},color是内部约束的颜色,包含red,yellow,blue,green,black,gray
  • clickFun:绑定点击事件,见事件参数描述
  • mouseoutFun:移入事件,见事件参数描述
  • mouseoverFun:移除事件,见事件参数描述
4.12.1.2. 添加批量线段
map.addLines(list,groupName,opt);

list: 包含线段信息的业务数组,线段对应是一个三维数组,一维描述线段数组,二维描述单条线的组成,三维描述组成线的点的组成。

 [{xy:" [[[100,23],[200,23]]]",title:"测试360",url:"demo360.png"}]

groupName:同点的描述上
opt:
style:对于线段的样式描述,除了颜色,其他参考百度地图的线段样式描述
常用有:strokeWeight:宽度,strokeStyle:solid或dashed 样式

4.12.1.3. 添加线段
map.addLine(row,groupName,opt);
4.12.1.4. 添加临时线段

用来强调某段线段使用。

map.addTempLine (xy,groupName,opt)

opt:

  • isLocation:是否直接定位
  • zoomIndex:缩放地图级别
    例如:
map.addTempLine(row.xy,"tempDrawing",
	{
		xyName:"xy",
		style:{color:"yellow",strokeWeight:10},
		isLocation:true,
		zoomIndex:12 
	}
);
4.12.1.5. 定位到新的点
map.toP(p,zoomIndex);

p:点的信息 BMap.Point 对象;
zoomIndex:缩放级别

4.12.1.6. 返回路线的中线点
map.getLineOfCenter(line,isLocation,zoomIndex)

line:路线坐标
isLocation:是否定位
zoomIndex:缩放级别
返回:centerPoint 中心点对象BMap.Point

4.12.1.7. 事件参数描述
fun(e,row,groupName,opt,marker)

e:自身;
row:点或线的业务数据
groupName:分组编号
opt:传递的参数
marker:点对应自身,线段对应中心点

4.12.1.8. 图层控制
map.setLayer(groupName,status)

groupName:图层分组
status:true 显示,false 不显示,默认不显示

4.13 附件 4.13.1 附件管理(常规方法)

在列表中增加附件列,弹出附件管理窗体进行添加,本方法适用于在项目的专有附件表中添加附件使用
示意图

data包含如下参数描述:

  • id:当前业务的主键;
  • type:业务的编码,系统会根据这个编码将相关文件上传到同一个文件夹下;(后续增加业务在进行补充分类)
业务业务编码
合同contract
计量calculate
合同计量conCalculate
材料计量mateCalculate
合同变更conChange
合同变更申请ChRequest
无人机视频video
  • onefileSize:单文件最大大小,可以不写,默认3MB
  • upFileCount:最多同时允许上传数量,可以不写,默认10个
  • procode:指定项目编号,用于集团访问项目的方式,对查看和新增都会有影响;(code 一定要小写)
    action:view 表示只查看

JS代码段
在grid的column列表中添加如下列

{header: "附件", width: 120, headerAlign: "center", align:"center", allowSort: true,renderer:"filesRenderer" }

然后添加如下两个方法

//文件绑定事件
function filesRenderer(e){
    var row = e.row;//行对象
    var s ='+row.id+'')">附件列表';
    return s;
}
//文件上传下载弹窗
function fileManages(id){
	// 注意:一定要修改这里的type的值为当前业务名称,不要和别人一样
    var rowData={id:id,type:"environmental",procode:proCode}; 
    var data = {grid:gridItem,data:rowData};
    fileOperation.showNew(data);
}

删除
对应的删除文件的方法,需要在后端impl类中添加依赖

@Autowired
private SysFileService sysFileService;

在delete方法中添加如下代码

// 删除对应的文件列表
MyUser myUser = MySession.getSessionValues();//当前用户信息
String proCode = myUser.getProCode();//项目编号
this.sysFileService.delete("", id, proCode);
4.13.2 附件管理(只存附件,返回地址)
  • 本方法适用于业务中存在缩略图的应用,例如:头像上传、视频缩略相关的应用;
  • 本方法只支持一张图片的处理,对于重新上传可以将之前上传的图片进行替换;
  • 如果重新上传图片后没有保存业务,则图片丢失;
    示意图

    opt包含如下参数描述
  • operation:是否允许操作,必须,控制上传按钮和删除按钮,true、false 默认true
  • container:图片缩略图承载容器id uploader
  • maxCount:上传的最大数量,默认不限制 0
  • ylSize:预览图片的尺寸大小[宽,高] [500,300],默认250*166
  • ylTitleName: 图片预览的描述文字 可以加备注,默认格式:图片预览(尺寸要求250*166)
  • server: 处理的后台服务,可以不填写,默认saveFileProFiles2.action
  • key:查询参数

相关API

API参数描述备注
setImage(url,name)url:图片的地址;name:图片的名称设置预览图片,适用于业务修改、查看时使用
aPicture(opt)opt : 相关的参数设置图片预览缩略图,默认支持压缩和裁剪
createMyImageUpload()初始化一个图片管理对象
getSuccessInfo()返回:
json:{code:"1",message:"",data:{url:"",name}}
其中:
code:编号 1成功 -1失败;
message:服务器返回消息;
data:图片保存相关信息;
url:图片的服务器地址;
name:图片的名称
获取预览图片的信息,在保存业务前处理
Del()删除当前预览的图片,只适用于 aPicture形式,默认在上传新图片时自动删除上一张图片;

HTML代码段





JS代码段
声明全局变量

var myload = null;

在init方法中初始化

myload = createMyImageUpload();

渲染出图片上传的界面

myload.aPicture({
    maxCount:1,
    ylTitleName:"封面图片",
    replace:true,
    container:"uploader",
    operation:true,//如果是只读的话,这里设置成false
    key:{"type":"science_cost_result2"}
});

需要保存图片地址时

var pictureInfo = myload.getSuccessInfo();
applyEstablish.technicalLine = pictureInfo.data.url;

回显图片时

myload.setImage(applyEstablish.technicalLine);
4.13.3 附件管理(只存附件,返回地址)

只上传一次附件,上传完成后返回上级页面,带回已上传文件列表
data包含如下参数描述

  • type:业务代码
  • onefileSize:单位件大小 B
  • extType:允许的文件分类 见 fileOperation.getExtensions()
  • upFileCount:上传文件限制个数
  • action:操作 view:查询
  • fileList:文件列表数组
  • url_field:地址字段,默认url
  • name_field:文件名称字段,默认name

HTML中引入文件


js中添加方法

//文件上传
function fileManages(opt,fun){
    var rowData={type:opt.extType,settingCode:opt.extType,id:opt.id,
    replace:true,action:opt.action,fileName:opt.name};
    mini.open({
        url: "fileUploadCrossPage.action",
        title: "文件上传", width: "800px", height: "600px",
        showMaxButton:true,
        showModal:true,
        allowDrag:true,
        loadOnRefresh:true,
        onload: function () {
            var iframe = this.getIFrameEl();
            iframe.contentWindow.SetData(rowData);
        },
        ondestroy: function (json) {
            if(json=="close"){
                return;
            }
            if(fun){//完成
                fun(json);
            }
        }
    });
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/967800.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号