You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

538 lines
21 KiB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
  1. //公共参数
  2. let tableTags = "activity_data";//表格的id
  3. let currentRow;//临时的参数行
  4. //初始化
  5. $(function () {
  6. InfoDate('startDate')
  7. InfoDate('finishDate')
  8. activityTableInit();
  9. partTable();
  10. selectPart();
  11. });
  12. //初始化表格
  13. function activityTableInit() {
  14. $('#' + tableTags).bootstrapTable({
  15. url: '/promotion/searchPromotionHistList', //请求后台的URL(*)
  16. method: 'post', //请求方式(*)
  17. //contentType:'application/x-www-form-urlencoded',
  18. contentType: 'application/json;charset=utf-8',
  19. toolbar: '#toolbar', //工具按钮用哪个容器
  20. striped: true, //是否显示行间隔色
  21. cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
  22. pagination: false, //是否显示分页(*)
  23. sortable: false, //是否启用排序
  24. sortOrder: "asc", //排序方式
  25. queryParamsType: "undefined", //排序方式
  26. queryParams: function queryParams(params) { //设置查询参数
  27. var param = {
  28. site: $('#current_site').val(),
  29. wareHouseName: $('#warehousename').val(),
  30. partDescription: $('#partDescription').val(),
  31. status: $('#status').val()
  32. };
  33. return JSON.stringify(param);
  34. },
  35. sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*)
  36. pageNumber: 1, //初始化加载第一页,默认第一页
  37. pageSize: 10, //每页的记录行数(*)
  38. pageList: [10, 25, 50, 100], //可供选择的每页的行数(*)
  39. search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
  40. searchTimeOut: 1000,
  41. // : true,
  42. showColumns: false, //是否显示所有的列
  43. showRefresh: false, //是否显示刷新按钮
  44. minimumCountColumns: 2, //最少允许的列数
  45. clickToSelect: true, //是否启用点击选中行
  46. singleSelect: false,
  47. height: 400, //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度
  48. uniqueId: "id", //每一行的唯一标识,一般为主键列
  49. // showToggle: true, //是否显示详细视图和列表视图的切换按钮
  50. cardView: false, //是否显示详细视图
  51. detailView: false, //是否显示父子表
  52. columns: [/*{
  53. checkbox: true
  54. },*/{
  55. field: 'wareHouseId',
  56. title: '店铺编号'
  57. }, {
  58. field: 'warehousename',
  59. title: '店铺名称'
  60. }, {
  61. field: 'partNo',
  62. title: 'SKU编号'
  63. }, {
  64. field: 'partdescription',
  65. title: 'SKU名称'
  66. }, {
  67. field: 'startDate',
  68. title: '开始时间',
  69. formatter: function (value, row) {
  70. var date = formatLinuxDate(value);
  71. date = date.substring(0, 10);
  72. return date;
  73. },
  74. width: 100
  75. }, {
  76. field: 'finishDate',
  77. title: '结束时间',
  78. formatter: function (value, row) {
  79. var date = formatLinuxDate(value);
  80. date = date.substring(0, 10);
  81. return date;
  82. },
  83. width: 100
  84. }, {
  85. field: 'averageConsumeQty',
  86. title: '日均消耗',
  87. width: 100,
  88. align: 'right',
  89. }, {
  90. field: 'promotionDesc',
  91. title: '描述',
  92. width: 200
  93. }, {
  94. field: 'createdBy',
  95. title: '创建人',
  96. width: 100
  97. }, {
  98. field: 'createdDate',
  99. title: '创建时间',
  100. formatter: function (value, row) {
  101. var date = formatLinuxDate(value);
  102. date = date.substring(0, 10);
  103. return date;
  104. },
  105. width: 100
  106. }
  107. // , {
  108. // field: 'status',
  109. // title: '状态',
  110. // width: 100
  111. // }
  112. ],
  113. onClickRow: function (row, $element) {
  114. $('.check_back').removeClass('check_back');
  115. $($element).addClass('check_back');
  116. currentRow = row;
  117. //调用自定义按钮的控制类
  118. customerBtnControl(tableTags, row, null);
  119. },
  120. onLoadSuccess: function (data) {
  121. var height_param = $(window).height() - 92;
  122. $('#' + tableTags).parents('.fixed-table-container').css("height", height_param + "px");
  123. //调用自定义按钮的控制类
  124. customerBtnControl(tableTags, null, null)
  125. },
  126. //>>>>>>>>>>>>>>导出excel表格设置
  127. showExport: false, //是否显示导出按钮(此方法是自己写的目的是判断终端是电脑还是手机,电脑则返回true,手机返回falsee,手机不显示按钮)
  128. exportDataType: "basic", //basic', 'all', 'selected'.
  129. exportTypes: ['excel', 'xlsx'], //导出类型
  130. exportButton: $('#download_button'), //为按钮btn_export 绑定导出事件 自定义导出按钮(可以不用)
  131. exportOptions: {
  132. ignoreColumn: [8, 8], //忽略某一列的索引
  133. fileName: '库存信息' + generateTimeReqestNumber(), //文件名称设置
  134. worksheetName: '库存信息', //表格工作区名称
  135. tableName: '库存信息',
  136. excelstyles: ['background-color', 'color', 'font-size', 'font-weight'],
  137. onMsoNumberFormat: DoOnMsoNumberFormat
  138. }
  139. //导出excel表格设置<<<<<<<<<<<<<<<<
  140. });
  141. }
  142. //处理搜索,刷新table
  143. function searchPromontion() {
  144. $('#' + tableTags).bootstrapTable('refresh');
  145. }
  146. // 活动添加 模态框
  147. function addPromotionModal() {
  148. $('#partList').bootstrapTable('refresh')
  149. $('#addPromotionModal').modal()
  150. }
  151. // part列表
  152. function partTable() {
  153. $('#partList').bootstrapTable({
  154. url: '/part/searchPartWareHouseList', //请求后台的URL(*)
  155. method: 'post', //请求方式(*)
  156. //contentType:'application/x-www-form-urlencoded',
  157. contentType: 'application/json;charset=utf-8',
  158. striped: true, //是否显示行间隔色
  159. cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
  160. pagination: false, //是否显示分页(*)
  161. sortable: false, //是否启用排序
  162. sortOrder: "asc", //排序方式
  163. queryParamsType: "undefined", //排序方式
  164. queryParams: function queryParams(params) { //设置查询参数
  165. var param = {
  166. othergroup2: $('#current_username').val(),
  167. partdescription: $('#addPartDescription').val(),
  168. warehousename: $('#addWarehouseName').val(),
  169. };
  170. return JSON.stringify(param);
  171. },
  172. sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*)
  173. pageNumber: 1, //初始化加载第一页,默认第一页
  174. pageSize: 10, //每页的记录行数(*)
  175. pageList: [10, 25, 50, 100], //可供选择的每页的行数(*)
  176. search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
  177. searchTimeOut: 1000,
  178. // : true,
  179. showColumns: false, //是否显示所有的列
  180. showRefresh: false, //是否显示刷新按钮
  181. minimumCountColumns: 2, //最少允许的列数
  182. clickToSelect: true, //是否启用点击选中行
  183. singleSelect: false,
  184. // height: 400, //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度
  185. uniqueId: "id", //每一行的唯一标识,一般为主键列
  186. // showToggle: true, //是否显示详细视图和列表视图的切换按钮
  187. cardView: false, //是否显示详细视图
  188. detailView: false, //是否显示父子表
  189. columns: [{
  190. checkbox: true
  191. }, {
  192. field: 'defaultwarehouseid',
  193. title: '店铺编号',
  194. width: 200
  195. }, {
  196. field: 'warehousename',
  197. title: '店铺名称',
  198. width: 200
  199. }, {
  200. field: 'partno',
  201. title: '物料编号',
  202. width: 200
  203. }, {
  204. field: 'partdescription',
  205. title: '物料名称',
  206. width: 200
  207. }, {
  208. field: 'othergroup2',
  209. title: '运营',
  210. align: 'right',
  211. }],
  212. onLoadSuccess: function (data) {
  213. $('#partList').parents('.bootstrap-table').css("margin-left", "10px");
  214. $('#partList').parents('.fixed-table-container').css("width", 670 + "px");
  215. $('#partList').parents('.fixed-table-container').css("height", '300');
  216. }
  217. });
  218. }
  219. // 查询part列表
  220. function searchPart() {
  221. $('#partList').bootstrapTable('refresh')
  222. }
  223. // 初始化页面显示的列
  224. function selectPart() {
  225. $('#partTable').bootstrapTable({
  226. striped: true, //是否显示行间隔色
  227. cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
  228. pagination: false, //是否显示分页(*)
  229. sortable: false, //是否启用排序
  230. sortOrder: "asc", //排序方式
  231. queryParamsType: "undefined", //排序方式
  232. queryParams: function queryParams(params) { //设置查询参数
  233. var param = {
  234. site: $('#current_site').val(),
  235. active: $('#status').val(),
  236. partdescription: $('#partdescription').val(),
  237. warehousename: $('#warehousename').val(),
  238. operating: 1,
  239. othergroup2: ''
  240. };
  241. return JSON.stringify(param);
  242. },
  243. sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*)
  244. pageNumber: 1, //初始化加载第一页,默认第一页
  245. pageSize: 10, //每页的记录行数(*)
  246. pageList: [10, 25, 50, 100], //可供选择的每页的行数(*)
  247. search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
  248. searchTimeOut: 1000,
  249. // : true,
  250. showColumns: false, //是否显示所有的列
  251. showRefresh: false, //是否显示刷新按钮
  252. minimumCountColumns: 2, //最少允许的列数
  253. clickToSelect: true, //是否启用点击选中行
  254. singleSelect: false,
  255. // height: 400, //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度
  256. uniqueId: "id", //每一行的唯一标识,一般为主键列
  257. // showToggle: true, //是否显示详细视图和列表视图的切换按钮
  258. cardView: false, //是否显示详细视图
  259. detailView: false, //是否显示父子表
  260. columns: [{
  261. field: 'defaultwarehouseid',
  262. title: '店铺编号',
  263. width: 200
  264. }, {
  265. field: 'warehousename',
  266. title: '店铺名称',
  267. width: 200
  268. }, {
  269. field: 'partno',
  270. title: '物料编号',
  271. width: 200
  272. }, {
  273. field: 'partdescription',
  274. title: '物料名称',
  275. width: 200
  276. }, {
  277. field: 'averageConsumeQty',
  278. title: '日均消耗',
  279. align: 'right',
  280. formatter: function (value, row, index) {
  281. let averageConsumeQty = ' <input type="text" class=".parentNumber" name="averageConsumeQty" value="" style="width: 100px;border-style:none;" autocomplete="off" onkeyup="value=value.replace(/[^\\d]/g,\'\')">'
  282. return averageConsumeQty
  283. }
  284. }, {
  285. field: 'remark',
  286. title: '备注',
  287. formatter: function (value, row, index) {
  288. let promotionDesc = ' <input type="text" class=".parentNumber" name="remark" value="" style="width: 165px;border-style:none;" autocomplete="off" >'
  289. return promotionDesc
  290. }
  291. }],
  292. onPostHeader: function (data) {
  293. $('#partTable').parents('.bootstrap-table').css("margin-left", "10px");
  294. $('#partTable').parents('.fixed-table-container').css("width", 670 + "px");
  295. $('#partTable').parents('.fixed-table-container').css("height", '260');
  296. }
  297. });
  298. }
  299. var inputs
  300. function addPromotionHist() {
  301. let partList = $("#partList").bootstrapTable('getSelections')
  302. $('#partTable').bootstrapTable('load', partList);
  303. $("#select_modal").modal()
  304. inputs = document.getElementById("partList").getElementsByTagName("input");
  305. $("input").keydown(function (event) {
  306. var thisinput = $(this)[0];
  307. getfocus(thisinput);
  308. });
  309. }
  310. //回车和小键盘切换input焦点
  311. function getfocus(thisinput) {
  312. inputs = document.getElementsByTagName("input");
  313. let code = event.keyCode
  314. switch (code){
  315. case 13:
  316. case 40:
  317. case 39:
  318. for (var i = 0; i < inputs.length; i++) {
  319. if (thisinput == inputs[i]) {
  320. if (i == (inputs.length - 1)) {
  321. inputs[0].focus();
  322. break;
  323. } else {
  324. inputs[i + 1].focus();
  325. break;
  326. }
  327. }
  328. }
  329. break;
  330. case 37:
  331. case 38:
  332. for (var i = 0; i < inputs.length; i++) {
  333. if (thisinput == inputs[i]) {
  334. if (i != 0) {
  335. inputs[i - 1].focus();
  336. break;
  337. } else {
  338. inputs[inputs.length - 1].focus();
  339. break;
  340. }
  341. }
  342. }
  343. break;
  344. }
  345. }
  346. // 添加活动计划
  347. function addPromotion() {
  348. let startTime = $('#startDate').val()
  349. let finisTime = $('#finishDate').val()
  350. let nowTime = getNowFormatDate()
  351. console.log(startTime + "----------" + finisTime + "----------" + nowTime)
  352. if (startTime > finisTime) {
  353. alert("活动结束时间不能在活动开始时间之前")
  354. return;
  355. }
  356. if (startTime < nowTime) {
  357. alert("活动开始时间必须在大于等于当前时间")
  358. return;
  359. }
  360. let bool = false
  361. let promotionHistList = []
  362. let partList = $("#partList").bootstrapTable('getData')
  363. let averageConsumeQtyList = $("[name='averageConsumeQty']")
  364. let remarkList = $("[name='remark']")
  365. averageConsumeQtyList.each((index, item) => {
  366. if ($(item).val() == '' || $(item).val() == null) {
  367. bool = true;
  368. }
  369. let partPlan = {
  370. site: $('#current_site').val(),
  371. wareHouseId: partList[index].defaultwarehouseid,
  372. partNo: partList[index].partno,
  373. promotionDesc: $('#promotionDesc').val(),
  374. coverDays: partList[index].coverDays,
  375. startDate: $('#startDate').val(),
  376. finishDate: $('#finishDate').val(),
  377. averageConsumeQty: $(item).val(),
  378. remark: $(remarkList[index]).val(),
  379. createdBy: $('#current_username').val(),
  380. status: '进行中'
  381. }
  382. promotionHistList.push(partPlan)
  383. })
  384. if ($('#startDate').val() == '' || $('#startDate').val() == null) {
  385. layer.alert('开始时间不能为空')
  386. return;
  387. }
  388. if ($('#finishDate').val() == '' || $('#finishDate').val() == null) {
  389. layer.alert('结束时间不能为空')
  390. return;
  391. }
  392. if ($('#startDate').val() > $('#finishDate').val()) {
  393. layer.alert('结束时间不能早于开始时间')
  394. return;
  395. }
  396. if (bool) {
  397. layer.alert('日消耗数不能为空')
  398. return;
  399. }
  400. $.ajax({
  401. url: '/promotion/savePromotionHistList',
  402. contentType: 'application/json',
  403. type: "POST",
  404. async: false,
  405. data: JSON.stringify(promotionHistList),
  406. dataType: "json",
  407. success: function (data) {
  408. layer.msg(data.msg)
  409. if (data.success) {
  410. $('#saveClose').click()
  411. $('#addClose').click()
  412. $('#activity_data').bootstrapTable('refresh')
  413. }
  414. },
  415. error: function (data) {
  416. if (data.status == 0) {
  417. layer.alert("网络连接异常: "+data.statusText);
  418. console.info("网络出错");
  419. }
  420. if (data.status == 403) {
  421. //判断是否是session超时
  422. var responseText = data.responseText;
  423. var json_str = JSON.parse(responseText);
  424. var status = json_str.status;
  425. var message = json_str.message;
  426. //判断是否是session超时
  427. if (403 == status) {
  428. layer.alert(message, function () {
  429. window.location.href = "/login";
  430. });
  431. }
  432. }
  433. }
  434. })
  435. }
  436. // 结束活动
  437. function updatePromotion() {
  438. let promotionHis = {
  439. id: currentRow.id,
  440. status: "已结束"
  441. }
  442. $.ajax({
  443. url: '/promotion/updatePromotionHist',
  444. contentType: 'application/json',
  445. type: "POST",
  446. async: false,
  447. data: JSON.stringify(promotionHis),
  448. dataType: "json",
  449. //timeout: 5000,
  450. success: function (data) {
  451. layer.msg(data.msg)
  452. if (data.success) {
  453. $('#activity_data').bootstrapTable('refresh')
  454. }
  455. },
  456. error: function (data) {
  457. var responseText = data.responseText;
  458. var json_str = JSON.parse(responseText);
  459. var status = json_str.status;
  460. var message = json_str.message;
  461. //判断是否是session超时
  462. if (403 == status) {
  463. layer.alert(message, function () {
  464. window.location.href = "/login";
  465. });
  466. }
  467. layer.closeAll('loading');
  468. }
  469. }).done(function (data) {
  470. // 请求成功
  471. alert("请求成功")
  472. }).fail(function (jqXHR, textStatus, errorThrown) {
  473. // net::ERR_CONNECTION_REFUSED 发生时,也能进入
  474. alert("请求超时,网络出现问题")
  475. console.info("网络出错");
  476. });
  477. }
  478. // 删除活动
  479. function removePromotion() {
  480. layer.confirm('确定要删除选中的活动信息!', {
  481. btn: ['确定', '取消']
  482. // 按钮
  483. }, function () {
  484. let promotionHis = {
  485. id: currentRow.id
  486. }
  487. $.ajax({
  488. url: '/promotion/removePromotionHis',
  489. contentType: 'application/json',
  490. type: "POST",
  491. async: false,
  492. data: JSON.stringify(promotionHis),
  493. dataType: "json",
  494. success: function (data) {
  495. layer.msg(data.msg)
  496. if (data.success) {
  497. $('#activity_data').bootstrapTable('refresh')
  498. }
  499. },
  500. error: function (data) {
  501. var responseText = data.responseText;
  502. var json_str = JSON.parse(responseText);
  503. var status = json_str.status;
  504. var message = json_str.message;
  505. //判断是否是session超时
  506. if (403 == status) {
  507. layer.alert(message, function () {
  508. window.location.href = "/login";
  509. });
  510. }
  511. layer.closeAll('loading');
  512. }
  513. })
  514. }, function () {
  515. });
  516. }