form2.html 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559
  1. {extend name='admin@main'}
  2. {block name="content"}
  3. {include file='mall@store_goods/form_style'}
  4. <header>
  5. <meta charset="utf-8">
  6. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  7. <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
  8. <link rel="stylesheet" href="https://a.amap.com/jsapi_demos/static/demo-center/css/demo-center.css"/>
  9. <link rel="stylesheet" href="https://cache.amap.com/lbs/static/main1119.css"/>
  10. <style>
  11. .layui-form-radio{
  12. margin: 0 !important;
  13. padding-right:0 !important;
  14. }
  15. .layui-form-select{
  16. margin-right: 10px !important;
  17. }
  18. .layui-col-xs9{
  19. width: 90%;
  20. }
  21. .amap-icon img,
  22. .amap-marker-content img{
  23. width: 25px;
  24. height: 34px;
  25. }
  26. .marker {
  27. position: absolute;
  28. top: -20px;
  29. right: -118px;
  30. color: #fff;
  31. padding: 4px 10px;
  32. box-shadow: 1px 1px 1px rgba(10, 10, 10, .2);
  33. white-space: nowrap;
  34. font-size: 12px;
  35. font-family: "";
  36. background-color: #25A5F7;
  37. border-radius: 3px;
  38. }
  39. .input-card{
  40. width: 18rem;
  41. z-index: 170;
  42. }
  43. .input-card .btn{
  44. margin-right: .8rem;
  45. }
  46. .input-card .btn:last-child{
  47. margin-right: 0;
  48. }
  49. .input-item-text, input[type=text], input[type=date], select {
  50. height: calc(3rem + 2px) !important;
  51. }
  52. </style>
  53. </header>
  54. <form onsubmit="return false;" id="GoodsForm" data-auto="true" method="post" class='layui-form layui-card' autocomplete="off">
  55. <div class="layui-card-body think-box-shadow padding-left-40">
  56. <div class="layui-tab">
  57. <ul class="layui-tab-title">
  58. <li class="layui-this">招聘设置</li>
  59. </ul>
  60. <div class="layui-tab-content">
  61. <!--基础设置-->
  62. <div class="layui-tab-item layui-show">
  63. <div class="layui-form-item layui-row layui-col-space15">
  64. <label class="layui-col-xs9 relative" style="width: 100%;">
  65. <span class="color-green">分类</span>
  66. </label>
  67. <div style="width: 100%">
  68. <div style="width: 15%;float: left;">
  69. <select class="layui-select" id="first_classify" name="first_classify" lay-filter="first_classify" lay-search>
  70. <option selected data-first_key="-1" selected value="0">请选择</option>
  71. {if !empty($cate_tree)}
  72. {foreach $cate_tree as $ck=>$cv}
  73. {if isset_full_check($vo,'first_classify',$cv['id'])}
  74. <option selected data-first_key="{$ck}" value="{$cv['id']}">{$cv['title']}</option>
  75. {else}
  76. <option data-first_key="{$ck}" value="{$cv['id']}">{$cv['title']}</option>
  77. {/if}
  78. {/foreach}
  79. {/if}
  80. </select>
  81. </div>
  82. <div style="width: 15%;float: left">
  83. <select class="layui-select" id="second_classify" name="second_classify" lay-filter="second_classify" lay-search>
  84. </select>
  85. </div>
  86. <div style="width: 15%;float: left">
  87. <select class="layui-select" id="third_classify" name="third_classify" lay-filter="third_classify" lay-search>
  88. </select>
  89. </div>
  90. <input type="hidden" id="first" value="{$vo.first_classify|default='-1'}"/>
  91. <input type="hidden" id="second" value="{$vo.second_classify|default='-1'}"/>
  92. <input type="hidden" id="third" value="{$vo.third_classify|default='-1'}"/>
  93. </div>
  94. </div>
  95. <div class="layui-form-item layui-row layui-col-space15">
  96. <label class="layui-col-xs9 relative">
  97. <span class="color-green">地址</span>
  98. </label>
  99. <div class="layui-inline" style="top: -15px;margin-bottom: -25px">
  100. <div class="layui-input-inline">
  101. <select name="province" lay-filter ="province">
  102. <option value="0">请选择</option>
  103. {foreach $all_area as $ak=>$cv}
  104. {if isset($vo.province) && $vo.province == $cv['name'] }
  105. <option selected data-al_key="{$ak}" value="{$cv['name']}">{$cv['name']}</option>
  106. {else}
  107. <option data-al_key="{$ak}" value="{$cv['name']}">{$cv['name']}</option>
  108. {/if}
  109. {/foreach}
  110. </select>
  111. </div>
  112. <div class="layui-input-inline">
  113. <select name="city" lay-filter ="city">
  114. <option value="0">请选择</option>
  115. {foreach $all_area as $ck=>$cv}
  116. {if isset($vo.province) && $vo.province == $cv['name'] }
  117. {foreach $cv['children'] as $clk=>$cln}
  118. {if isset($vo.city) && $vo.city == $cln['name'] }
  119. <option selected data-bl_key="{$clk}" value="{$cln['name']}">{$cln['name']}</option>
  120. {else}
  121. <option data-bl_key="{$clk}" value="{$cln['name']}">{$cln['name']}</option>
  122. {/if}
  123. {/foreach}
  124. {/if}
  125. {/foreach}
  126. </select>
  127. </div>
  128. <div class="layui-input-inline">
  129. <select name="county" lay-filter ="county">
  130. <option value="0">请选择</option>
  131. {foreach $all_area as $ck=>$cv}
  132. {if isset($vo.province) && $vo.province == $cv['name']}
  133. {foreach $cv['children'] as $cln}
  134. {if isset($vo.city) && $vo.city == $cln['name']}
  135. {foreach $cln['children'] as $dln}
  136. {if isset($vo.county) && $vo.county == $dln['name'] }
  137. <option selected value="{$dln['name']}">{$dln['name']}</option>
  138. {else}
  139. <option value="{$dln['name']}">{$dln['name']}</option>
  140. {/if}
  141. {/foreach}
  142. {/if}
  143. {/foreach}
  144. {/if}
  145. {/foreach}
  146. </select>
  147. </div>
  148. <div class="layui-input-inline">
  149. <input name="address" style="width: 400px" required class="layui-input" placeholder="请输入公司地址" value="{$vo.address|default=''}">
  150. </div>
  151. </div>
  152. </div>
  153. <div class="layui-form-item layui-row layui-col-space15">
  154. <label class="layui-col-xs9 relative">
  155. <span class="color-green">地图</span>
  156. <div>
  157. <div id="container" style="width:100%; height: 500px;"></div>
  158. <div id="myPageTop">
  159. <table>
  160. <tr>
  161. <td>
  162. <label>请输入关键字:</label>
  163. </td>
  164. </tr>
  165. <tr>
  166. <td>
  167. <input id="tipinput"/>
  168. </td>
  169. </tr>
  170. </table>
  171. </div>
  172. </div>
  173. <div class="layui-input-inline">
  174. <input type="hidden" id="longitude" name="longitude" value="{$vo.longitude|default=''}">
  175. <input type="hidden" id="latitude" name="latitude" value="{$vo.latitude|default=''}">
  176. <input id='lnglat' type="hidden" value="{$vo.longitude|default=''},{$vo.latitude|default=''}">
  177. </div>
  178. </label>
  179. </div>
  180. <div class="layui-form-item text-center">
  181. {notempty name='vo.id'}<input type="hidden" name="id" value="{$vo.id}">{/notempty}
  182. <button class="layui-btn" type="submit">保存</button>
  183. <button class="layui-btn layui-btn-danger" type='button' onclick="history.go(-1)" data-close>返回</button>
  184. </div>
  185. </div>
  186. </div>
  187. </div>
  188. </div>
  189. </form>
  190. {/block}
  191. {block name='script'}
  192. <textarea class="layui-hide" id="goods-specs">{$vo.specs|raw|default=''}</textarea>
  193. <textarea class="layui-hide" id="goods-value">{$defaultValues|raw|default=''}</textarea>
  194. <script type="text/javascript" src="https://webapi.amap.com/ui/1.0/main.js?v=1.0.11"></script>
  195. <script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.15&key=5295cbb966c063bde1ed33c1de7ed6bd"></script>
  196. <script>
  197. layui.config({}).extend({}).use(['index', 'form'], function(){ var $ = layui.$,form = layui.form;})
  198. var longitude = "{$vo.longitude|default='118.356655'}";
  199. var latitude = "{$vo.latitude|default='35.102929'}";
  200. window.init = function(){
  201. var marker, map = new AMap.Map('container', {
  202. center:[longitude,latitude],
  203. resizeEnable: true,
  204. zoom:13
  205. });
  206. addMark(longitude,latitude)
  207. map.on( 'click', function (e) {
  208. lnglatInput.value = e.lnglat.toString();
  209. var inputVal = lnglatInput.value.split(',');
  210. clearMarker();
  211. addMark(inputVal[0], inputVal[1])
  212. $("longitude").value =inputVal[0] ;
  213. $("latitude").value = inputVal[1];
  214. });
  215. var $ = function(elementId){
  216. return document.getElementById(elementId);
  217. };
  218. var lnglatInput = $('lnglat');
  219. var pixelInput = $('pixel');
  220. lnglat2container();
  221. // 经纬度坐标转成容器像素坐标
  222. function lnglat2container() {
  223. if(!lnglatInput.value) return
  224. var inputVal = lnglatInput.value.split(',');
  225. var lnglat = new AMap.LngLat(inputVal[0], inputVal[1]);
  226. var pixel = map.lngLatToContainer(lnglat);
  227. pixelInput.value = pixel.round();
  228. }
  229. // 添加mark
  230. function addMark(lng,pix) {
  231. console.log(lng,pix)
  232. if(!lng || !pix) return ;
  233. marker = new AMap.Marker({
  234. icon: "https://a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png",
  235. position: [lng, pix],
  236. offset: new AMap.Pixel(-13, -30)
  237. });
  238. marker.setMap(map);
  239. }
  240. // 清除 marker
  241. function clearMarker() {
  242. if (marker) {
  243. marker.setMap(null);
  244. marker = null;
  245. }
  246. }
  247. AMap.service(["AMap.PlaceSearch"], function() {
  248. //构造地点查询类
  249. var placeSearch = new AMap.PlaceSearch({
  250. pageSize: 5, // 单页显示结果条数
  251. pageIndex: 1, // 页码
  252. city: "010", // 兴趣点城市
  253. citylimit: true, //是否强制限制在设置的城市内搜索
  254. map: map, // 展现结果的地图实例
  255. panel: "panel", // 结果列表将在此容器中进行展示。
  256. autoFitView: true // 是否自动调整地图视野使绘制的 Marker点都处于视口的可见范围
  257. });
  258. //关键字查询
  259. placeSearch.search('北京');
  260. });
  261. }
  262. </script>
  263. <script src="https://webapi.amap.com/maps?v=1.4.15&key=5295cbb966c063bde1ed33c1de7ed6bd&callback=init"></script>
  264. <script src="https://webapi.amap.com/js/require.js" data-main="./require-init"></script>
  265. <script src="https://webapi.amap.com/loader.js"></script>
  266. <script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.15&key=5295cbb966c063bde1ed33c1de7ed6bd&plugin=AMap.Autocomplete,AMap.PlaceSearch"></script>
  267. <script type="text/javascript" src="https://cache.amap.com/lbs/static/addToolbar.js"></script>
  268. <script>
  269. window.form.render();
  270. layui.use('form', function () {
  271. var form = layui.form;
  272. //日期时间范围
  273. laydate.render({
  274. elem: '#start_time'
  275. ,type: 'datetime'
  276. });
  277. laydate.render({
  278. elem: '#end_time'
  279. ,type: 'datetime'
  280. });
  281. })
  282. layui.use('element', function(){
  283. var $ = layui.jquery
  284. ,element = layui.element;
  285. var active = {
  286. tabAdd: function(){
  287. element.tabAdd('demo', {
  288. title: '新选项'+ (Math.random()*1000|0)
  289. ,content: '内容'+ (Math.random()*1000|0)
  290. ,id: new Date().getTime()
  291. })
  292. }
  293. ,tabDelete: function(othis){
  294. element.tabDelete('demo', '44');
  295. othis.addClass('layui-btn-disabled');
  296. }
  297. ,tabChange: function(){
  298. element.tabChange('demo', '22');
  299. }
  300. };
  301. $('.site-demo-active').on('click', function(){
  302. var othis = $(this), type = othis.data('type');
  303. active[type] ? active[type].call(this, othis) : '';
  304. });
  305. //Hash地址的定位
  306. var layid = location.hash.replace(/^#test=/, '');
  307. element.tabChange('test', layid);
  308. element.on('tab(test)', function(elem){
  309. location.hash = 'test='+ $(this).attr('lay-id');
  310. });
  311. });
  312. require(['ckeditor', 'angular'], function () {
  313. window.createEditor('[name="content"]', {
  314. height: 500,
  315. });
  316. })
  317. // 添加设置
  318. $(document).on('click',".add_goods_no",function () {
  319. var knum = $('.no_html tr').length;
  320. var no_html = get_ht(knum);
  321. $(".no_html").append(no_html);
  322. form.render();
  323. console.log(a);// 别删这个!!!
  324. })
  325. // 删除设置
  326. $(document).on('click',".del_no",function (){
  327. var knum = $('.no_html tr').length;
  328. if(knum == 1) {
  329. layer.msg('不能全部删除!')
  330. form.render();
  331. console.log(a);// 别删这个!!!
  332. }
  333. var index= $(".del_no").index(this);
  334. $(".no_detail").eq(index).remove();
  335. form.render();
  336. console.log(a);// 别删这个!!!
  337. })
  338. var is_add = parseInt('{$isAddMode|default=0}');
  339. if(is_add){
  340. $(".no_html").html(get_ht(0));
  341. }else{
  342. var ladder = {:json_encode($ladder)};
  343. if(ladder && ladder.length > 0) {
  344. var no_html = '';
  345. $.each(ladder,function (lk,lv) {
  346. no_html += ' <tr class="no_detail change_del" data-dh ="'+lk+'">';
  347. no_html += "<td class='text-left nowrap'>" +
  348. "<input type='text' class='layui-input' name='ladder_title[]' value='"+lv.ladder_title+"'/>" +
  349. "</td>";
  350. no_html += "<td class='text-left nowrap'>" +
  351. "<input type='' class='layui-input' name='ladder_num[]' value='"+lv.ladder_num+"'/>" +
  352. "</td>";
  353. no_html += "<td class='text-left nowrap'>" +
  354. "<input type='' class='layui-input' name='ladder_price[]' value='"+lv.ladder_price+"'/>" +
  355. "</td>";
  356. no_html += "<td class='text-left nowrap'>" +
  357. "<a class=\"layui-btn layui-btn-sm layui-btn-danger del_no\">删 除</a>" +
  358. "<a class=\"layui-btn layui-btn-sm layui-btn-sm add_goods_no\">添 加</a>" +
  359. "</td>"
  360. no_html += "</tr>";
  361. })
  362. $(".no_html").html(no_html);
  363. }else{
  364. $(".no_html").html(get_ht(0));
  365. }
  366. window.form.render();
  367. }
  368. function get_ht(k) {
  369. var award_length = $(".no_detail").length;
  370. var no_html = '';
  371. no_html += ' <tr class="no_detail change_del" data-dh ="'+k+'">';
  372. no_html += "<td class='text-left nowrap'>" +
  373. "<input type='text' class='layui-input' name='ladder_title[]' value=''/>" +
  374. "</td>";
  375. no_html += "<td class='text-left nowrap'>" +
  376. "<input type='' class='layui-input' name='ladder_num[]' value=''/>" +
  377. "</td>";
  378. no_html += "<td class='text-left nowrap'>" +
  379. "<input type='' class='layui-input' name='ladder_price[]' value=''/>" +
  380. "</td>";
  381. no_html += "<td class='text-left nowrap'>" +
  382. "<a class=\"layui-btn layui-btn-sm layui-btn-danger del_no\">删 除</a>" +
  383. "<a class=\"layui-btn layui-btn-sm layui-btn-sm add_goods_no\">添 加</a>" +
  384. "</td>"
  385. no_html += "</tr>";
  386. return no_html;
  387. }
  388. //地址监听
  389. var goods_spec = {:json_encode($all_area)};
  390. form.on('select(province)', function(data){
  391. var cl_html = '<option value="0">请选择</option>';
  392. if(data.value == 0) {
  393. $("select[name='city']").html(cl_html);
  394. $("select[name='county']").html(cl_html);
  395. }else{
  396. var cl_key = data.elem[data.elem.selectedIndex].dataset.al_key;
  397. $.each(goods_spec[cl_key]['children'],function (ck,cv) {
  398. cl_html +='<option data-bl_key="'+ck+'" value="'+cv.name+'">'+cv.name+'</option>';
  399. })
  400. $("select[name='city']").html(cl_html);
  401. }
  402. $("select[name='county']").html('');
  403. window.form.render();
  404. });
  405. form.on('select(city)', function(data){
  406. second()
  407. })
  408. function second() {
  409. var cl_html = '<option value="0">请选择</option>';
  410. var first_key = $("select[name='province']").find("option:selected").data("al_key");
  411. var second_key = $("select[name='city']").find("option:selected").data("bl_key");
  412. console.log(first_key,second_key)
  413. var to_each = goods_spec[first_key]['children'][second_key]['children'];
  414. console.log(to_each);
  415. $.each(to_each,function (ck,cv) {
  416. cl_html +='<option value="'+cv.name+'">'+cv.name+'</option>';
  417. })
  418. $("select[name='county']").html(cl_html);
  419. window.form.render();
  420. }
  421. // 三级分类联动 start
  422. var sel_second = {:isset($vo['second_classify']) ? $vo['second_classify']:0};
  423. var sel_third = {:isset($vo['third_classify']) ? $vo['third_classify']:0};
  424. var goods_spec = {:json_encode($cate_tree)};
  425. first_c(1);
  426. function first_c(source){
  427. // 将其他选择框置空
  428. var first_key = $("select[name='first_classify']").find("option:selected").data("first_key")
  429. $("#first").val(first_key);
  430. $("select[name='second_classify']").html('');
  431. $("select[name='third_classify']").html('');
  432. $("select[name='fourth_classify']").html('');
  433. // 没有下级不继续
  434. if(first_key == -1 || !("children" in goods_spec[first_key])){
  435. $("#second").val(-1);
  436. $("#third").val(-1);
  437. window.form.render();
  438. return true;
  439. }else{
  440. var second_html = '<option data-second_key="-1" selected value="0">请选择分类</option>';
  441. var to_each = goods_spec[first_key]['children'];
  442. $.each(to_each,function (ck,cv) {
  443. if(source == 1 && sel_second == cv.id){
  444. second_html +='<option selected data-second_key="'+ck+'" value="'+cv.id+'">'+cv.title+'</option>';
  445. $("#second").val(ck);
  446. }else{
  447. second_html +='<option data-second_key="'+ck+'" value="'+cv.id+'">'+cv.title+'</option>';
  448. }
  449. })
  450. $("select[name='second_classify']").html(second_html);
  451. window.form.render();
  452. second_c(source);
  453. }
  454. }
  455. function second_c(source){
  456. var first_key = $("select[name='first_classify']").find("option:selected").data("first_key");
  457. var second_key = $("select[name='second_classify']").find("option:selected").data("second_key");
  458. // 将其他选择框置空
  459. $("#second").val(second_key);
  460. $("select[name='third_classify']").html('');
  461. $("select[name='fourth_classify']").html('');
  462. // 没有下级不继续
  463. if(second_key == -1 || !("children" in goods_spec[first_key]['children'][second_key])){
  464. $("#third").val(-1);
  465. window.form.render();
  466. return true;
  467. }
  468. var to_each = goods_spec[first_key]['children'][second_key]['children'];
  469. var third_html = '<option data-third_key="-1" selected value="0">请选择分类</option>';
  470. $.each(to_each,function (ck,cv) {
  471. if(source == 1 && sel_third == cv.id){
  472. third_html +='<option selected data-third_key="'+ck+'" value="'+cv.id+'">'+cv.title+'</option>';
  473. $("#third").val(ck);
  474. }else{
  475. third_html +='<option data-third_key="'+ck+'" value="'+cv.id+'">'+cv.title+'</option>';
  476. }
  477. })
  478. $("select[name='third_classify']").html(third_html);
  479. $("select[name='fourth_classify']").html('');
  480. window.form.render();
  481. }
  482. // 一级分类监听
  483. form.on('select(first_classify)', function(data){
  484. var first_key = data.elem[data.elem.selectedIndex].dataset.first_key;
  485. //与之前选择的一样不处理
  486. if($("#first").val() == first_key){
  487. return true;
  488. }
  489. first_c(2);
  490. })
  491. // 二级分类监听
  492. form.on('select(second_classify)', function(data){
  493. var second_key = data.elem[data.elem.selectedIndex].dataset.second_key;
  494. //与之前选择的一样不处理
  495. if($("#second").val() == second_key){
  496. return true;
  497. }
  498. second_c(2)
  499. })
  500. // 三级分类end
  501. </script>
  502. {/block}