slider.html 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. {extend name="../../admin/view/main"}
  2. {block name="content"}
  3. <div class="think-box-shadow">
  4. <form autocomplete="off" class='layui-form layui-card' id="DataForm" onsubmit="return false;" style="width:850px">
  5. <div class="layui-card-header text-center margin-20 font-w7 color-text layui-bg-gray border-radius-5">
  6. {$title|default='图片数据管理'}<span class="color-desc font-s12"> ( 建议上传图片尺寸为 690px 250px )</span>
  7. </div>
  8. <div class="layui-card-body margin-top-20 padding-bottom-0">
  9. <div class="padding-left-20" data-rule-list>
  10. <div class="layui-form-item text-center">
  11. <a class="layui-btn layui-btn-primary" data-item-add>添加图片</a>
  12. </div>
  13. </div>
  14. <div class="hr-line-dashed margin-top-30"></div>
  15. <div class="layui-form-item text-center padding-left-20">
  16. <button class="layui-btn" data-submit>保存数据</button>
  17. </div>
  18. </div>
  19. </form>
  20. </div>
  21. <div class="layui-hide" data-item-tpl>
  22. <div class="layui-form-item" data-rule-item>
  23. <div class="layui-input-inline nowrap relative" style="width:180px">
  24. <input data-upload-image name="img[]" type="hidden">
  25. </div>
  26. <label class="layui-input-inline nowrap relative margin-bottom-5" style="width:300px">
  27. <b class="notselect color-green margin-right-5">图片名称</b>
  28. <input class="layui-input inline-block" name="name[]" placeholder="请输入图片名称" required style="width:240px" value="#">
  29. <a class="layui-btn layui-btn-primary" data-item-up><i class="layui-icon layui-icon-up margin-0"></i></a>
  30. <a class="layui-btn layui-btn-primary" data-item-dn><i class="layui-icon layui-icon-down margin-0"></i></a>
  31. <a class="layui-btn layui-btn-primary" data-item-rm><i class="layui-icon layui-icon-close margin-0"></i></a>
  32. </label>
  33. <label class="layui-input-inline nowrap relative margin-bottom-5" style="width:300px">
  34. <b class="notselect color-green margin-right-5">跳转规则</b>
  35. <input class="layui-input inline-block" name="rule[]" placeholder="请输入跳转规则" required style="width:240px" value="#">
  36. <a class="layui-btn layui-btn-primary" data-prefix="NEWS" data-rule-page="{:url('data/news.item/select')}">选择文章</a>
  37. <a class="layui-btn layui-btn-primary" data-prefix="GOODS" data-rule-page="{:url('data/shop.goods/select')}">选择商品</a>
  38. <span class="help-block block notselect">若要跳转页面,请选择对应的数据或填写跳转的 URL 地址,不跳转请填写 “#” 号占位。</span>
  39. </label>
  40. </div>
  41. </div>
  42. <label class="layui-hide">
  43. <textarea id="DefaultData">{$data|default=[]|json_encode}</textarea>
  44. </label>
  45. <style>
  46. [data-rule-page] {
  47. margin-top: -3px;
  48. margin-left: 5px;
  49. }
  50. [data-rule-item] {
  51. padding-left: 40px;
  52. margin-bottom: 20px;
  53. }
  54. [data-rule-item] .uploadimage {
  55. width: 135px;
  56. height: 100px;
  57. }
  58. [data-item-dn], [data-item-up], [data-item-rm] {
  59. margin-top: -4px;
  60. margin-left: 5px;
  61. }
  62. </style>
  63. <script>
  64. (function (data) {
  65. /*! 默认数据渲染 */
  66. if (data.length < 1) addItem();
  67. else data.forEach(function (item) {
  68. addItem(item)
  69. });
  70. /*! 初始化上传插件 */
  71. (function initUpload() {
  72. $('[data-rule-list] input[data-upload-image]').map(function () {
  73. if (!$(this).attr('inited')) $(this).attr('inited', true).uploadOneImage();
  74. });
  75. setTimeout(initUpload, 100);
  76. })();
  77. /*! 数据选项操作 */
  78. $('[data-rule-list]').on('click', '[data-rule-page]', function ($that) {
  79. $that = $(this), top.setItemValue = function (value) {
  80. $that.prevAll('input').val(($that.data('prefix') + '#{v}').replace('{v}', value));
  81. };
  82. $.form.iframe($(this).data('rule-page'), $that.data('title') || $that.text(), ['930px', '600px']);
  83. }).on('click', '[data-item-add]', function () {
  84. addItem();
  85. }).on('click', '[data-item-rm]', function () {
  86. $(this).parents('[data-rule-item]').remove();
  87. }).on('click', '[data-item-up]', function () {
  88. var item = $(this).parents('[data-rule-item]');
  89. var prev = item.prev('[data-rule-item]');
  90. if (item.index() > 0) item.insertBefore(prev);
  91. }).on('click', '[data-item-dn]', function () {
  92. var item = $(this).parents('[data-rule-item]');
  93. var next = item.next('[data-rule-item]');
  94. if (next) item.insertAfter(next);
  95. });
  96. /*! 表单提交处理 */
  97. $('form#DataForm').vali(function (ret) {
  98. var idx, data = [];
  99. for (idx in ret.img) {
  100. if (!ret.img[idx]) return $.msg.tips('请上传展示图片哦!');
  101. data.push({img: ret.img[idx], rule: ret.rule[idx], name: ret.name[idx]});
  102. }
  103. $.form.load('{$request->url()}', {data: JSON.stringify(data)}, 'post');
  104. });
  105. })(JSON.parse($('#DefaultData').val() || '[]') || []);
  106. /*! 添加数据选项 */
  107. function addItem(data) {
  108. this.$html = $($('[data-item-tpl]').html());
  109. if (data) for (this.index in data) this.$html.find('[name^="' + this.index + '"]').val(data[this.index]);
  110. $('[data-item-add]').parent().before(this.$html), setTimeout(function () {
  111. $.form.reInit();
  112. }, 100);
  113. }
  114. </script>
  115. {/block}