1
0

module_report.html 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768
  1. {extend name="public/layout" /} {block name="title"}客户报备设置{/block} {block name="body"}
  2. <style type="text/css">
  3. html,
  4. body {
  5. display: block;
  6. width: 100%;
  7. height: 100%;
  8. }
  9. .lay-main {
  10. background-color: #EEEEEE;
  11. width: 100%;
  12. height: 100%;
  13. }
  14. .flex {
  15. display: flex;
  16. }
  17. .lay-leftBox {
  18. width: 360px;
  19. height: 97%;
  20. background-color: #fff;
  21. margin: 10px 13px 10px;
  22. box-sizing: border-box;
  23. padding: 10px;
  24. }
  25. .lay-rightBox {
  26. width: calc(100% - 400px);
  27. height: 97%;
  28. background-color: #fff;
  29. margin-top: 10px;
  30. margin-left: 0px;
  31. box-sizing: border-box;
  32. padding: 10px;
  33. overflow-y: auto;
  34. }
  35. .lay-leftTips {
  36. width: 100%;
  37. height: 18px;
  38. line-height: 18px;
  39. border-left: 5px solid #249EFB;
  40. box-sizing: border-box;
  41. padding-left: 6px;
  42. }
  43. .lay-rightTips {
  44. width: 100%;
  45. height: 20px;
  46. display: flex;
  47. align-items: center;
  48. }
  49. .labelIcon {
  50. width: 5px;
  51. height: 18px;
  52. border-radius: 2px;
  53. background-color: #249EFB;
  54. }
  55. .valid {
  56. color: #249EFB;
  57. font-weight: 700;
  58. }
  59. .ml6 {
  60. margin-left: 6px;
  61. }
  62. .layui-border-blue,
  63. .layui-border-blue:hover {
  64. color: #249EFB;
  65. border-color: #249EFB;
  66. }
  67. .visitlistBox {
  68. width: 100%;
  69. padding: 10px;
  70. display: flex;
  71. flex-wrap: wrap;
  72. }
  73. .visitItemBox {
  74. flex: 1;
  75. }
  76. .layui-border-black {
  77. margin: 0px 5px 6px !important;
  78. position: relative;
  79. }
  80. .lay-close {
  81. position: absolute;
  82. top: -15px;
  83. right: -10px;
  84. z-index: 99 !important;
  85. }
  86. .fieldBox {
  87. width: 100%;
  88. display: flex;
  89. box-sizing: border-box;
  90. padding: 10px 0px;
  91. }
  92. .fieldLeftBox {
  93. width: 60%;
  94. box-sizing: border-box;
  95. }
  96. .fieldRightBox {
  97. flex: 1;
  98. margin-left: 10px;
  99. box-sizing: border-box;
  100. }
  101. .fieldTitle {
  102. font-size: 13px;
  103. color: #333333;
  104. font-weight: 600;
  105. line-height: 25px;
  106. }
  107. .fieldViewBox {
  108. border: 1px solid #EEEEEE;
  109. padding: 5px;
  110. border-radius: 4px;
  111. box-sizing: border-box;
  112. height: 550px;
  113. overflow: auto;
  114. }
  115. /*里面的代码可以根据自己需求去进行更改*/
  116. /* 设置滚动条的样式 */
  117. .fieldViewBox::-webkit-scrollbar {
  118. width: 4px;
  119. }
  120. /* 滚动槽 */
  121. .fieldViewBox::-webkit-scrollbar-track {
  122. -webkit-box-shadow: inset006pxrgba(0, 0, 0, 0.3);
  123. border-radius: 0px;
  124. }
  125. /* 滚动条滑块 */
  126. .fieldViewBox::-webkit-scrollbar-thumb {
  127. border-radius: 10px;
  128. background: #cccccc;
  129. -webkit-box-shadow: inset006pxrgba(0, 0, 0, 0.5);
  130. }
  131. .searchBox {
  132. width: 100%;
  133. height: 40px;
  134. border: 1px solid #EEEEEE;
  135. border-radius: 4px;
  136. box-sizing: border-box;
  137. padding: 0px 10px;
  138. display: flex;
  139. align-items: center;
  140. }
  141. .searchBox>input {
  142. flex: 1;
  143. height: 100%;
  144. margin-left: 10px;
  145. outline: none;
  146. border: none;
  147. }
  148. .selectFieldBox {
  149. width: 100%;
  150. height: auto;
  151. overflow: hidden;
  152. box-sizing: border-box;
  153. padding: 10px 0px 10px;
  154. display: flex;
  155. flex-wrap: wrap;
  156. }
  157. .layui-icon-ok:before {
  158. font-size: 12px !important;
  159. }
  160. .layui-form-checkbox {
  161. margin-bottom: 5px;
  162. }
  163. .sortItemBox {
  164. width: 100%;
  165. height: 40px;
  166. display: flex;
  167. align-items: center;
  168. justify-content: space-between;
  169. background-color: #fff;
  170. }
  171. .sortLeft>img {
  172. width: 16px;
  173. }
  174. .sortRight>img {
  175. width: 16px;
  176. }
  177. .moveElement {
  178. cursor: move;
  179. }
  180. .fixed-btn {
  181. width: 100%;
  182. box-sizing: border-box;
  183. padding: 10px 10px;
  184. display: flex;
  185. justify-content: flex-end;
  186. border-top: 1px solid #cccccc;
  187. margin-top: 120px;
  188. }
  189. .fieldItem {
  190. width: 50%;
  191. }
  192. .checkedDel {
  193. cursor: pointer;
  194. }
  195. .layui-icon-search {
  196. cursor: pointer;
  197. }
  198. .allCheckedField {
  199. padding-top: 10px;
  200. }
  201. .lay-leftcontent {
  202. width: 100%;
  203. height: calc(100% - 20px);
  204. box-sizing: border-box;
  205. padding: 15px 0px;
  206. }
  207. .layaddtitle {
  208. width: 100%;
  209. height: 40px;
  210. background-color: #72C4FF;
  211. color: #fff;
  212. text-align: center;
  213. line-height: 40px;
  214. }
  215. .layadditemcontent {
  216. width: 100%;
  217. height: calc(100% - 20px);
  218. overflow-y: auto;
  219. box-sizing: border-box;
  220. padding: 0px 10px;
  221. }
  222. /*里面的代码可以根据自己需求去进行更改*/
  223. /* 设置滚动条的样式 */
  224. .layadditemcontent::-webkit-scrollbar {
  225. width: 2px;
  226. }
  227. /* 滚动槽 */
  228. .layadditemcontent::-webkit-scrollbar-track {
  229. -webkit-box-shadow: inset006pxrgba(0, 0, 0, 0.3);
  230. border-radius: 0px;
  231. }
  232. /* 滚动条滑块 */
  233. .layadditemcontent::-webkit-scrollbar-thumb {
  234. border-radius: 1px;
  235. background: #cccccc;
  236. -webkit-box-shadow: inset006pxrgba(0, 0, 0, 0.5);
  237. }
  238. .layinputtext {
  239. width: 100%;
  240. height: 40px;
  241. border-bottom: 1px solid #DEEAF1;
  242. display: flex;
  243. }
  244. .textlabel {
  245. width: 120px;
  246. height: 100%;
  247. line-height: 40px;
  248. white-space: nowrap;
  249. text-overflow: ellipsis;
  250. overflow: hidden;
  251. font-size: 13px;
  252. }
  253. .textinput {
  254. width: calc(100% - 120px);
  255. height: 100%;
  256. line-height: 40px;
  257. font-size: 13px;
  258. }
  259. .radiocontent {
  260. width: calc(100% - 150px);
  261. height: 100%;
  262. display: flex;
  263. font-size: 13px;
  264. }
  265. .radiocontent>div {
  266. flex: 1;
  267. display: flex;
  268. justify-content: flex-start;
  269. align-items: center;
  270. font-size: 13px;
  271. white-space: nowrap;
  272. }
  273. .gradecontent {
  274. width: calc(100% - 150px);
  275. height: 100%;
  276. display: flex;
  277. align-items: center;
  278. font-size: 13px;
  279. }
  280. .gradecontent>span {
  281. flex: none;
  282. display: inline-block;
  283. padding: 2px 8px;
  284. height: 18px;
  285. border: 1px solid #9DB6CF;
  286. font-size: 13px;
  287. margin-right: 5px;
  288. font-size: 13px;
  289. }
  290. .selectContent {
  291. width: calc(100% - 150px);
  292. height: 100%;
  293. display: flex;
  294. align-items: center;
  295. justify-content: space-between;
  296. font-size: 13px;
  297. }
  298. .selectContent>img {
  299. width: 8px;
  300. }
  301. .dateContent {
  302. width: calc(100% - 150px);
  303. height: 100%;
  304. display: flex;
  305. align-items: center;
  306. justify-content: space-between;
  307. font-size: 13px;
  308. }
  309. .dateContent>img {
  310. width: 14px;
  311. }
  312. .lay-default {
  313. width: 100%;
  314. display: flex;
  315. align-items: center;
  316. justify-content: space-between;
  317. }
  318. .layui-form-checked[lay-skin=primary] i {
  319. border-color: #249EFB;
  320. background-color: #249EFB;
  321. }
  322. </style>
  323. <body>
  324. <div class="lay-main flex">
  325. <div class="lay-leftBox">
  326. <div class="lay-leftTips">手机端示例</div>
  327. <div class="lay-leftcontent">
  328. <div class="layaddtitle">客户报备</div>
  329. <div class="layadditemcontent">
  330. <!-- <img src="__STATIC__/img/baobei.jpg" width="100%" alt=""> -->
  331. </div>
  332. </div>
  333. </div>
  334. <div class="lay-rightBox">
  335. <form class="layui-form">
  336. <div class="lay-rightTips">
  337. <div class="labelIcon"></div>
  338. <span class="ml6">跟进字段设置</span>
  339. </div>
  340. <div class="fieldBox">
  341. <div class="fieldLeftBox">
  342. <div class="fieldTitle" id="visitAllField"></div>
  343. <div class="fieldViewBox">
  344. <div class="searchBox">
  345. <i class="layui-icon layui-icon-search"></i>
  346. <input type="text" id="allFieldInput" autocomplete="off">
  347. </div>
  348. <div class="allCheckedField">
  349. <input lay-filter="checkedAll" name="all" title="全选" type="checkbox" lay-skin="primary">
  350. </div>
  351. <div class="selectFieldBox">
  352. </div>
  353. </div>
  354. </div>
  355. <div class="fieldRightBox">
  356. <div class="fieldTitle" id="checkedFieldEl"></div>
  357. <div class="fieldViewBox" id="scrollTargetEl">
  358. <div class="searchBox">
  359. <i class="layui-icon layui-icon-search"></i>
  360. <input type="text" id="checkedSearchEl" autocomplete="off">
  361. </div>
  362. <div class="checkedFieldBox">
  363. </div>
  364. </div>
  365. </div>
  366. </div>
  367. <div class="lay-default">
  368. <div class="layui-btn layui-btn-primary" id="recoveryDefault">恢复默认</div>
  369. <div>
  370. <div class="layui-btn layui-btn-primary">取消</div>
  371. <div class="layui-btn layui-btn-normal" lay-submit lay-filter="layuiadmin-report-form-submit">确认</div>
  372. </div>
  373. </div>
  374. </form>
  375. </div>
  376. </div>
  377. </body>
  378. {/block} {block name="js"}
  379. <script type="text/javascript" src="__STATIC__/js/Sortable.js"></script>
  380. <script>
  381. layui.config({
  382. base: '__LAYUI__/' //静态资源所在路径
  383. ,
  384. urlbase: '/sys'
  385. }).extend({
  386. index: 'lib/index' //主入口模块
  387. }).use(['index', 'table', 'layedit', 'element', 'upload'], function () {
  388. var $ = layui.$,
  389. table = layui.table,
  390. element = layui.element,
  391. upload = layui.upload,
  392. form = layui.form,
  393. visitFieldAll = [],
  394. checkedArr = [],
  395. defaultArr = [];
  396. form.render();
  397. getVisitFiled();
  398. function getVisitFiled() {
  399. $.ajax({
  400. type: "get",
  401. url: "{:url('customerSetting/module_report')}",
  402. data: {},
  403. dataType: 'json',
  404. success: function (res) {
  405. if (res.code == 0) {
  406. visitFieldAll = res.all;
  407. checkedArr = res.checked;
  408. defaultArr = res.default;
  409. renderVisitFieldHtmls(visitFieldAll);
  410. renderCheckedFieldHtmls(checkedArr);
  411. setExampleHtml(checkedArr);
  412. }
  413. }
  414. })
  415. }
  416. function setExampleHtml(dataArr) {
  417. let htmls = dataArr.map(v => {
  418. if (v.type == 1) {
  419. return `<div class="layinputtext">
  420. <div class="textlabel">${v.name}</div>
  421. <div class="textinput">请输入</div>
  422. </div>`;
  423. } else if (v.type == 2) {
  424. return `<div class="layinputtext">
  425. <div class="textlabel">${v.name}</div>
  426. <div class="textinput">请输入</div>
  427. </div>`;
  428. } else if (v.keyname == 'level') {
  429. return `<div class="layinputtext">
  430. <div class="textlabel">${v.name}</div>
  431. <div class="gradecontent">
  432. ${v.select.map(o => {
  433. return `<span>${o.name}类</span>`;
  434. }).join('')}
  435. </div>
  436. </div>`;
  437. } else if (v.type == 3 && v.select.length == 2) {
  438. return `<div class="layinputtext">
  439. <div class="textlabel">${v.name}</div>
  440. <div class="radiocontent">
  441. ${v.select.map(o => {
  442. return `<div>
  443. <img src="https://o.nczyzs.com/xcx/unselected.png" width="15px" alt="">
  444. <span style="margin-left: 5px;">${o.name}</span>
  445. </div>`;
  446. }).join('')}
  447. </div>
  448. </div>`;
  449. } else if (v.type == 3 && v.select.length > 2 && v.keyname != 'level') {
  450. return `<div class="layinputtext">
  451. <div class="textlabel">${v.name}</div>
  452. <div class="selectContent">
  453. <span>请选择</span>
  454. <img src="__STATIC__/img/cjtimg.png" alt="">
  455. </div>
  456. </div>`;
  457. } else if (v.type == 4) {
  458. return `<div class="layinputtext">
  459. <div class="textlabel">${v.name}</div>
  460. <div class="selectContent">
  461. <span>请选择</span>
  462. <img src="__STATIC__/img/cjtimg.png" alt="">
  463. </div>
  464. </div>`;
  465. } else if (v.type == 5) {
  466. return `<div class="layinputtext">
  467. <div class="textlabel">${v.name}</div>
  468. <div class="dateContent">
  469. <span>请选择</span>
  470. <img src="__STATIC__/img/rili.png" alt="">
  471. </div>
  472. </div>`;
  473. } else if (v.type == 6) {
  474. return `<div class="layinputtext">
  475. <div class="textlabel">${v.name}</div>
  476. <div class="dateContent">
  477. <span></span>
  478. <img src="__STATIC__/img/addimg.png" alt="">
  479. </div>
  480. </div>`;
  481. }
  482. }).join('');
  483. $('.layadditemcontent').html(htmls);
  484. }
  485. function renderVisitFieldHtmls(fields) {
  486. $('#visitAllField').text(`可选择字段(共${fields.length}个)`);
  487. let htmls = fields.map((item, index) => {
  488. return `<div class="fieldItem"><input lay-filter="checkboxs" data-keyname="${item.keyname}" data-type="${item.type}" ${item.keyname == 'phone' ? 'disabled' : ''} class="visitFieldElement${item.id}" type="checkbox" ${(returnCheckedStatus(item.id)) ? 'checked' : ''} name="visit" value="${item.id}" title="${item.name}" lay-skin="primary"></div>`;
  489. }).join('');
  490. $('.selectFieldBox').html(htmls);
  491. setTimeout(() => {
  492. form.render();
  493. form.on('checkbox(checkboxs)', function (data) {
  494. if (data.elem.checked) {
  495. let OneValue = [];
  496. $(`input:checkbox[name='visit']:checked`).each(function (i) {
  497. let key = $(this).prop('dataset').keyname;
  498. let type = $(this).prop('dataset').type;
  499. OneValue.push({ id: $(this).val(), name: $(this).prop('title'), keyname: key, type: type });
  500. });
  501. let name = data.elem.title;
  502. if (data.elem.dataset.keyname == 'name') {
  503. checkedArr.unshift({ name: name, id: data.value, keyname: data.elem.dataset.keyname, type: data.elem.dataset.type });
  504. renderCheckedFieldHtmls(checkedArr);
  505. } else {
  506. let itemArr = [];
  507. OneValue.forEach(k => {
  508. let item = checkedArr.filter(o => o.id == k.id);
  509. if (!item.length) {
  510. itemArr.push(k)
  511. }
  512. })
  513. checkedArr.push(...itemArr);
  514. renderCheckedFieldHtmls(checkedArr);
  515. }
  516. } else {
  517. checkedArr.forEach((y, i) => {
  518. if (data.value == y.id) {
  519. checkedArr.splice(i, 1);
  520. renderCheckedFieldHtmls(checkedArr);
  521. return;
  522. }
  523. })
  524. }
  525. })
  526. form.on('checkbox(checkedAll)', function (data) {
  527. if (data.elem.checked) {
  528. $(`input:checkbox[name='visit']`).each(function (i) {
  529. if ($(this).prop('dataset').keyname != 'phone') {
  530. $(this).prop('checked', true);
  531. }
  532. });
  533. checkedArr = visitFieldAll;
  534. renderCheckedFieldHtmls(checkedArr);
  535. form.render();
  536. } else {
  537. checkedArr = visitFieldAll.filter(v => v.keyname == 'phone');
  538. renderCheckedFieldHtmls(checkedArr);
  539. $(`input:checkbox[name='visit']:checked`).each(function (i) {
  540. if ($(this).prop('dataset').keyname != 'phone') {
  541. $(this).prop('checked', false);
  542. }
  543. });
  544. form.render();
  545. }
  546. })
  547. }, 600);
  548. }
  549. function renderCheckedFieldHtmls(checkedFields) {
  550. $('#checkedFieldEl').text(`已选择字段(共${checkedFields.length}个)`);
  551. let firstArr = checkedFields.filter(v => v.keyname == 'name' || v.keyname == 'phone');
  552. let htmls1 = '';
  553. if (firstArr.length == 1) {
  554. htmls1 = firstArr.map((item, index) => {
  555. return `<div data-id="${item.id}" data-type="${item.type}" data-keyname="${item.keyname}" data-name="${item.name}" class="sortItemBox">
  556. <div data-id="${item.id}" class="sortLeft">
  557. ${item.keyname != 'phone' && item.keyname != 'name' ? `<img data-id="${item.id}" class="moveElement" src="/static/img/move.png" alt="">` : ''}
  558. <span data-id="${item.id}" class="getSortName">${item.name}</span>
  559. </div>
  560. <div data-id="${item.id}" class="sortRight">
  561. <img data-id="${item.id}" src="/static/img/sTop.png" alt="">
  562. ${item.keyname != 'phone' ? `<img data-id="${item.id}" src="/static/img/sDel.png" class="checkedDel" alt="">` : ''}
  563. </div>
  564. </div>`;
  565. }).join('');
  566. }
  567. if (firstArr.length == 2) {
  568. htmls1 = firstArr.map((item, index) => {
  569. return `<div data-id="${item.id}" data-type="${item.type}" data-keyname="${item.keyname}" data-name="${item.name}" class="sortItemBox">
  570. <div data-id="${item.id}" class="sortLeft">
  571. ${item.keyname != 'phone' && item.keyname != 'name' ? `<img data-id="${item.id}" class="moveElement" src="/static/img/move.png" alt="">` : ''}
  572. <span data-id="${item.id}" class="getSortName">${item.name}</span>
  573. </div>
  574. <div data-id="${item.id}" class="sortRight">
  575. <img data-id="${item.id}" src="/static/img/sTop.png" alt="">
  576. ${item.keyname != 'phone' ? `<img data-id="${item.id}" src="/static/img/sDel.png" class="checkedDel" alt="">` : ''}
  577. </div>
  578. </div>`;
  579. }).join('');
  580. }
  581. let htmls = checkedFields.map((item, index) => {
  582. if (item.keyname != 'name' && item.keyname != 'phone') {
  583. return `<div data-id="${item.id}" data-type="${item.type}" data-keyname="${item.keyname}" data-name="${item.name}" class="sortItemBox">
  584. <div data-id="${item.id}" class="sortLeft">
  585. ${item.keyname != 'phone' && item.keyname != 'name' ? `<img data-id="${item.id}" class="moveElement" src="/static/img/move.png" alt="">` : ''}
  586. <span data-id="${item.id}" class="getSortName">${item.name}</span>
  587. </div>
  588. <div data-id="${item.id}" class="sortRight">
  589. <img data-id="${item.id}" class="topping" src="/static/img/sTop.png" alt="">
  590. ${item.keyname != 'phone' ? `<img data-id="${item.id}" src="/static/img/sDel.png" class="checkedDel" alt="">` : ''}
  591. </div>
  592. </div>`;
  593. } else {
  594. return null;
  595. }
  596. }).join('');
  597. let aHtmls = `${htmls1}<div class="draggleableBox" id="draggleableBox">${htmls}</div>`
  598. $('.checkedFieldBox').html(aHtmls);
  599. setTimeout(() => {
  600. new Sortable($('.draggleableBox')[0], {
  601. handle: '.moveElement', // handle's class
  602. filter: ".ignore-elements",
  603. animation: 150
  604. });
  605. $('.checkedDel').click(function () {
  606. let id = $(this).prop('dataset').id;
  607. $(this).parent().parent().remove();
  608. checkedArr.forEach((item, index) => {
  609. if (item.id == id) {
  610. $(`.visitFieldElement${id}`).removeAttr('checked');
  611. checkedArr.splice(index, 1);
  612. form.render();
  613. return;
  614. }
  615. })
  616. })
  617. $('.sortRight').click(function () {
  618. var ops1 = {
  619. draggable: ".sortItemBox",
  620. onChoose: function (evt) {
  621. var index = evt.oldIndex;
  622. $("#draggleableBox .sortItemBox").eq(index).insertBefore($("#draggleableBox .sortItemBox").eq(0));
  623. }
  624. };
  625. var sortable1 = Sortable.create($('#draggleableBox')[0], ops1);
  626. })
  627. }, 600);
  628. }
  629. function returnCheckedStatus(vid) {
  630. let ids = checkedArr.map(v => parseInt(v.id));
  631. return ids.includes(parseInt(vid));
  632. }
  633. $('#checkedSearchEl').on('keyup', function (e) {
  634. let val = $(this).val();
  635. if (e.keyCode == 13 && val) {
  636. let eleArr = $('.getSortName');
  637. eleArr.each(function (index) {
  638. let name = $(this).text();
  639. if (name === val || name.indexOf(val) > -1) {
  640. $('#scrollTargetEl').scrollTop((parseInt(index) + 1) * 40);
  641. return;
  642. }
  643. })
  644. }
  645. });
  646. $('#allFieldInput').on('keyup', function (e) {
  647. let val = $(this).val();
  648. if (e.keyCode == 13) {
  649. if (val) {
  650. let itemArr = visitFieldAll.filter(item => {
  651. if (val == item.name || item.name.search(val) > -1) {
  652. return item;
  653. }
  654. })
  655. renderVisitFieldHtmls(itemArr);
  656. } else {
  657. renderVisitFieldHtmls(visitFieldAll);
  658. }
  659. }
  660. })
  661. $('#recoveryDefault').click(function () {
  662. layer.confirm('确定要恢复默认设置吗?', { title: '提示' }, function (index) {
  663. checkedArr = defaultArr;
  664. renderVisitFieldHtmls(visitFieldAll);
  665. renderCheckedFieldHtmls(checkedArr);
  666. layer.close(index);
  667. });
  668. })
  669. /* 监听提交 */
  670. form.on('submit(layuiadmin-report-form-submit)', function (obj) {
  671. let getCheckedField = $('.sortItemBox');
  672. let itemArr = [];
  673. getCheckedField.each(function (i) {
  674. let obj = $(this).prop('dataset');
  675. itemArr.push({ id: obj.id, name: obj.name, keyname: obj.keyname, sort: i + 1, type: obj.type });
  676. })
  677. $.ajax({
  678. url: '{:url("customerSetting/module_report_save")}',
  679. type: 'post',
  680. data: {
  681. content: itemArr
  682. },
  683. dataType: 'json',
  684. success: function (res) {
  685. if (res.code === 0) {
  686. layer.msg(res.msg, { anim: 0 });
  687. setTimeout(() => {
  688. window.parent.reloadFunc();
  689. }, 1000)
  690. } else {
  691. layer.msg(res.msg, { anim: 6 });
  692. }
  693. }
  694. });
  695. return false;
  696. });
  697. });
  698. </script>
  699. {/block}