cksoft-utility.js 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649
  1. 
  2. /*
  3. 自动读取控件值
  4. */
  5. function GetWebControlsFor(element, colds) {
  6. var resultjson = jQuery.parseJSON('{"resultcode":"-1"}');
  7. try {
  8. var controlname = "";
  9. var controls = null;
  10. var controltype = 0;
  11. for (var row in colds["querycoldetail"]) {
  12. controlname = "#" + colds["querycoldetail"][row]["控件名称"];//读取控件名称
  13. controls = $(element).find(controlname);//在element元素中查找ID为controlname的控件,返回控件数组
  14. controltype = colds["querycoldetail"][row]["控件类型"];//读取控件类型
  15. if (controls.length > 0) {//如果返回的控件数组长度大于0,则取第一个控件赋值
  16. switch (controltype) {
  17. case 2:
  18. break;
  19. default:
  20. resultjson[colds["querycoldetail"][row]["字段别名"]] = controls[0].value;
  21. break;
  22. }
  23. }
  24. else {
  25. resultjson[colds["querycoldetail"][row]["字段别名"]] = "";
  26. }
  27. }
  28. resultjson["resultcode"] = 1;
  29. return resultjson;
  30. }
  31. catch (error) {
  32. resultjson["errorinfo"] = error;
  33. return resultjson;
  34. }
  35. }
  36. function GetWebControlsFor1(element, orgdata, colds) {
  37. var resultjson = {};
  38. try {
  39. var controlname = "";
  40. var controls = null;
  41. var controltype = 0;
  42. if (orgdata != null) {
  43. for (var row in colds["querycoldetail"]) {
  44. controlname = "#" + colds["querycoldetail"][row]["控件名称"];//读取控件名称
  45. controls = $(element).find(controlname);//在element元素中查找ID为controlname的控件,返回控件数组
  46. controltype = colds["querycoldetail"][row]["控件类型"];//读取控件类型
  47. if (controls.length > 0) {//如果返回的控件数组长度大于0,则取第一个控件赋值
  48. switch (controltype) {
  49. case 2:
  50. break;
  51. default:
  52. orgdata[colds["querycoldetail"][row]["字段别名"]] = controls[0].value;
  53. break;
  54. }
  55. }
  56. }
  57. return orgdata;
  58. }
  59. else {
  60. for (var row in colds["querycoldetail"]) {
  61. controlname = "#" + colds["querycoldetail"][row]["控件名称"];//读取控件名称
  62. controls = $(element).find(controlname);//在element元素中查找ID为controlname的控件,返回控件数组
  63. controltype = colds["querycoldetail"][row]["控件类型"];//读取控件类型
  64. if (controls.length > 0) {//如果返回的控件数组长度大于0,则取第一个控件赋值
  65. switch (controltype) {
  66. case 2:
  67. break;
  68. default:
  69. resultjson[colds["querycoldetail"][row]["字段别名"]] = controls[0].value;
  70. break;
  71. }
  72. }
  73. else {
  74. resultjson[colds["querycoldetail"][row]["字段别名"]] = "";
  75. }
  76. }
  77. return resultjson;
  78. }
  79. }
  80. catch (error) {
  81. resultjson["errorinfo"] = error;
  82. return resultjson;
  83. }
  84. }
  85. /*
  86. 自动给控件赋值
  87. */
  88. function SetWebControlsFor(element, data, colds) {
  89. var resultjson = jQuery.parseJSON('{"resultcode":"-1"}');
  90. try {
  91. if (data == null) {
  92. data = GetNullRowFromCol(colds);
  93. //if (data.hasOwnProperty("errorcode")) {
  94. // alert("调用发生错误,错误信息为:" + json.message);
  95. // return;
  96. //}
  97. if (data["resultcode"] <= 0) {
  98. return data;
  99. }
  100. }
  101. var controlname = "";
  102. var controls = null;
  103. var controltype = 0;
  104. for (var row in colds["querycoldetail"]) {
  105. controlname = "#" + colds["querycoldetail"][row]["控件名称"];//读取控件名称
  106. controls = $(element).find(controlname);//在element元素中查找ID为controlname的控件,返回控件数组
  107. controltype = colds["querycoldetail"][row]["控件类型"];//读取控件类型
  108. if (controls.length > 0) {//如果返回的控件数组长度大于0,则取第一个控件赋值
  109. switch (controltype) {
  110. case 2:
  111. break;
  112. default:
  113. controls[0].value = data[colds["querycoldetail"][row]["字段别名"]];
  114. break;
  115. }
  116. }
  117. }
  118. resultjson["resultcode"] = 1;
  119. return resultjson;
  120. }
  121. catch (error) {
  122. resultjson["errorinfo"] = error;
  123. return resultjson;
  124. }
  125. }
  126. //根据字段信息产生空的json类型数据
  127. function GetNullRowFromCol(colds) {
  128. var vjson = jQuery.parseJSON('{"resultcode":"-1"}');
  129. try {
  130. var colname = "";
  131. var controltype = 0;
  132. for (var row in colds["querycoldetail"]) {
  133. colname = colds["querycoldetail"][row]["字段别名"];//读取控件类型
  134. controltype = colds["querycoldetail"][row]["控件值类型"];//读取控件名称
  135. switch (controltype) {
  136. case 3://数值类型
  137. vjson[colname] = 0;
  138. break;
  139. case 4://数值类型
  140. vjson[colname] = 0;
  141. break;
  142. default://缺省使用字符串类型
  143. vjson[colname] = "";
  144. break;
  145. }
  146. }
  147. //delete vjson["errorcode"];//删除json数据字段
  148. vjson["resultcode"] = 1;
  149. return vjson;
  150. }
  151. catch (error) {
  152. vjson["errorinfo"] = error;
  153. return vjson;
  154. }
  155. }
  156. function GetQueryCol(queryid) {
  157. var vjson = jQuery.parseJSON('{"resultcode":"-1"}');
  158. try {
  159. var Nurl = '/DllBase/utility/ReadQueryCol';
  160. var PostDdata = { "QueryID": queryid };
  161. var parm = { json: PostDdata };
  162. AjaxJson(Nurl, PostDdata, function (result) {
  163. vjson = result;
  164. });
  165. //vjson = JSON.parse(vjson);
  166. //if (vjson.hasOwnProperty("resultcode")) {
  167. // //alert("调用发生错误,错误信息为:" + json.message);
  168. // return vjson;
  169. //}
  170. return vjson;
  171. }
  172. catch (error) {
  173. vjson["resultcode"] = -1;
  174. vjson["errorinfo"] = error;
  175. return vjson;
  176. }
  177. }
  178. //单条送货明细转流程
  179. function SGoodsDetailToFlowWork(id) {
  180. var vjson = jQuery.parseJSON('{"ID":"0"}');
  181. vjson["ID"] = id;
  182. try {
  183. var Nurl = '/OilModule/SGoodsMst/SGoodsDetailToFlowWork';
  184. var str = JSON3.stringify(vjson);
  185. var parm = { json: str };
  186. AjaxJson(Nurl, parm, function (result) {
  187. vjson = result;
  188. });
  189. vjson = JSON.parse(vjson);
  190. if (vjson.hasOwnProperty("resultcode")) {
  191. //alert("调用发生错误,错误信息为:" + json.message);
  192. return vjson;
  193. }
  194. return vjson;
  195. }
  196. catch (error) {
  197. vjson["resultcode"] = -1;
  198. vjson["errorinfo"] = error;
  199. return vjson;
  200. }
  201. }
  202. //根据查询ID和条件读取不带参数的查询数据
  203. function RDForQueryIndexOName(queryid, condition) {
  204. var vjson = jQuery.parseJSON('{"resultcode":"-1"}');
  205. try {
  206. var Nurl = '/DllBase/utility/RDForQueryIndexOName';
  207. var PostDdata = { "queryid": queryid, "condition": condition };
  208. //var parm = { json: PostDdata };
  209. AjaxJson(Nurl, PostDdata, function (result) {
  210. vjson = result;
  211. });
  212. //vjson = JSON.parse(vjson);
  213. //if (vjson.hasOwnProperty("resultcode")) {
  214. // //alert("调用发生错误,错误信息为:" + json.message);
  215. // return vjson;
  216. //}
  217. return vjson;
  218. }
  219. catch (error) {
  220. vjson["resultcode"] = -1;
  221. vjson["errorinfo"] = error;
  222. return vjson;
  223. }
  224. }
  225. //根据查询ID和条件读取不带参数的查询数据
  226. function RDForQueryIndexONameArgs(queryid, condition) {
  227. var vjson = jQuery.parseJSON('{"resultcode":"-1"}');
  228. try {
  229. var Nurl = '/OilModule/ProColorType/RDForQueryIndexONameArgs';
  230. var PostDdata = '{ "QueryID": "' + queryid + '", "condition": "' + condition + '}';
  231. var parm = { json: PostDdata };
  232. AjaxJson(Nurl, parm, function (result) {
  233. vjson = result;
  234. });
  235. //vjson = JSON.parse(vjson);
  236. //if (vjson.hasOwnProperty("resultcode")) {
  237. // //alert("调用发生错误,错误信息为:" + json.message);
  238. // return vjson;
  239. //}
  240. return vjson;
  241. }
  242. catch (error) {
  243. vjson["resultcode"] = -1;
  244. vjson["errorinfo"] = error;
  245. return vjson;
  246. }
  247. }
  248. //根据查询ID和条件读取不带参数的查询数据
  249. function RDForQueryIndexONameArgsForDb(queryid, condition, dbname) {
  250. var vjson = jQuery.parseJSON('{"resultcode":"-1"}');
  251. try {
  252. var Nurl = '/DllBase/utility/RDForQueryIndexONameArgsForDb';
  253. //var PostDdata = '{ "QueryID": "' + queryid + '", "condition": "' + condition + '","dbname":"' + dbname + '"}';
  254. var PostDdata = { "queryid": queryid, "condition": condition, "dbname": dbname };
  255. var parm = { json: PostDdata };
  256. AjaxJson(Nurl, PostDdata, function (result) {
  257. vjson = result;
  258. });
  259. return vjson;
  260. }
  261. catch (error) {
  262. vjson["resultcode"] = -1;
  263. vjson["errorinfo"] = error;
  264. return vjson;
  265. }
  266. }
  267. //根据查询配置数据组成GRID字段
  268. function GetTableColStr(tablecoljson) {
  269. var str = "[";
  270. for (var i = 0; i < tablecoljson.querycoldetail.length; i++) {
  271. if (i > 0) {
  272. str += ",";
  273. }
  274. str += "{label: '" + tablecoljson.querycoldetail[i]["字段别名"] + "', name: '" + tablecoljson.querycoldetail[i]["字段别名"] + "', index: '" + tablecoljson.querycoldetail[i]["字段别名"] + "', align: 'center',sortable: true";
  275. str += ", width: " + tablecoljson.querycoldetail[i]["宽度"];
  276. if (tablecoljson.querycoldetail[i]["是否可见"] == 0) {
  277. str += ",hidden: true";
  278. }
  279. if (tablecoljson.querycoldetail[i]["备注"] != "") {
  280. str += ",formatter: " + tablecoljson.querycoldetail[i]["备注"];
  281. }
  282. str += "}";
  283. }
  284. str += "]";
  285. var json = eval('(' + str + ')');
  286. return json;
  287. }
  288. //根据数据初始化combox下拉控件
  289. function FillCombox(combox, data, preid) {
  290. for (var i = combox.length - 1; i >= 0; i--) {
  291. combox.remove(i);
  292. }
  293. var tempval = null;
  294. for (var key in data) {
  295. tempval = data[key];
  296. if (tempval["主项ID"] != preid)
  297. continue;
  298. combox.add(new Option(tempval["名称"], tempval["ID"]));
  299. }
  300. }
  301. //根据查询ID和条件读取不带参数的查询数据
  302. function Select(sqlstr) {
  303. var vjson = jQuery.parseJSON('{"resultcode":"-1"}');
  304. try {
  305. var Nurl = '/OilModule/ProColorType/Select';
  306. var PostDdata = [];
  307. PostDdata["sqlstr"] = sqlstr;
  308. var jsonstr = JSON3.stringify(PostDdata);
  309. //var PostDdata = '{ "sqlstr": "' + sqlstr + '"}';
  310. var parm = { json: jsonstr };
  311. AjaxJson(Nurl, parm, function (result) {
  312. vjson = result;
  313. });
  314. //vjson = JSON.parse(vjson);
  315. //if (vjson.hasOwnProperty("resultcode")) {
  316. // //alert("调用发生错误,错误信息为:" + json.message);
  317. // return vjson;
  318. //}
  319. return vjson;
  320. }
  321. catch (error) {
  322. vjson["resultcode"] = -1;
  323. vjson["errorinfo"] = error;
  324. return vjson;
  325. }
  326. }
  327. //给gridtable添加行
  328. function addRowForjqGrid(gridtable, data) {
  329. var ids = jQuery(gridtable).jqGrid('getDataIDs');
  330. //获得当前最大行号(数据编号)
  331. var rowid = Math.max.apply(Math, ids);
  332. if (rowid == '-Infinity') {
  333. rowid = 0;
  334. }
  335. //获得新添加行的行号(数据编号)
  336. var newrowid = rowid + 1;
  337. //将新添加的行插入到第一列
  338. $(gridtable).jqGrid("addRowData", newrowid, data, "last");
  339. }
  340. //修改行数据,如没有就添加行
  341. function ModifyRowForjqGrid(gridtable, data, keyname) {
  342. var ids = $(gridtable).getDataIDs();//返回数据表的ID数组["66","39"..]
  343. var rowindex = -1;
  344. var getRow = null;
  345. for (var i = 0; i < ids.length; i++) {
  346. getRow = $(gridtable).getRowData(ids[i]);//获取当前的数据行
  347. if (getRow[keyname] == data[keyname]) {
  348. rowindex = ids[i];
  349. break;
  350. }
  351. }
  352. if (rowindex == -1) {
  353. addRowForjqGrid(gridtable, data);
  354. return;
  355. }
  356. $(gridtable).setRowData(rowindex, data);
  357. }
  358. //修改json数组数据,如没有就添加行
  359. function ModifyRowForJson(orgdata, data, keyname) {
  360. for (var i = 0; i < orgdata.length; i++) {
  361. if (orgdata[i][keyname] == data[keyname]) {
  362. if (orgdata[i]["OPERATOR"] == 0) {
  363. data["OPERATOR"] = 2;
  364. }
  365. else {
  366. data["OPERATOR"] = orgdata[i]["OPERATOR"];
  367. }
  368. orgdata[i] = data;
  369. return;
  370. }
  371. }
  372. data["OPERATOR"] = 1;
  373. orgdata.push(data);
  374. }
  375. //获取修改的数据
  376. function GetChangeForJson(orgdata) {
  377. var change = [];
  378. for (var i = 0; i < orgdata.length; i++) {
  379. if (orgdata[i]["OPERATOR"] == 0) {
  380. continue;
  381. }
  382. change.push(orgdata[i]);
  383. }
  384. return change;
  385. }
  386. //获取JSON数组关键字小于0的最小值
  387. function GetJsonKeyMinVal(orgdata, keyname) {
  388. var min = 0;
  389. for (var i = 0; i < orgdata.length; i++) {
  390. if (orgdata[i][keyname] >= 0) {
  391. continue;
  392. }
  393. if (orgdata[i][keyname] < min) {
  394. min = orgdata[i][keyname];
  395. }
  396. }
  397. return min - 1;
  398. }
  399. //在JSON中查找
  400. function FindRowForJson(orgdata, keyname, keyval) {
  401. for (var i = 0; i < orgdata.length; i++) {
  402. if (orgdata[i][keyname] == keyval) {
  403. return orgdata[i];
  404. }
  405. }
  406. return null;
  407. }
  408. //删除JSON数组中指定的对象
  409. function removeByValue(orgdata, keyname, keyval) {
  410. for (var i = 0; i < orgdata.length; i++) {
  411. if (orgdata[i][keyname] == keyval) {
  412. orgdata.splice(i, 1);
  413. return;
  414. }
  415. }
  416. }
  417. //将json数组以json对象返回
  418. function GetJsonFromData(ds, tablename) {
  419. var colarr = [];
  420. for (var vjson in ds[0]) {
  421. var tempjson = { "colname": vjson };
  422. colarr.push(tempjson);
  423. }
  424. var querycollen = tablename + "_col_len";
  425. var querycol = tablename + "_col";
  426. var dscollen = tablename + "_len";
  427. var myjson = {};
  428. myjson[querycollen] = colarr.length;
  429. myjson[querycol] = colarr;
  430. myjson[dscollen] = ds.length;
  431. myjson[tablename] = ds;
  432. return myjson;
  433. }
  434. //产生表数据,返回json对象,前提是有表的字段描述表
  435. function GetJsonFromDataTable(myjson, queryds, ds, tablename) {
  436. var querycollen = tablename + "_col_len";
  437. var querycol = tablename + "_col";
  438. var dscollen = tablename + "_len";
  439. if (myjson == null) {
  440. myjson = {};
  441. }
  442. myjson[querycollen] = queryds.length;
  443. myjson[querycol] = queryds;
  444. myjson[dscollen] = ds.length;
  445. myjson[tablename] = ds;
  446. return myjson;
  447. }
  448. //将json数组对象序列化成json对象
  449. var MvcParamMatch = (function () {
  450. var MvcParameterAdaptive = {};
  451. //验证是否为数组
  452. MvcParameterAdaptive.isArray = Function.isArray || function (o) {
  453. return typeof o === "object" &&
  454. Object.prototype.toString.call(o) === "[object Array]";
  455. };
  456. //将数组转换为对象
  457. MvcParameterAdaptive.convertArrayToObject = function (arrName, array, saveOjb) {
  458. var obj = saveOjb || {};
  459. function func(name, arr) {
  460. for (var i in arr) {
  461. if (!MvcParameterAdaptive.isArray(arr[i]) && typeof arr[i] === "object") {
  462. for (var j in arr[i]) {
  463. if (MvcParameterAdaptive.isArray(arr[i][j])) {
  464. func(name + "[" + i + "]." + j, arr[i][j]);
  465. } else if (typeof arr[i][j] === "object") {
  466. MvcParameterAdaptive.convertObject(name + "[" + i + "]." + j + ".", arr[i][j], obj);
  467. } else {
  468. obj[name + "[" + i + "]." + j] = arr[i][j];
  469. }
  470. }
  471. } else {
  472. obj[name + "[" + i + "]"] = arr[i];
  473. }
  474. }
  475. }
  476. func(arrName, array);
  477. return obj;
  478. };
  479. //转换对象
  480. MvcParameterAdaptive.convertObject = function (objName, turnObj, saveOjb) {
  481. var obj = saveOjb || {};
  482. function func(name, tobj) {
  483. for (var i in tobj) {
  484. if (MvcParameterAdaptive.isArray(tobj[i])) {
  485. MvcParameterAdaptive.convertArrayToObject(i, tobj[i], obj);
  486. } else if (typeof tobj[i] === "object") {
  487. func(name + i + ".", tobj[i]);
  488. } else {
  489. obj[name + i] = tobj[i];
  490. }
  491. }
  492. }
  493. func(objName, turnObj);
  494. return obj;
  495. };
  496. return function (json, arrName) {
  497. arrName = arrName || "";
  498. if (typeof json !== "object") throw new Error("请传入json对象");
  499. if (MvcParameterAdaptive.isArray(json) && !arrName) throw new Error("请指定数组名,对应Action中数组参数名称!");
  500. if (MvcParameterAdaptive.isArray(json)) {
  501. return MvcParameterAdaptive.convertArrayToObject(arrName, json);
  502. }
  503. return MvcParameterAdaptive.convertObject("", json);
  504. };
  505. })();
  506. function RootPath() {
  507. var strFullPath = window.document.location.href;
  508. var strPath = window.document.location.pathname;
  509. var pos = strFullPath.indexOf(strPath);
  510. var prePath = strFullPath.substring(0, pos);
  511. var postPath = strPath.substring(0, strPath.substr(1).indexOf('/') + 1);
  512. //return (prePath + postPath);如果发布IIS,有虚假目录用用这句
  513. return (prePath);
  514. }
  515. //URL为相对地址,基础地址由系统计算
  516. function AjaxJson(url, postData, callBack) {
  517. $.ajax({
  518. url: RootPath() + url,
  519. type: "post",
  520. //contentType:"application/json",
  521. data: postData,
  522. dataType: "json",
  523. async: false,
  524. success: function (data) {
  525. if (data.Code == "-1") {
  526. Loading(false);
  527. dialogAlert(data.Message, -1);
  528. } else {
  529. Loading(false);
  530. callBack(data);
  531. }
  532. },
  533. error: function (data) {
  534. Loading(false);
  535. dialogAlert(data.responseText, -1);
  536. }
  537. });
  538. }
  539. //提供完整的URL地址
  540. function AjaxJsonFullUrl(purl, postData, callBack) {
  541. $.ajax({
  542. url: purl,
  543. type: "post",
  544. //contentType:"application/json",
  545. data: postData,
  546. dataType: "json",
  547. async: false,
  548. success: function (data) {
  549. if (data.Code == "-1") {
  550. Loading(false);
  551. dialogAlert(data.Message, -1);
  552. } else {
  553. Loading(false);
  554. callBack(data);
  555. }
  556. },
  557. error: function (data) {
  558. Loading(false);
  559. dialogAlert(data.responseText, -1);
  560. }
  561. });
  562. }
  563. //读取用户菜单
  564. function GetUserMenu() {
  565. var vjson = jQuery.parseJSON('{"resultcode":"-1"}');
  566. try {
  567. var Nurl = '/Utility/GetUserMenu';
  568. var PostDdata = { "QueryID": 1 };
  569. var parm = { json: PostDdata };
  570. var jsonobj = {};
  571. jsonobj["QueryID"] = 1;
  572. AjaxJson(Nurl, MvcParamMatch(jsonobj), function (result) {
  573. vjson = result;
  574. });
  575. //vjson = JSON.parse(vjson);
  576. //if (vjson.hasOwnProperty("resultcode")) {
  577. // //alert("调用发生错误,错误信息为:" + json.message);
  578. // return vjson;
  579. //}
  580. return vjson;
  581. }
  582. catch (error) {
  583. vjson["resultcode"] = -1;
  584. vjson["errorinfo"] = error;
  585. return vjson;
  586. }
  587. }
  588. //读取用户菜单
  589. function GetUserMenu01(orgdata) {
  590. var vjson = jQuery.parseJSON('{"resultcode":"-1"}');
  591. try {
  592. var Nurl = '/Utility/GetUserMenu01';
  593. AjaxJson(Nurl, MvcParamMatch(orgdata), function (result) {
  594. vjson = result;
  595. });
  596. //vjson = JSON.parse(vjson);
  597. //if (vjson.hasOwnProperty("resultcode")) {
  598. // //alert("调用发生错误,错误信息为:" + json.message);
  599. // return vjson;
  600. //}
  601. return vjson;
  602. }
  603. catch (error) {
  604. vjson["resultcode"] = -1;
  605. vjson["errorinfo"] = error;
  606. return vjson;
  607. }
  608. }