StoreHouse_Admin.js 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735
  1. var ExcelData, ExcelKind;
  2. function ConfirmImport() {
  3. var index = layer.load(1, {
  4. shade: [0.5, '#000']
  5. });
  6. $.ajax({
  7. type: "POST",
  8. url: "/Admin/StoreHouse/Import?r=" + Math.random(1),
  9. data: "Kind=" + ExcelKind + "&ExcelData=" + encodeURIComponent(JSON.stringify(ExcelData)),
  10. dataType: "text",
  11. success: function (data) {
  12. layer.close(index);
  13. if (data.indexOf("success") == 0) {
  14. layer.msg("成功操作" + data.split('|')[1] + "部机具", {
  15. time: 2000
  16. }, function () {
  17. window.location.reload();
  18. });
  19. } else {
  20. layer.msg(data);
  21. }
  22. }
  23. });
  24. }
  25. function CheckImport(table, key, loadindex, index) {
  26. $.ajax({
  27. url: "/Admin/StoreHouse/CheckImportV2?r=" + Math.random(1),
  28. data: "key=" + key,
  29. dataType: "json",
  30. success: function (data) {
  31. if (data.status == 1) {
  32. layer.msg("成功操作" + data.data + "部机具", {
  33. time: 2000
  34. }, function () {
  35. layer.close(index); //关闭弹层
  36. layer.close(loadindex);
  37. table.reload('LAY-list-manage'); //数据刷新
  38. });
  39. } else if (data.status == 2) {
  40. layer.close(index); //关闭弹层
  41. layer.close(loadindex);
  42. var content = '';
  43. for (var i = 0; i < data.errList.length; i++) {
  44. content += data.errList[i] + '<br/>'
  45. }
  46. layer.alert(content);
  47. } else {
  48. layer.msg(data.data, {
  49. time: 1000
  50. }, function () {
  51. CheckImport(table, key, loadindex, index);
  52. });
  53. }
  54. }
  55. });
  56. }
  57. var excel;
  58. layui.config({
  59. base: '/layuiadmin/' //静态资源所在路径
  60. }).extend({
  61. myexcel: 'layui/lay/modules/excel',
  62. index: 'lib/index' //主入口模块
  63. }).use(['index', 'table', 'excel', 'laydate'], function () {
  64. var $ = layui.$,
  65. form = layui.form,
  66. table = layui.table;
  67. //- 筛选条件-日期
  68. var laydate = layui.laydate;
  69. var layCreateDate = laydate.render({
  70. elem: '#CreateDate',
  71. type: 'datetime',
  72. range: true,
  73. trigger: 'click',
  74. change: function (value, date, endDate) {
  75. var op = true;
  76. if (date.year == endDate.year && endDate.month - date.month <= 1) {
  77. if (endDate.month - date.month == 1 && endDate.date > date.date) {
  78. op = false;
  79. layCreateDate.hint('日期范围请不要超过1个月');
  80. setTimeout(function () {
  81. $(".laydate-btns-confirm").addClass("laydate-disabled");
  82. }, 1);
  83. }
  84. } else {
  85. op = false;
  86. layCreateDate.hint('日期范围请不要超过1个月');
  87. setTimeout(function () {
  88. $(".laydate-btns-confirm").addClass("laydate-disabled");
  89. }, 1);
  90. }
  91. if (op) {
  92. $('#CreateDate').val(value);
  93. }
  94. }
  95. });
  96. //excel导入
  97. excel = layui.excel;
  98. $('#ExcelFile').change(function (e) {
  99. var files = e.target.files;
  100. excel.importExcel(files, {}, function (data) {
  101. ExcelData = data[0].Sheet1;
  102. });
  103. });
  104. //监听单元格编辑
  105. table.on('edit(LAY-list-manage)', function (obj) {
  106. var value = obj.value //得到修改后的值
  107. ,
  108. data = obj.data //得到所在行所有键值
  109. ,
  110. field = obj.field; //得到字段
  111. if (field == "Sort") {
  112. $.ajax({
  113. type: "POST",
  114. url: "/Admin/StoreHouse/Sort?r=" + Math.random(1),
  115. data: "Id=" + data.Id + "&Sort=" + value,
  116. dataType: "text",
  117. success: function (data) {}
  118. });
  119. }
  120. });
  121. //列表数据
  122. table.render({
  123. elem: '#LAY-list-manage',
  124. url: '/Admin/StoreHouse/IndexData' //模拟接口
  125. ,
  126. cols: [
  127. [{
  128. type: 'checkbox',
  129. fixed: 'left'
  130. }, {
  131. field: 'Id',
  132. fixed: 'left',
  133. title: 'ID',
  134. width: 80,
  135. sort: true,
  136. unresize: true
  137. }, {
  138. field: 'StoreNo',
  139. width: 200,
  140. title: '仓库编号',
  141. sort: true
  142. }, {
  143. field: 'StoreName',
  144. width: 200,
  145. title: '仓库名称',
  146. sort: true
  147. }, {
  148. field: 'ManageUserIdMakerCode',
  149. width: 200,
  150. title: '仓库负责人编号',
  151. sort: true,
  152. templet: '#ManageTpl'
  153. }, {
  154. field: 'ManageUserIdRealName',
  155. width: 200,
  156. title: '仓库管理员',
  157. sort: true
  158. }, {
  159. field: 'UserIdMakerCode',
  160. width: 200,
  161. title: '仓库归属创客编号',
  162. sort: true,
  163. templet: '#MakerCodeTpl'
  164. }, {
  165. field: 'UserIdRealName',
  166. width: 200,
  167. title: '仓库归属人真实姓名',
  168. sort: true
  169. }, {
  170. field: 'BrandId',
  171. width: 300,
  172. title: '产品类型',
  173. sort: true
  174. }, {
  175. field: 'Address',
  176. width: 200,
  177. title: '仓库地址',
  178. sort: true
  179. }, {
  180. field: 'ManageUserIdMobile',
  181. width: 200,
  182. title: '仓库管理员手机号',
  183. sort: true
  184. }, {
  185. field: 'ManagerEmail',
  186. width: 200,
  187. title: '管理者邮箱',
  188. sort: true
  189. }, {
  190. field: 'StoreType',
  191. width: 200,
  192. title: '仓库类型',
  193. sort: true
  194. }, {
  195. field: 'TotalNum',
  196. width: 200,
  197. title: '总库存数',
  198. sort: true
  199. }, {
  200. field: 'LaveNum',
  201. width: 200,
  202. title: '剩余库存数',
  203. sort: true
  204. }, {
  205. field: 'OutNum',
  206. width: 200,
  207. title: '出库数',
  208. sort: true
  209. }, {
  210. field: 'LimitTopUserId',
  211. width: 200,
  212. title: '限制创客特殊仓库',
  213. sort: true
  214. }, {
  215. field: 'StoreStatus',
  216. width: 200,
  217. title: '仓库状态',
  218. sort: true
  219. }, {
  220. field: 'StoreKind',
  221. width: 200,
  222. title: '仓库归属类型',
  223. sort: true
  224. }, {
  225. field: 'CreateMan',
  226. width: 200,
  227. title: '创建人',
  228. sort: true
  229. }, {
  230. field: 'CreateDate',
  231. width: 200,
  232. title: '创建时间',
  233. sort: true
  234. }
  235. , {
  236. field: 'Sort',
  237. fixed: 'right',
  238. title: '排序',
  239. width: 80,
  240. edit: 'text'
  241. }, {
  242. title: '操作',
  243. width: 200,
  244. align: 'center',
  245. fixed: 'right',
  246. toolbar: '#table-list-tools'
  247. }
  248. ]
  249. ],
  250. where: {
  251. },
  252. page: true,
  253. limit: 30,
  254. height: 'full-' + String($('.layui-card-header').height() + 130),
  255. text: '对不起,加载出现异常!',
  256. done: function (res, curr, count) {
  257. $(".layui-none").text("无数据");
  258. }
  259. });
  260. //监听工具条
  261. table.on('tool(LAY-list-manage)', function (obj) {
  262. var data = obj.data;
  263. if (obj.event === 'del') {
  264. var index = layer.confirm('确定要删除吗?删除后不能恢复!', function (index) {
  265. $.ajax({
  266. type: "POST",
  267. url: "/Admin/StoreHouse/Delete?r=" + Math.random(1),
  268. data: "Id=" + data.Id,
  269. dataType: "text",
  270. success: function (data) {
  271. if (data == "success") {
  272. obj.del();
  273. layer.close(index);
  274. } else {
  275. parent.layer.msg(data);
  276. }
  277. }
  278. });
  279. });
  280. } else if (obj.event === 'sycn') {
  281. var index = layer.confirm('确定要同步该仓库的库存数据吗?', function (index) {
  282. layer.close(index);
  283. var loadindex = layer.load(1, {
  284. shade: [0.5, '#000']
  285. });
  286. $.ajax({
  287. type: "POST",
  288. url: "/Admin/StoreHouse/SycnData?r=" + Math.random(1),
  289. data: "Id=" + data.Id,
  290. dataType: "text",
  291. success: function (data) {
  292. layer.close(loadindex);
  293. if (data == "success") {
  294. layer.msg('同步成功');
  295. table.reload('LAY-list-manage');
  296. } else {
  297. layer.msg(data);
  298. }
  299. }
  300. });
  301. });
  302. } else if (obj.event === 'edit') {
  303. var tr = $(obj.tr);
  304. var perContent = layer.open({
  305. type: 2,
  306. title: '仓库-编辑',
  307. content: 'Edit?Id=' + data.Id + '',
  308. maxmin: true,
  309. area: ['800px', '650px'],
  310. btn: ['确定', '取消'],
  311. yes: function (index, layero) {
  312. var iframeWindow = window['layui-layer-iframe' + index],
  313. submitID = 'LAY-list-front-submit',
  314. submit = layero.find('iframe').contents().find('#' + submitID);
  315. setTimeout(function () {
  316. layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
  317. var errObj = $(this).find('.layui-form-danger');
  318. if (errObj.length > 0) {
  319. iframeWindow.element.tabChange('mytabbar', String(i + 1));
  320. submit.click();
  321. }
  322. });
  323. }, 300);
  324. //监听提交
  325. iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
  326. var field = data.field; //获取提交的字段
  327. var userdata = "";
  328. for (var prop in field) {
  329. userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
  330. }
  331. //提交 Ajax 成功后,静态更新表格中的数据
  332. //$.ajax({});
  333. $.ajax({
  334. type: "POST",
  335. url: "/Admin/StoreHouse/Edit?r=" + Math.random(1),
  336. data: userdata,
  337. dataType: "text",
  338. success: function (data) {
  339. if (data == "success") {
  340. layer.close(index); //关闭弹层
  341. table.reload('LAY-list-manage'); //数据刷新
  342. } else {
  343. layer.msg(data);
  344. }
  345. }
  346. });
  347. });
  348. submit.trigger('click');
  349. },
  350. success: function (layero, index) {
  351. }
  352. });
  353. }
  354. });
  355. //监听搜索
  356. form.on('submit(LAY-list-front-search)', function (data) {
  357. var field = data.field;
  358. //执行重载
  359. table.reload('LAY-list-manage', {
  360. where: field,
  361. page: {
  362. curr: 1
  363. }
  364. });
  365. });
  366. form.on('submit(LAY-list-front-searchall)', function (data) {
  367. table.reload('LAY-list-manage', {
  368. where: null,
  369. page: {
  370. curr: 1
  371. }
  372. });
  373. });
  374. //事件
  375. var active = {
  376. batchdel: function () {
  377. var checkStatus = table.checkStatus('LAY-list-manage'),
  378. data = checkStatus.data; //得到选中的数据
  379. if (data.length < 1) {
  380. parent.layer.msg("请选择要删除的项");
  381. } else {
  382. var ids = "";
  383. $.each(data, function (index, value) {
  384. ids += data[index].Id + ",";
  385. });
  386. ids = ids.substring(0, ids.length - 1);
  387. var index = layer.confirm('确定要删除吗?删除后不能恢复!', function (index) {
  388. $.ajax({
  389. type: "POST",
  390. url: "/Admin/StoreHouse/Delete?r=" + Math.random(1),
  391. data: "Id=" + ids,
  392. dataType: "text",
  393. success: function (data) {
  394. layer.close(index);
  395. if (data == "success") {
  396. table.reload('LAY-list-manage');
  397. } else {
  398. layer.msg(data);
  399. }
  400. }
  401. });
  402. });
  403. }
  404. },
  405. add: function () {
  406. var perContent = layer.open({
  407. type: 2,
  408. title: '仓库-添加',
  409. content: 'Add',
  410. maxmin: true,
  411. area: ['950px', '650px'],
  412. btn: ['确定', '取消'],
  413. yes: function (index, layero) {
  414. var iframeWindow = window['layui-layer-iframe' + index],
  415. submitID = 'LAY-list-front-submit',
  416. submit = layero.find('iframe').contents().find('#' + submitID);
  417. setTimeout(function () {
  418. layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
  419. var errObj = $(this).find('.layui-form-danger');
  420. if (errObj.length > 0) {
  421. iframeWindow.element.tabChange('mytabbar', String(i + 1));
  422. submit.click();
  423. }
  424. });
  425. }, 300);
  426. //监听提交
  427. iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
  428. var field = data.field; //获取提交的字段
  429. var userdata = "";
  430. for (var prop in field) {
  431. userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
  432. }
  433. //提交 Ajax 成功后,静态更新表格中的数据
  434. //$.ajax({});
  435. $.ajax({
  436. type: "POST",
  437. url: "/Admin/StoreHouse/Add?r=" + Math.random(1),
  438. data: userdata,
  439. dataType: "text",
  440. success: function (data) {
  441. if (data == "success") {
  442. layer.close(index); //关闭弹层
  443. table.reload('LAY-list-manage'); //数据刷新
  444. } else {
  445. layer.msg(data);
  446. }
  447. }
  448. });
  449. });
  450. submit.trigger('click');
  451. }
  452. });
  453. },
  454. ImportMachine: function () {
  455. var perContent = layer.open({
  456. type: 2,
  457. title: '机具入库',
  458. content: 'Import?ExcelKind=1',
  459. maxmin: true,
  460. area: ['650px', '350px'],
  461. btn: ['确定', '取消'],
  462. yes: function (index, layero) {
  463. var iframeWindow = window['layui-layer-iframe' + index],
  464. submitID = 'LAY-list-front-submit',
  465. submit = layero.find('iframe').contents().find('#' + submitID);
  466. //监听提交
  467. iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
  468. var field = data.field; //获取提交的字段
  469. var userdata = "";
  470. for (var prop in field) {
  471. userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
  472. }
  473. //提交 Ajax 成功后,静态更新表格中的数据
  474. //$.ajax({});
  475. var loadindex = layer.load(1, {
  476. shade: [0.5, '#000']
  477. });
  478. $.ajax({
  479. type: "POST",
  480. url: "/Admin/StoreHouse/ImportPost?r=" + Math.random(1),
  481. data: userdata,
  482. dataType: "text",
  483. success: function (data) {
  484. if (data.indexOf("success") == 0) {
  485. var datalist = data.split('|');
  486. var key = datalist[1];
  487. CheckImport(table, key, loadindex, index);
  488. } else {
  489. layer.msg(data);
  490. }
  491. }
  492. });
  493. });
  494. submit.trigger('click');
  495. }
  496. });
  497. },
  498. ImportChange: function () {
  499. var perContent = layer.open({
  500. type: 2,
  501. title: '仓库调拨',
  502. content: 'Import?ExcelKind=2',
  503. maxmin: true,
  504. area: ['650px', '350px'],
  505. btn: ['确定', '取消'],
  506. yes: function (index, layero) {
  507. var iframeWindow = window['layui-layer-iframe' + index],
  508. submitID = 'LAY-list-front-submit',
  509. submit = layero.find('iframe').contents().find('#' + submitID);
  510. //监听提交
  511. iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
  512. var field = data.field; //获取提交的字段
  513. var userdata = "";
  514. for (var prop in field) {
  515. userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
  516. }
  517. //提交 Ajax 成功后,静态更新表格中的数据
  518. //$.ajax({});
  519. var loadindex = layer.load(1, {
  520. shade: [0.5, '#000']
  521. });
  522. $.ajax({
  523. type: "POST",
  524. url: "/Admin/StoreHouse/ImportPost?r=" + Math.random(1),
  525. data: userdata,
  526. dataType: "text",
  527. success: function (data) {
  528. if (data.indexOf("success") == 0) {
  529. var datalist = data.split('|');
  530. var key = datalist[1];
  531. CheckImport(table, key, loadindex, index);
  532. } else {
  533. layer.msg(data);
  534. }
  535. }
  536. });
  537. });
  538. submit.trigger('click');
  539. }
  540. });
  541. },
  542. ImportSend: function () {
  543. var perContent = layer.open({
  544. type: 2,
  545. title: '仓库发货至创客',
  546. content: 'Import?ExcelKind=3',
  547. maxmin: true,
  548. area: ['650px', '350px'],
  549. btn: ['确定', '取消'],
  550. yes: function (index, layero) {
  551. var iframeWindow = window['layui-layer-iframe' + index],
  552. submitID = 'LAY-list-front-submit',
  553. submit = layero.find('iframe').contents().find('#' + submitID);
  554. //监听提交
  555. iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
  556. var field = data.field; //获取提交的字段
  557. var userdata = "";
  558. for (var prop in field) {
  559. userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
  560. }
  561. //提交 Ajax 成功后,静态更新表格中的数据
  562. //$.ajax({});
  563. var loadindex = layer.load(1, {
  564. shade: [0.5, '#000']
  565. });
  566. $.ajax({
  567. type: "POST",
  568. url: "/Admin/StoreHouse/ImportPost?r=" + Math.random(1),
  569. data: userdata,
  570. dataType: "text",
  571. success: function (data) {
  572. if (data.indexOf("success") == 0) {
  573. var datalist = data.split('|');
  574. var key = datalist[1];
  575. CheckImport(table, key, loadindex, index);
  576. } else {
  577. layer.msg(data);
  578. }
  579. }
  580. });
  581. });
  582. submit.trigger('click');
  583. }
  584. });
  585. },
  586. ExportExcel: function () {
  587. var userdata = '';
  588. $(".layuiadmin-card-header-auto input").each(function (i) {
  589. userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
  590. });
  591. $(".layuiadmin-card-header-auto select").each(function (i) {
  592. userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
  593. });
  594. $.ajax({
  595. type: "GET",
  596. url: "/Admin/StoreHouse/ExportExcel?r=" + Math.random(1),
  597. data: userdata,
  598. dataType: "json",
  599. success: function (data) {
  600. data.Obj.unshift(data.Fields);
  601. excel.exportExcel(data.Obj, data.Info, 'xlsx');
  602. }
  603. });
  604. },
  605. Open: function () {
  606. var checkStatus = table.checkStatus('LAY-list-manage'),
  607. data = checkStatus.data; //得到选中的数据
  608. if (data.length < 1) {
  609. parent.layer.msg("请选择要开启的项");
  610. } else {
  611. var ids = "";
  612. $.each(data, function (index, value) {
  613. ids += data[index].Id + ",";
  614. });
  615. ids = ids.substring(0, ids.length - 1);
  616. var index = layer.confirm('确定要开启吗?', function (index) {
  617. $.ajax({
  618. type: "POST",
  619. url: "/Admin/StoreHouse/Open?r=" + Math.random(1),
  620. data: "Id=" + ids,
  621. dataType: "text",
  622. success: function (data) {
  623. layer.close(index);
  624. if (data == "success") {
  625. table.reload('LAY-list-manage');
  626. } else {
  627. layer.msg(data);
  628. }
  629. }
  630. });
  631. });
  632. }
  633. },
  634. Close: function () {
  635. var checkStatus = table.checkStatus('LAY-list-manage'),
  636. data = checkStatus.data; //得到选中的数据
  637. if (data.length < 1) {
  638. parent.layer.msg("请选择要关闭的项");
  639. } else {
  640. var ids = "";
  641. $.each(data, function (index, value) {
  642. ids += data[index].Id + ",";
  643. });
  644. ids = ids.substring(0, ids.length - 1);
  645. var index = layer.confirm('确定要关闭吗?', function (index) {
  646. $.ajax({
  647. type: "POST",
  648. url: "/Admin/StoreHouse/Close?r=" + Math.random(1),
  649. data: "Id=" + ids,
  650. dataType: "text",
  651. success: function (data) {
  652. layer.close(index);
  653. if (data == "success") {
  654. table.reload('LAY-list-manage');
  655. } else {
  656. layer.msg(data);
  657. }
  658. }
  659. });
  660. });
  661. }
  662. },
  663. SycnData: function () {
  664. var index = layer.confirm('确定要同步所有仓库的库存数据吗?', function (index) {
  665. layer.close(index);
  666. var loadindex = layer.load(1, {
  667. shade: [0.5, '#000']
  668. });
  669. $.ajax({
  670. type: "POST",
  671. url: "/Admin/StoreHouse/SycnData?r=" + Math.random(1),
  672. data: "Id=0",
  673. dataType: "text",
  674. success: function (data) {
  675. layer.close(loadindex);
  676. if (data == "success") {
  677. layer.msg('同步成功');
  678. table.reload('LAY-list-manage');
  679. } else {
  680. layer.msg(data);
  681. }
  682. }
  683. });
  684. });
  685. },
  686. };
  687. $('.layui-btn').on('click', function () {
  688. var type = $(this).data('type');
  689. active[type] ? active[type].call(this) : '';
  690. });
  691. });