template_library.blade.php 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869
  1. @extends('admin/layout')
  2. @section('header')
  3. <link href="{{asset('css/plugins/chosen/chosen.css')}}" rel="stylesheet">
  4. <link href="{{asset('css/plugins/switchery/switchery.css')}}" rel="stylesheet">
  5. <link rel="stylesheet"
  6. href="https://cdn.jsdelivr.net/npm/bootstrap-select@1.13.9/dist/css/bootstrap-select.min.css">
  7. <link rel="stylesheet" href="{{asset('js/plugins/zTree_v3-master/css/zTreeStyle/zTreeStyle.css')}}">
  8. <style>
  9. .my-table td {
  10. border: 1px solid #E5E6E7;
  11. padding: 8px;
  12. }
  13. .my-table tr td:last-child {
  14. cursor: pointer;
  15. text-align: center;
  16. }
  17. .ztree li span.button.add {
  18. margin-left: 2px;
  19. margin-right: -1px;
  20. background-position: -144px 0;
  21. vertical-align: top;
  22. *vertical-align: middle
  23. }
  24. .li_ys {
  25. margin: -10px;
  26. clear: both;
  27. padding-left: 10px;
  28. }
  29. .li_ys li {
  30. display: inline-block;
  31. float: left;
  32. text-align: center;
  33. font-size: 1em;
  34. color: #333;
  35. width: 100px;
  36. overflow: hidden;
  37. margin-right: 5px;
  38. padding: 8px;
  39. border-radius: 4px;
  40. cursor: pointer;
  41. }
  42. .li_ys .selected {
  43. background: #333;
  44. color: #fff;
  45. }
  46. .tab_box div {
  47. border: 1px solid red;
  48. height: 150px;
  49. width: 500px;
  50. }
  51. .form-horizontal .form-boxs {
  52. display: none;
  53. }
  54. .form-horizontal .form-boxs2 {
  55. /* display: none; */
  56. padding: 0 15px;
  57. }
  58. .form-horizontal .form-boxs:first-child {
  59. display: block;
  60. }
  61. .form-horizontal .form-boxs2 {
  62. display: none;
  63. }
  64. .form-horizontal .form-boxs2:first-child {
  65. display: block;
  66. }
  67. .ibox-content {
  68. padding: 5px 0;
  69. border: none;
  70. }
  71. .ibox {
  72. overflow: hidden;
  73. }
  74. .ibox-title {
  75. /* border: dotted 1px #ddd; */
  76. border: none;
  77. }
  78. #left_Box_1, #left_Box_2, #left_Box_3, #left_Box_4 {
  79. display: none;
  80. }
  81. #left_Box_1 {
  82. display: block;
  83. }
  84. .form-control-select {
  85. vertical-align: middle;
  86. padding: 6px 8px;
  87. height: 32;
  88. font-size: 13px;
  89. font-weight: normal;
  90. border-radius: 3px;
  91. background: #fbfbfb;
  92. -webkit-appearance: none;
  93. appearance: none;
  94. background-color: #f8f8f8;
  95. background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='28' viewBox='0 0 16 28' fill='%23777'%3E%3Cpath d='M16 17q0 .406-.297.703l-7 7Q8.406 25 8 25t-.703-.297l-7-7Q0 17.406 0 17t.297-.703T1 16h14q.406 0 .703.297T16 17zm0-6q0 .406-.297.703T15 12H1q-.406 0-.703-.297T0 11t.297-.703l7-7Q7.594 3 8 3t.703.297l7 7Q16 10.594 16 11z'/%3E%3C/svg%3E");
  96. background-position: right 8px center;
  97. background-repeat: no-repeat;
  98. -webkit-background-size: 8px 16px;
  99. background-size: 8px 16px;
  100. padding-right: 25px;
  101. }
  102. input[type="checkbox"]:before, input[type="radio"]:before {
  103. visibility: visible;
  104. content: "\f096";
  105. float: left;
  106. font-family: FontAwesome;
  107. width: 13px;
  108. height: 13px;
  109. line-height: 13px;
  110. font-size: 16px;
  111. border-radius: 5px;
  112. margin-right: 8px;
  113. text-align: left;
  114. font-weight: normal;
  115. color: #888;
  116. }
  117. input[type="checkbox"]:checked:before, input[type="radio"]:checked:before {
  118. content: "\f046";
  119. color: #666;
  120. }
  121. input[type="checkbox"], input[type="radio"] {
  122. visibility: hidden;
  123. cursor: pointer;
  124. position: relative;
  125. top: 3px;
  126. }
  127. .table.table-datalist tbody tr td label {
  128. font-weight: normal;
  129. }
  130. .table.table-datalist thead td label, .table.table-datalist thead td {
  131. font-weight: bold;
  132. }
  133. i{
  134. }
  135. </style>
  136. <style>
  137. .wrapper-content {
  138. width: 100%;
  139. height: 100%;
  140. position: relative;
  141. }
  142. .sep-wrap {
  143. position: absolute;
  144. width: 100%;
  145. height: 100%;
  146. left: 0;
  147. top: 0;
  148. display: flex;
  149. display: -webkit-flex;
  150. display: -moz-flex;
  151. display: -ms-flex;
  152. display: -o-flex;
  153. /* padding: 15px; */
  154. }
  155. .sep-sidebar {
  156. width: 250px;
  157. flex-shrink: 0;
  158. /* margin-right: 16px; */
  159. overflow-x: auto;
  160. overflow-y: auto;
  161. background: #f2f4f6;
  162. border-right: solid 1px #d5dbe0;
  163. box-shadow: 0 2px 2px #ddd;
  164. z-index: 10;
  165. padding-top: 15px;
  166. }
  167. .sep-sidebar::-webkit-scrollbar {
  168. width: 6px;
  169. }
  170. .sep-sidebar::-webkit-scrollbar:horizontal {
  171. height: 6px;
  172. }
  173. .sep-sidebar::-webkit-scrollbar-track:horizontal {
  174. border-left: none;
  175. border-top: solid 1px #ddd;
  176. }
  177. .sep-sidebar::-webkit-scrollbar-track {
  178. background: rgba(255, 255, 255, 0.4);
  179. -webkit-border-radius: 0;
  180. border-radius: 0;
  181. border-left: solid 1px #ddd;
  182. }
  183. .sep-sidebar::-webkit-scrollbar-thumb {
  184. -webkit-border-radius: 10px;
  185. border-radius: 10px;
  186. background: rgba(0, 0, 0, 0.5);
  187. }
  188. .sep-sidebar .ibox-content {
  189. background: transparent;
  190. }
  191. .sep-sidebar .ibox {
  192. overflow: unset;
  193. }
  194. .sep-primary {
  195. flex: auto;
  196. overflow-y: auto;
  197. padding: 15px;
  198. }
  199. .control-sidebar {
  200. position: absolute;
  201. top: 0;
  202. bottom: 0;
  203. left: 0;
  204. width: 250px;
  205. z-index: 8;
  206. }
  207. .ui-resizable-handle {
  208. width: 5px;
  209. background: #ddd;
  210. position: absolute;
  211. top: 0;
  212. bottom: 0;
  213. right: -5px;
  214. cursor: col-resize;
  215. opacity: 0;
  216. }
  217. .ui-resizable-handle:hover {
  218. opacity: 1;
  219. }
  220. .ui-resizable-handle:before {
  221. position: absolute;
  222. top: 50%;
  223. right: -10px;
  224. width: 20px;
  225. height: 60px;
  226. line-height: 60px;
  227. font-family: FontAwesome;
  228. content: "\f039";
  229. color: #888;
  230. background: #ddd;
  231. margin-top: -30px;
  232. margin-left: -1px;
  233. border-radius: 0 3px 3px 0;
  234. display: block;
  235. font-size: 12px;
  236. -webkit-transform: scale(.6);
  237. text-transform: rotate(-90deg);
  238. text-align: center;
  239. }
  240. .edui-default .edui-editor {
  241. max-width: 100% !important;
  242. width: 100% !important;
  243. }
  244. .form-action-fixed {
  245. position: fixed;
  246. right: 40px;
  247. top: 16px;
  248. margin: 0;
  249. padding: 12px;
  250. text-indent: 0;
  251. border-radius: 0 0 4px 4px;
  252. background: rgba(200, 200, 200, 0.5);
  253. }
  254. </style>
  255. <style type="text/css">
  256. div#rMenu {
  257. position: absolute;
  258. visibility: hidden;
  259. top: 0;
  260. background-color: #555;
  261. text-align: left;
  262. padding: 2px 4px;
  263. z-index: 999;
  264. }
  265. div#rMenu ul li {
  266. margin: 1px 0;
  267. cursor: pointer;
  268. list-style: none outside none;
  269. background-color: #DFDFDF;
  270. padding: 4px;
  271. }
  272. div#rMenu ul {
  273. padding-left: 0;
  274. margin: 0;
  275. width: 100%;
  276. }
  277. .dropdown.bootstrap-select {
  278. position: relative !important;
  279. }
  280. .dropdown-menu {
  281. min-width: 100% !important;
  282. width: 100%;
  283. }
  284. .btn.dropdown-toggle.btn-default.bs-placeholder {
  285. background-color: #fff !important;
  286. }
  287. </style>
  288. @endsection
  289. @section('content')
  290. <body class="gray-bg">
  291. <div class="wrapper wrapper-content animated fadeInRight">
  292. <div class="sep-wrap">
  293. <div class="sep-sidebar">
  294. <div class="ibox float-e-margins">
  295. <div class="ibox float-e-margins">
  296. <div class="ibox-title hide">
  297. 基本设置
  298. </div>
  299. <select class="selectpicker form-control" id="site_id" name="site_id" data-live-search="true"
  300. title="请选择站点" autocomplete="off">
  301. <option value="">请选择站点</option>
  302. @foreach ($siteList as $site)
  303. <option value="{{$site->id}}">{{$site->cn_title}}</option>
  304. @endforeach
  305. </select>
  306. <div class="ibox-content">
  307. <ul id="treeDemo" class="ztree"></ul>
  308. </div>
  309. </div>
  310. </div>
  311. </div>
  312. <div class="control-sidebar ui-resizable">
  313. </div>
  314. <div class="sep-primary">
  315. <div style="background: #fff;padding-top: 10px;border: dotted 1px #ddd; position: relative;">
  316. <div id="left_Box_1">
  317. <div class="ibox float-e-margins" style=" background: #fff;padding-top: 10px; ">
  318. <div class="ibox-title">
  319. <ul class="li_ys clearfix" id="clearfix">
  320. <li class="selected">基本设置</li>
  321. <li>模版变量</li>
  322. </ul>
  323. </div>
  324. <div class="ibox-content">
  325. <form method="get" class="form-horizontal" id="form1">
  326. <div class="form-boxs">
  327. <div class="row">
  328. <div class="col-md-8" style="padding-right:0;">
  329. <div class="form-group">
  330. <label class="control-label" for="name"><span
  331. class="red">* </span>样式名称:</label>
  332. <div class=" ">
  333. <input type="text" class="form-control" id="name" name="name"
  334. autocomplete="off">
  335. <div class="help-block">必须使用英文字幕或数据组合</div>
  336. </div>
  337. <input type="hidden" id="template_id" name="template_id">
  338. </div>
  339. <div class="form-group">
  340. <label class="control-label" for="memo">
  341. 描述:</label>
  342. <div class=" ">
  343. <textarea class="form-control" rows="5" placeholder=""
  344. id="memo"
  345. name="memo"></textarea>
  346. <div class="help-block">请在这里描述模板的用途</div>
  347. </div>
  348. </div>
  349. </div>
  350. <div class="col-md-4">
  351. <div class="form-group">
  352. <label class="control-label" for="alias">
  353. 类名:</label>
  354. <div class="">
  355. <input type="text" placeholder="" class="form-control"
  356. id="css" name="css">
  357. <div class="help-block">类名只允许使用英文+数字</div>
  358. </div>
  359. </div>
  360. <div class="form-group">
  361. <label class="control-label" for="alias">
  362. 父级id:</label>
  363. <div class="">
  364. <input type="text" placeholder="" class="form-control"
  365. id="pid" name="pid">
  366. </div>
  367. </div>
  368. <div class="form-group">
  369. <label class="control-label" for="alias">
  370. 排序:</label>
  371. <div class="">
  372. <input type="text" placeholder="" class="form-control"
  373. id="sort" name="sort">
  374. </div>
  375. </div>
  376. </div>
  377. </div>
  378. <div class="row">
  379. <div class="col-md-8" style="padding-right:0;">
  380. <div class="form-group">
  381. <label class=" control-label" for="img">
  382. 预览样式:</label>
  383. <button type="button" class="btn btn-primary"
  384. id="file_upload" name="file_upload">
  385. 文件上传
  386. </button>
  387. <input type="file" value="" style="display: none" id="uploadFile"
  388. name="uploadFile" multiple>
  389. <div id="images">
  390. </div>
  391. </div>
  392. </div>
  393. </div>
  394. <div class="form-action-fixed" style="text-align:right;">
  395. <button class="btn btn-primary" type="button" id="save">
  396. 保存
  397. </button>
  398. {{--<button class="btn btn-white closeLayer" id="cancel">取消</button>--}}
  399. </div>
  400. </div>
  401. <div class="form-boxs">
  402. <div class="form-group" style="margin: 0;padding: 0 15px;">
  403. <div class="ibox float-e-margins">
  404. <table class="table table-datalist">
  405. <thead>
  406. <tr>
  407. <td>
  408. 变量 <span onclick="addTemplateVariable(0)">[添加]</span>
  409. </td>
  410. <td>
  411. 标签
  412. </td>
  413. <td>
  414. <label>
  415. <input type="checkbox" id="selectAll" name="selectAll"
  416. style="margin-right: 5px">
  417. 全选
  418. </label>
  419. </td>
  420. </tr>
  421. </thead>
  422. <tbody id="tbody">
  423. @foreach($templateLibraryVar as $key=>$value)
  424. <tr>
  425. <td>
  426. {{$value['variable']}} <span
  427. onclick="addTemplateVariable({{$value->id}})">[修改]</span>
  428. <span
  429. onclick="delTemplateVariable({{$value->id}})">[删除]</span>
  430. </td>
  431. <td>
  432. {{$value['tag']}}
  433. </td>
  434. <td style="width:100px">
  435. <input class="selectBox" type="checkbox"
  436. name="selectBox"
  437. value="{{$value['id']}}"
  438. id="checkbox_{{$value['id']}}"
  439. style="margin-right: 8px">应用
  440. </td>
  441. </tr>
  442. @endforeach
  443. </tbody>
  444. </table>
  445. </div>
  446. </div>
  447. </div>
  448. </form>
  449. </div>
  450. </div>
  451. </div>
  452. </div>
  453. </div>
  454. </div>
  455. <div id="rMenu">
  456. <ul>
  457. <li id="m_add" onclick="addParentMenu();">增加顶级节点</li>
  458. <li id="m_add" onclick="addTreeNode();">增加子节点</li>
  459. <li id="m_del" onclick="copyTreeNode();">复制节点</li>
  460. <li id="m_del" onclick="removeTreeNode();">删除节点</li>
  461. </ul>
  462. </div>
  463. </div>
  464. </body>
  465. @endsection
  466. @section('footer')
  467. <script type="text/javascript" src="{{asset('js/plugins/switchery/switchery.js')}}"></script>
  468. <script type="text/javascript" src="{{asset('js/bootstrap-select.min.js')}}"></script>
  469. <script type="text/javascript" src="{{asset('js/plugins/zTree_v3/js/jquery.ztree.core.js')}}"></script>
  470. <script type="text/javascript" src="{{asset('js/plugins/zTree_v3/js/jquery.ztree.excheck.js')}}"></script>
  471. <script type="text/javascript" src="{{asset('js/plugins/zTree_v3/js/jquery.ztree.exedit.js')}}"></script>
  472. <script type="text/javascript" src="{{asset('js/plugins/jquery-cookie/jquery.cookie.js')}}"></script>
  473. <script>
  474. $("#selectAll").on("click", function () {
  475. if (this.checked) {
  476. $("#tbody").find("input[name='selectBox']").prop("checked", true);
  477. } else {
  478. $("#tbody").find("input[name='selectBox']").prop("checked", false);
  479. }
  480. });
  481. $('#clearfix li:first-child').addClass('selected');
  482. $('#clearfix li').click(function () {
  483. $(this).addClass('selected').siblings().removeClass('selected');
  484. $('.form-horizontal .form-boxs').eq($(this).index()).show().siblings().hide();
  485. });
  486. $(document).on('click', '[name=file_upload]', function () {
  487. $(this).next().trigger('click');
  488. });
  489. $(document).on('change', '[name=uploadFile]', function () {
  490. var formData = new FormData();
  491. if ($(this)[0].files.length > 10) {
  492. layer.alert("最多只能选择10张图片哦", {icon: 5});
  493. return;
  494. }
  495. for (var i = 0; i < $(this)[0].files.length; i++) {
  496. formData.append('files[]', $(this)[0].files[i]);
  497. }
  498. var ln;
  499. $.ajax({
  500. url: '/admin/tool/bulkUpload',
  501. type: 'POST',
  502. cache: false,
  503. data: formData,
  504. processData: false,
  505. contentType: false,
  506. beforeSend: function () {
  507. ln = layer.load();
  508. },
  509. complete: function () {
  510. layer.close(ln);
  511. },
  512. success: function (result) {
  513. $.each(result.data, function (key, value) {
  514. $('#images').append('<img src="' + value.file_url + '">');
  515. });
  516. },
  517. error: function (XMLHttpRequest) {
  518. if (XMLHttpRequest.status === 500) {
  519. layer.alert("异步请求失败", {icon: 5});
  520. return;
  521. }
  522. layer.alert(JSON.parse(XMLHttpRequest.responseText).message, {icon: 0});
  523. }
  524. });
  525. });
  526. $("#save").click(function () {
  527. var data = tips.getFormValues('#form1');
  528. var checkedNodes = zTreeObj.getCheckedNodes();
  529. var nodeIds = [];
  530. $.each(checkedNodes, function (inx, val) {
  531. nodeIds.push(val.id + ':' + val.level);
  532. });
  533. var imagesList = [];
  534. $("#images img").each(function () {
  535. var _src = $(this).attr("src");
  536. imagesList.push(_src);
  537. });
  538. var checkboxList = [];
  539. $("#tbody").find("input[name='selectBox']").each(function (i, checkbox) {
  540. if (checkbox.checked) {
  541. checkboxList.push(checkbox.value);
  542. }
  543. });
  544. data.images = imagesList;
  545. data.nodeIds = nodeIds;
  546. data.siteId = $('#site_id').val();
  547. data.variableIds = checkboxList;
  548. var url = '/admin/templateLibrary/saveTemplateLibrary';
  549. var type = 'post';
  550. var ajaxConfig = {
  551. url: url,
  552. type: type,
  553. data: data,
  554. success: function (result) {
  555. layer.msg(result.message, {icon: 6, time: 1000});
  556. setTimeout(function () {
  557. window.location.reload();
  558. }, 1000);
  559. }
  560. };
  561. tips.ajax(ajaxConfig);
  562. });
  563. var setting = {
  564. view: {
  565. dblClickExpand: false
  566. },
  567. check: {
  568. enable: true
  569. },
  570. callback: {
  571. onExpand: onExpand,
  572. onCollapse: onCollapse,
  573. onRightClick: OnRightClick,
  574. onClick: function (event, treeId, treeNode) {
  575. console.log(treeNode);
  576. $('#template_id').attr('value', treeNode.id);
  577. $('#name').val(treeNode.title);
  578. $('#css').val(treeNode.css);
  579. $('#pid').val(treeNode.pid);
  580. $('#sort').val(treeNode.sort);
  581. $('#memo').val(treeNode.memo);
  582. $('#selectAll').prop("checked", false);
  583. $("#tbody").find("input[name='selectBox']").prop("checked", false);
  584. if (treeNode.template_library_relation.length > 0) {
  585. $(treeNode.template_library_relation).each(function (key, val) {
  586. $('#checkbox_' + val.variable_id).prop('checked', true);
  587. });
  588. }
  589. $('#images').empty();
  590. $.each(treeNode.images, function (key, value) {
  591. $('#images').append('<img src="' + value + '">');
  592. });
  593. },
  594. }
  595. };
  596. function onExpand(event, treeId, treeNode){
  597. var cookie = $.cookie("z_tree3");
  598. var z_tree = null;
  599. if(cookie){
  600. z_tree = JSON.parse(cookie);
  601. }
  602. if(!z_tree){
  603. z_tree = [];
  604. }
  605. if(jQuery.inArray(treeNode.id, z_tree)<0){
  606. z_tree.push(treeNode.id);
  607. }
  608. $.cookie("z_tree3", JSON.stringify(z_tree))
  609. }
  610. function onCollapse(event, treeId, treeNode){
  611. var cookie = $.cookie("z_tree3");
  612. var z_tree = null;
  613. if(cookie){
  614. z_tree = JSON.parse(cookie);
  615. }
  616. if(!z_tree){
  617. z_tree = []
  618. }
  619. var index = jQuery.inArray(treeNode.id, z_tree);
  620. z_tree.splice(index, 1);
  621. $.cookie("z_tree3", JSON.stringify(z_tree))
  622. }
  623. function OnRightClick(event, treeId, treeNode) {
  624. if (!treeNode && event.target.tagName.toLowerCase() != "button" && $(event.target).parents("a").length == 0) {
  625. zTree.cancelSelectedNode();
  626. showRMenu("root", event.clientX, event.clientY);
  627. } else if (treeNode && !treeNode.noR) {
  628. zTree.selectNode(treeNode);
  629. showRMenu("node", event.clientX, event.clientY);
  630. }
  631. }
  632. function showRMenu(type, x, y) {
  633. $("#rMenu ul").show();
  634. if (type == "root") {
  635. $("#m_del").hide();
  636. $("#m_check").hide();
  637. $("#m_unCheck").hide();
  638. } else {
  639. $("#m_del").show();
  640. $("#m_check").show();
  641. $("#m_unCheck").show();
  642. }
  643. y += document.body.scrollTop;
  644. x += document.body.scrollLeft;
  645. rMenu.css({"top": y + "px", "left": x + "px", "visibility": "visible"});
  646. $("body").bind("mousedown", onBodyMouseDown);
  647. }
  648. function hideRMenu() {
  649. if (rMenu) rMenu.css({"visibility": "hidden"});
  650. $("body").unbind("mousedown", onBodyMouseDown);
  651. }
  652. function onBodyMouseDown(event) {
  653. if (!(event.target.id == "rMenu" || $(event.target).parents("#rMenu").length > 0)) {
  654. rMenu.css({"visibility": "hidden"});
  655. }
  656. }
  657. var addCount = 1;
  658. function addTreeNode() {
  659. hideRMenu();
  660. var name = "NewFile";
  661. var newNode = {name: name};
  662. if (zTree.getSelectedNodes()[0]) {
  663. newNode.checked = zTree.getSelectedNodes()[0].checked;
  664. zTree.addNodes(zTree.getSelectedNodes()[0], newNode);
  665. //异步添加
  666. var pid = zTree.getSelectedNodes()[0].id;
  667. var url = '/admin/templateLibrary/templateLibraryAddNode';
  668. var ajaxConfig = {
  669. url: url,
  670. type: 'post',
  671. data: {pid: pid, node: name},
  672. success: function () {
  673. window.location.reload();
  674. }
  675. };
  676. tips.ajax(ajaxConfig);
  677. } else {
  678. zTree.addNodes(null, newNode);
  679. }
  680. }
  681. function removeTreeNode() {
  682. hideRMenu();
  683. var nodes = zTree.getSelectedNodes();
  684. if (nodes && nodes.length > 0) {
  685. if (nodes[0].children && nodes[0].children.length > 0) {
  686. var msg = "要删除的节点是父节点,如果删除将连同子节点一起删掉。\n\n请确认!";
  687. if (confirm(msg) == true) {
  688. zTree.removeNode(nodes[0]);
  689. }
  690. } else {
  691. zTree.removeNode(nodes[0]);
  692. }
  693. //异步删除
  694. var url = '/admin/templateLibrary/templateLibraryDelNode';
  695. var ajaxConfig = {
  696. url: url,
  697. type: 'post',
  698. data: {id: nodes[0].id},
  699. success: function () {
  700. window.location.reload();
  701. }
  702. };
  703. tips.ajax(ajaxConfig);
  704. }
  705. }
  706. function copyTreeNode() {
  707. var nodes = zTree.getSelectedNodes();
  708. //异步复制
  709. var url = '/admin/templateLibrary/templateLibraryCopyNode';
  710. var ajaxConfig = {
  711. url: url,
  712. type: 'post',
  713. data: {id: nodes[0].id, pid: nodes[0].pid},
  714. success: function () {
  715. window.location.reload();
  716. }
  717. };
  718. tips.ajax(ajaxConfig);
  719. }
  720. function addParentMenu() {
  721. //异步添加顶级菜单
  722. var url = '/admin/templateLibrary/addParentMenu';
  723. var ajaxConfig = {
  724. url: url,
  725. type: 'post',
  726. data: {name: '新建文件'},
  727. success: function () {
  728. window.location.reload();
  729. }
  730. };
  731. tips.ajax(ajaxConfig);
  732. }
  733. function addTemplateVariable(id) {
  734. layer.open({
  735. type: 2,
  736. content: ['/admin/templateLibrary/addVariable/' + id],
  737. area: ['100%', '100%'],
  738. title: '编辑'
  739. });
  740. }
  741. function delTemplateVariable(id) {
  742. //删除变量
  743. var url = '/admin/templateLibrary/delDelVariable/' + id;
  744. var ajaxConfig = {
  745. url: url,
  746. type: 'post',
  747. data: {},
  748. success: function () {
  749. window.location.reload();
  750. }
  751. };
  752. tips.ajax(ajaxConfig);
  753. }
  754. var trees = JSON.parse('{!! addslashes(json_encode($trees)) !!}');
  755. $(document).ready(function () {
  756. zTreeObj = $.fn.zTree.init($("#treeDemo"), setting, trees);
  757. zTree = $.fn.zTree.getZTreeObj("treeDemo");
  758. rMenu = $("#rMenu");
  759. var cookie = $.cookie("z_tree3");
  760. if(cookie){
  761. z_tree = JSON.parse(cookie);
  762. for(var i=0; i< z_tree.length; i++){
  763. var node = zTree.getNodeByParam('id', z_tree[i]);
  764. zTree.expandNode(node, true)
  765. }
  766. }
  767. });
  768. </script>
  769. @endsection