app.js 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326
  1. "use strict";
  2. var LOGINURL = "/user/login.html";
  3. var YJYDLOGINURL = "/app/whepi/user/login.html";
  4. var CURRENTROLEID = 0;
  5. var timer1 = null;
  6. function demoApi(url) {
  7. return 'http://localhost:8087/api' + url;
  8. }
  9. function fmtDate(javaTimestamp) {
  10. if (!javaTimestamp) {
  11. return "";
  12. }
  13. var timestamp = moment(new Date(parseInt(javaTimestamp)));
  14. return timestamp.format("YYYY-MM-DD HH:mm:ss");
  15. }
  16. // 判断页面操作权限,返回值false取消按钮,返回true显示按钮
  17. function getOperationType(menuCode) {
  18. var type = false;
  19. $.yvan.ajax({
  20. url: api('/sys/sysRole/getOperationType?menuCode=' + menuCode),
  21. method: 'get',
  22. async: false,
  23. success: function (data) {
  24. type = data.data;
  25. }
  26. });
  27. return type;
  28. }
  29. // 户档tab页面的查询 当前客户信息
  30. function queryJoName(joId) {
  31. var type = null;
  32. $.yvan.ajax({
  33. url: api('/jdOrg/query/getjoName'),
  34. method: 'get',
  35. async: false,
  36. data: {joId: joId},
  37. success: function (data) {
  38. console.log(data.data)
  39. type = data.data.joName;
  40. }
  41. });
  42. return type;
  43. }
  44. // 判断value是数组,还是字符串,是数组就拼接成字符串,是字符串就直接
  45. function getFromJoin(value) {
  46. var values = "";
  47. if (value instanceof Array) {
  48. for (var i = 0; i < value.length; i++) {
  49. values += value[i] + ",";
  50. }
  51. values = values.substr(0, values.length - 1);
  52. } else {
  53. values = value;
  54. }
  55. return values;
  56. }
  57. (function ($) {
  58. function ajaxBizError(body) {
  59. if (body.msg === 'ValidateError') {
  60. var sb = [];
  61. for (var v in body.data) {
  62. sb.push(body.data[v]);
  63. }
  64. $.yvan.error(sb.join(', '));
  65. return;
  66. }
  67. if (body.msg === 'DuplicateKeyException') {
  68. $.yvan.error("数据重复,请检查编号是否已存在!");
  69. return;
  70. }
  71. if (body.data && body.data.errorType === 'BIZ_ERROR') {
  72. $.yvan.info(body.msg);
  73. return;
  74. } else if (body.data && body.data.errorType === 'RUNTIME_ERROR') {
  75. $.yvan.error(body.msg);
  76. return;
  77. }
  78. $.yvan.error(body.msg);
  79. }
  80. function ajaxException(event, xhr, options, exc) {
  81. if (event.status === 403) {
  82. top.window.location.href = jumpApi(LOGINURL);
  83. return;
  84. }
  85. if (event.status === 401) {
  86. $.yvan.error("无权限!");
  87. return;
  88. }
  89. if (event.status === 404) {
  90. $.yvan.error("资源不存在:" + this.url);
  91. return;
  92. }
  93. if (options.message) {
  94. $.yvan.error(options.message);
  95. return;
  96. }
  97. if (event.responseJSON) {
  98. ajaxBizError(event.responseJSON);
  99. return;
  100. }
  101. $.yvan.error("无法连接到服务器, 或服务器异常");
  102. }
  103. $.yvan = $.yvan || {};
  104. $.extend($.yvan, {
  105. ajaxException: ajaxException,
  106. ajaxBizError: ajaxBizError,
  107. ts: function (cellvalue) {
  108. var date = new Date();
  109. if (cellvalue == null || cellvalue == undefined || cellvalue == "") {
  110. return "";
  111. }
  112. date.setTime(cellvalue);
  113. var y = date.getFullYear();
  114. var m = date.getMonth() + 1;
  115. m = m < 10 ? ('0' + m) : m;
  116. var d = date.getDate();
  117. d = d < 10 ? ('0' + d) : d;
  118. var h = date.getHours();
  119. h = h < 10 ? ('0' + h) : h;
  120. var minute = date.getMinutes();
  121. var second = date.getSeconds();
  122. minute = minute < 10 ? ('0' + minute) : minute;
  123. second = second < 10 ? ('0' + second) : second;
  124. //如果是1900-1-1,就空
  125. // if (y == '1900' && m == '01' && d == '01')
  126. // return "";
  127. if (y <= 1900)
  128. return "";
  129. if (y >= 2199)
  130. return "";
  131. return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;
  132. },
  133. tsD: function (cellvalue) {
  134. var date = new Date();
  135. if (cellvalue == null || cellvalue == undefined || cellvalue == "") {
  136. return "";
  137. }
  138. date.setTime(cellvalue);
  139. var y = date.getFullYear();
  140. var m = date.getMonth() + 1;
  141. m = m < 10 ? ('0' + m) : m;
  142. var d = date.getDate();
  143. d = d < 10 ? ('0' + d) : d;
  144. var h = date.getHours();
  145. h = h < 10 ? ('0' + h) : h;
  146. var minute = date.getMinutes();
  147. var second = date.getSeconds();
  148. minute = minute < 10 ? ('0' + minute) : minute;
  149. second = second < 10 ? ('0' + second) : second;
  150. //如果是1900-1-1,就空
  151. // if (y == '1900' && m == '01' && d == '01')
  152. // return "";
  153. if (y <= 1900)
  154. return "";
  155. if (y >= 2199)
  156. return "";
  157. return y + '-' + m + '-' + d + ' ' + h + ':' + minute;
  158. },
  159. taskStatusMo: function (cellvalue) {
  160. /*if (cellvalue == null || cellvalue == undefined || cellvalue == "") {
  161. return "";
  162. }*/
  163. if (cellvalue == 2) {
  164. return '已完成'.fontcolor('green');
  165. } else if (cellvalue == 1) {
  166. return '进行中';
  167. } else if (cellvalue == 0 || cellvalue == null) {
  168. return '未开始'.fontcolor('red');
  169. }
  170. },
  171. tsymd: function (cellvalue) {
  172. var date = new Date();
  173. if (cellvalue == null || cellvalue == undefined || cellvalue == "") {
  174. return "";
  175. }
  176. date.setTime(cellvalue);
  177. var y = date.getFullYear();
  178. var m = date.getMonth() + 1;
  179. m = m < 10 ? ('0' + m) : m;
  180. var d = date.getDate();
  181. d = d < 10 ? ('0' + d) : d;
  182. //如果是1900-1-1,就空
  183. // if (y == '1900' && m == '01' && d == '01')
  184. // return "";
  185. if (y <= 1900)
  186. return "";
  187. if (y >= 2199)
  188. return "";
  189. return y + '-' + m + '-' + d;
  190. },
  191. download: function (opts) {
  192. function createObjectURL(object) {
  193. return (window.URL) ? window.URL.createObjectURL(object) : window.webkitURL.createObjectURL(object);
  194. }
  195. var formData = new FormData();
  196. //兼容传json
  197. if (opts.data) {
  198. formData = opts.data;
  199. }
  200. var xhr = new XMLHttpRequest();
  201. xhr.open(opts.method || 'post', opts.url);
  202. xhr.responseType = 'blob';
  203. xhr.setRequestHeader("Authorization", $.cookie('auth'));
  204. //兼容传json
  205. if (opts.data) {
  206. xhr.setRequestHeader("Content-Type", "application/json");
  207. }
  208. xhr.onload = function (e) {
  209. if (this.status === 200) {
  210. var blob = this.response;
  211. var filename = opts.fileName || 'file';
  212. if (window.navigator.msSaveOrOpenBlob) {
  213. navigator.msSaveBlob(blob, filename);
  214. } else {
  215. var a = document.createElement('a');
  216. var url = createObjectURL(blob);
  217. a.href = url;
  218. a.download = filename;
  219. $("body").append(a);
  220. a.click();
  221. $(a).remove();
  222. window.URL.revokeObjectURL(url);
  223. }
  224. }
  225. };
  226. xhr.send(formData);
  227. return xhr;
  228. },
  229. //系统 ajax 的全局方法
  230. ajax: function (opts) {
  231. if (!opts.url) {
  232. return;
  233. }
  234. var success = opts.success;
  235. var error = opts.error;
  236. var beforeSend = opts.beforeSend;
  237. var complete = opts.complete;
  238. return $.ajax($.extend(opts, {
  239. dataType: 'json',
  240. crossDomain: true,
  241. beforeSend: function (xhr) {
  242. xhr.setRequestHeader("Authorization", $.cookie('auth'));
  243. if (beforeSend) {
  244. beforeSend.apply(this, arguments);
  245. }
  246. },
  247. success: function (data, textStatus, res) {
  248. if (data.success) {
  249. if ($.type(opts['dataProcess']) === 'function') {
  250. opts['dataProcess'].apply(this, arguments);
  251. }
  252. var auth = res.getResponseHeader("Authorization");
  253. if (auth && auth.length > 0) {
  254. if (auth === 'remove') {
  255. $.cookie('auth', null);
  256. } else {
  257. $.cookie('auth', auth, {path: '/'});
  258. }
  259. }
  260. if (success) {
  261. success(data, textStatus, res);
  262. }
  263. return;
  264. }
  265. if (error) {
  266. error.apply(this, arguments);
  267. }
  268. ajaxBizError(data);
  269. },
  270. error: function (event, xhr, options, exc) {
  271. if (event.status === 403 && opts.isRetry !== true && event.responseJSON.hasOwnProperty("data") && event.responseJSON.data.hasOwnProperty("user_id")) {
  272. //当前登录已失效,并且可以重新登录后重试
  273. opts.isRetry = true;
  274. return;
  275. }
  276. if (error) {
  277. error.apply(this, arguments);
  278. }
  279. ajaxException.apply(this, arguments);
  280. },
  281. complete: function () {
  282. if (complete) {
  283. complete.apply(this, arguments);
  284. }
  285. }
  286. }));
  287. },
  288. //取业务字典的资源位置
  289. // bizDict: $.yvan.dictLoadDefine(function (data) {
  290. // return {
  291. // url: api('/sys/sysDict/getByKey'),
  292. // data: data,
  293. // type: 'get'
  294. // };
  295. // }),
  296. //取系统字典的资源位置
  297. // sysDict: $.yvan.dictLoadDefine(function (data) {
  298. // return {
  299. // url: api('/sys/sysDict/getByKey'),
  300. // data: data,
  301. // type: 'get'
  302. // };
  303. // }),
  304. });
  305. })(jQuery);
  306. //------------------------------------- 常量 -------------------------------------
  307. //业务类型:标准文件
  308. var BUSI_TYPE_BZBM = 100;
  309. //编码输入类型:1文本、2整数、3小数、4字典
  310. var VAL_TYPE_1 = 1;
  311. var VAL_TYPE_2 = 2;
  312. var VAL_TYPE_3 = 3;
  313. var VAL_TYPE_4 = 4;
  314. //201技术标准、202图号、 203规格型号、 204低值易耗
  315. //标准类型
  316. var GB_TYPE_201 = 201;
  317. var GB_TYPE_202 = 202;
  318. var GB_TYPE_203 = 203;
  319. var GB_TYPE_204 = 204;
  320. //属性分类:101按编码分类;102按批次分类;103按检验分类
  321. //编码属性分类
  322. var ATTR_TYPE_101 = 101;
  323. var ATTR_TYPE_102 = 102;
  324. var ATTR_TYPE_103 = 103;
  325. //批次图片类型,301厂家合格证;302厂家履历本;303物资实物图;
  326. var BATCH_IMG_TYPE_301 = 301;
  327. var BATCH_IMG_TYPE_302 = 302;
  328. var BATCH_IMG_TYPE_303 = 303;
  329. //角色CODE:
  330. //WZ02车间技术员、WZ03技术主管
  331. var ROLE_CODE_车间技术员 = "WZ02";
  332. var ROLE_CODE_技术主管 = "WZ03";
  333. var ROLE_CODE_技术中心领导 = "WZ04";
  334. var ROLE_CODE_采购主管 = "WZ05";
  335. var ROLE_CODE_采购领导 = "WZ06";
  336. var ROLE_CODE_采购员 = "WZ08";
  337. //检验分类业务类型【字典】
  338. // 1检验、2仓储、3技术、4采购
  339. var MATC_BUSI_检验 = 1;
  340. var MATC_BUSI_仓储 = 2;
  341. var MATC_BUSI_技术 = 3;
  342. var MATC_BUSI_采购 = 4;
  343. //三期类型
  344. var QCST_EXP_无 = "0";
  345. var QCST_EXP_油封 = "1";
  346. var QCST_EXP_复验 = "2";
  347. //工艺规程类型 1附录A、2机型必换件清单、3技术通知
  348. var TECH_TYPE_附录A = 1;
  349. var TECH_TYPE_必换件 = 2;
  350. var TECH_TYPE_技术通知 = 3;
  351. var TECH_TYPE_临时 = 4;
  352. var TECH_TYPE_工卡 = 5;
  353. //部位类型 1整机、2部附件
  354. var PART_TYPE_整机 = 1;
  355. var PART_TYPE_部附件 = 2;
  356. //仓库类型 ROOM_TYPE
  357. var ROOM_TYPE_CK = 1;
  358. var ROOM_TYPE_SFS = 2;
  359. var ROOM_TYPE_PTJ = 3;
  360. var ROOM_TYPE_FYZX = 4;
  361. var ROOM_TYPE_BM = 5;
  362. var ROOM_TYPE_YFJ = 6;
  363. //货位信息 WMS_WH_CELL
  364. //workArea 1收货区、2发货区、3待检区、4不合格品区域、5货架区、6工作区
  365. var WORK_AREA_收货区 = 1;
  366. var WORK_AREA_发货区 = 2;
  367. var WORK_AREA_待检区 = 3;
  368. var WORK_AREA_不合格区 = 4;
  369. var WORK_AREA_货架区 = 5;
  370. var WORK_AREA_工作区 = 6;
  371. //检验项类型TEST_TYPE:1入库检验、2定期试验、3检验方式、4检验方法【MAT_BATCH_QCST_ITEM】
  372. var TEST_TYPE_入库检验 = 1;
  373. var TEST_TYPE_定期试验 = 2;
  374. var TEST_TYPE_检验方式 = 3;
  375. var TEST_TYPE_检验方法 = 4;
  376. //物资大类MAT_CATALOG:1器材、2物资、3消耗物品
  377. var MAT_TYPE_器材 = 1;
  378. var MAT_TYPE_物料 = 2;
  379. var MAT_TYPE_低值易耗 = 3;
  380. //物资分类:器材、物资、消耗物品
  381. var MAT_TYPE_NAME_器材 = "器材";
  382. var MAT_TYPE_NAME_物资 = "物资";
  383. var MAT_TYPE_NAME_消耗物品 = "消耗物品";
  384. //盘存类型
  385. var INV_TYPE_抽查 = 1;
  386. var INV_TYPE_普查 = 2;
  387. var INV_TYPE_期初 = 3;
  388. //到货通知单入库类型:1外购、2自制、3退货、4跨区转库
  389. var IN_TYPE_外购 = 1;
  390. var IN_TYPE_自制 = 2;
  391. var IN_TYPE_退货 = 3;
  392. var IN_TYPE_跨区转库 = 4;
  393. //供应商类型
  394. var CORP_TYPE_供应商 = 1;
  395. var CORP_TYPE_代理商 = 2;
  396. var CORP_TYPE_物流公司 = 3;
  397. //物资合并,任务步骤,草稿、发布、主管审核、领导审核
  398. var STEP_CODE_HBSQ_CG = "HBSQ_CG";
  399. var STEP_CODE_HBSQ_FB = "HBSQ_FB";
  400. var STEP_CODE_HBSH_SH = "HBSH_SH";
  401. var STEP_CODE_HBSH_LDSH = "HBSH_LDSH";
  402. //库区CODE,对应批次表
  403. var FARM_CODE_WH = 1;
  404. var FARM_CODE_YL = 2;
  405. var FARM_CODE_DY = 3;
  406. var FARM_CODE_WH_NAME = "金银湖";
  407. var FARM_CODE_YL_NAME = "阳逻";
  408. var FARM_CODE_DY_NAME = "当阳";
  409. //------------------------------------- 独立方法 -------------------------------------
  410. //调CS客户端的方法拍照(上传批次图片)
  411. function callCsScanHGZ(batchId, matType) {
  412. if (typeof cs == "undefined") {
  413. alert("请启动客户端程序来调用");
  414. return;
  415. }
  416. cs.HdScanBatch(batchId + ',' + matType);
  417. }
  418. //调图片拍照功能,会回调创建批次方法
  419. function callCsScanCommon(context, busiId, inType, callBack) {
  420. var p = {busiId: busiId, busiType: inType};
  421. Camera.takePhotoAndUpload('/src/file/upload', JSON.stringify(p), function (data) {
  422. //回调刷新列表之类的
  423. callBack();
  424. }, 100);
  425. }
  426. //调图片拍照功能,会回调创建批次方法,并新增批次(仅限于批次合格证拍照)
  427. function callCsScan(context, batchId, matType, busiType, farmId, callBack) {
  428. var p = {busiId: batchId, busiType: busiType};
  429. Camera.takePhotoAndUpload('/src/file/upload', JSON.stringify(p), function (data) {
  430. //回调,新增批次
  431. callAddBatch(context, batchId, matType, farmId, callBack);
  432. }, 100);
  433. }
  434. //添加批次方法
  435. function callAddBatch(context, _batchId, _matType, _farmId, callBack) {
  436. //更新附件数量,并新增物资
  437. $.yvan.ajax({
  438. method: 'post',
  439. url: apiMat('/mat/matBatch/updateBatchFileNumIsAdd'), //自行替换此参数
  440. data: {
  441. farmId: _farmId,
  442. batchId: _batchId, //自行替换此参数
  443. hisStatus: 0, //必须的参数,默认0历史无库存
  444. matType: _matType, //物资大类
  445. isAdd: true
  446. },
  447. success: function (data) {
  448. // $.yvan.msg(data.msg);
  449. if (isNotNull(callBack)) {
  450. callBack();
  451. }
  452. if ($.type(context.confirm) === 'function') {
  453. context.confirm();
  454. }
  455. },
  456. error: function (data) {
  457. }
  458. });
  459. }
  460. // //调CS客户端的方法拍照(上传收货单签收的图片)
  461. // function callCsScanWmsIn(busiId, inType) {
  462. // if (typeof cs == "undefined") {
  463. // alert("请启动客户端程序来调用");
  464. // return;
  465. // }
  466. // cs.callCsScanWmsIn(busiId + ',' + inType);
  467. // }1
  468. //调CS客户端的方法打印油封单
  469. function callCsPrintYFD(batchId) {
  470. if (typeof cs == "undefined") {
  471. alert("请启动客户端程序来调用");
  472. return;
  473. }
  474. cs.HdPrintYFD(batchId);
  475. }
  476. //调CS客户端的方法打印合格证标签
  477. function callCsPrintHGZ(printInfo) {
  478. if (typeof cs == "undefined") {
  479. alert("请启动客户端程序来调用");
  480. return;
  481. }
  482. if (printInfo == null || printInfo == '') {
  483. alert("合格证信息为空");
  484. return;
  485. }
  486. cs.HdPrintHGZ(printInfo);
  487. }
  488. // 获取编码类型
  489. // 暂物资管理列表使用-判断登陆角色
  490. function getCodeType(isFull) {
  491. var _items = [];
  492. if (isNotNullOrEmpty(isFull) && isFull) { // true
  493. _items.push({
  494. id: '',
  495. text: '全部'
  496. });
  497. }
  498. // console.log(App.currentRoleCode);
  499. if (isNotNullOrEmpty(App.currentRoleCode)) {
  500. if (ROLE_CODE_采购主管 == App.currentRoleCode || ROLE_CODE_采购领导 == App.currentRoleCode) {
  501. _items.push({
  502. id: GB_TYPE_204,
  503. text: '消耗物品'
  504. });
  505. return _items;
  506. }
  507. // else if (ROLE_CODE_技术主管 == App.currentRoleCode) {
  508. // _items.push({
  509. // id: GB_TYPE_201,
  510. // text: '技术标准'
  511. // });
  512. // _items.push({
  513. // id: GB_TYPE_203,
  514. // text: '图号型号'
  515. // });
  516. // return _items;
  517. // }
  518. }
  519. _items.push({
  520. id: GB_TYPE_201,
  521. text: '技术标准'
  522. });
  523. _items.push({
  524. id: GB_TYPE_203,
  525. text: '图号型号'
  526. });
  527. _items.push({
  528. id: GB_TYPE_204,
  529. text: '消耗物品'
  530. });
  531. return _items;
  532. }
  533. //判断是否为null、undefined、""
  534. function isNotNullOrEmpty(str) {
  535. if (str != undefined && str != null && $.trim(str) != "") {
  536. return true;
  537. }
  538. return false;
  539. }
  540. //判断是否为null、undefined、""、"0"
  541. function isNotNullOrEmptyOrZero(str) {
  542. if (str != undefined && str != null && $.trim(str) != "" && $.trim(str) != "0") {
  543. return true;
  544. }
  545. return false;
  546. }
  547. //判断是否为null、undefined
  548. function isNotNull(obj) {
  549. if (obj != undefined && obj != null) {
  550. return true;
  551. }
  552. return false;
  553. }
  554. //清空Grid的数据
  555. function clearGrid($grid) {
  556. if (isNotNull($grid)) {
  557. $grid.jqGrid("clearGridData");
  558. }
  559. }
  560. //格式化float
  561. function formatFloat(value) {
  562. if (!isNotNullOrEmpty(value) || isNaN(value))
  563. return 0;
  564. return parseFloat(value);
  565. }
  566. //绑定下拉框1
  567. function getComboData(aurl, aid, atext, awapper) {
  568. var _datas = [];
  569. $.yvan.ajax({
  570. url: api(aurl),
  571. data: {},
  572. method: 'post',
  573. async: false,
  574. success: function (data) {
  575. if (data.data != null && data.data != undefined) {
  576. for (var i = 0; i < data.data.length; i++) {
  577. var text = "";
  578. text = eval("data.data[i]." + atext);
  579. var text2 = "";
  580. if (awapper) {
  581. text2 = eval("data.data[i]." + awapper);
  582. text = text + "(" + text2 + ")";
  583. }
  584. _datas.push({
  585. "id": eval("data.data[i]." + aid),
  586. "text": text
  587. });
  588. }
  589. }
  590. }
  591. });
  592. return _datas;
  593. }
  594. //绑定下拉框,部门独享
  595. function getComboDataDeptName(aurl) {
  596. var _datas = [];
  597. // _datas.push({
  598. // id: '',
  599. // text: '全部',
  600. // });
  601. _datas.push({
  602. id: '-1',
  603. text: '无部门',
  604. });
  605. $.yvan.ajax({
  606. url: api(aurl),
  607. data: {},
  608. method: 'post',
  609. async: false,
  610. success: function (data) {
  611. if (data.data != null && data.data != undefined) {
  612. for (var i = 0; i < data.data.length; i++) {
  613. var id = "";
  614. var text = "";
  615. text = eval("data.data[i]");
  616. id = text;
  617. _datas.push({
  618. "id": id,
  619. "text": text
  620. });
  621. }
  622. }
  623. }
  624. });
  625. return _datas;
  626. }
  627. function getComboDataUserCheJian() {
  628. return getComboData('/hr/user/queryUserCheJian', 'userId', 'name');
  629. }
  630. //期初仓库
  631. function getComboDataRoomHis() {
  632. return getComboData('/wms/wmsWhRoom/queryRoomGroupByHis', 'roomId', 'roomName');
  633. }
  634. function getComboDataBasCorp() {
  635. return getComboData('/bas/corp/queryWidget', 'corpId', 'corpName');
  636. }
  637. //org_id>0
  638. function getComboDataBasCorpNoOrg() {
  639. return getComboData('/bas/corp/queryWidgetNoOrg', 'corpId', 'corpName');
  640. }
  641. //org_id=0
  642. function getComboDataBasCorpOrg() {
  643. return getComboData('/bas/corp/queryWidgetOrg', 'corpId', 'corpName');
  644. }
  645. //org_id=0
  646. function getComboDataBasCorpAll() {
  647. return getComboData('/bas/corp/queryWidgetAll', 'corpId', 'corpName');
  648. }
  649. function getComboDataWhFarm() {
  650. return getComboData('/wms/whFarm/queryAll', 'farmId', 'farmName');
  651. }
  652. function getComboDataMatInfo() {
  653. return getComboData('/mat/matInfo/query', 'matId', 'matName');
  654. }
  655. function getComboDataHrUser() {
  656. return getComboData('/hr/user/queryWidget', 'userId', 'name');
  657. }
  658. function getComboDataWhRoom() {
  659. return getComboData('/wms/whRoom/queryWidget', 'roomId', 'roomName');
  660. }
  661. function getComboDataWhRoomType1() {
  662. return getComboData('/wms/whRoom/queryRoomType1', 'roomId', 'roomName');
  663. }
  664. function getComboDataWhRoomType2() {
  665. return getComboData('/wms/whRoom/queryRoomType2', 'roomId', 'roomName');
  666. }
  667. function getComboDataWmsWhUserRoleCC05() {
  668. return getComboData('/hr/hrTeam/queryWidgetCC05', 'userId', 'name'/*, 'roomName'*/);
  669. }
  670. function getComboDataWmsWhUserRoleAll() {
  671. return getComboData('/hr/hrTeam/queryWidgetUserAll', 'userId', 'name'/*, 'roomName'*/);
  672. }
  673. function getComboDataWmsWhUserRoleCC06() {
  674. return getComboData('/hr/hrTeam/queryWidgetCC06', 'userId', 'name'/*, 'roomName'*/);
  675. }
  676. function getComboDataWmsWhUserRoleYFY() {
  677. return getComboData('/hr/hrTeam/queryWidgetYFY', 'userId', 'name'/*, 'roomName'*/);
  678. }
  679. function getComboDataWmsWhUserRoleCGY() {
  680. return getComboData('/hr/hrTeam/queryWidgetCGY', 'userId', 'name'/*, 'roomName'*/);
  681. }
  682. function getComboDataWmsWhUserRoleSFY() {
  683. return getComboData('/hr/hrTeam/queryWidgetSFY', 'userId', 'name'/*, 'roomName'*/);
  684. }
  685. function getComboDataSysUnit() {
  686. return getComboData('/sys/sysUnit/query', 'unitId', 'unitName');
  687. }
  688. function getComboDataPmsPgh() {
  689. return getComboData('/pms/pmsPgh/queryWidget', 'pghId', 'pghName');
  690. }
  691. //obj对象,启用/停用
  692. function setPubStatusMsg(obj) {
  693. var delMsgData = obj.name == undefined || obj.name == null || obj.name == "" ? "" : "[" + obj.name + "]";
  694. var msg = "";
  695. var statusCN1 = "<span style='color: green; font-weight:bold;'>启用</span>";
  696. var statusCN2 = "<span style='color: red; font-weight:bold;'>停用</span>";
  697. var statusCN3 = "草稿";
  698. var status = 2;
  699. //status整体状态:-1停用、1草稿、2发布
  700. if (-1 == obj.status) {
  701. msg = ("该行数据已" + statusCN2 + "<br/>确定" + statusCN1 + delMsgData + "吗?");
  702. status = 2;
  703. } else if (2 == obj.status) {
  704. msg = ("该行数据已" + statusCN1 + "<br/>确定" + statusCN2 + delMsgData + "吗?");
  705. status = -1;
  706. } else if (1 == obj.status) {
  707. msg = ("该行数据已" + statusCN3 + "<br/>确定" + statusCN1 + delMsgData + "吗?");
  708. status = 2;
  709. }
  710. obj.msg = msg;
  711. obj.rtnStatus = status;
  712. return obj;
  713. }
  714. //obj对象,启用/停用
  715. function setStatusMsg(obj) {
  716. if (obj.isTree == undefined || obj.isTree == null)
  717. obj.isTree = 0;
  718. var delMsgData = obj.name == undefined || obj.name == null || obj.name == "" ? "" : "[" + obj.name + "]";
  719. var delMsgTree1 = obj.isTree == 0 ? "" : "及其子节点";
  720. var delMsgTree2 = obj.isTree == 0 ? "" : obj.treeUp == 0 ? "" : "及其父节点";
  721. var msg = "";
  722. var statusCN1 = "<span style='color: green; font-weight:bold;'>启用</span>";
  723. var statusCN2 = "<span style='color: red; font-weight:bold;'>停用</span>";
  724. if (0 == obj.status) {
  725. statusCN1 = "<span style='color: green; font-weight:bold;'>发布</span>";
  726. }
  727. var status = 1;
  728. //status整体状态:-2删除、-1停用、0草稿、1发布
  729. if (-1 == obj.status) {
  730. msg = ("该行数据已" + statusCN2 + "<br/>确定" + statusCN1 + delMsgData + delMsgTree1 + "吗?");
  731. status = 1;
  732. } else if (1 == obj.status) {
  733. msg = ("该行数据已" + statusCN1 + "<br/>确定" + statusCN2 + delMsgData + delMsgTree1 + "吗?");
  734. status = -1;
  735. }
  736. if (0 == obj.status && 1 == obj.tostatus) {
  737. msg = ("确定" + statusCN1 + delMsgData + delMsgTree1 + "吗?");
  738. status = 1;
  739. }
  740. statusCN2 = "<span style='color: red; font-weight:bold;'>删除</span>";
  741. if (0 == obj.status && -2 == obj.tostatus) {
  742. msg = ("确定" + statusCN2 + delMsgData + delMsgTree1 + "吗?");
  743. status = -2;
  744. }
  745. obj.msg = msg;
  746. obj.rtnStatus = status;
  747. return obj;
  748. }
  749. //通用排序
  750. //name,参数
  751. //list,id数组
  752. function MoveSort(name, ids, context) {
  753. var data = {
  754. "ids": "",
  755. "name": name
  756. };
  757. for (var i = 0; i < ids.length; i++) {
  758. data.ids += ids[i] + ",";
  759. }
  760. data.ids = data.ids.substr(0, data.ids.length - 1);
  761. if (data.ids == "") {
  762. return;
  763. }
  764. $.yvan.ajax({
  765. url: api('/core/app/updateCoreSort'),
  766. method: 'post',
  767. data: data,
  768. success: function () {
  769. if (isNotNull(context)) {
  770. if ($.type(context.confirm) === 'function') {
  771. context.confirm();
  772. }
  773. }
  774. $.yvan.msg('操作成功');
  775. }
  776. });
  777. }
  778. //将0转换为空值''
  779. function rtnEmpty(cellvalue) {
  780. if (cellvalue == null || cellvalue == undefined || cellvalue == 0)
  781. return '';
  782. return cellvalue;
  783. }
  784. //将0转换为'-'
  785. function rtnEmptyG(cellvalue) {
  786. if (cellvalue == null || cellvalue == undefined || cellvalue == 0)
  787. return '-';
  788. return cellvalue;
  789. }
  790. //将0转换为'-'
  791. function rtnEmptyGG(cellvalue) {
  792. if (cellvalue == null || cellvalue == undefined || cellvalue == 0)
  793. return '--';
  794. return cellvalue;
  795. }
  796. //将null、空转为0
  797. function rtnZero(cellvalue) {
  798. if (cellvalue == null || cellvalue == undefined || cellvalue == "" || cellvalue.length == 0)
  799. return 0;
  800. return cellvalue;
  801. }
  802. //将null、转换成空
  803. function rtnNull(cellvalue) {
  804. if (cellvalue == null || cellvalue == undefined || cellvalue.length == 0 || cellvalue == "")
  805. return '';
  806. return cellvalue;
  807. }
  808. // 轮询新的任务
  809. function timerGetNewTaskTag(func, time) {
  810. if (timer1) {
  811. return;
  812. }
  813. //重复执行某个方法
  814. timer1 = window.setInterval(func, time);
  815. }
  816. function stopTimer() {
  817. if (timer1) {
  818. //去掉定时器的方法
  819. window.clearInterval(timer1);
  820. timer1 = null;
  821. }
  822. }
  823. //将字典的id、text,加上"全部"后,返回list
  824. //type=undefined or null,带上"全部"
  825. function getDictList(dictName, type) {
  826. var _datas = [];
  827. if (!isNotNull(type)) {
  828. _datas.push({
  829. "id": '',
  830. "text": "全部"
  831. });
  832. }
  833. var list = $.yvan.bizDict(dictName).combo();
  834. if (isNotNull(list)) {
  835. for (var i = 0; i < list.length; i++) {
  836. _datas.push({
  837. "id": list[i].id,
  838. "text": list[i].text
  839. });
  840. }
  841. }
  842. return _datas;
  843. }
  844. //查找字典中对应id的name,找不到返回空
  845. function getDictName(dictName, id) {
  846. if (!isNotNull(id))
  847. return "";
  848. var list = $.yvan.bizDict(dictName).combo();
  849. if (list != undefined && list != null) {
  850. for (var i = 0; i < list.length; i++) {
  851. if (id == list[i].id) {
  852. return list[i].text;
  853. }
  854. }
  855. }
  856. return "";
  857. }
  858. //获取单位信息
  859. //unitIdType 查找类型
  860. function getSysUnit(matId) {
  861. var _datas = [];
  862. // _datas.push({
  863. // "id": "",
  864. // "text": "--请选择--"
  865. // });
  866. $.yvan.ajax({
  867. url: api('/sys/sysUnit/queryAll'),
  868. data: {status: 1, matId: matId},
  869. method: 'post',
  870. async: false,
  871. success: function (data) {
  872. if (data.data != null && data.data != undefined) {
  873. for (var i = 0; i < data.data.length; i++) {
  874. _datas.push({
  875. "id": data.data[i].unitId,
  876. "text": data.data[i].unitName
  877. });
  878. }
  879. }
  880. }
  881. });
  882. return _datas;
  883. }
  884. //用于新下拉框控件
  885. //获取单位信息
  886. //unitIdType 查找类型
  887. function getSysUnitChildren() {
  888. var _datas = [];
  889. $.yvan.ajax({
  890. url: apiMat('/sys/sysUnit/queryChildren'),
  891. data: {status: 1},
  892. method: 'post',
  893. async: false,
  894. success: function (data) {
  895. if (isNotNull(data) && isNotNull(data.data)) {
  896. _datas = data.data;
  897. }
  898. }
  899. });
  900. return _datas;
  901. }
  902. //查找单位中对应id的name,找不到返回空
  903. function getSysUnitName(id) {
  904. if (id == null || id == undefined)
  905. return "";
  906. var list = getSysUnit();
  907. if (list != undefined && list != null) {
  908. for (var i = 0; i < list.length; i++) {
  909. if (id == list[i].id) {
  910. return list[i].text;
  911. }
  912. }
  913. }
  914. return "";
  915. }
  916. //设置panel的值
  917. function setPanel(context, $id, _items) {
  918. if (isNotNull($id)) {
  919. $id.empty();
  920. $id.power('renderEach', {
  921. $target: $id,
  922. items: _items, //填充值
  923. context: context
  924. });
  925. }
  926. }
  927. //获取随机数,n:几位数
  928. function randomNum(n) {
  929. var t = '';
  930. for (var i = 0; i < n; i++) {
  931. t += Math.floor(Math.random() * 99);
  932. }
  933. return t;
  934. }
  935. //添加年、月、天,返回时间
  936. function DateAdd(interval, number, date) {
  937. /*
  938. * 功能:实现JSScript的DateAdd功能.
  939. * 参数:interval,字符串表达式,表示要添加的时间间隔.
  940. * 参数:number,数值表达式,表示要添加的时间间隔的个数.
  941. * 参数:date,时间对象.
  942. * 返回:新的时间对象.
  943. * var now = new Date();
  944. * var newDate = DateAdd( "d ",5,now);
  945. *--------------- DateAdd(interval,number,date) -----------------
  946. */
  947. switch (interval) {
  948. case "year": {
  949. date.setFullYear(date.getFullYear() + number);
  950. return date;
  951. // break;
  952. }
  953. case "month": {
  954. date.setMonth(date.getMonth() + number);
  955. return date;
  956. // break;
  957. }
  958. case "week": {
  959. date.setDate(date.getDate() + number * 7);
  960. return date;
  961. // break;
  962. }
  963. case "day": {
  964. date.setDate(date.getDate() + number);
  965. return date;
  966. // break;
  967. }
  968. case "hour": {
  969. date.setHours(date.getHours() + number);
  970. return date;
  971. // break;
  972. }
  973. case "minutes": {
  974. date.setMinutes(date.getMinutes() + number);
  975. return date;
  976. // break;
  977. }
  978. case "seconds": {
  979. date.setSeconds(date.getSeconds() + number);
  980. return date;
  981. // break;
  982. }
  983. default: {
  984. // date.setDate(d.getDate() + number);
  985. return date;
  986. // break;
  987. }
  988. }
  989. }
  990. //验证日期是否有效
  991. function isValidateDate(date) {
  992. if (!isNotNullOrEmpty(date)) {
  993. return false;
  994. }
  995. date = $.trim(date);
  996. var reg = /^(\d{4})-(\d{2})-(\d{2})$/;
  997. reg.exec(date);
  998. if (!reg.test(date) && RegExp.$2 <= 12 && RegExp.$3 <= 31) {
  999. return false;
  1000. }
  1001. var year, month, day;
  1002. year = parseInt(date.split("-")[0], 10);
  1003. month = parseInt(date.split("-")[1], 10);
  1004. day = parseInt(date.split("-")[2], 10);
  1005. if (!((1 <= month) && (12 >= month) && (31 >= day) && (1 <= day))) {
  1006. return false;
  1007. }
  1008. if ((month <= 7) && ((month % 2) == 0) && (day >= 31)) {
  1009. return false;
  1010. }
  1011. if ((month >= 8) && ((month % 2) == 1) && (day >= 31)) {
  1012. return false;
  1013. }
  1014. if (month == 2) {
  1015. if ((year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0))) {
  1016. if (day > 29) {
  1017. return false;
  1018. }
  1019. } else {
  1020. if (day > 28) {
  1021. return false;
  1022. }
  1023. }
  1024. }
  1025. return true;
  1026. }
  1027. //加减日期的天数
  1028. function getDay(day) {
  1029. var today = new Date();
  1030. var targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day;
  1031. today.setTime(targetday_milliseconds); //注意,这行是关键代码
  1032. var tYear = today.getFullYear();
  1033. var tMonth = today.getMonth();
  1034. var tDate = today.getDate();
  1035. tMonth = doHandleMonth(tMonth + 1);
  1036. tDate = doHandleMonth(tDate);
  1037. return tYear + "-" + tMonth + "-" + tDate;
  1038. }
  1039. //加减日期的天数(子方法)
  1040. function doHandleMonth(month) {
  1041. var m = month;
  1042. if (month.toString().length == 1) {
  1043. m = "0" + month;
  1044. }
  1045. return m;
  1046. }
  1047. //绑定下拉框,isfull是否全选
  1048. function bindSelectPost(isfull, url, id, name) {
  1049. var _datas = [];
  1050. if (isNotNull(isfull) && isfull) {
  1051. _datas.push({
  1052. id: '',
  1053. text: '全部'
  1054. })
  1055. }
  1056. $.yvan.ajax({
  1057. url: api(url),
  1058. method: "post",
  1059. async: false,
  1060. success: function (data) {
  1061. if (data.data != null && data.data != undefined) {
  1062. for (var i = 0; i < data.data.length; i++) {
  1063. _datas.push({
  1064. "id": data.data[i][id],
  1065. "text": data.data[i][name]
  1066. })
  1067. }
  1068. }
  1069. }
  1070. });
  1071. // console.log(_datas);
  1072. return _datas;
  1073. }
  1074. //首页跳转赋值
  1075. function setInputParam(inputParam, $form) {
  1076. if (isNotNull(inputParam)) {
  1077. if (isNotNull($form)) {
  1078. $form.formSet(inputParam)
  1079. }
  1080. }
  1081. }
  1082. // 【物资编码-批次统计页面使用】
  1083. // 判断是否相差几个月
  1084. // date1为前时间,date2为后时间。若返回false,表示相差超过3个月,否则表示在3个月以内
  1085. function timeDifferenceByStat(month, date11, date22) {
  1086. //不是时间格式
  1087. if (!isNaN(date11) && isNaN(Date.parse(date11))) {
  1088. $.yvan.msg("开始日期格式不正确");
  1089. return false;
  1090. }
  1091. if (!isNaN(date22) && isNaN(Date.parse(date22))) {
  1092. $.yvan.msg("结束日期格式不正确");
  1093. return false;
  1094. }
  1095. var date1 = new Date(date11);
  1096. var date2 = new Date(date22);
  1097. //开始日期不能大于结束日期
  1098. if (date1.getTime() > date2.getTime()) {
  1099. $.yvan.msg("开始日期不能大于结束日期");
  1100. return false;
  1101. }
  1102. var newYear = date1.getFullYear();
  1103. var newMonth = date1.getMonth() + month;
  1104. // console.log(newMonth);
  1105. if (newMonth >= 11) {
  1106. newYear += 1;
  1107. newMonth -= 11;
  1108. date1.setFullYear(newYear);
  1109. date1.setMonth(newMonth - 1);
  1110. }
  1111. else {
  1112. date1.setFullYear(newYear);
  1113. date1.setMonth(newMonth);
  1114. }
  1115. if (date1.getTime() >= date2.getTime()) {
  1116. return true;
  1117. }
  1118. else {
  1119. $.yvan.msg("不能查询超过" + month + "个月的数据");
  1120. return false;
  1121. }
  1122. }
  1123. //获取库区,下拉框绑定值
  1124. function getFarmData() {
  1125. var _datas = [];
  1126. _datas.push({
  1127. "id": FARM_CODE_WH,
  1128. "text": FARM_CODE_WH_NAME
  1129. });
  1130. _datas.push({
  1131. "id": FARM_CODE_YL,
  1132. "text": FARM_CODE_YL_NAME
  1133. });
  1134. _datas.push({
  1135. "id": FARM_CODE_DY,
  1136. "text": FARM_CODE_DY_NAME
  1137. });
  1138. return _datas;
  1139. }
  1140. //获取库区名称
  1141. function getFarmName(farmId) {
  1142. if (isNotNullOrEmpty(farmId)) {
  1143. if (farmId == 0 || farmId == 1) {
  1144. return "-" + FARM_CODE_WH_NAME;
  1145. }
  1146. else if (farmId == 2) {
  1147. return "-" + FARM_CODE_YL_NAME;
  1148. }
  1149. else if (farmId == 3) {
  1150. return "-" + FARM_CODE_DY_NAME;
  1151. }
  1152. }
  1153. return "";
  1154. }
  1155. //获取批次分类
  1156. function getMatType() {
  1157. var _datas = [];
  1158. _datas.push({
  1159. "id": MAT_TYPE_器材,
  1160. "text": MAT_TYPE_NAME_器材
  1161. });
  1162. _datas.push({
  1163. "id": MAT_TYPE_物料,
  1164. "text": MAT_TYPE_NAME_物资
  1165. });
  1166. _datas.push({
  1167. "id": MAT_TYPE_低值易耗,
  1168. "text": MAT_TYPE_NAME_消耗物品
  1169. });
  1170. return _datas;
  1171. }
  1172. //获取强制发布分类
  1173. function getIsForcePubList() {
  1174. var _datas = [];
  1175. _datas.push({
  1176. "id": 1,
  1177. "text": '是'
  1178. });
  1179. _datas.push({
  1180. "id": 0,
  1181. "text": '否'
  1182. });
  1183. _datas.push({
  1184. "id": -1,
  1185. "text": '不处理,封存'
  1186. });
  1187. return _datas;
  1188. }
  1189. //入库类型:物资编码使用,编辑页面使用
  1190. function getMatInType() {
  1191. return [{id: 1, text: '外购'}, {id: 2, text: '自制件'}];
  1192. }