customer_statistics_list.html 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221
  1. {extend name="public/layout"}
  2. {block name="body"}
  3. <link rel="stylesheet" href="__LAYUI__/layui/css/layui.css" media="all">
  4. <link rel="stylesheet" href=" /static/css/common.css">
  5. <script src="/static/js/jquery.min.js"></script>
  6. <style>
  7. body {
  8. padding-bottom: 40px;
  9. }
  10. .searchtitlebox {
  11. display: block;
  12. padding: 15px 10px;
  13. border: 1px solid #F0F0F0;
  14. background: #FCFCFC;
  15. margin-top: 5px;
  16. margin-bottom: 10px;
  17. /* position: relative; */
  18. min-width: 800px;
  19. }
  20. .searchbox {
  21. display: block;
  22. margin-top: 8px;
  23. text-align: center;
  24. }
  25. .searchbox input {
  26. display: inline-block;
  27. height: 26px;
  28. line-height: 26px;
  29. padding-left: 3px;
  30. vertical-align: middle;
  31. border: 2px solid #4479ba;
  32. }
  33. body {
  34. font-size: 12px;
  35. font-family: "宋体";
  36. }
  37. .searchbox .searchbtn {
  38. display: inline-block;
  39. float: right;
  40. border: none;
  41. width: 98px;
  42. height: 30px;
  43. color: #fff;
  44. font-size: 14px;
  45. font-weight: bold;
  46. text-align: center;
  47. background: url(__STATIC__/img/icon-sub.png) no-repeat;
  48. cursor: pointer;
  49. vertical-align: middle;
  50. }
  51. .selectbox {
  52. float: left;
  53. }
  54. .leftselect {
  55. float: left;
  56. height: 26px;
  57. line-height: 26px;
  58. }
  59. .selectbox select {
  60. float: left;
  61. height: 26px;
  62. }
  63. .searchtext {
  64. border: 1px solid #ccc;
  65. background: #fff url(__STATIC__/img/icon071402.png) no-repeat;
  66. padding: 1px 2px;
  67. height: 24px;
  68. line-height: 24px;
  69. vertical-align: middle;
  70. text-indent: 3px;
  71. margin-left: 4px;
  72. }
  73. .searchbtn1 {
  74. margin-left: 4px;
  75. cursor: pointer;
  76. color: #000;
  77. background: url(__STATIC__/img/btn_bg.gif) repeat-x;
  78. border: 1px solid #C0C0C0;
  79. padding: 0 12px;
  80. *padding: 0 6px;
  81. height: 26px;
  82. }
  83. .layui-table td,
  84. .layui-table th {
  85. font-size: 12px;
  86. }
  87. .layui-table th {
  88. font-weight: bold;
  89. }
  90. .dingjingorder {
  91. height: 25px;
  92. width: 40px;
  93. background-color: #65c001;
  94. color: #FFF;
  95. text-align: center;
  96. line-height: 25px;
  97. z-index: 100;
  98. display: block;
  99. position: absolute;
  100. top: 1px;
  101. right: 3px;
  102. border-radius: 11px;
  103. font-size: 12px;
  104. }
  105. .addvx {
  106. position: absolute;
  107. top: -5px;
  108. right: 1px;
  109. height: 14px;
  110. line-height: 14px;
  111. font-size: 16px;
  112. color: #666;
  113. font-family: "宋体";
  114. }
  115. .statebox {
  116. width: 40px;
  117. text-align: center;
  118. z-index: 100;
  119. display: block;
  120. position: absolute;
  121. font-size: 12px;
  122. top: -5px;
  123. right: 0px;
  124. border-radius: 0px;
  125. background: #4285f4;
  126. color: #efefef;
  127. height: 20px;
  128. line-height: 20px;
  129. }
  130. .layui-table-cell {
  131. overflow: initial;
  132. }
  133. #customer_detail {
  134. display: block;
  135. width: 435px;
  136. height: 100%;
  137. position: fixed;
  138. top: 0;
  139. left: 0;
  140. bottom: 0;
  141. }
  142. .rightbox {
  143. display: block;
  144. width: calc(100% - 435px);
  145. margin-left: 435px;
  146. }
  147. .unstatusbox {
  148. display: block;
  149. position: absolute;
  150. top: -5px;
  151. left: 0;
  152. width: 100%;
  153. height: 37px;
  154. background-color: #FF6600;
  155. text-align: center;
  156. color: #FFF;
  157. }
  158. .statusbox {
  159. position: absolute;
  160. top: 0px;
  161. right: 0px;
  162. color: #666;
  163. text-align: right;
  164. z-index: 100;
  165. display: block;
  166. font-size: 12px;
  167. }
  168. .layui-table-view .layui-form-checkbox {
  169. width: 16px;
  170. height: 16px;
  171. line-height: 16px;
  172. padding-right: 0;
  173. }
  174. .layui-table-view .layui-form-checkbox i {
  175. height: 16px;
  176. width: 16px;
  177. font-size: 14px;
  178. }
  179. .novisitlog {
  180. background-color: #9139db !important;
  181. color: #FFF;
  182. }
  183. .novisitlog a {
  184. color: #FFF;
  185. }
  186. .crmsearchlist {
  187. max-height: 760px;
  188. cursor: pointer;
  189. }
  190. .tablebox .layui-form.layui-border-box.layui-table-view {
  191. max-height: 760px !important;
  192. height: auto !important;
  193. }
  194. .layui-table-body {
  195. /* max-height: 670px !important; */
  196. height: auto !important;
  197. }
  198. .layui-table-view .layui-table td {
  199. cursor: pointer;
  200. overflow: hidden;
  201. }
  202. .layui-form-checked {
  203. background-color: #37AF6E;
  204. }
  205. .layui-table-view .layui-form-checked i {
  206. color: #fff;
  207. }
  208. .layui-table-cell {
  209. overflow: hidden;
  210. }
  211. .searchbox .layui-form-select {
  212. float: left;
  213. width: 130px;
  214. }
  215. .searchbox input {
  216. border: 1px solid #e6e6e6 !important;
  217. }
  218. .totalBox {
  219. width: 100%;
  220. height: 100px;
  221. border: 1px solid #f2f2f2;
  222. display: flex;
  223. align-items: center;
  224. }
  225. .totalBox>div {
  226. flex: 1;
  227. display: flex;
  228. flex-direction: column;
  229. align-items: center;
  230. justify-content: center;
  231. }
  232. .totalName {
  233. font-size: 16px;
  234. color: #999999;
  235. }
  236. .totalNum {
  237. font-size: 20px;
  238. font-weight: 600;
  239. }
  240. .totalline {
  241. flex: none !important;
  242. width: 1px !important;
  243. height: 50px !important;
  244. background-color: #f2f2f2;
  245. }
  246. .ml5 {
  247. margin-left: 5px;
  248. }
  249. .cursor {
  250. cursor: pointer;
  251. margin-bottom: 8px;
  252. position: relative;
  253. }
  254. .cursor>.layui-form-select {
  255. width: 115px;
  256. display: inline-block;
  257. }
  258. .cursor>.layui-form-select>.layui-select-title {
  259. border: none;
  260. }
  261. .cursor>.layui-form-select>.layui-select-title>input {
  262. border: none;
  263. color: #333333;
  264. font-weight: 600;
  265. }
  266. /* .layui-table-fixed-r .layui-table-body {
  267. overflow: hidden !important;
  268. } */
  269. .relative {
  270. position: relative;
  271. }
  272. .lay-setting {
  273. position: absolute;
  274. right: 10px;
  275. top: 10px;
  276. z-index: 999 !important;
  277. cursor: pointer;
  278. }
  279. .lay-mask {
  280. width: 100%;
  281. height: 100%;
  282. background-color: rgba(0, 0, 0, 0.3);
  283. position: fixed;
  284. top: 0px;
  285. left: 0px;
  286. z-index: 9999 !important;
  287. }
  288. .lay-block {
  289. width: 400px;
  290. height: 100%;
  291. background-color: #fff;
  292. position: absolute;
  293. right: 0px;
  294. top: 0px;
  295. box-sizing: border-box;
  296. padding: 10px 10px 30px 10px;
  297. overflow: auto;
  298. }
  299. .lay-title {
  300. width: 100%;
  301. height: 40px;
  302. display: flex;
  303. align-items: center;
  304. justify-content: space-between;
  305. }
  306. .lay-title>span {
  307. font-size: 16px;
  308. color: #333333;
  309. font-weight: 600;
  310. }
  311. .lay-title>i {
  312. font-weight: 600;
  313. cursor: pointer;
  314. }
  315. .layui-content {
  316. width: 100%;
  317. height: auto;
  318. }
  319. .lay-item {
  320. width: 100%;
  321. height: 50px;
  322. /* display: flex;
  323. align-items: center;
  324. justify-content: space-between; */
  325. }
  326. .lay-item>div {
  327. display: flex;
  328. align-items: center;
  329. }
  330. .lay-item>div>span {
  331. margin-left: 6px;
  332. }
  333. .sort_lis01 {
  334. float: left;
  335. }
  336. .sort_lis02 {
  337. float: right;
  338. }
  339. .sort_time {
  340. overflow: hidden;
  341. }
  342. .layui-form-switch i {
  343. top: 2px !important;
  344. }
  345. .relative {
  346. position: relative;
  347. }
  348. .selectDateBox {
  349. position: absolute;
  350. width: 330px;
  351. height: 100px;
  352. box-shadow: 0 2px 4px rgb(0 0 0 / 12%);
  353. background-color: #fff;
  354. z-index: 99999 !important;
  355. top: 45px;
  356. box-sizing: border-box;
  357. padding: 5px 8px;
  358. }
  359. .selecstDateBox {
  360. position: absolute;
  361. width: 330px;
  362. height: 100px;
  363. box-shadow: 0 2px 4px rgb(0 0 0 / 12%);
  364. background-color: #fff;
  365. z-index: 99999 !important;
  366. top: 45px;
  367. right: 0;
  368. box-sizing: border-box;
  369. padding: 5px 8px;
  370. }
  371. .date-flex,
  372. .date-flex1 {
  373. display: flex;
  374. align-items: center;
  375. }
  376. .date-box {
  377. padding: 15px 0px 10px;
  378. }
  379. .line-middle {
  380. width: 10px;
  381. height: 100%;
  382. margin: 0px 10px;
  383. }
  384. .line {
  385. width: 10px;
  386. height: 2px;
  387. background-color: #999999;
  388. }
  389. .mb0 {
  390. margin-bottom: 0px;
  391. }
  392. .layui-btn {
  393. background-color: #fff;
  394. color: #555;
  395. border: 1px solid #c9c9c9;
  396. }
  397. .layui-btn:hover {
  398. background-color: #fff;
  399. color: #555;
  400. border: 1px solid #249efb;
  401. }
  402. .layui-btn-primary,
  403. .sBtn {
  404. background-color: #249efb;
  405. color: #fff;
  406. border: 1px solid #249efb;
  407. }
  408. .layui-btn-primary:hover {
  409. background-color: #249efb;
  410. color: #fff;
  411. border: 1px solid #249efb;
  412. }
  413. .sBtn:hover {
  414. background-color: #249efb;
  415. color: #fff;
  416. border: 1px solid #249efb;
  417. }
  418. .flex-row,
  419. .row {
  420. display: flex;
  421. }
  422. .align-center {
  423. align-items: center;
  424. }
  425. .ml10 {
  426. margin-left: 10px;
  427. }
  428. .mt10 {
  429. margin-top: 10px;
  430. }
  431. .padding-tlr {
  432. padding: 15px 15px 0px;
  433. }
  434. .layui-input-block {
  435. margin-left: 0px;
  436. }
  437. .justify-between {
  438. justify-content: space-between;
  439. }
  440. .qdtj_m {
  441. padding: 0 15px;
  442. width: 100%;
  443. box-sizing: border-box;
  444. margin: 20px 0 10px;
  445. }
  446. .qdtj_ul {
  447. overflow: hidden;
  448. border: 1px solid #94d0ff;
  449. padding: 15px 0;
  450. background-color: #fbfdff;
  451. }
  452. .qdtj_ul li {
  453. float: left;
  454. position: relative;
  455. text-align: center;
  456. width: 10%;
  457. }
  458. .qdtj_1 {
  459. font-size: 20px;
  460. font-weight: 400;
  461. }
  462. .qdtj_2 {
  463. font-size: 14px;
  464. color: #888;
  465. margin-top: 5px;
  466. }
  467. .qdtj_r_x {
  468. height: 40px;
  469. width: 1px;
  470. background: #d8d8d9;
  471. position: absolute;
  472. right: 0;
  473. top: 50%;
  474. margin-top: -20px;
  475. }
  476. ::-webkit-scrollbar {
  477. width: auto;
  478. height: auto;
  479. }
  480. ::-webkit-scrollbar-thumb {
  481. border-radius: 10px;
  482. -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2);
  483. background: #DFDFDF;
  484. }
  485. ::-webkit-scrollbar-track {
  486. -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2);
  487. border-radius: 10px;
  488. background: #f5f5f5;
  489. }
  490. </style>
  491. <body class="clearfix">
  492. <iframe id="customer_detail" style="display: none;" src=""></iframe>
  493. <div class="crmbox">
  494. <div class="search-form layui-form padding-tlr" style="margin-bottom: 10px;">
  495. <!-- <div class="flex-row align-center justify-between" style="overflow: hidden;"> -->
  496. <form id="reset_form">
  497. <div class="" style="">
  498. <div class="flex-row align-center" style="float:left;">
  499. <div class="layui-input-block">
  500. <input type="text" class="layui-input" id="keyword" autocomplete="off" name="keyword"
  501. placeholder="请输入员工名称" />
  502. </div>
  503. <div id="org_slt" class="xm-select-demo wleft" style="width: 150px;margin-left: 10px;"></div>
  504. <div class="layui-input-inline layui-form ml10">
  505. <select name="customer_type" class="customer_type" id="customer_type" lay-search>
  506. <option value="">==客户种类==</option>
  507. {volist name="customer_type" id="vo"}
  508. <option value="{$vo.id}">{$vo.name}</option>
  509. {/volist}
  510. </select>
  511. </div>
  512. <div class="layui-input-inline layui-form ml10" style="display: inline-block;width:200px;">
  513. <!-- <label class="layui-form-label" style="width: 60px;">跟进时间</label> -->
  514. <div class="layui-input-inline select-date relative">
  515. <!-- 注意:这一层元素并不是必须的 -->
  516. <input type="text" class="layui-input" id="sDate" name="start_date"
  517. placeholder="开始日期 - 结束日期" autocomplete="off" />
  518. <div data-type="" class="selecstDateBox layui-hide">
  519. <div data-type="" class="date-flex1">
  520. <div data-type="today"
  521. class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs">
  522. 今日
  523. </div>
  524. <div data-type="yesterday"
  525. class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs">
  526. 昨日
  527. </div>
  528. <div data-type="week"
  529. class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs">
  530. 本周
  531. </div>
  532. <div data-type="lastWeek"
  533. class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs">
  534. 上周
  535. </div>
  536. <div data-type="month"
  537. class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs">
  538. 本月
  539. </div>
  540. <div data-type="lastMonth"
  541. class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs">
  542. 上月
  543. </div>
  544. <div data-type="all"
  545. class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs">
  546. 累计
  547. </div>
  548. </div>
  549. <div data-type="" class="date-box">
  550. <input data-type="" type="text" id="select_sDate" placeholder="选择开始时间 - 结束时间"
  551. readonly autocomplete="off" class="layui-input" />
  552. </div>
  553. </div>
  554. </div>
  555. </div>
  556. <div class="layui-input-inline layui-form ml10">
  557. <select name="source_id" class="type_id" id="source_id" lay-search>
  558. <option value="">请选择来源</option>
  559. {volist name="source" id="i"}
  560. <option value="{$i.id}">{$i.source}</option>
  561. {/volist}
  562. </select>
  563. </div>
  564. </div>
  565. <div style="float:right;">
  566. <button class="layui-btn sBtn ml10 submitbtn" id="searchbtn" type="button"
  567. lay-filter="table-search">
  568. 筛选
  569. </button>
  570. <button type="reset" class="layui-btn sBtn ml10" id="resetbtn">重置</button>
  571. </div>
  572. </div>
  573. </form>
  574. <div style="clear: both;"></div>
  575. </div>
  576. <div class="crmsearchlist relative">
  577. <i class="layui-icon layui-icon-set-fill lay-setting"></i>
  578. <table lay-filter="crmsearchlist" id="crmsearchlist"></table>
  579. </div>
  580. </div>
  581. <!-- -->
  582. <div class="lay-mask layui-hide">
  583. <div class="lay-block">
  584. <div class="lay-title">
  585. <span>表格显示设置</span>
  586. <i class="layui-icon layui-icon-close"></i>
  587. </div>
  588. <div class="layui-content layui-form">
  589. </div>
  590. </div>
  591. </div>
  592. </body>
  593. <script src="__LAYUI__/layui/layui.js"></script>
  594. <script type="text/javascript" src="__STATIC__/js/Sortable.js"></script>
  595. <script src="__STATIC__/layui/layui/lay/modules/xm-select.js" type="text/javascript" charset="utf-8"></script>
  596. {/block}{block name="js"}
  597. <script type="text/html" id="crmname">
  598. {{d.name?d.name:'未知'}}
  599. {{# if(d.jiaoding_time){ }}
  600. <span class="dingjingorder">定金</span>
  601. {{# }else{ }}
  602. {{# } }}
  603. </script>
  604. <script type="text/javascript">
  605. var reload = null, resizefun = null;
  606. layui.config({
  607. base: '__LAYUI__/',
  608. urlbase: '/sys'
  609. }).extend({
  610. index: 'lib/index' //主入口模块
  611. }).use(['table', 'laydate'], function () {
  612. var table = layui.table,
  613. laydate = layui.laydate,
  614. $ = layui.$;
  615. form = layui.form,
  616. fType = 1;
  617. var field = {};
  618. var org_sltdata = [
  619. {volist name="org" id="vo"}
  620. {name: '{$vo.name}', value: {$vo.id}},
  621. {/volist}
  622. ];
  623. var org_slt = xmSelect.render({
  624. el: '#org_slt',
  625. data: org_sltdata,
  626. tips: '请选择部门'
  627. })
  628. $('#searchbtn').click(function () {
  629. var keyword = $("#keyword").val();
  630. var org_id = org_slt.getValue('value');
  631. let sDate = $("#sDate").val();
  632. var source_id = $("#source_id").val();
  633. var customer_type = $("#customer_type").val();
  634. let option = {
  635. where: {
  636. keyword: keyword,
  637. org_id: org_id.join(','),
  638. start_date: sDate,
  639. source_id: source_id,
  640. customer_type: customer_type
  641. },
  642. page: {
  643. curr: 1,
  644. },
  645. };
  646. //执行重载
  647. table.reload("crmsearchlist", option);
  648. });
  649. //重置
  650. $("#resetbtn").click(function () {
  651. $("#keyword").val("");
  652. $("#sDate").val("");
  653. $("#org_id").val("");
  654. $("#source_id").val("");
  655. $('#reset_form')[0].reset();
  656. $("#customer_type").val('')
  657. org_slt.setValue([]);
  658. layui.form.render();
  659. let option = {
  660. where: { keyword: "", start_date: "", org_id: "", source_id:"", customer_type: ""},
  661. page: {
  662. curr: 1,
  663. },
  664. };
  665. table.reload("crmsearchlist", option);
  666. });
  667. $("#addWechatTime").click(function () {
  668. $(".selectDateBox").toggleClass("layui-hide");
  669. $(".selecstDateBox").addClass("layui-hide");
  670. });
  671. $("#sDate").click(function () {
  672. $(".selecstDateBox").toggleClass("layui-hide");
  673. $(".selectDateBox").addClass("layui-hide");
  674. });
  675. laydate.render({
  676. elem: "#select_date",
  677. type: "date",
  678. range: true,
  679. format: "yyyy/MM/dd",
  680. trigger: "click", //呼出事件改成click
  681. done: function (value, date, endDate) {
  682. $(".selectDateBox").addClass("layui-hide");
  683. $("#addWechatTime").val(value);
  684. },
  685. });
  686. laydate.render({
  687. elem: "#select_sDate", //指定元素
  688. type: "date",
  689. format: "yyyy/MM/dd",
  690. range: true,
  691. trigger: "click", //呼出事件改成click
  692. done: function (value, date, endDate) {
  693. $(".selecstDateBox").addClass("layui-hide");
  694. $("#sDate").val(value);
  695. },
  696. });
  697. var dateObj = {};
  698. setDate();
  699. function setDate() {
  700. let date = new Date();
  701. let year = date.getFullYear();
  702. let month = date.getMonth() + 1;
  703. let day = date.getDate();
  704. let lastDate = new Date(new Date().getTime() - 1 * 24 * 60 * 60 * 1000);
  705. let lastYear = lastDate.getFullYear();
  706. let lastMonth = lastDate.getMonth() + 1;
  707. let lastDay = lastDate.getDate();
  708. let weekObj = getMondayAndSunday();
  709. let monthObj = getMonthFirstDayAndLastDay();
  710. dateObj = {
  711. today: `${year}/${month}/${day}`,
  712. yesterday: `${lastYear}/${lastMonth}/${lastDay}`,
  713. ...weekObj,
  714. ...monthObj,
  715. };
  716. }
  717. $(".date-flex div").click(function () {
  718. let type = $(this).prop("dataset").type;
  719. if (type == "today") {
  720. $("#select_date").val(`${dateObj.today} - ${dateObj.today}`);
  721. $("#addWechatTime").val(`${dateObj.today} - ${dateObj.today}`);
  722. } else if (type == "yesterday") {
  723. $("#select_date").val(`${dateObj.yesterday} - ${dateObj.yesterday}`);
  724. $("#addWechatTime").val(`${dateObj.yesterday} - ${dateObj.yesterday}`);
  725. } else if (type == "week") {
  726. $("#select_date").val(
  727. `${dateObj.thisWeekMonday} - ${dateObj.thisWeekSunday}`
  728. );
  729. $("#addWechatTime").val(
  730. `${dateObj.thisWeekMonday} - ${dateObj.thisWeekSunday}`
  731. );
  732. } else if (type == "lastWeek") {
  733. $("#select_date").val(
  734. `${dateObj.lastWeekMonday} - ${dateObj.lastWeekSunday}`
  735. );
  736. $("#addWechatTime").val(
  737. `${dateObj.lastWeekMonday} - ${dateObj.lastWeekSunday}`
  738. );
  739. } else if (type == "month") {
  740. $("#select_date").val(
  741. `${dateObj.thisMonthFirstDay} - ${dateObj.thisMonthLastDay}`
  742. );
  743. $("#addWechatTime").val(
  744. `${dateObj.thisMonthFirstDay} - ${dateObj.thisMonthLastDay}`
  745. );
  746. } else if (type == "lastMonth") {
  747. $("#select_date").val(
  748. `${dateObj.lastMonthFirstDay} - ${dateObj.lastMonthLastDay}`
  749. );
  750. $("#addWechatTime").val(
  751. `${dateObj.lastMonthFirstDay} - ${dateObj.lastMonthLastDay}`
  752. );
  753. } else {
  754. $("#select_date").val("");
  755. $("#sDate").val("");
  756. $("#addWechatTime").val("");
  757. }
  758. $(".selectDateBox").addClass("layui-hide");
  759. });
  760. $(".date-flex1 div").click(function () {
  761. let type = $(this).prop("dataset").type;
  762. if (type == "today") {
  763. itmesss = dateToYYYYMMDD(dateObj.today);
  764. itmesss2 = dateToYYYYMMDD(dateObj.today);
  765. $("#select_sDate").val(itmesss+' - '+itmesss2);
  766. $("#sDate").val(itmesss+' - '+itmesss2);
  767. } else if (type == "yesterday") {
  768. itmesss = dateToYYYYMMDD(dateObj.yesterday);
  769. itmesss2 = dateToYYYYMMDD(dateObj.yesterday);
  770. $("#select_sDate").val(itmesss+' - '+itmesss2);
  771. $("#sDate").val(itmesss+' - '+itmesss2);
  772. } else if (type == "week") {
  773. $("#select_sDate").val(
  774. `${dateObj.thisWeekMonday} - ${dateObj.thisWeekSunday}`
  775. );
  776. $("#sDate").val(
  777. `${dateObj.thisWeekMonday} - ${dateObj.thisWeekSunday}`
  778. );
  779. } else if (type == "lastWeek") {
  780. $("#select_sDate").val(
  781. `${dateObj.lastWeekMonday} - ${dateObj.lastWeekSunday}`
  782. );
  783. $("#sDate").val(
  784. `${dateObj.lastWeekMonday} - ${dateObj.lastWeekSunday}`
  785. );
  786. } else if (type == "month") {
  787. $("#select_sDate").val(
  788. `${dateObj.thisMonthFirstDay} - ${dateObj.thisMonthLastDay}`
  789. );
  790. $("#sDate").val(
  791. `${dateObj.thisMonthFirstDay} - ${dateObj.thisMonthLastDay}`
  792. );
  793. } else if (type == "lastMonth") {
  794. $("#select_sDate").val(
  795. `${dateObj.lastMonthFirstDay} - ${dateObj.lastMonthLastDay}`
  796. );
  797. $("#sDate").val(
  798. `${dateObj.lastMonthFirstDay} - ${dateObj.lastMonthLastDay}`
  799. );
  800. } else {
  801. $("#select_sDate").val("");
  802. $("#sDate").val("");
  803. }
  804. $(".selecstDateBox").addClass("layui-hide");
  805. });
  806. function getMondayAndSunday() {
  807. var today = new Date();
  808. //构建当前日期,格式:2022-08-22 00:00:00
  809. var year = today.getFullYear(); //本年
  810. var month = today.getMonth() + 1; //本月
  811. var day = today.getDate(); //本日
  812. var newDate = new Date(year + "/" + month + "/" + day + " 00:00:00"); //年月日拼接
  813. var nowTime = newDate.getTime(); //当前的时间戳
  814. var weekDay = newDate.getDay(); //当前星期 0.1.2.3.4.5.6 【0 = 周日】
  815. var oneDayTime = 24 * 60 * 60 * 1000; //一天的总ms
  816. // 当前星期减去天数,如今天为周五,则本周一为周五的时间戳减去4天的时间戳。但周日特殊,周一至周六是周几的到的weekDay就是几,但是周日的到的为0,需特殊处理
  817. var thisWeekMondayTime = (1 - weekDay) * oneDayTime + nowTime; //本周一的时间戳
  818. if (weekDay == 0) {
  819. // weekDay = 0 为周日,此时本周一时间为周日减去6天的时间
  820. thisWeekMondayTime = nowTime - 6 * oneDayTime;
  821. }
  822. var thisWeekSundayTime = thisWeekMondayTime + 6 * 24 * 60 * 60 * 1000; // 本周日
  823. var lastWeekMondayTime = thisWeekMondayTime - 7 * oneDayTime; // 上周一
  824. var lastWeekSundayTime = thisWeekMondayTime - oneDayTime; // 上周日
  825. var res = {
  826. thisWeekMonday: dateToYYYYMMDD(thisWeekMondayTime),
  827. thisWeekSunday: dateToYYYYMMDD(thisWeekSundayTime),
  828. lastWeekMonday: dateToYYYYMMDD(lastWeekMondayTime),
  829. lastWeekSunday: dateToYYYYMMDD(lastWeekSundayTime),
  830. };
  831. return res;
  832. }
  833. function getMonthFirstDayAndLastDay() {
  834. var date = new Date();
  835. // 值得注意的是,如果day取值为0,意味着取的是date时间的上一个月的最后一天,简单理解:date当前月的第一天,再减去一天
  836. var thisMonthFirstDay = date.setDate(1); // 本月第一天
  837. var thisMonthLastDay = new Date(
  838. date.getFullYear(),
  839. date.getMonth() + 1,
  840. 0
  841. ); // 本月最后一天
  842. var lastMonthFirstDay = new Date(
  843. date.getFullYear(),
  844. date.getMonth() - 1,
  845. 1
  846. ); // 上月第一天
  847. var lastMonthLastDay = date.setDate(0); // 上月最后一天
  848. // var day = new Date(date.getFullYear(), date.getMonth(), 0).getDate()
  849. // var lastMonthLastDay = new Date(date.getFullYear(), date.getMonth() - 1, day) // 上月最后一天
  850. var res = {
  851. thisMonthFirstDay: dateToYYYYMMDD(thisMonthFirstDay),
  852. thisMonthLastDay: dateToYYYYMMDD(thisMonthLastDay),
  853. lastMonthFirstDay: dateToYYYYMMDD(lastMonthFirstDay),
  854. lastMonthLastDay: dateToYYYYMMDD(lastMonthLastDay),
  855. };
  856. return res;
  857. }
  858. function dateToYYYYMMDD(date) {
  859. var time = new Date(date);
  860. var y = time.getFullYear();
  861. var m = time.getMonth() + 1;
  862. m = m > 9 ? m : "0" + m;
  863. var d = time.getDate();
  864. d = d > 9 ? d : "0" + d;
  865. return y + "/" + m + "/" + d;
  866. }
  867. ajaxlist();
  868. function ajaxlist() {
  869. $.ajax({
  870. type: "post",
  871. url: '{:url("empcrm/poolFieldsList")}',
  872. data: {
  873. type: 4
  874. },
  875. success: function (res) {
  876. if(res.code == 403){
  877. $(".exitbtn").trigger("click");
  878. }
  879. data = res.data;
  880. tableData = data;
  881. var cols = [[]];
  882. $.each(data, function (key, val) {
  883. if (val['show'] == 1) {
  884. cols[0].push({ field: key, title: val['name'], minWidth: val['width'], align: 'center', show: val['show'] })
  885. }
  886. })
  887. cols[0].push({ title: '', width: 30, align: 'center', fixed: "right" })
  888. let url = '{:url("ManagerEmp/customer_statistics_list")}';
  889. var keyword = $("#keyword").val();
  890. var org_id = $("#org_id").val();
  891. let sDate = $("#sDate").val();
  892. table.render({
  893. elem: '#crmsearchlist',
  894. url: url,
  895. cols: cols,
  896. where: {
  897. keyword: keyword,
  898. org_id: org_id,
  899. start_date: sDate
  900. },
  901. page: true,
  902. limits: [17],
  903. limit: 17, //每页默认显示的数量,
  904. height: 'full-120',
  905. text: '对不起,加载出现异常!',
  906. done: function (res, curr, count) {
  907. // res.data.forEach(function (item, index) {
  908. // if (item.fresh > 0) {
  909. // $('.layui-table').find('tr[data-index="' + index + '"]').addClass('novisitlog');
  910. // }
  911. // });
  912. }
  913. });
  914. }
  915. });
  916. }
  917. $('.lay-setting').click(function () {
  918. let arr = [];
  919. $.each(data, function (key, val) {
  920. arr.push({ ...val, field: key });
  921. })
  922. renderTableSwitch(arr, 4);
  923. $('.lay-mask').removeClass('layui-hide');
  924. })
  925. $('.layui-icon-close').click(function () {
  926. $('.lay-mask').addClass('layui-hide');
  927. })
  928. $('.lay-block').click(function (e) {
  929. e.stopPropagation();
  930. })
  931. $('.lay-mask').click(function () {
  932. $(this).addClass('layui-hide');
  933. })
  934. function renderTableSwitch(data, types) {
  935. let htmls = data.map((item, index) => {
  936. return `<div class="lay-item sort_time">
  937. <div class="sort_lis01">
  938. <img style="display:${types == 5 ? 'none' : 'block'}" src="__STATIC__/img/sorticon.png" width="16px" alt="">
  939. <span>${item.name}</span>
  940. </div>
  941. <div class="sort_lis02">
  942. <input type="checkbox" lay-filter="tableSort" ${item.show == 1 ? 'checked' : ''} name="${item.field}" lay-skin="switch">
  943. </div>
  944. </div>`;
  945. }).join('');
  946. $('.layui-content').html(htmls);
  947. setTimeout(() => {
  948. form.render();
  949. var check = '';
  950. var names = '';
  951. form.on('switch(tableSort)', function (data) {
  952. getdatalist(types);
  953. })
  954. new Sortable($('.layui-content')[0], {
  955. handle: '.lay-item', // handle's class
  956. animation: 150,
  957. // 结束拖拽
  958. onEnd: function (/**Event*/evt) {
  959. getdatalist(types, 0);
  960. },
  961. });
  962. }, 300)
  963. }
  964. function getdatalist(types) {
  965. let getCheckedField = $('.sort_time');
  966. let itemArr = [];
  967. let check;
  968. getCheckedField.each(function (i) {
  969. let ischeck = $(this).find('input').prop("checked");
  970. if (ischeck) {
  971. check = 1
  972. } else {
  973. check = 0
  974. }
  975. let names = $(this).find('input').attr('name');
  976. itemArr.push({ name: names, show: check, sort: i + 1 });
  977. })
  978. var datajson = JSON.stringify(itemArr);
  979. $.ajax({
  980. type: "post",
  981. url: '{:url("empcrm/poolFieldsSet")}',
  982. data: {
  983. type: types,
  984. content: datajson
  985. },
  986. success: function (res) {
  987. if(res.code == 403){
  988. $(".exitbtn").trigger("click");
  989. }
  990. ajaxlist()
  991. }
  992. })
  993. }
  994. resizefun = function () {
  995. table.resize('crmsearchlist');
  996. };
  997. reload = function () {
  998. table.reload('crmsearchlist', { where: field }, true);
  999. };
  1000. var flag = true;
  1001. table.on('tool(crmsearchlist)', function (result) {
  1002. let event = result.event;
  1003. let row = result.data;
  1004. flag = true;
  1005. if (event === "unstatus") {
  1006. flag = false;
  1007. if (confirm('是否确认为有效线索?')) {
  1008. $.ajax({
  1009. url: '{:url("empcrm/validation")}'
  1010. , data: {
  1011. customer_id: row.id,// (客户id)
  1012. state: '未到访',
  1013. }
  1014. , type: 'post'
  1015. , success: function (res) {
  1016. if (res.code == 0) {
  1017. $(result.tr).children('td').children('div').children('div').children('.redconfirm')[0].checked = true;
  1018. $(result.tr).children('td').children('div').children('div').children('.redconfirm')[0].disabled = true;
  1019. if (row.visit_log_count == 0) {
  1020. $(result.tr).children('td[data-field="time_status"]').children('div').html('<span style="color: #cccccc;">-</span>');
  1021. } else {
  1022. $(result.tr).children('td[data-field="time_status"]').children('div').html('<span' + row.time_status + '</span>');
  1023. }
  1024. row.state = "未到访";
  1025. alert('成功:更改成功,线索为有效状态!!!');
  1026. }else if(res.code == 403){
  1027. $(".exitbtn").trigger("click");
  1028. } else {
  1029. alert(res.msg)
  1030. }
  1031. }
  1032. });
  1033. } else {
  1034. $(result.tr).children('td').children('div').children('div').children('.redconfirm')[0].checked = false;
  1035. $(result.tr).children('td').children('div').children('div').children('.redconfirm')[0].disabled = false;
  1036. $(result.tr).children('td').children('div').children('div').children('.layui-unselect').removeClass('layui-form-checked');
  1037. }
  1038. return false;
  1039. } else if (event === "edit") {
  1040. flag = false;
  1041. window.parent.editcrmsg(result.data.id)
  1042. return false;
  1043. } else if (event === "editstate") {
  1044. flag = false;
  1045. window.parent.statemsg(result.data.id, 'list.html');
  1046. return false;
  1047. } else {
  1048. flag = true;
  1049. }
  1050. flag = true;
  1051. })
  1052. // $('.crmsearchlist').on('click', 'td', function (e) {
  1053. // var _event = $(this).find('[lay-event]').attr('lay-event');
  1054. // var _obj = table.cache.crmsearchlist[parseInt($(this).parent('tr').attr('data-index'))];
  1055. // switch (_event) {
  1056. // case 'unstatus':
  1057. // break;
  1058. // case 'edit':
  1059. // break;
  1060. // case 'editstate':
  1061. // break;
  1062. // default:
  1063. // flag = true;
  1064. // $('#customer_detail')[0].src = "/empcrm/empcrm/addlog.html?cid=" + _obj.id;
  1065. // $('.crmbox').addClass('rightbox');
  1066. // $('#customer_detail').show();
  1067. // resizefun();
  1068. // }
  1069. // return false; //阻止事件冒泡
  1070. // })
  1071. // table.on('row(crmsearchlist)', function (obj) {
  1072. // var data = obj.data;
  1073. // if (flag) {
  1074. // $('#customer_detail')[0].src = "/empcrm/empcrm/addlog.html?cid=" + data.id;
  1075. // $('.crmbox').addClass('rightbox');
  1076. // $('#customer_detail').show();
  1077. // for (let i = 0; i < $('.crmsearchlist .layui-table-view .layui-table-box .layui-table tr').length; i++) {
  1078. // $($('.crmsearchlist .layui-table-view .layui-table-box .layui-table tr')[i]).removeClass('onclickbg');
  1079. // }
  1080. // $(obj.tr).addClass('onclickbg');
  1081. // resizefun();
  1082. // }
  1083. // });
  1084. $('.searchbtn').click(function () {
  1085. window.parent.addcrmmsg('list.html')
  1086. })
  1087. })
  1088. function removealog(params) {
  1089. $('#customer_detail').hide();
  1090. $('.crmbox').removeClass('rightbox');
  1091. }
  1092. </script>
  1093. {/block}