mkstorepromstat.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424
  1. $(function () {
  2. $("#jqGrid").jqGrid({
  3. url: '../mkstorepromstat/list',
  4. datatype: "json",
  5. colModel: [
  6. {label: 'promStatId', name: 'promStatId', index: 'prom_stat_id', key: true, hidden: true},
  7. {label: '推广名称', name: 'promName', index: 'promName', width: 180, align: 'center'},
  8. {label: '门店名称', name: 'storeName', index: 'storeName', width: 180, align: 'center'},
  9. {label: '推广用户', name: 'shareUserName', index: 'shareUserName', width: 120, align: 'center'},
  10. {label: '浏览数', name: 'browseNum', index: 'browse_num', width: 100, align: 'center'},
  11. {label: '访客量', name: 'visitNum', index: 'visit_num', width: 100, align: 'center'},
  12. // {label: '连带浏览量', name: 'relaBrowseNum', index: 'rela_browse_num', width: 80},
  13. // {label: '连带访客量', name: 'relaVisitorNum', index: 'rela_visitor_num', width: 80},
  14. // {label: '人均停留时长(秒)', name: 'aveStopTime', index: 'ave_stop_time', width: 80},
  15. // {label: '人均访问次数', name: 'aveVisitorNum', index: 'ave_visitor_num', width: 80},
  16. {label: '页面访问深度', name: 'visitPageDeep', index: 'visit_page_deep', width: 100, align: 'center'},
  17. {label: '转发访客量', name: 'transVisitorNum', index: 'trans_visitor_num', width: 100, align: 'center'},
  18. {label: '转发次数', name: 'transNum', index: 'trans_num', width: 100, align: 'center'},
  19. {label: '下单单数', name: 'submitOrderNum', index: 'submitOrderNum', width: 100, align: 'center'},
  20. {label: '下单人数', name: 'submitNum', index: 'submitNum', width: 100, align: 'center'},
  21. {label: '支付单数', name: 'payOrderNum', index: 'pay_order_num', width: 100, align: 'center'},
  22. // {label: '连带支付单数', name: 'relaPayOrderNum', index: 'rela_pay_order_num', width: 80},
  23. {label: '支付人数', name: 'payerNum', index: 'payer_num', width: 100, align: 'center'},
  24. // {label: '连带支付人数', name: 'relaPayerNum', index: 'rela_payer_num', width: 80},
  25. {label: '支付件数', name: 'payCaseNum', index: 'pay_case_num', width: 100, align: 'center'},
  26. // {label: '连带支付件数', name: 'relaPayCaseNum', index: 'rela_pay_case_num', width: 80},
  27. {label: '应收金额', name: 'receivMoney', index: 'receiv_money', width: 100, align: 'right'},
  28. // {label: '连带应收金额', name: 'relaReceivMoney', index: 'rela_receiv_money', width: 80},
  29. {label: '实收金额', name: 'actMoney', index: 'act_money', width: 100, align: 'right'},
  30. {
  31. label: '操作', width: 160, align: 'center', sortable: false, formatter: function (value, col, row) {
  32. let htmlStr = "<button class='btn btn-outline btn-primary' " +
  33. "onclick='vm.getOrderInfo(" + row.promId + ")'><i class='fa fa-qrcode'></i>订单明细</button>&nbsp;&nbsp;&nbsp;&nbsp;" +
  34. "<button class='btn btn-outline btn-primary' " +
  35. "onclick='vm.updateById(" + row.promStatId + ")'><i class='fa fa-qrcode'></i>明细</button>";
  36. return htmlStr;
  37. }}
  38. // {label: '连带实收金额', name: 'relaActMoney', index: 'rela_act_money', width: 80},
  39. // {label: '备注', name: 'note', index: 'note', width: 80},
  40. // {label: '创建人编号', name: 'createrSn', index: 'creater_sn', width: 80},
  41. // {label: '创建时间', name: 'createTime', index: 'create_time', width: 80},
  42. // {label: '修改人编号', name: 'moderSn', index: 'moder_sn', width: 80},
  43. // {label: '修改时间', name: 'modTime', index: 'mod_time', width: 80},
  44. // {label: '时间戳', name: 'tstm', index: 'tstm', width: 80}
  45. ],
  46. viewrecords: true,
  47. height: 670,
  48. rowNum: 10,
  49. rowList: [10, 30, 50],
  50. rownumbers: true,
  51. rownumWidth: 25,
  52. autowidth: true,
  53. shrinkToFit: false,
  54. autoScroll: true, //开启水平滚动条
  55. width: 1500,
  56. multiselect: true,
  57. pager: "#jqGridPager",
  58. jsonReader: {
  59. root: "page.list",
  60. page: "page.currPage",
  61. total: "page.totalPage",
  62. records: "page.totalCount"
  63. },
  64. prmNames: {
  65. page: "page",
  66. rows: "limit",
  67. order: "order"
  68. },
  69. gridComplete: function () {
  70. $("#jqGrid").closest(".ui-jqgrid-bdiv").css({"overflow-x": "scroll"});
  71. }
  72. });
  73. $("#jqGridOrder").jqGrid({
  74. url: '../mkstorepromstat/promOrderList',
  75. datatype: "json",
  76. colModel: [
  77. {label: '推广渠道ID', name: 'promId', index: 'promId', width: 80, align: 'center'},
  78. {label: '所属门店', name: 'storeName', index: 'storeName', width: 80, align: 'center'},
  79. {label: '订单号', name: 'orderSn', index: 'order_sn', width: 100, align: 'center'},
  80. {label: '会员', name: 'userName', index: 'user_name', width: 80, align: 'center'},
  81. {label: '商户订单号', name: 'merchOrderSn', index: 'merchOrderSn', width: 100, align: 'center'},
  82. {label: '优惠券使用', name: 'couponName', index: 'couponName', width: 70, align: 'center',
  83. formatter: function (value) {
  84. if (value == null || value == '') {
  85. return '<span style="color: red">未使用</span>';
  86. }
  87. return value;
  88. }},
  89. {label: '运费', name: 'freightPrice', index: 'freight_price', width: 60, align: 'center'},
  90. {label: '订单件数', name: 'orderDetailCount', index: 'orderDetailCount', width: 70, align: 'center'},
  91. {
  92. label: '订单状态', name: 'orderStatus', index: 'order_status', width: 80, align: 'center',
  93. formatter: function (value) {
  94. if (value == '0') {
  95. return '订单创建成功等待付款';
  96. } else if (value == '100') {
  97. return '订单付款中';
  98. } else if (value == '101') {
  99. return '订单已取消';
  100. } else if (value == '102') {
  101. return '订单已删除';
  102. } else if (value == '201') {
  103. return '订单已付款,等待发货';
  104. } else if (value == '300') {
  105. return '订单已发货';
  106. } else if (value == '301') {
  107. return '用户确认收货';
  108. } else if (value == '401') {
  109. return '没有发货,退款';
  110. } else if (value == '402') {
  111. return '已收货,退款退货';
  112. }
  113. return value;
  114. }
  115. },
  116. {
  117. label: '付款状态', name: 'payStatus', index: 'pay_status', width: 80, align: 'center',
  118. formatter: function (value) {
  119. if (value == '0') {
  120. return '未付款';
  121. } else if (value == '1') {
  122. return '付款中';
  123. } else if (value == '2') {
  124. return '已付款';
  125. } else if (value == '3') {
  126. return '退款中';
  127. } else if (value == '4') {
  128. return '退款';
  129. }
  130. return value;
  131. }
  132. },
  133. {label: '实际支付', name: 'actualPrice', index: 'actual_price', width: 60, align: 'center'},
  134. {label: '推广实收金额', name: 'promActualPrice', index: 'promActualPrice', width: 60, align: 'center'},
  135. {
  136. label: '下单时间', name: 'addTime', index: 'add_time', width: 120, align: 'center',
  137. formatter: function (value) {
  138. // console.log(value);
  139. return transDate(value, 'yyyy-MM-dd hh:mm:ss');
  140. }
  141. },
  142. {
  143. label: '发货状态', name: 'shippingStatus', index: 'shipping_status', width: 60, align: 'center',
  144. formatter: function (value) {
  145. if (value == '0') {
  146. return '未发货';
  147. } else if (value == '1') {
  148. return '已发货';
  149. } else if (value == '2') {
  150. return '已收货';
  151. } else if (value == '4') {
  152. return '退货';
  153. }
  154. return value;
  155. }
  156. }
  157. ],
  158. viewrecords: true,
  159. height: 550,
  160. width:1600,
  161. rowNum: 10,
  162. rowList: [10, 30, 50],
  163. rownumbers: true,
  164. rownumWidth: 25,
  165. autowidth: false,
  166. multiselect: false,
  167. caption: "统计订单明细",
  168. sortname : 'o.id',
  169. sortorder : "asc",
  170. subGrid : true,
  171. subGridRowExpanded : function(subgrid_id, row_id) {
  172. var subgrid_table_id, pager_id;
  173. subgrid_table_id = subgrid_id + "_t";
  174. pager_id = "p_" + subgrid_table_id;
  175. $("#" + subgrid_id).html(
  176. "<table id='" + subgrid_table_id + "' class='scroll'></table><div id='" + pager_id + "' class='scroll'></div>");
  177. var rowData = $("#jqGridOrder").jqGrid('getRowData', row_id);
  178. jQuery("#" + subgrid_table_id).jqGrid(
  179. {
  180. url : '../ordergoods/queryListByOrderId?id=' + row_id+'&promId='+rowData.promId,
  181. datatype : "json",
  182. colModel : [
  183. {label: '商品',name : "goodsName",index : "goodsName", width : 130, align : "center"},
  184. {label: '数量',name : "number",index : "number",width : 70, align : "center"},
  185. {label: '商品价格', name: 'retailPrice', index: 'retail_price', width: 80, align: 'center'},
  186. {label: '是否属于当前推广渠道商品', name: 'isPromGoods', index: 'isPromGoods', width: 80, align: 'center',
  187. formatter: function (value) {
  188. if (value == '0') {
  189. return '<span style="color: red;font-weight: bolder">否</span>';
  190. } else if (value == '1') {
  191. return '是';
  192. }
  193. return value;
  194. }}
  195. ],
  196. sortname : 'num',
  197. sortorder : "asc",
  198. height: "100%",
  199. rowNum: 5,
  200. pager: "#" + pager_id,
  201. jsonReader: {
  202. root: "page.list",
  203. page: "page.currPage",
  204. total: "page.totalPage",
  205. records: "page.totalCount"
  206. },
  207. prmNames: {
  208. page: "page",
  209. rows: "limit",
  210. order: "order"
  211. },
  212. });
  213. jQuery("#" + subgrid_table_id).jqGrid('navGrid',
  214. "#" + pager_id, {
  215. edit : false,
  216. add : false,
  217. del : false
  218. });
  219. },
  220. pager: "#jqGridPagerOrder",
  221. jsonReader: {
  222. root: "page.list",
  223. page: "page.currPage",
  224. total: "page.totalPage",
  225. records: "page.totalCount"
  226. },
  227. prmNames: {
  228. page: "page",
  229. rows: "limit",
  230. order: "order"
  231. },
  232. gridComplete: function () {
  233. $("#jqGridOrder").closest(".ui-jqgrid-bdiv").css({"overflow-x": "hidden"});
  234. }
  235. });
  236. });
  237. let vm = new Vue({
  238. el: '#rrapp',
  239. data: {
  240. showList: true,
  241. title: null,
  242. mkStorePromStat: {},
  243. ruleValidate: {
  244. name: [
  245. {required: true, message: '名称不能为空', trigger: 'blur'}
  246. ]
  247. },
  248. q: {
  249. name: ''
  250. },
  251. o:{
  252. orderStatus:''
  253. },
  254. showViewList: false,
  255. statInfoList: true,
  256. showOrderList: true,
  257. orderStatusList:[],
  258. promId: ''
  259. },
  260. methods: {
  261. query: function () {
  262. vm.reload();
  263. },
  264. add: function () {
  265. vm.showList = false;
  266. vm.showViewList = true;
  267. vm.statInfoList = true;
  268. vm.showOrderList = true;
  269. vm.title = "新增";
  270. vm.mkStorePromStat = {};
  271. },
  272. update: function (event) {
  273. let promStatId = getSelectedRow();
  274. if (promStatId == null) {
  275. return;
  276. }
  277. vm.showList = false;
  278. vm.showViewList = true;
  279. vm.statInfoList = true;
  280. vm.showOrderList = true;
  281. vm.title = "修改";
  282. vm.getInfo(promStatId)
  283. },
  284. saveOrUpdate: function (event) {
  285. let url = vm.mkStorePromStat.promStatId == null ? "../mkstorepromstat/save" : "../mkstorepromstat/update";
  286. $.ajax({
  287. type: "POST",
  288. url: url,
  289. contentType: "application/json",
  290. data: JSON.stringify(vm.mkStorePromStat),
  291. success: function (r) {
  292. if (r.code === 0) {
  293. alert('操作成功', function (index) {
  294. vm.reload();
  295. });
  296. } else {
  297. alert(r.msg);
  298. }
  299. }
  300. });
  301. },
  302. del: function (event) {
  303. let promStatIds = getSelectedRows();
  304. if (promStatIds == null){
  305. return;
  306. }
  307. confirm('确定要删除选中的记录?', function () {
  308. $.ajax({
  309. type: "POST",
  310. url: "../mkstorepromstat/delete",
  311. contentType: "application/json",
  312. data: JSON.stringify(promStatIds),
  313. success: function (r) {
  314. if (r.code == 0) {
  315. alert('操作成功', function (index) {
  316. $("#jqGrid").trigger("reloadGrid");
  317. });
  318. } else {
  319. alert(r.msg);
  320. }
  321. }
  322. });
  323. });
  324. },
  325. getInfo: function(promStatId){
  326. $.get("../mkstorepromstat/info/"+promStatId, function (r) {
  327. vm.mkStorePromStat = r.mkStorePromStat;
  328. });
  329. },
  330. getOrderInfo: function (promId) {
  331. vm.promId = promId;
  332. vm.showList = true;
  333. vm.showViewList = true;
  334. vm.statInfoList = true;
  335. vm.showOrderList = false;
  336. // vm.title = "统计订单明细";
  337. let page = $("#jqGridOrder").jqGrid('getGridParam', 'page');
  338. $("#jqGridOrder").jqGrid('setGridParam', {
  339. postData: {'promId': vm.promId,'orderStatus': vm.o.orderStatus},
  340. page: page
  341. }).trigger("reloadGrid");
  342. },
  343. queryOrder: function () {
  344. vm.reloadOrder();
  345. },
  346. reloadOrderSearch: function() {
  347. vm.o = {
  348. orderStatus: ''
  349. }
  350. vm.reloadOrder();
  351. },
  352. reloadOrder: function (event) {
  353. // vm.showList = true;
  354. // vm.statInfoList = true;
  355. // vm.showOrderList = true;
  356. // vm.showViewList = false;
  357. let page = $("#jqGridOrder").jqGrid('getGridParam', 'page');
  358. $("#jqGridOrder").jqGrid('setGridParam', {
  359. postData: {'promId': vm.promId,'orderStatus': vm.o.orderStatus},
  360. page: page
  361. }).trigger("reloadGrid");
  362. // vm.handleReset('formValidate');
  363. },
  364. updateById: function (promId) {
  365. if (promId == null) {
  366. return;
  367. }
  368. vm.showList = true;
  369. vm.showViewList = true;
  370. vm.statInfoList = false;
  371. vm.showOrderList = true;
  372. vm.title = "统计明细";
  373. vm.getInfo(promId)
  374. },
  375. exportOrder: function () {
  376. exportFile('#rrapp', '../mkstorepromstat/exportPromOrderList', {'promId': vm.promId,'orderStatus': vm.o.orderStatus});
  377. },
  378. reloadSearch: function() {
  379. vm.q = {
  380. name: ''
  381. }
  382. vm.reload();
  383. },
  384. reload: function (event) {
  385. vm.showList = true;
  386. vm.statInfoList = true;
  387. vm.showOrderList = true;
  388. vm.showViewList = false;
  389. let page = $("#jqGrid").jqGrid('getGridParam', 'page');
  390. $("#jqGrid").jqGrid('setGridParam', {
  391. postData: {'name': vm.q.name},
  392. page: page
  393. }).trigger("reloadGrid");
  394. vm.handleReset('formValidate');
  395. },
  396. handleSubmit: function (name) {
  397. handleSubmitValidate(this, name, function () {
  398. vm.saveOrUpdate()
  399. });
  400. },
  401. handleReset: function (name) {
  402. handleResetForm(this, name);
  403. }
  404. },
  405. mounted() {
  406. // $.get("../store/queryAll", function (r) {
  407. // vm.stores = r.list;
  408. // });
  409. $.get("../sys/macro/queryMacrosByValue?value=orderStatus", function (r) {
  410. vm.orderStatusList = r.list;
  411. });
  412. // $.get("../sys/macro/queryMacrosByValue?value=payStatus", function (r) {
  413. // vm.payStatusList = r.list;
  414. // });
  415. // $.get("../sys/macro/queryMacrosByValue?value=goodsBizType", function (r) {
  416. // vm.orderBizTypeList = r.list;
  417. // });
  418. }
  419. });