1. 问题来源背景
最近涉及到老旧项目改造优化,公司自研的低代码平台,后端人员在代码增强里写前端代码涉及大量不规范的写法,我现在需要将其中的不规则写法全部纠正过来。
2. 需要解决的问题
纠正内容包括:
1,移除所有的debugger
2,将所有的$全局查询符修改为自定义的页面查询方法me.byId或者me.find
3. 目前代码现状
项目中后端写的代码大概是这个样子,这是随便截取了一个页面的代码增强部分
me.showDefineQuery = function(){
_application.showDefineQuery({cmpName:me,gridId:'grid'});
}
me.toUppers = function(v){
var queryForm = me.byId("queryForm");
$("input[name='empNameSpell']",queryForm).val(v.toUpperCase());
me.doFormQuery();
}
me.pageDesign = function(){
_application.showPageDesign(me.dsName,me.container,me.dsSystemId,me.moduleName);
}
me.reset = function(){
me.byId('queryForm').extqueryform('reset');
}
me.doFormQuery = function(){
debugger;
// var a = _application;
// _application._mask.initMask=new function(){};
// _application._showMask=new function(){};
// _application._mask.showAllMask=new function(){};
// _application._mask.hideMask=new function(){};
me.byId("queryForm").extqueryform("doFormQuery");
/*
var queryFormData = me.byId("queryForm").extqueryform("getRowSet");
var dc = new DataSet();
dc.addRowSet(queryFormData);
var actionName = me.action;
var eventName = me.event;
var dsSystemId = me.dsSystemId;
var moduleName = me.moduleName;
dc.setParameter("dsSystemId",dsSystemId);
dc.setParameters(me.dataCenter.getParameters());
var rowset = me.byId("grid").extgrid("getRowSetCopy");
rowset.setQueryRowSetName(queryFormData.getName());
dc.addRowSet(rowset);
me.requestData({
"module":moduleName,
"action":actionName,
"event":eventName,
"dataSet":dc,
modal:false,
"success":function(){
me.byId("grid").extgrid("refresh");
}
}); */
}
me.pageDesign = function(){
_application.showPageDesign(me.dsName,me.container,me.dsSystemId,me.moduleName);
}
me.save = function(){
var dc = new DataSet();
// dc.setParameter("empId",me.dataCenter.getParameter("empId"));
// me.byId("grid").extgrid("save",{"event":"save","dataSet":dc});
me.byId("grid").extgrid("save",{"event":"save","dataSet":dc});
}
me.deleteRow = function(){
me.byId("grid").extgrid("extRemoveRow");
}
me.addRow = function(){
var dc = new DataSet();
dc.setParameter("flag",0);//添加进入
dc.setParameter("status",0);
dc.setParameter("id",-1);
dc.setParameter("dsName","4");
me.requestComponent({
action:"RsEmpAction",
event:"showAddPage",
dataSet:dc,
container:me.container
})
/*me.showDialog({
"action":"RsEmpAction",
"event":"showAddPage",
"dataSet":dc,
"full":true,
// "height":500,
// "width":800,
"title":"人员添加",
"onComplete":function(){
me.byId("grid").extgrid("doFormQuery");
}
})*/
}
me.exportExcelData = function(rowIndex){
//m1.report/ReportAction/showReport.do?dsName=1&reportId=628027533523374080&dsSystemId=right
var dc = new DataSet();
var row = me.byId("grid").extgrid("getRow",rowIndex);
var param1 = row.getItemValue("empNo");
dc.setParameter("dsName","1");
dc.setParameter("dsSystemId","right");
dc.setParameter("param1",param1);
dc.setParameter("reportId","628075011060748288");
me.showDialog({
"module": "m1.report",
"action":"ReportAction",
"event":"showReportByParam",
"dataSet":dc,
"title":"简历导出",
"width":1000,
"height":700,
"onComplete":function(data){
}
});
}
me.onClickDetails = function(rowIndex)
{
debugger;
var row = me.byId("grid").extgrid("getRow",rowIndex);
var id = row.getItemValue("empId");
var dc = new DataSet();
dc.setParameter("flag",1);
dc.setParameter("status",0);
dc.setParameter("id",id);
dc.setParameter("dsName","93");
me.requestComponent({
action:"RsEmpAction",
event:"showAddPage",
dataSet:dc,
container:me.container
})
/*me.showDialog({
"action":"RsEmpAction",
"event":"showAddPage",
"dataSet":dc,
"full":true,
"title":"人员添加",
"onComplete":function(){
me.byId("grid").extgrid("doFormQuery");
}
})*/
}
me.clickOrgan = function(n,o)
{
var dc = new DataSet();
dc.setParameter("organNo",n);
me.requestData({
module:"rlzy.inter",
action:"RsDeptAction",
event:"selectOrganTree",
dataSet:dc,
title:"选择部门",
success:function(data){
var set = data.getRowSet("com.tp.rlzy.inter.entity.dept.RsDept");
$('#deptNo').extcombotree("clear");
$('#deptNo').extcombotree("loadData",_application.initMenuData(set,"deptCode","deptName","upperDeptCode",n));
}
});
}
me.blinkClick = function(){
//绑定双击dblclick 单击click by wuhebin 20180528
me.byId("grid",me.container).find("table:first tbody tr").dblclick(function () {
var checkboxObj =$(this).find('input[type=checkbox]').first();
$.bsgrid.adaptAttrOrProp(checkboxObj, 'checked', false);
}).click(function () {
var checkboxObj =$(this).find('input[type=checkbox]').first();
$.bsgrid.adaptAttrOrProp(checkboxObj, 'checked', true);
});
}
me.init = function(){
debugger;
// $("#grid table:first th,tr",me.container).find("td:eq(4)").css("color","red");
// var wIndex = $("#grid table:first th[w_index='empName']",me.container);
// wIndex.css("color","red");
// $("#grid table:first tr:eq(0)",me.container).css("color","red");
me.initColor();
//me.blinkClick ();
me.byId('grid').extgrid('options').settings.afterGridRefresh = function(){
//me.blinkClick ();
me.initColor();
}
//me.byId('empBirthday').extdate({dateFmt:'yyyy-MM-dd HH:mm:ss',maxDate:'%y-%M-%d %H:%m:%s}'})
}
me.initColor = function(){
$("button span",me.container).each(function(index,item){
var spanValue = $(this).html();
if(spanValue && spanValue == "详细"){
$(this).parent().removeAttr("class");
$(this).parent().attr("class","m-r-xs btn btn-sm btn-info");
}
if(spanValue && spanValue == "员工归属明细"){
$(this).parent().removeAttr("class");
$(this).parent().attr("class","m-r-xs btn btn-sm btn-info");
}
if(spanValue && spanValue == "员工状态明细"){
$(this).parent().removeAttr("class");
$(this).parent().attr("class","m-r-xs btn btn-sm btn-info");
}
if(spanValue && spanValue == "详细(折叠Tab)"){
$(this).parent().removeAttr("class");
$(this).parent().attr("class","m-r-xs btn btn-sm btn-info");
}
})
}
me.exportT = function(){
var rowSet = me.byId("grid").extgrid("getRowSet");
var pageDsName = "2";
var dc = new DataSet();
var systemId = "rlzy.control";
var gridId = "grid";
var actionName = "RsEmpAction";
var eventName = "show";
dc.setParameter("pageDsName", pageDsName);
dc.setParameter("moduleName", systemId);
dc.setParameter("dsSystemId", systemId);
dc.setParameter("gridId", gridId);
dc.setParameter("rowSetName", rowSet._name);
dc.setParameter("dsName", "exportExcelCloums");
_application.showDialog({
module: "excelservice",
action: "ExcelServiceAction",
dataSet: dc,
event: "showExcelCloum",
title: "导出人力资源数据数据",
height: 500,
width: 650,
modal: true,
onComplete: function (data)
{
me.doExport(data,rowSet,dc,systemId,actionName,eventName,pageDsName);
}
});
}
me.doExport = function(data,rowSet,dc,systemId,actionName,eventName,pageDsName){
debugger;
if(data && data.length > 0){
var formRowSet = me.byId("queryForm").extqueryform("getRowSet");
if(formRowSet)
{
rowSet.setQueryRowSetName(formRowSet.getName());
}
dc.addRowSet(rowSet);
dc.addRowSet(formRowSet);
dc.setParameter("exportColumns", data.toString());
var _excelExportOptions = {};
_excelExportOptions["module"] =systemId;
_excelExportOptions["action"] =actionName;
_excelExportOptions["event"] = eventName;
_excelExportOptions["dsName"] = pageDsName;
_excelExportOptions["dsSystemId"] = systemId;
var base64 = new Base64();
dc.setParameter("_excelExportOptions", base64.encode(JSON.toStr(_excelExportOptions)));
_application.fileDownload({
"module": "excelservice",
"action": "ExcelServiceAction",
"event": "exportGridData",
"dataSet": dc
});
}
}
me.dis = function(){
debugger;
var queryFormData = me.byId("queryForm").extqueryform("getRowSet");
var dc = new DataSet();
dc.addRowSet(queryFormData);
var actionName = me.action;
var eventName = me.event;
var dsSystemId = me.dsSystemId;
var moduleName = me.moduleName;
dc.setParameter("dsSystemId",dsSystemId);
dc.setParameters(me.dataCenter.getParameters());
var rowset = me.byId("grid").extgrid("getRowSetCopy");
rowset.setQueryRowSetName(queryFormData.getName());
dc.addRowSet(rowset);
me.requestData({
"module":moduleName,
"action":actionName,
"event":eventName,
"dataSet":dc,
modal:false,
"success":function(){
me.byId("grid").extgrid("refresh");
}
});
}
me.exportFile = function(){
var dc = new DataSet();
dc.setParameter("dsSystemId","rlzy.control");
_application.fileDownload({
"module": "rlzy.control",
"action": "FileDownAction",
"event": "downLoad",
"dataSet": dc
});
}
me.queryStatusBelong = function(rowIndex){
debugger;
var row = me.byId("grid").extgrid("getRow", rowIndex);
var empNo = row.getItemValue("empNo");
var dc = new DataSet();
dc.setParameter("empNo", empNo);
dc.setParameter("dsName","426");
me.showDialog({
"action":"RsEmpAction",
"event":"showTransHis",
"title":"员工状态明细",
"dataSet":dc,
"width":1000,
"height":600,
"container":me.container
});
}
me.queryBelong = function(rowIndex){
debugger;
var row = me.byId("grid").extgrid("getRow", rowIndex);
var empNo = row.getItemValue("empNo");
var dc = new DataSet();
dc.setParameter("empNo", empNo);
dc.setParameter("dsName","402");
me.showDialog({
"action":"RsEmpGwddAction",
"event":"show",
"title":"员工归属明细",
"dataSet":dc,
"width":1000,
"height":600,
"container":me.container
});
}
me.onClickDetailsByShendong = function(rowIndex)
{
debugger;
var row = me.byId("grid").extgrid("getRow",rowIndex);
var id = row.getItemValue("empId");
var dc = new DataSet();
dc.setParameter("flag",1);
dc.setParameter("status",0);
dc.setParameter("id",id);
dc.setParameter("dsName","49125");
me.requestComponent({
action:"RsEmpAction",
event:"showAddPage",
dataSet:dc,
container:me.container
})
}
4.开始着手解决
刚开始我是拒绝的,由于这种写法整天引起许多奇奇怪怪的问题,于是自己开始尝试处理解决。
4.1,移除debugger
这个问题解决我第一个就想到了用正则表达式处理
codeText.replace(/debugger;?/g, "");
考虑到注释部分,我排除了注释里面的debugger
codeText.replace(/(?<!\/\/.*)debugger;?/g, "");
4.2,替换$符
4.2.1,正则替换法
我起初考虑如何用正则来处理$符,既然要我替换$(...),那我直接匹配$("#,关键词不就行了吗,但在实际处理发现,这个$符非常不好处理,它可以作为函数名,可以作为对象进行方法调用,它作为函数名时,参数可以是id、class、变量、字符串拼接和$符二次或多次嵌套,这是正则无法编写的规则,还有foreach时$(this)是要排除在外的。
大概需要处理的情况如下但并不局限于此
$("#id") => me.byId("#id")
===
$("#id",me.container) => me.byId("#id")
===
var form = me.byId("form");
$("#id",form) => me.byId("#id", form)
===
$("#id",me.byId("form")) => me.byId("#id", me.byId("form"))
===
var form = $("#form") => var form = me.byId("#form")
===
$("#id .div_class span") => me.find("#id .div_class span")
===
$("#id .div_class span", me.container) => me.find("#id .div_class span")
===
var form = me.byId("form");
$("#id .div_class span", form) => me.find("#id .div_class span", form)
===
$("#id .div_class span", me.byId("form")) => me.find("#id .div_class span", me.byId("form"))
===
$("#id",$("form")) => me.byId("#id", me.byId("form"))
===
$(".form .tm-ext") => me.find(".form .tm-ext")
===
$("[id='123']") => me.find("[id='123']")
===
等等...
然后我只写了一个找出使用$符作为函数调用,匹配$(并排除注释及$(this)的情况的代码位置
codeText.match(/(?<!\/\/.*)\$\((?!this)/g);
然后由告诉后台开发人员根据代码提示的位置逐个修改之,有的页面可能比较少,还能接受,但有的页面逻辑关系复杂,需要改的有二三十个问题之多,这就让人有点接受不了了,本来后台人员对前台不熟悉,还要分析纷繁复杂的查询调用关系,实在有些不妥。
既然正则这条路走不通,我如何才能分析这些代码,让我更科学的修改呢?
4.2.2 AST分析替换
前端常用的脚手架工具,如webpack,babel,prettier和eslint都是底层涉及对代码进行语法树分析,然后再逐个处理。我的项目何不也借此进行处理呢。
经过相关的资料查询,决定使用babel二次封装的AST语法树工具,下面是我查阅的相关文档
1, AST入门
2, AST树解释
3, AST树在线转换
4, AST详细转换如何写
下面是我最终解决$符替换的代码,只列出与ast相关的核心代码作为记录
安装
npm i @babel/parser @babel/traverse @babel/types @babel/generator -S
引入
const parser = require("@babel/parser");
const traverse = require("@babel/traverse");
const types = require("@babel/types");
const generator = require("@babel/generator");
解析替换
me.replaceJqToById = function() {
//获取js代码增强中的代码
var $content = $("#jsDefineModal");
var myTextArea = $content.find("textarea");
var jsEditor = myTextArea.data("jsEditor");
var htmlText = jsEditor.getValue();
//语法处理
// 1.parse
const ast = parser.parse(htmlText);
// 2,traverse
const visitor = {
Identifier(path) {
//匹配$()的情况
if (path.node.name == "$" && path.parentPath.type == "CallExpression") {
//获取$()的第一个参数
var firstParam = path.parentPath.node.arguments[0];
//如果这个参数存在且非表达式(即是字符串)时
if (firstParam && firstParam.type != "ThisExpression") {
//如果第一个参数是以#开头,将$替换为me.byId,否则替换为me.find
let property = /^#/.test(firstParam.value) && !/\x20/.test(firstParam.value) ? "byId" : "find";
//替换语法树的节点
path.replaceWith(types.memberExpression(types.identifier("me"), types.identifier(property)));
}
//获取$()的第二个参数
var secondParam = path.parentPath.node.arguments[1];
//如果第二个参数类型是成员访问表达式,且形如me.container时
if (secondParam && secondParam.type == "MemberExpression" && secondParam.object.name == "me" && secondParam.property.name == "container") {
//将第二个参数移除掉
path.parentPath.node.arguments.length = 1;
}
}
}
};
// traverse 转换代码
traverse.default(ast, visitor);
// 3. generator 将 AST 转回成代码
const resultText = generator.default(ast, {}, htmlText);
//填充还原
jsEditor.setValue(resultText.code);
};
5.总结
1,AST语法树分析功能强大稳定,经过分析之后的代码还原以后还自动添加了;
2,debugger移除其实也可以放到语法树中删除,但由于正则替换也比较稳定,所以没有后修改
最后附上替换优化后的代码
me.showDefineQuery = function() {
_application.showDefineQuery({
cmpName: me,
gridId: 'grid'
});
};
me.toUppers = function(v) {
var queryForm = me.byId("queryForm");
me.find("input[name='empNameSpell']", queryForm).val(v.toUpperCase());
me.doFormQuery();
};
me.pageDesign = function() {
_application.showPageDesign(me.dsName, me.container, me.dsSystemId, me.moduleName);
};
me.reset = function() {
me.byId('queryForm').extqueryform('reset');
};
me.doFormQuery = function() {
// var a = _application;
// _application._mask.initMask=new function(){};
// _application._showMask=new function(){};
// _application._mask.showAllMask=new function(){};
// _application._mask.hideMask=new function(){};
me.byId("queryForm").extqueryform("doFormQuery");
/*
var queryFormData = me.byId("queryForm").extqueryform("getRowSet");
var dc = new DataSet();
dc.addRowSet(queryFormData);
var actionName = me.action;
var eventName = me.event;
var dsSystemId = me.dsSystemId;
var moduleName = me.moduleName;
dc.setParameter("dsSystemId",dsSystemId);
dc.setParameters(me.dataCenter.getParameters());
var rowset = me.byId("grid").extgrid("getRowSetCopy");
rowset.setQueryRowSetName(queryFormData.getName());
dc.addRowSet(rowset);
me.requestData({
"module":moduleName,
"action":actionName,
"event":eventName,
"dataSet":dc,
modal:false,
"success":function(){
me.byId("grid").extgrid("refresh");
}
}); */
};
me.pageDesign = function() {
_application.showPageDesign(me.dsName, me.container, me.dsSystemId, me.moduleName);
};
me.save = function() {
var dc = new DataSet(); // dc.setParameter("empId",me.dataCenter.getParameter("empId"));
// me.byId("grid").extgrid("save",{"event":"save","dataSet":dc});
me.byId("grid").extgrid("save", {
"event": "save",
"dataSet": dc
});
};
me.deleteRow = function() {
me.byId("grid").extgrid("extRemoveRow");
};
me.addRow = function() {
var dc = new DataSet();
dc.setParameter("flag", 0); //添加进入
dc.setParameter("status", 0);
dc.setParameter("id", -1);
dc.setParameter("dsName", "4");
me.requestComponent({
action: "RsEmpAction",
event: "showAddPage",
dataSet: dc,
container: me.container
});
/*me.showDialog({
"action":"RsEmpAction",
"event":"showAddPage",
"dataSet":dc,
"full":true,
// "height":500,
// "width":800,
"title":"人员添加",
"onComplete":function(){
me.byId("grid").extgrid("doFormQuery");
}
})*/
};
me.exportExcelData = function(rowIndex) {
//m1.report/ReportAction/showReport.do?dsName=1&reportId=628027533523374080&dsSystemId=right
var dc = new DataSet();
var row = me.byId("grid").extgrid("getRow", rowIndex);
var param1 = row.getItemValue("empNo");
dc.setParameter("dsName", "1");
dc.setParameter("dsSystemId", "right");
dc.setParameter("param1", param1);
dc.setParameter("reportId", "628075011060748288");
me.showDialog({
"module": "m1.report",
"action": "ReportAction",
"event": "showReportByParam",
"dataSet": dc,
"title": "简历导出",
"width": 1000,
"height": 700,
"onComplete": function(data) {}
});
};
me.onClickDetails = function(rowIndex) {
var row = me.byId("grid").extgrid("getRow", rowIndex);
var id = row.getItemValue("empId");
var dc = new DataSet();
dc.setParameter("flag", 1);
dc.setParameter("status", 0);
dc.setParameter("id", id);
dc.setParameter("dsName", "93");
me.requestComponent({
action: "RsEmpAction",
event: "showAddPage",
dataSet: dc,
container: me.container
});
/*me.showDialog({
"action":"RsEmpAction",
"event":"showAddPage",
"dataSet":dc,
"full":true,
"title":"人员添加",
"onComplete":function(){
me.byId("grid").extgrid("doFormQuery");
}
})*/
};
me.clickOrgan = function(n, o) {
var dc = new DataSet();
dc.setParameter("organNo", n);
me.requestData({
module: "rlzy.inter",
action: "RsDeptAction",
event: "selectOrganTree",
dataSet: dc,
title: "选择部门",
success: function(data) {
var set = data.getRowSet("com.tp.rlzy.inter.entity.dept.RsDept");
me.byId('#deptNo').extcombotree("clear");
me.byId('#deptNo').extcombotree("loadData", _application.initMenuData(set, "deptCode", "deptName", "upperDeptCode", n));
}
});
};
me.blinkClick = function() {
//绑定双击dblclick 单击click by wuhebin 20180528
me.byId("grid", me.container).find("table:first tbody tr").dblclick(function() {
var checkboxObj = $(this).find('input[type=checkbox]').first();
$.bsgrid.adaptAttrOrProp(checkboxObj, 'checked', false);
}).click(function() {
var checkboxObj = $(this).find('input[type=checkbox]').first();
$.bsgrid.adaptAttrOrProp(checkboxObj, 'checked', true);
});
};
me.init = function() {
// $("#grid table:first th,tr",me.container).find("td:eq(4)").css("color","red");
// var wIndex = $("#grid table:first th[w_index='empName']",me.container);
// wIndex.css("color","red");
// $("#grid table:first tr:eq(0)",me.container).css("color","red");
me.initColor(); //me.blinkClick ();
me.byId('grid').extgrid('options').settings.afterGridRefresh = function() {
//me.blinkClick ();
me.initColor();
}; //me.byId('empBirthday').extdate({dateFmt:'yyyy-MM-dd HH:mm:ss',maxDate:'%y-%M-%d %H:%m:%s}'})
};
me.initColor = function() {
me.find("button span").each(function(index, item) {
var spanValue = $(this).html();
if (spanValue && spanValue == "详细") {
$(this).parent().removeAttr("class");
$(this).parent().attr("class", "m-r-xs btn btn-sm btn-info");
}
if (spanValue && spanValue == "员工归属明细") {
$(this).parent().removeAttr("class");
$(this).parent().attr("class", "m-r-xs btn btn-sm btn-info");
}
if (spanValue && spanValue == "员工状态明细") {
$(this).parent().removeAttr("class");
$(this).parent().attr("class", "m-r-xs btn btn-sm btn-info");
}
if (spanValue && spanValue == "详细(折叠Tab)") {
$(this).parent().removeAttr("class");
$(this).parent().attr("class", "m-r-xs btn btn-sm btn-info");
}
});
};
me.exportT = function() {
var rowSet = me.byId("grid").extgrid("getRowSet");
var pageDsName = "2";
var dc = new DataSet();
var systemId = "rlzy.control";
var gridId = "grid";
var actionName = "RsEmpAction";
var eventName = "show";
dc.setParameter("pageDsName", pageDsName);
dc.setParameter("moduleName", systemId);
dc.setParameter("dsSystemId", systemId);
dc.setParameter("gridId", gridId);
dc.setParameter("rowSetName", rowSet._name);
dc.setParameter("dsName", "exportExcelCloums");
_application.showDialog({
module: "excelservice",
action: "ExcelServiceAction",
dataSet: dc,
event: "showExcelCloum",
title: "导出人力资源数据数据",
height: 500,
width: 650,
modal: true,
onComplete: function(data) {
me.doExport(data, rowSet, dc, systemId, actionName, eventName, pageDsName);
}
});
};
me.doExport = function(data, rowSet, dc, systemId, actionName, eventName, pageDsName) {
if (data && data.length > 0) {
var formRowSet = me.byId("queryForm").extqueryform("getRowSet");
if (formRowSet) {
rowSet.setQueryRowSetName(formRowSet.getName());
}
dc.addRowSet(rowSet);
dc.addRowSet(formRowSet);
dc.setParameter("exportColumns", data.toString());
var _excelExportOptions = {};
_excelExportOptions["module"] = systemId;
_excelExportOptions["action"] = actionName;
_excelExportOptions["event"] = eventName;
_excelExportOptions["dsName"] = pageDsName;
_excelExportOptions["dsSystemId"] = systemId;
var base64 = new Base64();
dc.setParameter("_excelExportOptions", base64.encode(JSON.toStr(_excelExportOptions)));
_application.fileDownload({
"module": "excelservice",
"action": "ExcelServiceAction",
"event": "exportGridData",
"dataSet": dc
});
}
};
me.dis = function() {
var queryFormData = me.byId("queryForm").extqueryform("getRowSet");
var dc = new DataSet();
dc.addRowSet(queryFormData);
var actionName = me.action;
var eventName = me.event;
var dsSystemId = me.dsSystemId;
var moduleName = me.moduleName;
dc.setParameter("dsSystemId", dsSystemId);
dc.setParameters(me.dataCenter.getParameters());
var rowset = me.byId("grid").extgrid("getRowSetCopy");
rowset.setQueryRowSetName(queryFormData.getName());
dc.addRowSet(rowset);
me.requestData({
"module": moduleName,
"action": actionName,
"event": eventName,
"dataSet": dc,
modal: false,
"success": function() {
me.byId("grid").extgrid("refresh");
}
});
};
me.exportFile = function() {
var dc = new DataSet();
dc.setParameter("dsSystemId", "rlzy.control");
_application.fileDownload({
"module": "rlzy.control",
"action": "FileDownAction",
"event": "downLoad",
"dataSet": dc
});
};
me.queryStatusBelong = function(rowIndex) {
var row = me.byId("grid").extgrid("getRow", rowIndex);
var empNo = row.getItemValue("empNo");
var dc = new DataSet();
dc.setParameter("empNo", empNo);
dc.setParameter("dsName", "426");
me.showDialog({
"action": "RsEmpAction",
"event": "showTransHis",
"title": "员工状态明细",
"dataSet": dc,
"width": 1000,
"height": 600,
"container": me.container
});
};
me.queryBelong = function(rowIndex) {
var row = me.byId("grid").extgrid("getRow", rowIndex);
var empNo = row.getItemValue("empNo");
var dc = new DataSet();
dc.setParameter("empNo", empNo);
dc.setParameter("dsName", "402");
me.showDialog({
"action": "RsEmpGwddAction",
"event": "show",
"title": "员工归属明细",
"dataSet": dc,
"width": 1000,
"height": 600,
"container": me.container
});
};
me.onClickDetailsByShendong = function(rowIndex) {
var row = me.byId("grid").extgrid("getRow", rowIndex);
var id = row.getItemValue("empId");
var dc = new DataSet();
dc.setParameter("flag", 1);
dc.setParameter("status", 0);
dc.setParameter("id", id);
dc.setParameter("dsName", "49125");
me.requestComponent({
action: "RsEmpAction",
event: "showAddPage",
dataSet: dc,
container: me.container
});
};