high_behavior_statistics.html 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071
  1. {extend name="public/layout" /} {block name="title"}渠道统计{/block} {block
  2. name="head"} {include file="public/head"}
  3. <style>
  4. html,
  5. body {
  6. min-width: 1100px;
  7. }
  8. .layui-table th:last-child {
  9. border-right: none;
  10. }
  11. .layui-table-view .layui-table {
  12. /* width:100% */
  13. }
  14. .layui-table thead tr,
  15. .layui-table-header {
  16. background-color: #d8e6f1 !important;
  17. }
  18. .line-middle {
  19. width: 10px;
  20. height: 100%;
  21. margin: 0px 10px;
  22. }
  23. .line {
  24. width: 10px;
  25. height: 2px;
  26. background-color: #999999;
  27. }
  28. .mb0 {
  29. margin-bottom: 0px;
  30. }
  31. .layui-btn {
  32. background-color: #fff;
  33. color: #555;
  34. border: 1px solid #c9c9c9;
  35. }
  36. .layui-btn:hover {
  37. background-color: #fff;
  38. color: #555;
  39. border: 1px solid #249efb;
  40. }
  41. .layui-btn-primary,
  42. .sBtn {
  43. background-color: #249efb;
  44. color: #fff;
  45. border: 1px solid #249efb;
  46. }
  47. .layui-btn-primary:hover {
  48. background-color: #249efb;
  49. color: #fff;
  50. border: 1px solid #249efb;
  51. }
  52. .sBtn:hover {
  53. background-color: #249efb;
  54. color: #fff;
  55. border: 1px solid #249efb;
  56. }
  57. .flex-row,
  58. .row {
  59. display: flex;
  60. }
  61. .align-center {
  62. align-items: center;
  63. }
  64. .ml10 {
  65. margin-left: 10px;
  66. }
  67. .mt10 {
  68. margin-top: 10px;
  69. }
  70. .padding-tlr {
  71. padding: 15px 15px 0px;
  72. }
  73. .layui-input-block {
  74. margin-left: 0px;
  75. }
  76. .justify-between {
  77. justify-content: space-between;
  78. }
  79. table tr td a {
  80. color: #249efb;
  81. }
  82. .qdtj_m {
  83. padding: 0 15px;
  84. width: 100%;
  85. box-sizing: border-box;
  86. margin: 20px 0 10px;
  87. }
  88. .qdtj_ul {
  89. overflow: hidden;
  90. border: 1px solid #94d0ff;
  91. padding: 15px 0;
  92. background-color: #fbfdff;
  93. }
  94. .qdtj_ul li {
  95. float: left;
  96. position: relative;
  97. text-align: center;
  98. width: 10%;
  99. }
  100. .qdtj_1 {
  101. font-size: 20px;
  102. font-weight: 400;
  103. }
  104. .qdtj_2 {
  105. font-size: 14px;
  106. color: #888;
  107. margin-top: 5px;
  108. }
  109. .qdtj_r_x {
  110. height: 40px;
  111. width: 1px;
  112. background: #d8d8d9;
  113. position: absolute;
  114. right: 0;
  115. top: 50%;
  116. margin-top: -20px;
  117. }
  118. .layui-card-body .layui-table-body {
  119. overflow-y: auto !important;
  120. height: 75vh;
  121. }
  122. .layui-table td,
  123. .layui-table th,
  124. .layui-table-col-set,
  125. .layui-table-fixed-r,
  126. .layui-table-grid-down,
  127. .layui-table-header,
  128. .layui-table-page,
  129. .layui-table-tips-main,
  130. .layui-table-tool,
  131. .layui-table-total,
  132. .layui-table-view,
  133. .layui-table[lay-skin="line"],
  134. .layui-table[lay-skin="row"] {
  135. border-color: #ccc !important;
  136. }
  137. .layui-table-fixed-r .layui-table-body {
  138. overflow: hidden !important;
  139. }
  140. .relative {
  141. position: relative;
  142. }
  143. .lay-setting {
  144. position: absolute;
  145. right: 40px;
  146. top: 20px;
  147. z-index: 999 !important;
  148. cursor: pointer;
  149. }
  150. .selectDateBox {
  151. position: absolute;
  152. width: 330px;
  153. height: 100px;
  154. box-shadow: 0 2px 4px rgb(0 0 0 / 12%);
  155. background-color: #fff;
  156. z-index: 99999 !important;
  157. top: 45px;
  158. box-sizing: border-box;
  159. padding: 5px 8px;
  160. }
  161. .selecstDateBox {
  162. position: absolute;
  163. width: 330px;
  164. height: 100px;
  165. box-shadow: 0 2px 4px rgb(0 0 0 / 12%);
  166. background-color: #fff;
  167. z-index: 99999 !important;
  168. top: 45px;
  169. right: 0;
  170. box-sizing: border-box;
  171. padding: 5px 8px;
  172. }
  173. .date-flex,
  174. .date-flex1 {
  175. display: flex;
  176. align-items: center;
  177. }
  178. .date-box {
  179. padding: 15px 0px 10px;
  180. }
  181. #rangeDepart {
  182. width: 260px;
  183. height: 38px;
  184. }
  185. xm-select>.xm-body {
  186. z-index: 99999 !important;
  187. }
  188. </style>
  189. {/block} {block name="body"}
  190. <div class="layui-fluid" style="background-color: #fff">
  191. <div class="layui-card">
  192. <div class="search-form layui-form padding-tlr">
  193. <div class="flex-row align-center justify-between">
  194. <div class="flex-row align-center">
  195. <div class="layui-input-block" style="margin-right: 10px">
  196. <button class="layui-btn ml10" id="tablebtn">导出</button>
  197. </div>
  198. <div class="layui-input-block" style="line-height:36px;">
  199. <a href="javascript:void(0)" id="hight-behavior-export-list" style="color:#249efb;">查看</a>
  200. </div>
  201. </div>
  202. <div class="flex-row align-center">
  203. <div class="layui-input-block">
  204. <input type="text" class="layui-input" id="keyword" autocomplete="off" name="keyword"
  205. placeholder="请输入员工名称" />
  206. </div>
  207. <div class="layui-input-inline layui-form ml10">
  208. <div id="rangeDepart"></div>
  209. </div>
  210. <div class="layui-input-inline layui-form ml10" style="display: inline-block;width:200px;">
  211. <div class="layui-input-inline select-date relative">
  212. <!-- 注意:这一层元素并不是必须的 -->
  213. <input type="text" class="layui-input" id="sDate" name="start_date" placeholder="开始日期 - 结束日期"
  214. autocomplete="off" />
  215. <div data-type="" class="selecstDateBox layui-hide">
  216. <div data-type="" class="date-flex1">
  217. <div data-type="today" class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs">
  218. 今日
  219. </div>
  220. <div data-type="yesterday" class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs">
  221. 昨日
  222. </div>
  223. <div data-type="week" class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs">
  224. 本周
  225. </div>
  226. <div data-type="lastWeek" class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs">
  227. 上周
  228. </div>
  229. <div data-type="month" class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs">
  230. 本月
  231. </div>
  232. <div data-type="lastMonth" class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs">
  233. 上月
  234. </div>
  235. <div data-type="all" class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs">
  236. 累计
  237. </div>
  238. </div>
  239. <div data-type="" class="date-box">
  240. <input data-type="" type="text" id="select_sDate" placeholder="选择开始时间 - 结束时间" readonly
  241. autocomplete="off" class="layui-input" />
  242. </div>
  243. </div>
  244. </div>
  245. </div>
  246. <button class="layui-btn sBtn ml10 submitbtn" lay-submit lay-filter="table-search">
  247. 筛选
  248. </button>
  249. <button class="layui-btn sBtn" style="margin-left: 18px;" id="resetbtn">重置</button>
  250. </div>
  251. </div>
  252. </div>
  253. <div class="layui-card-body relative">
  254. <i class="layui-icon layui-icon-set-fill lay-setting"></i>
  255. <table lay-filter="datalist" id="list"></table>
  256. </div>
  257. </div>
  258. </div>
  259. {/block} {block name="js"}
  260. <script src="__STATIC__/layui/layui/lay/modules/xm-select.js" type="text/javascript" charset="utf-8"></script>
  261. <script type="text/html" id="dep">
  262. {{# if(d.deposit_customer_count){ }}
  263. <a href="javascript:void(0)" lay-event="dep" style="color:blue;"
  264. >{{d.deposit_customer_count}}</a
  265. >
  266. {{# }else{ }}
  267. <span>{{d.deposit_customer_count}}</span>
  268. {{# } }}
  269. </script>
  270. <script type="text/html" id="store_dep">
  271. {{# if(d.store_1_dep){ }}
  272. <a href="javascript:void(0)" lay-event="storeDep" style="color:blue;"
  273. >{{d.store_1_dep}}</a
  274. >
  275. {{# }else{ }}
  276. <span>{{d.store_1_dep}}</span>
  277. {{# } }}
  278. </script>
  279. <script type="text/html" id="store1">
  280. {{# if(d.store_1){ }}
  281. <a href="javascript:void(0)" lay-event="store1" style="color:blue;"
  282. >{{d.store_1}}</a
  283. >
  284. {{# }else{ }}
  285. <span>{{d.store_1}}</span>
  286. {{# } }}
  287. </script>
  288. <script type="text/html" id="store2">
  289. {{# if(d.store_2){ }}
  290. <a href="javascript:void(0)" lay-event="store2" style="color:blue;"
  291. >{{d.store_2}}</a
  292. >
  293. {{# }else{ }}
  294. <span>{{d.store_2}}</span>
  295. {{# } }}
  296. </script>
  297. <script type="text/html" id="store3">
  298. {{# if(d.store_3){ }}
  299. <a href="javascript:void(0)" lay-event="store3" style="color:blue;"
  300. >{{d.store_3}}</a
  301. >
  302. {{# }else{ }}
  303. <span>{{d.store_3}}</span>
  304. {{# } }}
  305. </script>
  306. <script type="text/html" id="measuring_room_customer_count">
  307. {{# if(d.measuring_room_customer_count){ }}
  308. <a href="javascript:void(0)" lay-event="room" style="color:blue;"
  309. >{{d.measuring_room_customer_count}}</a
  310. >
  311. {{# }else{ }}
  312. <span>{{d.measuring_room_customer_count}}</span>
  313. {{# } }}
  314. </script>
  315. <script type="text/html" id="customer_log">
  316. {{# if(d.log_customer_count){ }}
  317. <a href="javascript:void(0)" lay-event="customerLog" style="color:blue;"
  318. >{{d.log_customer_count}}</a
  319. >
  320. {{# }else{ }}
  321. <span>{{d.log_customer_count}}</span>
  322. {{# } }}
  323. </script>
  324. <script type="text/html" id="customer_logs">
  325. {{# if(d.log_count){ }}
  326. <a href="javascript:void(0)" lay-event="customerLogs" style="color:blue;"
  327. >{{d.log_count}}</a
  328. >
  329. {{# }else{ }}
  330. <span>{{d.log_count}}</span>
  331. {{# } }}
  332. </script>
  333. <script type="text/html" id="add_wechat">
  334. {{# if(d.add_wechat_count){ }}
  335. <a href="javascript:void(0)" lay-event="addWechat" style="color:blue;"
  336. >{{d.add_wechat_count}}</a
  337. >
  338. {{# }else{ }}
  339. <span>{{d.add_wechat_count}}</span>
  340. {{# } }}
  341. </script>
  342. <script type="text/html" id="share_count">
  343. {{# if(d.share_count){ }}
  344. <a href="javascript:void(0)" lay-event="noFinishList" style="color:blue;"
  345. >{{d.share_count}}</a
  346. >
  347. {{# }else{ }}
  348. <span>{{d.share_count}}</span>
  349. {{# } }}
  350. </script>
  351. <script type="text/html" id="position">
  352. {{# if(d.position){ }}
  353. <span>{{d.position}}</span>
  354. {{# }else{ }}
  355. <span style="color: #cccccc;">无</span>
  356. {{# } }}
  357. </script>
  358. <script type="text/html" id="explain_count">
  359. {{# if(d.explain_count){ }}
  360. <a href="javascript:void(0)" lay-event="explain_count" style="color:blue;"
  361. >{{d.explain_count}}</a
  362. >
  363. {{# }else{ }}
  364. <span>{{d.explain_count}}</span>
  365. {{# } }}
  366. </script>
  367. <script>
  368. layui.use(["table", "form", "laydate", "element"], function () {
  369. let table = layui.table,
  370. laydate = layui.laydate,
  371. form = layui.form,
  372. element = layui.element,
  373. $ = layui.$;
  374. $("body").attr("layadmin-themealias", "default");
  375. var bodyH = $(".body-h").height() * 0.82;
  376. var istypes = 0;
  377. document.onkeydown = function (event) {
  378. var e = event || window.event || arguments.callee.caller.arguments[0];
  379. if (e && e.keyCode == 13) {
  380. $(".submitbtn").trigger("click");
  381. }
  382. };
  383. //执行一个laydate实例
  384. // laydate.render({
  385. // elem: '#sDate' //指定元素
  386. // });
  387. // laydate.render({
  388. // elem: '#eDate' //指定元素
  389. // });
  390. $("#addWechatTime").click(function () {
  391. $(".selectDateBox").toggleClass("layui-hide");
  392. $(".selecstDateBox").addClass("layui-hide");
  393. });
  394. $("#sDate").click(function () {
  395. $(".selecstDateBox").toggleClass("layui-hide");
  396. $(".selectDateBox").addClass("layui-hide");
  397. });
  398. laydate.render({
  399. elem: "#select_date",
  400. type: "date",
  401. range: true,
  402. format: "yyyy/MM/dd",
  403. trigger: "click", //呼出事件改成click
  404. done: function (value, date, endDate) {
  405. $(".selectDateBox").addClass("layui-hide");
  406. $("#addWechatTime").val(value);
  407. },
  408. });
  409. laydate.render({
  410. elem: "#select_sDate", //指定元素
  411. type: "date",
  412. format: "yyyy/MM/dd",
  413. range: true,
  414. trigger: "click", //呼出事件改成click
  415. done: function (value, date, endDate) {
  416. $(".selecstDateBox").addClass("layui-hide");
  417. $("#sDate").val(value);
  418. },
  419. });
  420. var dateObj = {};
  421. setDate();
  422. function setDate() {
  423. let date = new Date();
  424. let year = date.getFullYear();
  425. let month = date.getMonth() + 1;
  426. let day = date.getDate();
  427. let lastDate = new Date(new Date().getTime() - 1 * 24 * 60 * 60 * 1000);
  428. let lastYear = lastDate.getFullYear();
  429. let lastMonth = lastDate.getMonth() + 1;
  430. let lastDay = lastDate.getDate();
  431. let weekObj = getMondayAndSunday();
  432. let monthObj = getMonthFirstDayAndLastDay();
  433. dateObj = {
  434. today: `${year}/${month}/${day}`,
  435. yesterday: `${lastYear}/${lastMonth}/${lastDay}`,
  436. ...weekObj,
  437. ...monthObj,
  438. };
  439. }
  440. var departTree = xmSelect.render({
  441. el: "#rangeDepart",
  442. name: 'org_id',
  443. autoRow: true,
  444. filterable: true,
  445. tips: '请选择',
  446. radio: true,
  447. tree: {
  448. show: true,
  449. showFolderIcon: true,
  450. showLine: true,
  451. indent: 20,
  452. expandedKeys: [-3],
  453. //是否严格遵守父子模式
  454. strict: false,
  455. },
  456. height: "200px",
  457. data: [],
  458. //文本显示模式
  459. //处理方式
  460. });
  461. $.ajax({
  462. url: '{:url("statistics/get_person")}',
  463. type: "post",
  464. data: {},
  465. success: function (res) {
  466. departTree.update({ data: res })
  467. }
  468. })
  469. $(".date-flex div").click(function () {
  470. let type = $(this).prop("dataset").type;
  471. if (type == "today") {
  472. $("#select_date").val(`${dateObj.today} - ${dateObj.today}`);
  473. $("#addWechatTime").val(`${dateObj.today} - ${dateObj.today}`);
  474. } else if (type == "yesterday") {
  475. $("#select_date").val(`${dateObj.yesterday} - ${dateObj.yesterday}`);
  476. $("#addWechatTime").val(`${dateObj.yesterday} - ${dateObj.yesterday}`);
  477. } else if (type == "week") {
  478. $("#select_date").val(
  479. `${dateObj.thisWeekMonday} - ${dateObj.thisWeekSunday}`
  480. );
  481. $("#addWechatTime").val(
  482. `${dateObj.thisWeekMonday} - ${dateObj.thisWeekSunday}`
  483. );
  484. } else if (type == "lastWeek") {
  485. $("#select_date").val(
  486. `${dateObj.lastWeekMonday} - ${dateObj.lastWeekSunday}`
  487. );
  488. $("#addWechatTime").val(
  489. `${dateObj.lastWeekMonday} - ${dateObj.lastWeekSunday}`
  490. );
  491. } else if (type == "month") {
  492. $("#select_date").val(
  493. `${dateObj.thisMonthFirstDay} - ${dateObj.thisMonthLastDay}`
  494. );
  495. $("#addWechatTime").val(
  496. `${dateObj.thisMonthFirstDay} - ${dateObj.thisMonthLastDay}`
  497. );
  498. } else if (type == "lastMonth") {
  499. $("#select_date").val(
  500. `${dateObj.lastMonthFirstDay} - ${dateObj.lastMonthLastDay}`
  501. );
  502. $("#addWechatTime").val(
  503. `${dateObj.lastMonthFirstDay} - ${dateObj.lastMonthLastDay}`
  504. );
  505. } else {
  506. $("#select_date").val("");
  507. $("#sDate").val("");
  508. $("#addWechatTime").val("");
  509. }
  510. $(".selectDateBox").addClass("layui-hide");
  511. });
  512. $(".date-flex1 div").click(function () {
  513. let type = $(this).prop("dataset").type;
  514. if (type == "today") {
  515. itmesss = dateToYYYYMMDD(dateObj.today);
  516. itmesss2 = dateToYYYYMMDD(dateObj.today);
  517. $('#select_sDate').val(itmesss + ' - ' + itmesss2);
  518. $('#sDate').val(itmesss + ' - ' + itmesss2);
  519. } else if (type == "yesterday") {
  520. itmesss = dateToYYYYMMDD(dateObj.yesterday);
  521. itmesss2 = dateToYYYYMMDD(dateObj.yesterday);
  522. $('#select_sDate').val(itmesss + ' - ' + itmesss2);
  523. $('#sDate').val(itmesss + ' - ' + itmesss2);
  524. } else if (type == "week") {
  525. $("#select_sDate").val(
  526. `${dateObj.thisWeekMonday} - ${dateObj.thisWeekSunday}`
  527. );
  528. $("#sDate").val(
  529. `${dateObj.thisWeekMonday} - ${dateObj.thisWeekSunday}`
  530. );
  531. } else if (type == "lastWeek") {
  532. $("#select_sDate").val(
  533. `${dateObj.lastWeekMonday} - ${dateObj.lastWeekSunday}`
  534. );
  535. $("#sDate").val(
  536. `${dateObj.lastWeekMonday} - ${dateObj.lastWeekSunday}`
  537. );
  538. } else if (type == "month") {
  539. $("#select_sDate").val(
  540. `${dateObj.thisMonthFirstDay} - ${dateObj.thisMonthLastDay}`
  541. );
  542. $("#sDate").val(
  543. `${dateObj.thisMonthFirstDay} - ${dateObj.thisMonthLastDay}`
  544. );
  545. } else if (type == "lastMonth") {
  546. $("#select_sDate").val(
  547. `${dateObj.lastMonthFirstDay} - ${dateObj.lastMonthLastDay}`
  548. );
  549. $("#sDate").val(
  550. `${dateObj.lastMonthFirstDay} - ${dateObj.lastMonthLastDay}`
  551. );
  552. } else {
  553. $("#select_sDate").val("");
  554. $("#sDate").val("");
  555. }
  556. $(".selecstDateBox").addClass("layui-hide");
  557. });
  558. function getMondayAndSunday() {
  559. var today = new Date();
  560. //构建当前日期,格式:2022-08-22 00:00:00
  561. var year = today.getFullYear(); //本年
  562. var month = today.getMonth() + 1; //本月
  563. var day = today.getDate(); //本日
  564. var newDate = new Date(year + "/" + month + "/" + day + " 00:00:00"); //年月日拼接
  565. var nowTime = newDate.getTime(); //当前的时间戳
  566. var weekDay = newDate.getDay(); //当前星期 0.1.2.3.4.5.6 【0 = 周日】
  567. var oneDayTime = 24 * 60 * 60 * 1000; //一天的总ms
  568. // 当前星期减去天数,如今天为周五,则本周一为周五的时间戳减去4天的时间戳。但周日特殊,周一至周六是周几的到的weekDay就是几,但是周日的到的为0,需特殊处理
  569. var thisWeekMondayTime = (1 - weekDay) * oneDayTime + nowTime; //本周一的时间戳
  570. if (weekDay == 0) {
  571. // weekDay = 0 为周日,此时本周一时间为周日减去6天的时间
  572. thisWeekMondayTime = nowTime - 6 * oneDayTime;
  573. }
  574. var thisWeekSundayTime = thisWeekMondayTime + 6 * 24 * 60 * 60 * 1000; // 本周日
  575. var lastWeekMondayTime = thisWeekMondayTime - 7 * oneDayTime; // 上周一
  576. var lastWeekSundayTime = thisWeekMondayTime - oneDayTime; // 上周日
  577. var res = {
  578. thisWeekMonday: dateToYYYYMMDD(thisWeekMondayTime),
  579. thisWeekSunday: dateToYYYYMMDD(thisWeekSundayTime),
  580. lastWeekMonday: dateToYYYYMMDD(lastWeekMondayTime),
  581. lastWeekSunday: dateToYYYYMMDD(lastWeekSundayTime),
  582. };
  583. return res;
  584. }
  585. function getMonthFirstDayAndLastDay() {
  586. var date = new Date();
  587. // 值得注意的是,如果day取值为0,意味着取的是date时间的上一个月的最后一天,简单理解:date当前月的第一天,再减去一天
  588. var thisMonthFirstDay = date.setDate(1); // 本月第一天
  589. var thisMonthLastDay = new Date(
  590. date.getFullYear(),
  591. date.getMonth() + 1,
  592. 0
  593. ); // 本月最后一天
  594. var lastMonthFirstDay = new Date(
  595. date.getFullYear(),
  596. date.getMonth() - 1,
  597. 1
  598. ); // 上月第一天
  599. var lastMonthLastDay = date.setDate(0); // 上月最后一天
  600. // var day = new Date(date.getFullYear(), date.getMonth(), 0).getDate()
  601. // var lastMonthLastDay = new Date(date.getFullYear(), date.getMonth() - 1, day) // 上月最后一天
  602. var res = {
  603. thisMonthFirstDay: dateToYYYYMMDD(thisMonthFirstDay),
  604. thisMonthLastDay: dateToYYYYMMDD(thisMonthLastDay),
  605. lastMonthFirstDay: dateToYYYYMMDD(lastMonthFirstDay),
  606. lastMonthLastDay: dateToYYYYMMDD(lastMonthLastDay),
  607. };
  608. return res;
  609. }
  610. function dateToYYYYMMDD(date) {
  611. var time = new Date(date);
  612. var y = time.getFullYear();
  613. var m = time.getMonth() + 1;
  614. m = m > 9 ? m : "0" + m;
  615. var d = time.getDate();
  616. d = d > 9 ? d : "0" + d;
  617. return y + "/" + m + "/" + d;
  618. }
  619. window.parent.ajaxslist = function () {
  620. ajaxlist();
  621. };
  622. ajaxlist();
  623. function ajaxlist() {
  624. $.ajax({
  625. type: "post",
  626. url: '{:url("statistics/fieldList")}',
  627. data: {
  628. type: 2,
  629. },
  630. success: function (res) {
  631. data = res.data;
  632. tableData = JSON.parse(JSON.stringify(data));
  633. var cols = [[]];
  634. Object.keys(data).forEach((key) => {
  635. if (key == "position" && data[key].show == 1) {
  636. console.log(data[key]["name"]);
  637. cols[0].push({
  638. title: data[key]["name"],
  639. field: key,
  640. templet: "#position",
  641. align: "center",
  642. ...data[key],
  643. });
  644. } else if (key == "add_wechat_count" && data[key].show == 1) {
  645. cols[0].push({
  646. title: data[key]["name"],
  647. field: key,
  648. templet: "#add_wechat",
  649. align: "center",
  650. ...data[key],
  651. });
  652. } else if (key == "share_count" && data[key].show == 1) {
  653. cols[0].push({
  654. title: data[key]["name"],
  655. field: key,
  656. templet: "#share_count",
  657. align: "center",
  658. ...data[key],
  659. });
  660. } else if (key == "log_customer_count" && data[key].show == 1) {
  661. cols[0].push({
  662. title: data[key]["name"],
  663. field: key,
  664. templet: "#customer_log",
  665. align: "center",
  666. ...data[key],
  667. });
  668. } else if (key == "log_count" && data[key].show == 1) {
  669. cols[0].push({
  670. title: data[key]["name"],
  671. field: key,
  672. templet: "#customer_logs",
  673. align: "center",
  674. ...data[key],
  675. });
  676. } else if (
  677. key == "measuring_room_customer_count" &&
  678. data[key].show == 1
  679. ) {
  680. cols[0].push({
  681. title: data[key]["name"],
  682. field: key,
  683. templet: "#measuring_room_customer_count",
  684. align: "center",
  685. ...data[key],
  686. });
  687. } else if (key == "explain_count" && data[key].show == 1) {
  688. cols[0].push({
  689. title: data[key]["name"],
  690. field: key,
  691. templet: "#explain_count",
  692. align: "center",
  693. ...data[key],
  694. });
  695. } else if (key == "store_1" && data[key].show == 1) {
  696. cols[0].push({
  697. title: data[key]["name"],
  698. field: key,
  699. templet: "#store1",
  700. align: "center",
  701. ...data[key],
  702. });
  703. } else if (key == "store_2" && data[key].show == 1) {
  704. cols[0].push({
  705. title: data[key]["name"],
  706. field: key,
  707. templet: "#store2",
  708. align: "center",
  709. ...data[key],
  710. });
  711. } else if (key == "store_3" && data[key].show == 1) {
  712. cols[0].push({
  713. title: data[key]["name"],
  714. field: key,
  715. templet: "#store3",
  716. align: "center",
  717. ...data[key],
  718. });
  719. } else if (key == "store_1_dep" && data[key].show == 1) {
  720. cols[0].push({
  721. title: data[key]["name"],
  722. field: key,
  723. templet: "#store_dep",
  724. align: "center",
  725. ...data[key],
  726. });
  727. } else if (key == "deposit_customer_count" && data[key].show == 1) {
  728. cols[0].push({
  729. title: data[key]["name"],
  730. field: key,
  731. templet: "#dep",
  732. align: "center",
  733. ...data[key],
  734. });
  735. } else {
  736. if (data[key].show == 1) {
  737. cols[0].push({
  738. title: data[key]["name"],
  739. field: key,
  740. align: "center",
  741. ...data[key],
  742. });
  743. }
  744. }
  745. });
  746. cols[0].push({
  747. title: "",
  748. width: 30,
  749. align: "center",
  750. fixed: "right",
  751. });
  752. let url = '{:url("statistics/highBehaviorStatisticsData")}';
  753. table.render({
  754. elem: "#list",
  755. url: url,
  756. page: true,
  757. height: bodyH,
  758. cols: cols,
  759. id: "tablelist",
  760. limit: 50,
  761. });
  762. },
  763. });
  764. }
  765. $(".lay-setting").click(function () {
  766. let arr = [];
  767. $.each(data, function (key, val) {
  768. arr.push({ ...val, field: key });
  769. });
  770. localStorage.setItem('XQ$SORT', '2');
  771. window.parent.dialogFunc(arr, 2);
  772. });
  773. function setYMD(time) {
  774. let dateTime = new Date(time);
  775. let year = dateTime.getFullYear();
  776. let Month = dateTime.getMonth() + 1;
  777. let days = dateTime.getDate();
  778. return `${year}-${Month > 9 ? Month : "0" + Month}-${days > 9 ? days : "0" + days}`;
  779. }
  780. var dateArr = {};
  781. var today = new Date().getTime();
  782. var oneTime = 24 * 60 * 60 * 1000;
  783. var threeDay1 = today - 3 * oneTime;
  784. var sevenDay1 = today - 6 * oneTime;
  785. var oneMonth = today - 30 * oneTime;
  786. dateArr = {
  787. nowS: setYMD(today),
  788. nowE: setYMD(today),
  789. threeDayS: setYMD(threeDay1),
  790. threeDayE: setYMD(today),
  791. sevenDayS: setYMD(sevenDay1),
  792. sevenDayE: setYMD(today),
  793. oneMonthS: setYMD(oneMonth),
  794. oneMonthE: setYMD(today),
  795. };
  796. $("#timeBtn").on("click", function (e) {
  797. if (!!(e.target.localName != "input")) return;
  798. let o = document.querySelector("#timeBtn").children;
  799. if (e.target.classList.contains("layui-btn-primary") == true) {
  800. for (var i = 0; i < o.length; i++) {
  801. o[i].className = "layui-btn";
  802. }
  803. $("#sDate").val("");
  804. $("#eDate").val("");
  805. return;
  806. } else {
  807. for (var i = 0; i < o.length; i++) {
  808. o[i].className = "layui-btn";
  809. }
  810. e.target.className = "layui-btn layui-btn-primary";
  811. if (!!(e.target.className.indexOf("layui-btn-primary") > 0)) {
  812. if (e.target.value == "今日") {
  813. $("#sDate").val(dateArr.nowS);
  814. $("#eDate").val(dateArr.nowE);
  815. } else if (e.target.value == "3天") {
  816. $("#sDate").val(dateArr.threeDayS);
  817. $("#eDate").val(dateArr.threeDayE);
  818. } else if (e.target.value == "7天") {
  819. $("#sDate").val(dateArr.sevenDayS);
  820. $("#eDate").val(dateArr.sevenDayE);
  821. } else {
  822. $("#sDate").val(dateArr.oneMonthS);
  823. $("#eDate").val(dateArr.oneMonthE);
  824. }
  825. }
  826. }
  827. });
  828. form.on("submit(table-search)", function (data) {
  829. let field = data.field;
  830. let element = $(".layui-btn-primary");
  831. if (element && element[0]) {
  832. let el = element[0].value;
  833. }
  834. let option = {
  835. where: field,
  836. page: {
  837. curr: 1,
  838. },
  839. };
  840. //执行重载
  841. table.reload("tablelist", option);
  842. });
  843. //重置
  844. //重置
  845. $("#resetbtn").click(function () {
  846. $("#keyword").val("");
  847. $("#sDate").val("");
  848. $("#eDate").val("");
  849. $("#timeBtn input").attr("class", "layui-btn");
  850. layui.form.render();
  851. departTree.setValue([]);
  852. let option = {
  853. where: { keyword: "", start_date: "", end_date: "", org_id: "" },
  854. page: {
  855. curr: 1,
  856. },
  857. };
  858. table.reload("tablelist", option);
  859. });
  860. //导出
  861. $("#tablebtn").click(function () {
  862. let sdate = $("#sDate").val();
  863. let edate = $("#eDate").val();
  864. let keyword = $("#keyword").val();
  865. // let org_id = $("#org_id").val();
  866. let org_id = departTree.getValue();
  867. orgid = org_id.length == 0 ? '' : org_id[0].id;
  868. let url = "{:url('statistics/export2',['m'=>'highBehaviorStatisticsData', 'type'=>'high'])}"
  869. layer.confirm('确定要导出该查询结果么?', function () {
  870. $.post(url, { start_date: sdate, end_date: edate, keyword: keyword, org_id: orgid }, function (rs) {
  871. if (typeof rs == 'string') rs = JSON.parse(rs);
  872. layer.msg(rs.msg);
  873. })
  874. })
  875. });
  876. //调用内容
  877. table.on("tool(datalist)", function (obj) {
  878. switch (obj.event) {
  879. case "noFinishList":
  880. layer.open({
  881. type: 2,
  882. title: ["调用内容", "color:#333333;background-color:#D8E6F1;"],
  883. content:
  884. '{:url("statistics/behaviorStatisticsShareLog")}?index=' +
  885. obj.data.index,
  886. resize: false,
  887. area: ["80%", "80%"],
  888. });
  889. break;
  890. case "addWechat":
  891. layer.open({
  892. type: 2,
  893. title: ["加微客户", "color:#333333;background-color:#D8E6F1;"],
  894. content: '{:url("statistics/addWechat")}?index=' + obj.data.index,
  895. resize: false,
  896. area: ["80%", "80%"],
  897. });
  898. break;
  899. case "customerLog":
  900. layer.open({
  901. type: 2,
  902. title: ["跟进客户", "color:#333333;background-color:#D8E6F1;"],
  903. content:
  904. '{:url("statistics/addWechat")}?type=customerLog&index=' +
  905. obj.data.index,
  906. resize: false,
  907. area: ["80%", "80%"],
  908. });
  909. break;
  910. case "customerLogs":
  911. layer.open({
  912. type: 2,
  913. title: ["回访客户", "color:#333333;background-color:#D8E6F1;"],
  914. content:
  915. '{:url("statistics/addWechat")}?type=customerLogs&index=' +
  916. obj.data.index,
  917. resize: false,
  918. area: ["80%", "80%"],
  919. });
  920. break;
  921. case "room":
  922. layer.open({
  923. type: 2,
  924. title: ["回访客户", "color:#333333;background-color:#D8E6F1;"],
  925. content:
  926. '{:url("statistics/addWechat")}?type=room&index=' +
  927. obj.data.index,
  928. resize: false,
  929. area: ["80%", "80%"],
  930. });
  931. break;
  932. case "store1":
  933. layer.open({
  934. type: 2,
  935. title: ["一次到店客户", "color:#333333;background-color:#D8E6F1;"],
  936. content:
  937. '{:url("statistics/addWechat")}?type=store1&index=' +
  938. obj.data.index,
  939. resize: false,
  940. area: ["80%", "80%"],
  941. });
  942. break;
  943. case "store2":
  944. layer.open({
  945. type: 2,
  946. title: ["二次到店客户", "color:#333333;background-color:#D8E6F1;"],
  947. content:
  948. '{:url("statistics/addWechat")}?type=store2&index=' +
  949. obj.data.index,
  950. resize: false,
  951. area: ["80%", "80%"],
  952. });
  953. break;
  954. case "storeDep":
  955. layer.open({
  956. type: 2,
  957. title: [
  958. "一次到店签单客户",
  959. "color:#333333;background-color:#D8E6F1;",
  960. ],
  961. content:
  962. '{:url("statistics/addWechat")}?type=store_dep&index=' +
  963. obj.data.index,
  964. resize: false,
  965. area: ["80%", "80%"],
  966. });
  967. break;
  968. case "dep":
  969. layer.open({
  970. type: 2,
  971. title: ["签单客户", "color:#333333;background-color:#D8E6F1;"],
  972. content:
  973. '{:url("statistics/addWechat")}?type=dep&index=' + obj.data.index,
  974. resize: false,
  975. area: ["80%", "80%"],
  976. });
  977. break;
  978. case "explain_count":
  979. layer.open({
  980. type: 2,
  981. title: ["签单客户", "color:#333333;background-color:#D8E6F1;"],
  982. content:
  983. '{:url("statistics/addWechat")}?type=explain_count&index=' +
  984. obj.data.index,
  985. resize: false,
  986. area: ["80%", "80%"],
  987. });
  988. break;
  989. }
  990. });
  991. $('#hight-behavior-export-list').click(function () {
  992. layer.open({
  993. type: 2,
  994. area: ['600px', '600px'],
  995. content: '{:url("statistics/exportList2",array("type"=>"highBehaviorStatisticsData"))}'
  996. });
  997. });
  998. });
  999. </script>
  1000. {/block}