From 6696b97ca8ce86096f8d220d11bd314ee684075c Mon Sep 17 00:00:00 2001
From: Anyon <zoujingli@qq.com>
Date: Tue, 14 Jul 2020 09:38:13 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=BD=AE=E6=92=AD=E5=9B=BE?=
 =?UTF-8?q?=E7=AE=A1=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 app/data/controller/Config.php            |  36 ++++++++
 app/data/view/article_content/select.html |   5 +-
 app/data/view/config/slider.html          | 105 ++++++++++++++++++++++
 3 files changed, 143 insertions(+), 3 deletions(-)
 create mode 100644 app/data/controller/Config.php
 create mode 100644 app/data/view/config/slider.html

diff --git a/app/data/controller/Config.php b/app/data/controller/Config.php
new file mode 100644
index 000000000..027a815a3
--- /dev/null
+++ b/app/data/controller/Config.php
@@ -0,0 +1,36 @@
+<?php
+
+namespace app\data\controller;
+
+use think\admin\Controller;
+
+/**
+ * 应用参数配置
+ * Class Config
+ * @package app\data\controller
+ */
+class Config extends Controller
+{
+    /**
+     * 首页轮播图片
+     * @menu true
+     * @auth true
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     */
+    public function slider()
+    {
+        if ($this->request->isGet()) {
+            $this->title = '轮播图管理';
+            $this->data = sysdata('slider');
+            $this->fetch();
+        } else {
+            if (sysdata('slider', json_decode(input('data'), true))) {
+                $this->success('轮播图保存成功!', '');
+            } else {
+                $this->error('轮播图保存失败,请稍候再试!');
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/app/data/view/article_content/select.html b/app/data/view/article_content/select.html
index 97ae22a99..5ca500bcb 100644
--- a/app/data/view/article_content/select.html
+++ b/app/data/view/article_content/select.html
@@ -2,12 +2,12 @@
 
 {block name='content'}
 <div class="padding-25" data-select-container>
-    {include file='attack_content/select_search'}
+    {include file='article_content/select_search'}
     <table class="layui-table margin-top-10" lay-skin="line">
         {notempty name='list'}
         <thead>
         <tr>
-            <th class="text-left nowrap">文章信息</th>
+            <th class="text-left nowrap">文章标题</th>
             <th class="text-left nowrap">文章状态</th>
             <th class="text-left nowrap">创建时间</th>
             <th class="text-left nowrap"></th>
@@ -36,7 +36,6 @@
 {block name='script'}
 <script>
     $(function () {
-
         layui.form.render();
         $('[data-article]').on('click', function () {
             top.setAttackId(this.getAttribute('data-article') || '');
diff --git a/app/data/view/config/slider.html b/app/data/view/config/slider.html
new file mode 100644
index 000000000..d1cbe9016
--- /dev/null
+++ b/app/data/view/config/slider.html
@@ -0,0 +1,105 @@
+{extend name="../../admin/view/main"}
+
+{block name="content"}
+<div class="think-box-shadow">
+    <form onsubmit="return false;" id="SliderForm" class='layui-form' autocomplete="off" style="width:750px">
+        <div class="text-center font-s14 font-w7">轮播图管理<span class="color-desc font-s12">(建议尺寸:690px  250px)</span></div>
+        <div class="hr-line-dashed"></div>
+        <div class="padding-bottom-15" data-slider-box>
+            <div class="layui-form-item text-center">
+                <a data-item-add class="layui-btn layui-btn-primary">添加图片</a>
+            </div>
+        </div>
+        <div class="hr-line-dashed"></div>
+        <div class="layui-form-item text-center">
+            <button class="layui-btn" data-submit>保存数据</button>
+        </div>
+    </form>
+</div>
+
+<div data-item-tpl class="layui-hide">
+    <div class="layui-form-item padding-left-40 margin-left-40" data-slider-item>
+        <div class="layui-input-inline nowrap" style="width:120px">
+            <input data-upload-image name="img[]" type="hidden">
+        </div>
+        <label class="layui-input-inline nowrap relative margin-bottom-5" style="width:300px">
+            <span>图片标题 </span>
+            <input class="layui-input inline-block" style="width:240px" name="title[]" value="#" required placeholder="请输入图片标题">
+            <a data-item-up class="layui-btn layui-btn-primary margin-left-5"><i class="layui-icon layui-icon-up margin-0"></i></a>
+            <a data-item-dn class="layui-btn layui-btn-primary margin-left-5"><i class="layui-icon layui-icon-down margin-0"></i></a>
+            <a data-item-rm class="layui-btn layui-btn-primary margin-left-5"><i class="layui-icon layui-icon-close margin-0"></i></a>
+        </label>
+        <label class="layui-input-inline nowrap relative margin-bottom-5" style="width:300px">
+            <span>跳转活动 </span>
+            <input class="layui-input inline-block" style="width:240px" name="url[]" value="#" required placeholder="请输入跳转活动">
+            <a data-item-article class="layui-btn layui-btn-primary margin-left-5" style="margin-top:-3px">选择文章</a>
+            <span class="help-block block">若要跳转页面,请填写正确的 URL 地址,不跳转以“#”号表示。</span>
+        </label>
+    </div>
+</div>
+
+<label class="layui-hide">
+    <textarea id="default-data">{$data|default=[]|json_encode}</textarea>
+</label>
+
+<style>
+    [data-item-dn], [data-item-up], [data-item-rm], [data-item-goods], [data-item-cate] {
+        margin-top: -4px;
+    }
+</style>
+
+<script>
+    (function (data) {
+        /*! 默认数据处理 */
+        if (data.length < 1) addItem();
+        for (this.index in data) addItem(data[this.index]);
+        /*! 初始化上传插件 */
+        (function initUpload() {
+            $('[data-slider-box] input[data-upload-image]').map(function () {
+                if (!$(this).attr('inited')) $(this).attr('inited', true).uploadOneImage();
+            });
+            setTimeout(initUpload, 100);
+        })();
+        /*! 轮播选项操作 */
+        $('[data-slider-box]').on('click', '[data-item-article]', function ($that) {
+            $that = $(this), top.setAttackId = function (id) {
+                $that.prevAll('input').val('article#{v}'.replace('{v}', id));
+            };
+            $.form.iframe('{:url("data/article_content/select")}', '选择文章', ['930px', '600px']);
+        }).on('click', '[data-item-add]', function () {
+            addItem();
+        }).on('click', '[data-item-rm]', function () {
+            $(this).parents('[data-slider-item]').remove();
+        }).on('click', '[data-item-up]', function () {
+            this.item = $(this).parents('[data-slider-item]');
+            this.prev = this.item.prev('[data-slider-item]');
+            if (this.item.index() > 0) this.item.insertBefore(this.prev);
+        }).on('click', '[data-item-dn]', function () {
+            this.item = $(this).parents('[data-slider-item]');
+            this.next = this.item.next('[data-slider-item]');
+            if (this.next) this.item.insertAfter(this.next);
+        });
+        /*! 表单提交处理 */
+        $('form#SliderForm').vali(function (ret) {
+            this.data = [];
+            for (this.index in ret.img) {
+                if (!ret.img[this.index]) return $.msg.tips('请上传展示图片哦!');
+                this.data.push({img: ret.img[this.index], url: ret.url[this.index], title: ret.title[this.index]});
+            }
+            $.form.load('{$request->url()}', {data: JSON.stringify(this.data)}, 'post');
+        });
+
+    })(JSON.parse(document.getElementById('default-data').innerHTML || '[]') || []);
+
+    /*! 添加轮播项 */
+    function addItem(data) {
+        this.$html = $($('[data-item-tpl]').html());
+        if (data) for (this.index in data) this.$html.find('[name^="' + this.index + '"]').val(data[this.index]);
+        $('[data-item-add]').parent().before(this.$html), setTimeout(function () {
+            $.form.reInit();
+        }, 100);
+    }
+
+</script>
+
+{/block}
\ No newline at end of file