You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
DS7/DSWeb/Areas/CommMng/Viewsjs/Comm/PubFunction.js

717 lines
22 KiB
JavaScript

2 years ago
function CheckFileExt(extstr, exg) {
var extstr = extstr.substring(extstr.lastIndexOf(".")).toLowerCase();
if (!extstr.match(exg)) {
return false;
}
return true;
}
function DateToStr(dt){
var str="";
if(dt.getFullYear){
var y,m,d;
y=formatNumber(dt.getFullYear(),'0000');
m=formatNumber((dt.getMonth()+1),'00'); //01-12
d=formatNumber(dt.getDate(),'00');
str= y+"-"+m+"-"+d;
}
return str;
}
function DateTimeToStr(dt){
var str="";
if(dt.getFullYear){
var y,m,d,h,mi,s;
y=formatNumber(dt.getFullYear(),'0000');
m=formatNumber((dt.getMonth()+1),'00'); //01-12
d=formatNumber(dt.getDate(),'00');
h=formatNumber(dt.getHours(),'00');
mi=formatNumber(dt.getMinutes(),'00');
s=formatNumber(dt.getSeconds(),'00');
str= y+"-"+m+"-"+d+" "+h+":"+mi+":"+s;
}
return str;
}
function StrToDate(str){
var arys= new Array();
arys=str.split('-');
var newDate=new Date(arys[0],arys[1]-1,arys[2]);
return newDate;
}
//重写fixed函数令其四舍五入算法正常
Number.prototype.toFixed = function (len) {
var add = 0;
var s, temp;
var s1 = this + "";
var start = s1.indexOf(".");
if (start >= 0) {
s1 = s1 + "0";
if (s1.substr(start + len + 1, 1) >= 5) add = 1;
var temp = Math.pow(10, len);
s = Math.floor(this.mul(temp)) + add;
return s / temp;
} else return this;
}
/*
数字格式化函数
, (半角的豆号) 如果有的话看豆号到小数点如果有的话前有几位则按几位划分整数部分
0数字零 如果该位上没有数字就补0
#井号 如果该位上有数字就输出数字没有则不输出
*/
function formatNumber(number,pattern){
var str = number.toString();
var strInt;
var strFloat;
var formatInt;
var formatFloat;
if(/\./g.test(pattern)){
formatInt = pattern.split('.')[0];
formatFloat = pattern.split('.')[1];
}else{
formatInt = pattern;
formatFloat = null;
}
if(/\./g.test(str)){
if(formatFloat!=null){
var tempFloat = Math.round(parseFloat('0.'+str.split('.')[1])*Math.pow(10,formatFloat.length))/Math.pow(10,formatFloat.length);
strInt = (Math.floor(number)+Math.floor(tempFloat)).toString();
strFloat = /\./g.test(tempFloat.toString())?tempFloat.toString().split('.')[1]:'0';
}else{
strInt = Math.round(number).toString();
strFloat = '0';
}
}else{
strInt = str;
strFloat = '0';
}
if(formatInt!=null){
var outputInt = '';
var zero = formatInt.match(/0*$/)[0].length;
var comma = null;
if(/,/g.test(formatInt)){
comma = formatInt.match(/,[^,]*/)[0].length-1;
}
var newReg = new RegExp('(\\d{'+comma+'})','g');
if(strInt.length<zero){
outputInt = new Array(zero+1).join('0')+strInt;
outputInt = outputInt.substr(outputInt.length-zero,zero)
}else{
outputInt = strInt;
}
var
outputInt = outputInt.substr(0,outputInt.length%comma)+outputInt.substring(outputInt.length%comma).replace(newReg,(comma!=null?',':'')+'$1')
outputInt = outputInt.replace(/^,/,'');
strInt = outputInt;
}
if(formatFloat!=null){
var outputFloat = '';
var zero = formatFloat.match(/^0*/)[0].length;
if(strFloat.length<zero){
outputFloat = strFloat+new Array(zero+1).join('0');
//outputFloat = outputFloat.substring(0,formatFloat.length);
var outputFloat1 = outputFloat.substring(0,zero);
var outputFloat2 = outputFloat.substring(zero,formatFloat.length);
outputFloat = outputFloat1+outputFloat2.replace(/0*$/,'');
}else{
outputFloat = strFloat.substring(0,formatFloat.length);
}
strFloat = outputFloat;
}else{
if(pattern!='' || (pattern=='' && strFloat=='0')){
strFloat = '';
}
}
return strInt+(strFloat==''?'':'.'+strFloat);
}
function ConvertFormValue(formvalue){
var ResultObject = new Object();
var dt = formvalue; //字符串转化为日期
ResultObject= "\\/Date("+Date.UTC(dt.getFullYear(),dt.getMonth(),dt.getDate(),dt.getHours(),dt.getMinutes(),dt.getSeconds())+")\\/"; //转化为UTC日期
return ResultObject;
}
//用于转换日期格式
function WebPosDateTimeToStr(dt){
var str = "";
if(dt!=null)
{
var obj = eval("new " + dt.substr(1,dt.length-2));//.toString();
//str=Ext.util.Format.date(obj,'Y-m-d H:i:s');
str=DateTimeToStr(obj);
}
return str;
}
function WebPosDateToStr(dt){
var str = "";
if(dt!=null)
{
var obj = eval("new " + dt.substr(1,dt.length-2));
str=DateToStr(obj);
}
return str;
}
//用于添加SQL语句的函数
function getAndConSql(sql,valuestr,constr){
if (valuestr == '' || valuestr == null || valuestr== undefined)
{
return '';
}
else
{
if (sql == '') {
return constr;
}
else {
return ' and ' + constr;
}
}
}
function getAndConSqlTwo(sql,constr){
if(sql=='')
{
return constr;
}
else
{
return ' and ' + constr;
}
}
//此函数验证EditGrid并显示需要的错误
//The function returns false if there is an error else it returns true.
function validateEditorGridPanel(grid) {
//var grid = Ext.getCmp(gridId);
var rows = grid.store.data.length;
var columns = grid.columns;
var editingPlugin = grid.editingPlugin;
for (var row = 0; row < rows; row++) {
var record = grid.store.getAt(row);
for (var col = 0; col < columns.length; col++) {
var column = columns[col];
var cellEditor = column.getEditor(record); //grid.colModel.getCellEditor(col, row);
if (cellEditor != undefined) {
if (!cellEditor.isValid()) {
editingPlugin.startEditByPosition({ row: row, column: col });
return false;
}
}
}
}
return true;
}
//把表格中显示的记录转为Json数据(只转修改的)
function ConvertRecordsToJson(items) {
if (items.length == 0) {
return "";
}
var jsonData = "[";
for (var i = 0; i < items.length; i++) {
var record = items[i];
if (record.dirty) {
jsonData += Ext.JSON.encode(record.data) + ",";
}
}
if (jsonData != "[") {
jsonData = jsonData.substring(0, jsonData.length - 1) + "]";
} else
jsonData = "";
return jsonData;
}
//把表格中显示的记录转为Json数据
function ConvertRecordsToJsonAll(items)
{
if(items.length==0)
{
return "";
}
var jsonData = "[";
for(i=0;i<items.length;i++) {
var record = items[i];
jsonData += Ext.JSON.encode(record.data) + ",";
}
if(jsonData!="[")
{
jsonData = jsonData.substring(0,jsonData.length-1) + "]";
}
else
jsonData="";
return jsonData;
}
//把表格中显示的记录转为Json数据
function convertArraysToString(items)
{
if(items.length==0)
{
return "";
}
var jsonData = "";
for(i=0;i<items.length;i++) {
var record = items[i];
jsonData += Ext.JSON.encode(record) + ",";
}
jsonData = jsonData.substring(0,jsonData.length-1);
return jsonData;
}
function convertArraysToJson(items) {
if (items.length == 0) {
return "";
}
var jsonData = "[";
for (i = 0; i < items.length; i++) {
var record = items[i];
jsonData += Ext.JSON.encode(record) + ",";
}
jsonData = jsonData.substring(0, jsonData.length - 1);
jsonData += "]";
return jsonData;
}
function ConvertStringListToJson(List) {
if (List.length == 0) {
return "";
}
var jsonData = "[";
for (i = 0; i < List.length; i++) {
jsonData += Ext.JSON.encode(List[i]) + ",";
}
if (jsonData != "[") {
jsonData = jsonData.substring(0, jsonData.length - 1) + "]";
}
else
jsonData = "";
return jsonData;
}
//判断如果Form中的控件为ReadOnly那么则设置为disable
function setFormCmpDisable(form)
{
form.getForm().items.each(function(item){
if(item.readOnly)
item.disable();
});
}
//判断如果Form中的控件为ReadOnly那么则设置为enable
function setFormCmpEnable(form)
{
form.getForm().items.each(function(item){
if(item.readOnly)
item.enable();
});
}
/*这里开始时UrlEncode和UrlDecode函数*/
UrlEncode = function(str)
{
str = str.replace(/./g,function(sHex)
{
window.EnCodeStr = "";
window.sHex = sHex;
window.execScript('window.EnCodeStr=Hex(Asc(window.sHex))',"vbscript");
return window.EnCodeStr.replace(/../g,"%$&");
});
return str;
}
function trim(str){
for(var i = 0 ; i<str.length && str.charAt(i)==" " ; i++ ) ;
for(var j =str.length; j>0 && str.charAt(j-1)==" " ; j--) ;
if(i>j) return "";
return str.substring(i,j);
}
function ExportExcel(gridPanel, config) {
if (gridPanel) {
var tmpStore = gridPanel.getStore();
var tmpExportContent = '';
//以下处理分页grid数据导出的问题从服务器中获取所有数据需要考虑性能
var tmpParam = Ext.ux.clone(tmpStore.lastOptions); //此处克隆了原网格数据源的参数信息
if (tmpParam && tmpParam.params) {
delete (tmpParam.params[tmpStore.paramNames.start]); //删除分页参数
delete (tmpParam.params[tmpStore.paramNames.limit]);
}
var tmpAllStore = new Ext.data.GroupingStore({//重新定义一个数据源
proxy: tmpStore.proxy,
reader: tmpStore.reader
});
tmpAllStore.on('load', function (store) {
config.store = store;
tmpExportContent = gridPanel.getExcelXml(false, config); //此方法用到了一中的扩展
if (Ext.isIE || Ext.isSafari || Ext.isSafari2 || Ext.isSafari3) {//在这几种浏览器中才需要IE8测试不能直接下载了
if (!Ext.fly('frmDummy')) {
var frm = document.createElement('form');
frm.id = 'frmDummy';
frm.name = id;
frm.className = 'x-hidden';
document.body.appendChild(frm);
}
Ext.Ajax.request({
//将生成的xml发送到服务器端,需特别注意这个页面的地址
url: '/CommMng/PubSys/ExportGrid',
method: 'POST',
form: Ext.fly('frmDummy'),
callback: function (o, s, r) {
//alert(r.responseText);
},
isUpload: true,
params: { ExportContent: tmpExportContent, ExportFile: gridPanel.id + '.xls' }
});
} else {
document.location = 'data:application/vnd.ms-excel;base64,' + Base64.encode(tmpExportContent);
}
});
tmpAllStore.load(tmpParam); //获取所有数据
}
};
function GridExportExcelPage(grid) {
var vExportContent = grid.getExcelXml();
if (Ext.isIE6 || Ext.isIE7 || Ext.isIE8 || Ext.isIE9 || Ext.isSafari || Ext.isSafari2 || Ext.isSafari3 || Ext.isChrome) {
if (!Ext.fly('frmDummy')) {
var frm = document.createElement('form');
frm.id = 'frmDummy';
frm.name = ''; //id;
frm.className = 'x-hidden';
document.body.appendChild(frm);
}
Ext.Ajax.request({
url: '/CommMng/PubSys/ExportGrid',
method: 'POST',
form: Ext.fly('frmDummy'),
callback: function (o, s, r) {
//alert(r.responseText);
},
isUpload: true,
params: {
ExportContent: Base64.encode(vExportContent),
ExportFile: '导出数据.xls'
}
});
} else {
document.location = 'data:application/vnd.ms-excel;base64,' + Base64.encode(vExportContent);
}
}
function PrintComm(printType, sql1, sql2, sql3, sql4, sql5, sql6) {
Ext.Msg.wait('正在准备打印数据, 请稍侯..');
Ext.Ajax.request({
waitMsg: '正在准备打印数据...',
url: '/CommMng/Print/GetPrintInfo',
scope: this,
params: {
type: printType,
sql1: sql1,
sql2: sql2,
sql3: sql3,
sql4: sql4,
sql5: sql5,
sql6: sql6
},
callback: function (options, success, response) {
if (success) {
Ext.MessageBox.hide();
var jsonresult = Ext.JSON.decode(response.responseText);
if (jsonresult.Success) {
var printUrl = "print://?comp=" + jsonresult.CompanyID + "&type=" + printType + "&dbid=" + jsonresult.DbSourceID + "&uid=" + jsonresult.UserId; //alert(printUrl);
if (jsonresult.PrServer != NaN && jsonresult.PrServer != null && jsonresult.PrServer != "")
printUrl = "print://?comp=" + jsonresult.CompanyID + "&type=" + printType + "&dbid=" + jsonresult.DbSourceID + "&uid=" + jsonresult.UserId + "&PrServer=" + jsonresult.PrServer + "&dbStr=" + jsonresult.dbStr; //alert(printUrl);
window.location.href = window.location.href;
location.href = printUrl;
} else {
Ext.Msg.show({ title: '错误', msg: jsonresult.Message, icon: Ext.Msg.ERROR, buttons: Ext.Msg.OK });
}
} else {
Ext.Msg.show({ title: '请重试',
msg: '服务器响应出错',
icon: Ext.Msg.ERROR, buttons: Ext.Msg.OK
});
}
}
});
}
function GridExportExcel(gridPanel, config) {
if (!config) {
config = {
store: null, //因为后续可能需要处理分页因此此处一般不直接传递GridPanel的数据源
title: '', //需要显示标题
limit: 4000
};
}
if (gridPanel) {
var tmpStore = gridPanel.getStore();
var vExportContent = '';
//以下处理分页grid数据导出的问题从服务器中获取所有数据需要考虑性能
var tmpParam = Ext.ux.constructor(tmpStore.lastOptions); //此处克隆了原网格数据源的参数信息
//alert(tmpParam.params[tmpStore.paramNames.limit]);
//此处作者原先为Ext.ux.clone(tmpStore.lastOptions)方法,但不好使
var tmpAllStore = new Ext.data.GroupingStore({//重新定义一个数据源
proxy: tmpStore.proxy,
reader: tmpStore.reader
});
tmpParam.params[tmpStore.paramNames.limit] = config.limit;
tmpAllStore.load(tmpParam); //获取所有数据
tmpAllStore.on('load', function (store) {
config.store = store;
vExportContent = gridPanel.getExcelXml(false, config); //此方法用到了一中的扩展
if (Ext.isIE6 || Ext.isIE7 || Ext.isIE8 || Ext.isSafari || Ext.isSafari2 || Ext.isSafari3) {
if (!Ext.fly('frmDummy')) {
var frm = document.createElement('form');
frm.id = 'frmDummy';
frm.name = id;
frm.className = 'x-hidden';
document.body.appendChild(frm);
}
Ext.Ajax.request({
url: '/PubSys/ExportGrid',
method: 'POST',
form: Ext.fly('frmDummy'),
callback: function (o, s, r) {
},
isUpload: true,
params: {
ExportContent: Base64.encode(vExportContent),
ExportFile: '导出数据.xls'
}
});
} else {
document.location = 'data:application/vnd.ms-excel;base64,' + Base64.encode(vExportContent);
}
});
}
};
Ext.define('WorkFlow_Step', {
extend: 'Ext.data.Model',
idProperty: 'id',
fields: [
{ name: 'GID', type: 'string' },
{ name: 'NAME', type: 'string' },
{ name: 'STEPNO', type: 'string' },
{ name: 'ISLAST', type: 'string' }
]
});
function GetWorkFlowStep(WorkflowID, USERID) {
var storeWorkFlow_Step = Ext.create('Ext.data.Store', {
model: 'WorkFlow_Stepmb',
remoteSort: false,
pruneModifiedRecords: true,
proxy: {
type: 'ajax',
url: '/OA/BasicDataRef/GetWorkFlowStep',
reader: {
id: 'GID',
root: 'data',
totalProperty: 'totalCount'
}
}
});
storeWorkFlow_Step.load({ params: { WorkflowID: WorkflowID, USERID: USERID} });
return storeWorkFlow_Step;
};
Ext.define('WorkFlow_Usingmb', {
extend: 'Ext.data.Model',
idProperty: 'id',
fields: [
{ name: 'BSNO', type: 'string' },
{ name: 'WORKFLOWID', type: 'string' },
{ name: 'STEPNO', type: 'string' },
{ name: 'REJECTOR_ID', type: 'string' },
{ name: 'REJECT_TIME', type: 'string' },
{ name: 'FINISHED', type: 'string' },
{ name: 'ISDELETE', type: 'string' },
{ name: 'DELETEUSER', type: 'string' },
{ name: 'DELETETIME', type: 'string' }
]
});
function GetWorkFlowCanDo(WorkflowID, StepNo, USERID) {
var storeWorkFlow_Using = Ext.create('Ext.data.Store', {
model: 'WorkFlow_Usingmb',
remoteSort: false,
pruneModifiedRecords: true,
proxy: {
type: 'ajax',
url: '/OA/BasicDataRef/GetWorkFlowState',
reader: {
id: 'BSNO',
root: 'data',
totalProperty: 'totalCount'
}
}
});
//WorkflowID, StepNo, USERID
this.storeWorkFlow_Using.load({ params: { WorkflowID: WorkflowID, StepNo: parseInt(StepNo), USERID: USERID} });
};
//除法函数,用来得到精确的除法结果
//说明javascript的除法结果会有误差在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。
//调用accDiv(arg1,arg2)
//返回值arg1除以arg2的精确结果
function accDiv(arg1, arg2) {
var t1 = 0, t2 = 0, r1, r2;
try { t1 = arg1.toString().split(".")[1].length } catch (e) { }
try { t2 = arg2.toString().split(".")[1].length } catch (e) { }
with (Math) {
r1 = Number(arg1.toString().replace(".", ""))
r2 = Number(arg2.toString().replace(".", ""))
return (r1 / r2) * pow(10, t2 - t1);
}
}
//给Number类型增加一个div方法调用起来更加方便。
Number.prototype.div = function (arg) {
return accDiv(this, arg);
}
//乘法函数,用来得到精确的乘法结果
//说明javascript的乘法结果会有误差在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
//调用accMul(arg1,arg2)
//返回值arg1乘以arg2的精确结果
function accMul(arg1, arg2) {
var m = 0, s1 = arg1.toString(), s2 = arg2.toString();
try { m += s1.split(".")[1].length } catch (e) { }
try { m += s2.split(".")[1].length } catch (e) { }
return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m)
}
//给Number类型增加一个mul方法调用起来更加方便。
Number.prototype.mul = function (arg) {
return accMul(arg, this);
}
//加法函数,用来得到精确的加法结果
//说明javascript的加法结果会有误差在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
//调用accAdd(arg1,arg2)
//返回值arg1加上arg2的精确结果
function accAdd(arg1, arg2) {
var r1, r2, m;
try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 }
try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 }
m = Math.pow(10, Math.max(r1, r2))
return accDiv((accMul(arg1 , m) + accMul(arg2 , m)) , m)
}
//给Number类型增加一个add方法调用起来更加方便。
Number.prototype.add = function (arg) {
return accAdd(arg, this);
}
function Add(a, b, length) {
if ((typeof (length) == undefined) || (length == null)) {
length = 2;
}
var _r = parseFloat(a).add(parseFloat(b)).toFixed(parseInt(length));
return parseFloat(_r);
}
function Cut(a, b, length) {
if ((typeof (length) == undefined) || (length == null)) {
length = 2;
}
var _r = parseFloat(a).add(parseFloat(0) - parseFloat(b)).toFixed(parseInt(length));
return parseFloat(_r);
}
function Mul(a, b, length) {
if ((typeof (length) == undefined) || (length == null)) {
length = 2;
}
var _r = parseFloat(a).mul(parseFloat(b))
var _r2 = _r.toFixed(parseInt(length));
return parseFloat(_r2);
}
function Mul3(a, b, c, length) {
if ((typeof (length) == undefined) || (length == null)) {
length = 2;
}
var _r = (parseFloat(a).mul(parseFloat(b)).mul(parseFloat(c))).toFixed(parseInt(length));
return parseFloat(_r);
}
function Mul4(a, b, c, d, length) {
if ((typeof (length) == undefined) || (length == null)) {
length = 2;
}
var _r = (parseFloat(a).mul(parseFloat(b)).mul(parseFloat(c)).mul(parseFloat(d))).toFixed(parseInt(length));
return parseFloat(_r);
}
function Mul5(a, b, c, d, e, length) {
if ((typeof (length) == undefined) || (length == null)) {
length = 2;
}
var _r = (parseFloat(a).mul(parseFloat(b)).mul(parseFloat(c)).mul(parseFloat(d)).mul(parseFloat(e))).toFixed(parseInt(length));
return parseFloat(_r);
}
function Div(a, b, length) {
if ((typeof (length) == undefined) || (length == null)) {
length = 2;
}
var _r = parseFloat(a).div(parseFloat(b)).toFixed(parseInt(length));
return parseFloat(_r);
}
function newGuid() {
var guid = "";
for (var i = 1; i <= 32; i++) {
var n = Math.floor(Math.random() * 16.0).toString(16);
guid += n;
if ((i == 8) || (i == 12) || (i == 16) || (i == 20))
guid += "-";
}
return guid.toUpperCase();
}