通用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表格的数据;
适用于简单的查看,与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表格的数据;
commons.del(data,back);
参数描述:
grid:当前表格的实体对象,如果调用commons.del(data,back)方法没有传回调函数时,会在退出弹出的页面时自动执行grid.reload();(相当于是在弹出的框关闭时,自动刷新本页面的grid的数据),否则执行回调函数;
url:跳转操作的url;
id:处理业务的唯一识别字段,一般默认id;
back:对应页面跳转关闭后的回调函数,根据传入的参数提示成功与否,刷新等动作。如果不传则自动调用grid.reload()方法来刷新所传入的grid表格的数据;
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表格的数据;
commons.remove(data,back)
参数描述:
grid:当前页面要操作的表格的实体对象,会自动调用grid.getSelecteds()来获得当前表格中已选择的项目并执行删除;如果调用时没有传递back回调方法,则会在退出弹出的页面时自动执行grid.reload()(相当于是在方法执行完毕时,自动刷新本页面的grid的数据),否则执行回调函数;
url:跳转操作的url;
commons.fromDel(data, back);
参数描述:
id:处理业务的唯一识别字段,一般默认id;
url:跳转操作的url;
back:对应页面跳转关闭后的回调函数,根据传入的参数提示成功与否,刷新等动作;
虽然名称是保存单行,且data参数里面也要求传uid但,实际保存的是grid.getChanges()得到的所有发生了改变的行,所以是保存的已变动的所有行。
commons.saveRow(data, back)
参数描述:
grid:表格实体;
form:表格外围包含的form标签对象;(这种行编辑必须在表格外面包含一层form表单,否则无法实现表单验证功能,具体可以参考角色的页面 role_list.jsp,如下是部分代码:
uid:单元格ID号,不是数据的ID;
url:处理业务地址;
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",表示操作成功,提示成功信息;
按下回车调用查询(适用于多个查询条件)
commons.keyDownEnter(keyInput,queryFunction)
参数描述:
keyInput:查询条件的Id;
queryFunction:调用的查询方法;
回车调用查询(适用于多个查询条件)
commons.enterFind(queryFunction,name)
示例:
HTML代码,该组查询条件的input的name属性都是persionQueryKey
JS代码:
commons.enterFind(find,"persionQueryKey")
参数描述:
queryFunction:调用的查询方法;
name:设置查询组建所属的name组,不设置默认 name="queryKey"
commons.formReadOnly(myform)
参数描述:
myform:要被设置成只读的form表单对象;
向指定url发起请求,并将响应数据交给formSetDataSuccess(text,data);来处理
commons.formSetData(data,url)
参数描述:
data:查询到的对象,一般为json格式;var data = { action: "add",id:id};
本操作设置之外还需要特殊设置,需要在当前页面声明函数formSetDataSuccess(text,data);
该函数的参数:
- Text:从数据库读取的数据,一般为json格式;
- data:查询到的对象,从前一个页面传递过来的;
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 日期范围查询- 前端代码添加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";
}
- 后端代码,需要修改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. 生成普通表格
注意事项: 返回值,不需要像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]
按钮生成类,用于生成表格行数据中的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,查询的时候需要特殊处理一下;
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;
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:失去焦点的判断事件;
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;
4.9.5. 日期类{
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)
}
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:否
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)实现桩号和地理坐标的转换服务。
引用:
MyGisPile.getPoint(opt,successFun,errorFun)
参数:
opt:配置参数{M: "K100+200",proCode: "WLGS"} ,M:桩号,proCode:项目编号,如果创建对象时设置了项目编号,这里可以不设置,proCode是查询的必要参数,这里不传入,在创建对象时必须输入。
successFun:操作成功的事件,返回点的地理坐标 [x,y]
errorFun:操作失败的事件
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:地图加载中心点,默认山东
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:移除事件,见事件参数描述
map.addLines(list,groupName,opt);
list: 包含线段信息的业务数组,线段对应是一个三维数组,一维描述线段数组,二维描述单条线的组成,三维描述组成线的点的组成。
[{xy:" [[[100,23],[200,23]]]",title:"测试360",url:"demo360.png"}]
groupName:同点的描述上
opt:
style:对于线段的样式描述,除了颜色,其他参考百度地图的线段样式描述
常用有:strokeWeight:宽度,strokeStyle:solid或dashed 样式
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:缩放级别
map.getLineOfCenter(line,isLocation,zoomIndex)
line:路线坐标
isLocation:是否定位
zoomIndex:缩放级别
返回:centerPoint 中心点对象BMap.Point
fun(e,row,groupName,opt,marker)
e:自身;
row:点或线的业务数据
groupName:分组编号
opt:传递的参数
marker:点对应自身,线段对应中心点
map.setLayer(groupName,status)
groupName:图层分组
status:true 显示,false 不显示,默认不显示
在列表中增加附件列,弹出附件管理窗体进行添加,本方法适用于在项目的专有附件表中添加附件使用
示意图
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);
}
}
});
}



