qifengquan 1 year ago
parent
commit
0afb3b559a

+ 72 - 0
application/admin/controller/product/Pro.php

@@ -0,0 +1,72 @@
+<?php
+
+namespace app\admin\controller\product;
+
+use app\common\controller\Backend;
+use think\Exception;
+use think\exception\DbException;
+use think\response\Json;
+
+/**
+ * 产品-pro
+
+ *
+ * @icon fa fa-circle-o
+ */
+class Pro extends Backend
+{
+
+    /**
+     * ProductPro模型对象
+     * @var \app\common\model\ProductPro
+     */
+    protected $model = null;
+
+    public function _initialize()
+    {
+        parent::_initialize();
+        $this->model = new \app\common\model\ProductPro;
+
+    }
+
+
+    /**
+     * 查看
+     *
+     * @return string|Json
+     * @throws \think\Exception
+     * @throws DbException
+     */
+    public function index()
+    {
+        if ($this->request->isPost()) {
+            $row = $this->request->post("row/a");
+            if(count($row) == 2){
+                $alteration = ['name','image'];
+            }else{
+                $alteration = ['name','image','content'];
+            }
+            $res = array_combine($alteration,$row);
+            try {
+                $this->model->save($res,['name'=>$res['name']]);
+            } catch (Exception $e) {
+                $this->error($e->getMessage());
+            }
+            $this->success("提交成功", null, ['data' => json_encode($this->request->post("row/a"), JSON_UNESCAPED_UNICODE)]);
+        }else{
+            if (false === $this->request->isAjax()) {
+                $this->assign('iantern_slide',$this->model->get(['name'=>'幻灯片']));
+                $this->assign('product_framework',$this->model->get(['name'=>'产品框架']));
+                $this->assign('product_fram_image',$this->model->get(['name'=>'产品优势']));
+                $this->assign('product_features',$this->model->where(['name'=>'产品亮点'])->field(['name','image','content as product_features_content'])->find());
+                $this->assign('product_function',$this->model->where(['name'=>'产品功能'])->field(['name','image','content as product_function_content'])->find());
+                $this->assign('product_case_show',$this->model->get(['name'=>'案例展示']));
+                $this->assign('advanced',$this->model->where(['name'=>'采用最前沿的技术框架'])->field(['name','image','content as advanced_content'])->find());
+                $this->assign('product_study',$this->model->where(['name'=>'学习'])->field(['name','image','content as study_content'])->find());
+                return $this->view->fetch();
+            }
+        }
+    }
+
+
+}

+ 9 - 0
application/admin/lang/zh-cn/product/pro.php

@@ -0,0 +1,9 @@
+<?php
+
+return [
+    'Type'    => '模块名称',
+    'Name'    => '模块名称',
+    'Title'   => '标题',
+    'Content' => '内容',
+    'Image'   => '图片'
+];

+ 48 - 0
application/admin/view/product/pro/add.html

@@ -0,0 +1,48 @@
+<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Type')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-type" class="form-control" name="row[type]" type="text">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Name')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-name" class="form-control" name="row[name]" type="text">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Title')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-title" class="form-control" name="row[title]" type="text">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <textarea id="c-content" class="form-control editor" rows="5" name="row[content]" cols="50"></textarea>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Image')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="input-group">
+                <input id="c-image" class="form-control" size="50" name="row[image]" type="text">
+                <div class="input-group-addon no-border no-padding">
+                    <span><button type="button" id="faupload-image" class="btn btn-danger faupload" data-input-id="c-image" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="false" data-preview-id="p-image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-image" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                </div>
+                <span class="msg-box n-right" for="c-image"></span>
+            </div>
+            <ul class="row list-inline faupload-preview" id="p-image"></ul>
+        </div>
+    </div>
+    <div class="form-group layer-footer">
+        <label class="control-label col-xs-12 col-sm-2"></label>
+        <div class="col-xs-12 col-sm-8">
+            <button type="submit" class="btn btn-primary btn-embossed disabled">{:__('OK')}</button>
+            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+        </div>
+    </div>
+</form>

+ 48 - 0
application/admin/view/product/pro/edit.html

@@ -0,0 +1,48 @@
+<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Type')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-type" class="form-control" name="row[type]" type="text" value="{$row.type|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Name')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-name" class="form-control" name="row[name]" type="text" value="{$row.name|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Title')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-title" class="form-control" name="row[title]" type="text" value="{$row.title|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <textarea id="c-content" class="form-control editor" rows="5" name="row[content]" cols="50">{$row.content|htmlentities}</textarea>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Image')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="input-group">
+                <input id="c-image" class="form-control" size="50" name="row[image]" type="text" value="{$row.image|htmlentities}">
+                <div class="input-group-addon no-border no-padding">
+                    <span><button type="button" id="faupload-image" class="btn btn-danger faupload" data-input-id="c-image" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="false" data-preview-id="p-image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-image" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                </div>
+                <span class="msg-box n-right" for="c-image"></span>
+            </div>
+            <ul class="row list-inline faupload-preview" id="p-image"></ul>
+        </div>
+    </div>
+    <div class="form-group layer-footer">
+        <label class="control-label col-xs-12 col-sm-2"></label>
+        <div class="col-xs-12 col-sm-8">
+            <button type="submit" class="btn btn-primary btn-embossed disabled">{:__('OK')}</button>
+            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+        </div>
+    </div>
+</form>

+ 399 - 0
application/admin/view/product/pro/index.html

@@ -0,0 +1,399 @@
+<style>
+    .upload-image {
+        background: url('__CDN__/assets/addons/example/img/plus.png') no-repeat center center;
+        background-size: 30px 30px;
+        height: 30px;
+        width: 30px;
+        border: 1px solid #ccc;
+    }
+</style>
+<div class="row">
+    <!--    幻灯片-->
+    <div class="col-md-6">
+        <div class="box box-success">
+            <div class="panel-body">
+                <form id="aaa-form" role="form" data-toggle="validator" method="POST" action="">
+                    <div class="form-group row">
+                        <label class="control-label col-xs-12">幻灯片</label>
+                        <div class="col-xs-12">
+                            <div class="input-group">
+                                <input data-rule="required" class="form-control" name="row[name]" type="hidden" value="{$iantern_slide->name}">
+                                <input id="a-files" data-rule="required" class="form-control" size="50" name="row[image]" type="text" value="{$iantern_slide->image}">
+                                <div class="input-group-addon no-border no-padding">
+                                    <span><button type="button" id="plupload-files" class="btn btn-danger plupload" data-input-id="a-files" data-mimetype="*" data-multiple="true" data-preview-id="aa-files"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                                    <span><button type="button" id="fachoose-files" class="btn btn-primary fachoose" data-input-id="a-files" data-mimetype="*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                                </div>
+                                <span class="msg-box n-right" for="a-files"></span>
+                            </div>
+
+                            <!--ul需要添加 data-template和data-name属性,并一一对应且唯一 -->
+                            <ul class="row list-inline plupload-preview" id="aa-files" data-template="introtpl" data-name="row[image]"></ul>
+                            <!--请注意 ul和textarea间不能存在其它任何元素,实际开发中textarea应该添加个hidden进行隐藏-->
+
+                            <!--这里自定义图片预览的模板 开始-->
+                            <script type="text/html" id="introtpl">
+                                <li class="col-xs-3">
+                                    <a href="<%=fullurl%>" data-url="<%=url%>" target="_blank" class="thumbnail">
+                                        <img src="<%=fullurl%>" class="img-responsive">
+                                    </a>
+                                    <a href="javascript:;" class="btn btn-danger btn-xs btn-trash"><i class="fa fa-trash"></i></a>
+                                </li>
+                            </script>
+                            <!--这里自定义图片预览的模板 结束-->
+                        </div>
+                    </div>
+                    <div class="form-group row">
+                        <label class="control-label col-xs-12"></label>
+                        <div class="col-xs-12">
+                            <button type="submit" class="btn btn-success btn-embossed">{:__('OK')}</button>
+                            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+                        </div>
+                    </div>
+
+                </form>
+            </div>
+        </div>
+    </div>
+    <!--产品框架-->
+    <div class="col-md-6">
+        <div class="box box-success">
+            <div class="panel-body">
+                <form id="-form" role="form" data-toggle="validator" method="POST" action="">
+                    <div class="form-group row">
+                        <label class="control-label col-xs-12">产品框架</label>
+                        <div class="col-xs-12">
+                            <div class="input-group">
+                                <input data-rule="required" class="form-control" name="row[name]" type="hidden" value="{$product_framework->name}">
+                                <input id="b-files" data-rule="required" class="form-control" size="50" name="row[image]" type="text" value="{$product_framework->image}">
+                                <div class="input-group-addon no-border no-padding">
+                                    <span><button type="button" id="plupload-files_a" class="btn btn-danger plupload" data-input-id="b-files" data-mimetype="*" data-multiple="true" data-preview-id="bb-files"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                                    <span><button type="button" id="fachoose-files_a" class="btn btn-primary fachoose" data-input-id="b-files" data-mimetype="*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                                </div>
+                                <span class="msg-box n-right" for="b-files"></span>
+                            </div>
+
+                            <!--ul需要添加 data-template和data-name属性,并一一对应且唯一 -->
+                            <ul class="row list-inline plupload-preview" id="bb-files" data-template="introtpl_a" data-name="row[image]"></ul>
+                            <!--请注意 ul和textarea间不能存在其它任何元素,实际开发中textarea应该添加个hidden进行隐藏-->
+
+                            <!--这里自定义图片预览的模板 开始-->
+                            <script type="text/html" id="introtpl_a">
+                                <li class="col-xs-3">
+                                    <a href="<%=fullurl%>" data-url="<%=url%>" target="_blank" class="thumbnail">
+                                        <img src="<%=fullurl%>" class="img-responsive">
+                                    </a>
+                                    <a href="javascript:;" class="btn btn-danger btn-xs btn-trash"><i class="fa fa-trash"></i></a>
+                                </li>
+                            </script>
+                            <!--这里自定义图片预览的模板 结束-->
+                        </div>
+                    </div>
+                    <div class="form-group row">
+                        <label class="control-label col-xs-12"></label>
+                        <div class="col-xs-12">
+                            <button type="submit" class="btn btn-success btn-embossed">{:__('OK')}</button>
+                            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+                        </div>
+                    </div>
+
+                </form>
+            </div>
+        </div>
+    </div>
+    <!--产品优势-->
+    <div class="col-md-6">
+        <div class="box box-success">
+            <div class="panel-body">
+                <form id="first-form" role="form" data-toggle="validator" method="POST" action="">
+                    <div class="form-group row">
+                        <label class="control-label col-xs-12">产品优势</label>
+                        <div class="col-xs-12">
+                            <div class="input-group">
+                                <input data-rule="required" class="form-control" name="row[name]" type="hidden" value="{$product_fram_image->name}">
+                                <input id="c-images" data-rule="required" class="form-control" size="50" name="row[image]" type="text" value="{$product_fram_image->image}">
+                                <div class="input-group-addon no-border no-padding">
+                                    <span><button type="button" id="plupload-images" class="btn btn-danger plupload" data-input-id="c-images" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="true" data-preview-id="p-images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                                    <span><button type="button" id="fachoose-images" class="btn btn-primary fachoose" data-input-id="c-images" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                                </div>
+                                <span class="msg-box n-right" for="c-images"></span>
+                            </div>
+
+                            <!--ul需要添加 data-template和data-name属性,并一一对应且唯一 -->
+                            <ul class="row list-inline plupload-preview" id="p-images" data-template="desctpl" data-name="row[content]"></ul>
+
+                            <!--请注意 ul和textarea间不能存在其它任何元素,实际开发中textarea应该添加个hidden进行隐藏-->
+                            <textarea name="row[content]" class="form-control" style="margin-top:5px;display: none">{$product_fram_image->content}</textarea>
+
+                            <!--这里自定义图片预览的模板 开始-->
+                            <script type="text/html" id="desctpl">
+                                <li class="col-xs-3">
+                                    <a href="<%=fullurl%>" data-url="<%=url%>" target="_blank" class="thumbnail">
+                                        <img src="<%=fullurl%>" class="img-responsive">
+                                    </a>
+                                    <input type="text" name="row[content][<%=index%>][info]" class="form-control mb-1" placeholder="请输入标题" value="<%=value?value['info']:''%>"/>
+                                    <input type="text" name="row[content][<%=index%>][describe]" class="form-control mb-1" placeholder="请输入描述" value="<%=value?value['describe']:''%>"/>
+                                    <a href="javascript:;" class="btn btn-danger btn-xs btn-trash"><i class="fa fa-trash"></i></a>
+                                </li>
+                            </script>
+                            <!--这里自定义图片预览的模板 结束-->
+                        </div>
+                    </div>
+                    <div class="form-group row">
+                        <label class="control-label col-xs-12"></label>
+                        <div class="col-xs-12">
+                            <button type="submit" class="btn btn-success btn-embossed">{:__('OK')}</button>
+                            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+                        </div>
+                    </div>
+
+                </form>
+            </div>
+        </div>
+    </div>
+    <!--产品亮点-->
+    <div class="col-md-6">
+        <div class="box box-success">
+            <div class="panel-body">
+                <form id="product_features-form" role="form" data-toggle="validator" method="POST" action="">
+                    <div class="form-group row">
+                        <label class="control-label col-xs-12">产品亮点</label>
+                        <div class="col-xs-12">
+                            <div class="input-group">
+                                <input data-rule="required" class="form-control" name="row[name]" type="hidden" value="{$product_features->name}">
+                                <input id="c-files" data-rule="required" class="form-control" size="50" name="row[image]" type="text" value="{$product_features->image}">
+                                <div class="input-group-addon no-border no-padding">
+                                    <span><button type="button" id="plupload-files_product_features" class="btn btn-danger plupload" data-input-id="c-files" data-mimetype="*" data-multiple="true" data-preview-id="p-files"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                                    <span><button type="button" id="fachoose-files_product_features" class="btn btn-primary fachoose" data-input-id="c-files" data-mimetype="*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                                </div>
+                                <span class="msg-box n-right" for="c-files"></span>
+                            </div>
+
+                            <!--                            ul需要添加 data-template和data-name属性,并一一对应且唯一-->
+                            <ul class="row list-inline plupload-preview" id="p-files" data-template="introtpl_product_features" data-name="row[product_features_content]"></ul>
+                            <!--                            请注意 ul和textarea间不能存在其它任何元素,实际开发中textarea应该添加个hidden进行隐藏-->
+                            <textarea name="row[product_features_content]" class="form-control" style="margin-top:5px;display:none;">{$product_features->product_features_content}</textarea>
+
+                            <!--                            这里自定义图片预览的模板 开始-->
+                            <script type="text/html" id="introtpl_product_features">
+                                <li class="col-xs-3">
+                                    <a href="<%=fullurl%>" data-url="<%=url%>" target="_blank" class="thumbnail">
+                                        <img src="<%=fullurl%>" class="img-responsive">
+                                    </a>
+                                    <input type="text" name="row[product_features_content][<%=index%>][info]" class="form-control mb-1" placeholder="请输入标题" value="<%=value?value['info']:''%>"/>
+                                    <input type="text" name="row[product_features_content][<%=index%>][describe]" class="form-control mb-1" placeholder="请输入描述" value="<%=value?value['describe']:''%>"/>
+                                    <!--                                    <input type="text" name="row[product_features_content][<%=index%>]" class="form-control mb-1" placeholder="请输入描述" value="<%=value?value:''%>"/>-->
+                                    <a href="javascript:;" class="btn btn-danger btn-xs btn-trash"><i class="fa fa-trash"></i></a>
+                                </li>
+                            </script>
+                            <!--                            这里自定义图片预览的模板 结束-->
+                        </div>
+                    </div>
+                    <div class="form-group row">
+                        <label class="control-label col-xs-12"></label>
+                        <div class="col-xs-12">
+                            <button type="submit" class="btn btn-success btn-embossed">{:__('OK')}</button>
+                            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+                        </div>
+                    </div>
+
+                </form>
+            </div>
+        </div>
+    </div>
+    <!--产品功能-->
+    <div class="col-md-6">
+        <div class="box box-success">
+            <div class="panel-body">
+                <form id="product_function-form" role="form" data-toggle="validator" method="POST" action="">
+                    <div class="form-group row">
+                        <label class="control-label col-xs-12">产品功能</label>
+                        <div class="col-xs-12">
+                            <div class="input-group">
+                                <input data-rule="required" class="form-control" name="row[name]" type="hidden" value="{$product_function->name}">
+                                <input id="d-images" data-rule="required" class="form-control" size="50" name="row[image]" type="text" value="{$product_function->image}">
+                                <div class="input-group-addon no-border no-padding">
+                                    <span><button type="button" id="plupload-product_function" class="btn btn-danger plupload" data-input-id="d-images" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="true" data-preview-id="product_function-images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                                    <span><button type="button" id="fachoose-product_function" class="btn btn-primary fachoose" data-input-id="d-images" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                                </div>
+                                <span class="msg-box n-right" for="c-images"></span>
+                            </div>
+
+                            <!--ul需要添加 data-template和data-name属性,并一一对应且唯一 -->
+                            <ul class="row list-inline plupload-preview" id="product_function-images" data-template="product_function" data-name="row[product_function_content]"></ul>
+
+                            <!--请注意 ul和textarea间不能存在其它任何元素,实际开发中textarea应该添加个hidden进行隐藏-->
+                            <textarea name="row[product_function_content]" class="form-control" style="margin-top:5px;display: none">{$product_function->product_function_content}</textarea>
+
+                            <!--这里自定义图片预览的模板 开始-->
+                            <script type="text/html" id="product_function">
+                                <li class="col-xs-3">
+                                    <a href="<%=fullurl%>" data-url="<%=url%>" target="_blank" class="thumbnail">
+                                        <img src="<%=fullurl%>" class="img-responsive">
+                                    </a>
+                                    <input type="text" name="row[product_function_content][<%=index%>][info]" class="form-control mb-1" placeholder="请输入标题" value="<%=value?value['info']:''%>"/>
+                                    <input type="text" name="row[product_function_content][<%=index%>][describe]" class="form-control mb-1" placeholder="请输入描述" value="<%=value?value['describe']:''%>"/>
+                                    <a href="javascript:;" class="btn btn-danger btn-xs btn-trash"><i class="fa fa-trash"></i></a>
+                                </li>
+                            </script>
+                            <!--这里自定义图片预览的模板 结束-->
+                        </div>
+                    </div>
+                    <div class="form-group row">
+                        <label class="control-label col-xs-12"></label>
+                        <div class="col-xs-12">
+                            <button type="submit" class="btn btn-success btn-embossed">{:__('OK')}</button>
+                            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+                        </div>
+                    </div>
+
+                </form>
+            </div>
+        </div>
+    </div>
+    <!--案例展示-->
+    <div class="col-md-6">
+        <div class="box box-success">
+            <div class="panel-body">
+                <form id="e-form" role="form" data-toggle="validator" method="POST" action="">
+                    <div class="form-group row">
+                        <label class="control-label col-xs-12">案例展示</label>
+                        <div class="col-xs-12">
+                            <div class="input-group">
+                                <input data-rule="required" class="form-control" name="row[name]" type="hidden" value="{$product_case_show->name}">
+                                <input id="ee-files" data-rule="required" class="form-control" size="50" name="row[image]" type="text" value="{$product_case_show->image}">
+                                <div class="input-group-addon no-border no-padding">
+                                    <span><button type="button" id="plupload-files_e" class="btn btn-danger plupload" data-input-id="ee-files" data-mimetype="*" data-multiple="true" data-preview-id="e-files"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                                    <span><button type="button" id="fachoose-files_e" class="btn btn-primary fachoose" data-input-id="ee-files" data-mimetype="*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                                </div>
+                                <span class="msg-box n-right" for="b-files"></span>
+                            </div>
+
+                            <!--ul需要添加 data-template和data-name属性,并一一对应且唯一 -->
+                            <ul class="row list-inline plupload-preview" id="e-files" data-template="introtpl_e" data-name="row[image]"></ul>
+                            <!--请注意 ul和textarea间不能存在其它任何元素,实际开发中textarea应该添加个hidden进行隐藏-->
+
+                            <!--这里自定义图片预览的模板 开始-->
+                            <script type="text/html" id="introtpl_e">
+                                <li class="col-xs-3">
+                                    <a href="<%=fullurl%>" data-url="<%=url%>" target="_blank" class="thumbnail">
+                                        <img src="<%=fullurl%>" class="img-responsive">
+                                    </a>
+                                    <a href="javascript:;" class="btn btn-danger btn-xs btn-trash"><i class="fa fa-trash"></i></a>
+                                </li>
+                            </script>
+                            <!--这里自定义图片预览的模板 结束-->
+                        </div>
+                    </div>
+                    <div class="form-group row">
+                        <label class="control-label col-xs-12"></label>
+                        <div class="col-xs-12">
+                            <button type="submit" class="btn btn-success btn-embossed">{:__('OK')}</button>
+                            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+                        </div>
+                    </div>
+
+                </form>
+            </div>
+        </div>
+    </div>
+    <!--采用最前沿的技术框架-->
+    <div class="col-md-6">
+        <div class="box box-success">
+            <div class="panel-body">
+                <form id="advanced-form" role="form" data-toggle="validator" method="POST" action="">
+                    <div class="form-group row">
+                        <label class="control-label col-xs-12">采用最前沿的技术框架</label>
+                        <div class="col-xs-12">
+                            <div class="input-group">
+                                <input data-rule="required" class="form-control" name="row[name]" type="hidden" value="{$advanced->name}">
+                                <input id="advanced-images_d" data-rule="required" class="form-control" size="50" name="row[image]" type="text" value="{$advanced->image}">
+                                <div class="input-group-addon no-border no-padding">
+                                    <span><button type="button" id="plupload-advanced" class="btn btn-danger plupload" data-input-id="advanced-images_d" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="true" data-preview-id="advanced-images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                                    <span><button type="button" id="fachoose-advanced" class="btn btn-primary fachoose" data-input-id="advanced-images_d" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                                </div>
+                                <span class="msg-box n-right" for="c-images"></span>
+                            </div>
+
+                            <!--ul需要添加 data-template和data-name属性,并一一对应且唯一 -->
+                            <ul class="row list-inline plupload-preview" id="advanced-images" data-template="product_advanced" data-name="row[advanced_content]"></ul>
+
+                            <!--请注意 ul和textarea间不能存在其它任何元素,实际开发中textarea应该添加个hidden进行隐藏-->
+                            <textarea name="row[advanced_content]" class="form-control" style="margin-top:5px;display: none">{$advanced->advanced_content}</textarea>
+
+                            <!--这里自定义图片预览的模板 开始-->
+                            <script type="text/html" id="product_advanced">
+                                <li class="col-xs-3">
+                                    <a href="<%=fullurl%>" data-url="<%=url%>" target="_blank" class="thumbnail">
+                                        <img src="<%=fullurl%>" class="img-responsive">
+                                    </a>
+                                    <input type="text" name="row[advanced_content][<%=index%>][info]" class="form-control mb-1" placeholder="请输入标题" value="<%=value?value['info']:''%>"/>
+                                    <input type="text" name="row[advanced_content][<%=index%>][describe]" class="form-control mb-1" placeholder="请输入描述" value="<%=value?value['describe']:''%>"/>
+                                    <a href="javascript:;" class="btn btn-danger btn-xs btn-trash"><i class="fa fa-trash"></i></a>
+                                </li>
+                            </script>
+                            <!--这里自定义图片预览的模板 结束-->
+                        </div>
+                    </div>
+                    <div class="form-group row">
+                        <label class="control-label col-xs-12"></label>
+                        <div class="col-xs-12">
+                            <button type="submit" class="btn btn-success btn-embossed">{:__('OK')}</button>
+                            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+                        </div>
+                    </div>
+
+                </form>
+            </div>
+        </div>
+    </div>
+    <!--学习-->
+    <div class="col-md-6">
+        <div class="box box-success">
+            <div class="panel-body">
+                <form id="study-form" role="form" data-toggle="validator" method="POST" action="">
+                    <div class="form-group row">
+                        <label class="control-label col-xs-12">学习</label>
+                        <div class="col-xs-12">
+                            <div class="input-group">
+                                <input data-rule="required" class="form-control" name="row[name]" type="hidden" value="{$product_study->name}">
+                                <input id="study-images_d" data-rule="required" class="form-control" size="50" name="row[image]" type="text" value="{$product_study->image}">
+                                <div class="input-group-addon no-border no-padding">
+                                    <span><button type="button" id="plupload-study" class="btn btn-danger plupload" data-input-id="study-images_d" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="true" data-preview-id="study-images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                                    <span><button type="button" id="fachoose-study" class="btn btn-primary fachoose" data-input-id="study-images_d" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                                </div>
+                                <span class="msg-box n-right" for="c-images"></span>
+                            </div>
+
+                            <!--ul需要添加 data-template和data-name属性,并一一对应且唯一 -->
+                            <ul class="row list-inline plupload-preview" id="study-images" data-template="product_study" data-name="row[study_content]"></ul>
+
+                            <!--请注意 ul和textarea间不能存在其它任何元素,实际开发中textarea应该添加个hidden进行隐藏-->
+                            <textarea name="row[study_content]" class="form-control" style="margin-top:5px;display: none">{$product_study->study_content}</textarea>
+
+                            <!--这里自定义图片预览的模板 开始-->
+                            <script type="text/html" id="product_study">
+                                <li class="col-xs-3">
+                                    <a href="<%=fullurl%>" data-url="<%=url%>" target="_blank" class="thumbnail">
+                                        <img src="<%=fullurl%>" class="img-responsive">
+                                    </a>
+                                    <input type="text" name="row[study_content][<%=index%>][info]" class="form-control mb-1" placeholder="请输入标题" value="<%=value?value['info']:''%>"/>
+                                    <input type="text" name="row[study_content][<%=index%>][describe]" class="form-control mb-1" placeholder="请输入描述" value="<%=value?value['describe']:''%>"/>
+                                    <a href="javascript:;" class="btn btn-danger btn-xs btn-trash"><i class="fa fa-trash"></i></a>
+                                </li>
+                            </script>
+                            <!--这里自定义图片预览的模板 结束-->
+                        </div>
+                    </div>
+                    <div class="form-group row">
+                        <label class="control-label col-xs-12"></label>
+                        <div class="col-xs-12">
+                            <button type="submit" class="btn btn-success btn-embossed">{:__('OK')}</button>
+                            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+                        </div>
+                    </div>
+
+                </form>
+            </div>
+        </div>
+    </div>
+</div>

+ 7 - 5
application/common/model/ProductPro.php

@@ -4,16 +4,17 @@ namespace app\common\model;
 
 use think\Model;
 
+
 class ProductPro extends Model
 {
 
+    
 
-
-
+    
 
     // 表名
     protected $name = 'product_pro';
-
+    
     // 自动写入时间戳字段
     protected $autoWriteTimestamp = false;
 
@@ -26,7 +27,9 @@ class ProductPro extends Model
     protected $append = [
 
     ];
+    
 
+    
 
 
 
@@ -34,5 +37,4 @@ class ProductPro extends Model
 
 
 
-
-}
+}

+ 27 - 0
application/common/validate/ProductPro.php

@@ -0,0 +1,27 @@
+<?php
+
+namespace app\common\validate;
+
+use think\Validate;
+
+class ProductPro extends Validate
+{
+    /**
+     * 验证规则
+     */
+    protected $rule = [
+    ];
+    /**
+     * 提示消息
+     */
+    protected $message = [
+    ];
+    /**
+     * 验证场景
+     */
+    protected $scene = [
+        'add'  => [],
+        'edit' => [],
+    ];
+    
+}

+ 33 - 0
public/assets/js/backend/product/pro.js

@@ -0,0 +1,33 @@
+define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
+
+    var Controller = {
+        index: function () {
+            Template.helper("Fast", Fast);
+
+            //因为日期选择框不会触发change事件,导致无法刷新textarea,所以加上判断
+            $(document).on("dp.change", "#second-form .datetimepicker", function () {
+                $(this).parent().prev().find("input").trigger("change");
+            });
+            $(document).on("fa.event.appendfieldlist", "#first-table .btn-append", function (e, obj) {
+
+            });
+            $(document).on("fa.event.appendfieldlist", "#second-table .btn-append", function (e, obj) {
+                //绑定动态下拉组件
+                Form.events.selectpage(obj);
+                //绑定日期组件
+                Form.events.datetimepicker(obj);
+                //绑定上传组件
+                Form.events.faupload(obj);
+
+                //上传成功回调事件,变更按钮的背景
+                $(".upload-image", obj).data("upload-success", function (data) {
+                    $(this).css("background-image", "url('" + Fast.api.cdnurl(data.url) + "')");
+                })
+            });
+            Form.api.bindevent($("form[role=form]"), function (data, ret) {
+                Layer.alert(data.data);
+            });
+        },
+    };
+    return Controller;
+});