jiaweiqi il y a 1 an
Parent
commit
e8a00fdb58

+ 0 - 0
apps/activity/__init__.py


+ 13 - 0
apps/activity/filters.py

@@ -0,0 +1,13 @@
+# coding=utf-8
+
+import django_filters
+
+from apps.activity.models import Activity
+
+
+class ActivityFilter(django_filters.FilterSet):
+    title = django_filters.CharFilter(field_name='title', lookup_expr='icontains')
+
+    class Meta:
+        model = Activity
+        fields = '__all__'

+ 0 - 0
apps/activity/migrations/__init__.py


+ 25 - 0
apps/activity/models.py

@@ -0,0 +1,25 @@
+# coding=utf-8
+
+from django.db import models
+from django.conf import settings
+
+from apps.images.models import Images
+
+
+class Activity(models.Model):
+    title = models.CharField(verbose_name=u'标题', max_length=255)
+    end_date = models.DateField(verbose_name=u"截止日期")
+    describe = models.TextField(verbose_name=u'活动介绍')
+    cover = models.ForeignKey(Images, verbose_name=u'封面', on_delete=models.PROTECT, related_name=u'activity_cover', null=True)
+    notes = models.CharField(max_length=500, verbose_name=u"备注", blank=True, null=True)
+
+    create_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u'创建人', editable=False, on_delete=models.PROTECT)
+    create_time = models.DateTimeField(verbose_name=u"添加时间", auto_now_add=True, editable=False)
+
+    is_deleted = models.BooleanField(verbose_name="删除", default=False)
+
+    class Meta:
+        db_table = "activity"
+        verbose_name = u"活动"
+        ordering = ['-id']
+        default_permissions = ()

+ 44 - 0
apps/activity/serializers.py

@@ -0,0 +1,44 @@
+# coding=utf-8
+
+from django.conf import settings
+
+from rest_framework import serializers
+
+from apps.images.models import Images
+from apps.activity.models import Activity
+
+from utils.exceptions import CustomError
+
+
+class ActivitySerializer(serializers.ModelSerializer):
+    cover_url = serializers.SerializerMethodField()
+    create_user_t = serializers.CharField(source='create_user.name', read_only=True)
+
+    def get_cover_url(self, obj):
+        if obj.cover:
+            return '{}{}'.format(settings.MEDIA_URL, obj.cover.picture)
+        return ''
+
+    class Meta:
+        model = Activity
+        fields = '__all__'
+
+    def create(self, validated_data):
+        cover = self.initial_data.get('image', None)
+        validated_data['create_user'] = self.context['request'].user
+        if not cover:
+            raise CustomError(u'请上传封面!')
+        validated_data['cover'] = Images.objects.employee_addnew(validated_data['create_user'], Images.ACTIVITY_COVER, cover)
+        instance = super(ActivitySerializer, self).create(validated_data)
+        return instance
+
+    def update(self, instance, validated_data):
+        old_cover = None
+        cover = self.initial_data.get('image', None)
+        if cover:
+            old_cover = instance.cover
+            validated_data['cover'] = Images.objects.employee_addnew(self.context['request'].user, Images.ACTIVITY_COVER, cover)
+        instance = super(ActivitySerializer, self).update(instance, validated_data)
+        if old_cover:
+            old_cover.del_images()
+        return instance

+ 14 - 0
apps/activity/urls.py

@@ -0,0 +1,14 @@
+# coding=utf-8
+
+from django.conf.urls import url, include
+from rest_framework.routers import SimpleRouter
+
+from .views import *
+
+urlpatterns = [
+
+]
+
+router = SimpleRouter()
+router.register(r'', ActivityViewSet)
+urlpatterns += router.urls

+ 57 - 0
apps/activity/views.py

@@ -0,0 +1,57 @@
+# coding=utf-8
+
+from django.db import transaction
+
+from rest_framework.decorators import action
+
+from utils import response_ok
+from utils.custom_modelviewset import CustomModelViewSet
+from utils.exceptions import CustomError
+
+from apps.foundation.models import BizLog
+from apps.account import tenant_log
+
+from .filters import ActivityFilter
+from .serializers import ActivitySerializer
+from .models import Activity
+
+
+class ActivityViewSet(CustomModelViewSet):
+    queryset = Activity.objects.filter(is_deleted=False)
+    serializer_class = ActivitySerializer
+
+    def filter_queryset(self, queryset):
+        f = ActivityFilter(self.request.GET, queryset=queryset)
+        return f.qs
+
+    def perform_create(self, serializer):
+        super(ActivityViewSet, self).perform_create(serializer)
+        instance = serializer.instance
+        validated_data = serializer.validated_data
+        tenant_log(self.request.user, BizLog.INSERT, u'添加活动[%s],id=%d' % (instance.title, instance.id), validated_data)
+
+    @action(methods=['post'], detail=True)
+    def update_obj(self, request, pk):
+        '''
+        由于layui上传文件使用的是post方法,且不能改为put方法,所以不能通过重写update来实现更新实例
+        '''
+        obj = self.get_object()
+        if obj.is_deleted:
+            raise CustomError(u'该活动已删除,禁止操作!')
+
+        with transaction.atomic():
+            serializer = self.get_serializer(obj, data=request.data)
+            serializer.is_valid(raise_exception=True)
+            self.perform_update(serializer)
+            instance = serializer.instance
+            validated_data = serializer.validated_data
+            tenant_log(self.request.user, BizLog.UPDATE, u'修改活动[%s],id=%d' % (instance.title, instance.id), validated_data)
+        return response_ok()
+
+    def destroy(self, request, *args, **kwargs):
+        with transaction.atomic():
+            instance = self.get_object()
+            instance.is_deleted = True
+            instance.save()
+            tenant_log(self.request.user, BizLog.DELETE, u'删除活动[%s],id=%d' % (instance.title, instance.id))
+        return response_ok()

+ 4 - 0
apps/images/models.py

@@ -57,6 +57,7 @@ class ImagesManager(models.Manager):
             Images.USEDVEHICLE_THUMBNAIL: usedvehicle_thumbnail_file,
             Images.PRODUCT_COVER: product_cover,
             Images.PRODUCT_FILE: product_file,
+            Images.ACTIVITY_COVER: activity_cover,
         }
 
         return path_map[type] + str(user_id) + '/'
@@ -76,17 +77,20 @@ usedvehicle_file = "usedvehicle/detail/"
 usedvehicle_thumbnail_file = "usedvehicle/"
 product_file = "product/file/"
 product_cover = "product/"
+activity_cover = "activity/"
 
 class Images(models.Model):
     USEDVEHICLE_FILE = 1
     USEDVEHICLE_THUMBNAIL = 2
     PRODUCT_COVER = 3
     PRODUCT_FILE = 4
+    ACTIVITY_COVER = 5
     TYPE_CHOICES = (
         (USEDVEHICLE_FILE, u'二手车图片'),
         (USEDVEHICLE_THUMBNAIL, u'二手车缩略图'),
         (PRODUCT_COVER, u'商品封面图'),
         (PRODUCT_FILE, u'商品图片'),
+        (ACTIVITY_COVER, u'活动封面图'),
     )
 
     user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u'操作人', on_delete=models.PROTECT)

+ 0 - 0
apps/product/migrations/__init__.py


+ 4 - 1
apps/product/views.py

@@ -20,7 +20,6 @@ class ProductViewSet(CustomModelViewSet):
     serializer_class = ProductSerializer
 
     def filter_queryset(self, queryset):
-        queryset = queryset.filter()
         f = ProductFilter(self.request.GET, queryset=queryset)
         return f.qs
 
@@ -34,6 +33,8 @@ class ProductViewSet(CustomModelViewSet):
     def update_obj(self, request, pk):
         '''由于layui上传文件使用的是post方法,且不能改为put方法,所以不能通过重写update来实现更新实例'''
         obj = self.get_object()
+        if obj.is_deleted:
+            raise CustomError(u"该商品已删除,禁止修改!")
         with transaction.atomic():
             serializer = self.get_serializer(obj, data=request.data)
             serializer.is_valid(raise_exception=True)
@@ -54,6 +55,8 @@ class ProductViewSet(CustomModelViewSet):
     @action(methods=['post'], detail=True)
     def upload_images(self, request, pk):
         instance = self.get_object()
+        if instance.is_deleted:
+            raise CustomError(u"该商品已删除,禁止修改!")
         images = request.FILES.get('images', None)
 
         with transaction.atomic():

+ 1 - 1
shop/settings.py

@@ -48,7 +48,7 @@ INSTALLED_APPS = [
     'apps.usedvehicle',
     'apps.images',
     'apps.product',
-    # 'apps.shop',
+    'apps.activity',
     # 'apps.employee',
     # 'apps.option',
     # 'apps.package',

+ 1 - 1
shop/urls.py

@@ -27,7 +27,7 @@ urlpatterns = [
     url(r'^foundation/', include('apps.foundation.urls')),
     url(r'^usedvehicle/', include('apps.usedvehicle.urls')),
     url(r'^product/', include('apps.product.urls')),
-    # url(r'^customer/', include('apps.customer.urls')),
+    url(r'^activity/', include('apps.activity.urls')),
     # url(r'^api/', include('apps.api.urls')),
 ]
 

+ 93 - 0
uis/views/activity/details.html

@@ -0,0 +1,93 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>商品详情</title>
+    <meta name="renderer" content="webkit">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+  <link rel="stylesheet" href="../../layuiadmin/layui/css/layui.css" media="all">
+  <link rel="stylesheet" href="../../layuiadmin/style/admin.css" media="all">
+</head>
+<body>
+    <div class="layui-fluid">
+        <div class="layui-card">
+            <div class="layui-card-body" pad15>
+               <div class="layui-tab layui-tab-card">
+                   <ul class="layui-tab-title">
+                       <li class="layui-this">活动信息</li>
+                       <li>活动介绍</li>
+                   </ul>
+                   <div class="layui-tab-content">
+                       <div class="layui-tab-item layui-show">
+                           <table class="layui-table">
+                               <tr>
+                                   <th style="width: 80px;">标题</th>
+                                   <td id="title" class="cell"></td>
+                               </tr>
+                               <tr>
+                                   <th>截止日期</th>
+                                   <td id="end_date" class="cell"></td>
+                               </tr>
+                               <tr>
+                                   <th>备注</th>
+                                   <td id="notes" class="cell"></td>
+                               </tr>
+                               <tr>
+                                   <th>添加人</th>
+                                   <td id="create_user_t" class="cell"></td>
+                               </tr>
+                               <tr>
+                                   <th>添加时间</th>
+                                   <td id="create_time" class="cell"></td>
+                               </tr>
+                               <tr>
+                                   <th>封面图</th>
+                                   <td>
+                                       <a id="cover_a" href="#" target="">
+                                       <img class="layui-upload-img" id="cover_url" target="_blank" style="max-height: 250px;">
+                                       </a>
+                                   </td>
+                               </tr>
+
+                           </table>
+                       </div>
+                       <div class="layui-tab-item">
+                            <div id="describe">
+                           </div>
+                       </div>
+                   </div>
+               </div>
+            </div>
+        </div>
+    </div>
+
+    <script src="../../layuiadmin/layui/layui.js?t=1"></script>
+    <script>
+        layui.config({
+            base: '../../../layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'table','laydate', 'utils'], function () {
+            var $ = layui.$;
+            var admin = layui.admin;
+
+            var id = layui.view.getParameterByName('id');
+            var editdata = JSON.parse(JSON.stringify(parent.layui.table.editdata));
+            if (editdata.cover_url) {
+                $('#cover_url').attr('src', editdata.cover_url);
+                $('#cover_a').attr('href', editdata.cover_url);
+                $('#cover_a').attr('target', '_blank');
+            }
+
+            $('.cell').each(function (index, element) {
+                element.innerHTML =  (editdata[element.id])
+            });
+
+            if (editdata.describe) {
+                $('#describe').html(editdata.describe)
+            }
+        })
+    </script>
+</body>
+</html>

+ 178 - 0
uis/views/activity/edit.html

@@ -0,0 +1,178 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>添加/修改活动</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="../../layuiadmin/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../layuiadmin/style/admin.css" media="all">
+    <link rel="stylesheet" type="text/css" href="../../layuiadmin/style/formSelects-v4.css"/>
+    <link rel="stylesheet" type="text/css" href="../../layuiadmin/layui/ueditor/themes/default/css/umeditor.css"/>
+    <script type="text/javascript" src="../../layuiadmin/layui/ueditor/third-party/jquery.min.js"></script>
+    <script type="text/javascript" charset="utf-8" src="../../layuiadmin/layui/ueditor/umeditor.config.js"></script>
+    <script type="text/javascript" charset="utf-8" src="../../layuiadmin/layui/ueditor/umeditor.js"></script>
+    <script type="text/javascript" src="../../layuiadmin/layui/ueditor/lang/zh-cn/zh-cn.js"></script>
+    <style>
+
+
+    </style>
+</head>
+<body>
+
+<div class="layui-fluid">
+    <div class="layui-row layui-col-space15">
+        <div class="layui-card">
+
+            <div class="layui-card-body" pad15>
+                <form class="layui-form" action="" lay-filter="component-form-element">
+                    <div class="layui-row layui-col-space10 layui-form-item">
+                        <div>
+                            <label class="layui-form-label"><font color='red' size="4">*</font>标题:</label>
+                            <div class="layui-input-block">
+                                <input type="text" name="title" lay-verify="required" placeholder="请输入标题" autocomplete="off" class="layui-input">
+                            </div>
+                        </div>
+                        <div>
+                            <label class="layui-form-label"><font color='red' size="4">*</font>截止日期:</label>
+                            <div class="layui-input-block">
+                                <input id="date" type="text" name="end_date" placeholder="请输入活动截止日期" autocomplete="off" class="layui-input" lay-verify="required">
+                            </div>
+                        </div>
+                        <div style="margin-top: 20px;">
+                            <label class="layui-form-label"><font color='red' size="4">*</font>活动介绍:</label>
+                            <div class="layui-input-block">
+                                <script type="text/plain" id="myEditor"></script>
+                            </div>
+                        </div>
+                        <div>
+                            <label class="layui-form-label">备注:</label>
+                            <div class="layui-input-block">
+                                <input type="text" name="notes" placeholder="请输入备注" autocomplete="off" class="layui-input">
+                            </div>
+                        </div>
+                        <div>
+                            <label class="layui-form-label"><font color='red' size="4">*</font>封面:</label>
+                            <div class="layui-input-block">
+                                <button type="button" class="layui-btn-sm" id="test1">上传图片</button><br><br>
+                                <img class="layui-upload-img" id="demo1" style="max-height: 250px; max-width: 300px;">
+                            </div>
+                        </div>
+                        <button class="layui-btn" id="id_save" lay-submit lay-filter="component-form-element" style="display: none">保存</button>
+                        <button class="layui-btn" type="button" id="upload_image" style="display: none"></button>
+                    </div>
+                </form>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="../../layuiadmin/layui/layui.js"></script>
+<script>
+    layui.config({
+        base: '../../../layuiadmin/' //静态资源所在路径
+    }).extend({
+        index: 'lib/index',
+        formSelects: 'formSelects-v4'
+    }).use(['index', 'form', 'utils', 'upload', 'laydate'], function(){
+        var $ = layui.$
+            ,admin = layui.admin
+            ,upload = layui.upload
+            ,laydate = layui.laydate
+            ,form = layui.form;
+        var id = layui.view.getParameterByName('id');
+
+        var um = UM.getEditor('myEditor');
+        um.setWidth('100%');
+        $(".edui-body-container").css("width", "98%");
+
+        laydate.render({
+            elem: '#date'
+            ,type: 'date'
+            ,trigger: 'click'
+        });
+
+
+        if(id){
+            var editdata = JSON.parse(JSON.stringify(parent.layui.table.editdata)); // 框架有Bug所以这么转换
+            form.val("component-form-element", editdata);
+            um.setContent(editdata.describe);
+            if(editdata.cover_url){
+                $('#demo1').attr('src', editdata.cover_url);
+            }
+        }
+
+        form.render(null, 'component-form-element');
+
+        var form_data = {field:{}};
+        if (id){
+            var url = '/activity/'+id + '/update_obj/';
+        }else{
+            url =  '/activity/';
+        }
+
+        upload.render({
+            elem: '#test1',
+            url: url,
+            auto: false,
+            field: 'image',
+            bindAction: '#upload_image',
+            choose: function(obj) {
+                obj.preview(
+                    function(index, file, result) {
+                        $('#demo1').attr('src', result);
+                    }
+                );
+            },
+            data:{
+                title: function(){return form_data.field.title;},
+                end_date: function(){return form_data.field.end_date;},
+                describe: function(){return form_data.field.describe;},
+                notes: function(){return form_data.field.notes;},
+            },
+            done: function (res) {
+                if (res.code !== 0) {
+                    layer.msg(res.msg);
+                }else {
+                    parent.layui.onSubmitChild(res.data);
+                }
+            },
+            error: function () {
+                layer.msg('保存失败');
+            }
+        });
+
+
+        form.on('submit(component-form-element)', function(data){
+            if (!id && !data.field.image){
+                layer.msg('请上传活动封面!', {icon: 5});
+                return false;
+            }
+
+            var describe = UM.getEditor('myEditor').getContent();
+            data.field['describe'] = describe;
+
+            if (data.field.image){
+                form_data = data;
+                $('#upload_image').click();
+            }else{
+                var save_data = data.field;
+                admin.req({
+                    url: url
+                    ,data: save_data
+                    ,type: 'post'
+                    ,done: function(res){
+                        parent.layui.onSubmitChild(res.data);
+                    }
+                });
+            }
+            return false;
+        });
+
+        parent.layui.submitChild = function () {
+            $("#id_save").click();
+        };
+    });
+</script>
+</body>
+</html>

+ 171 - 0
uis/views/activity/index.html

@@ -0,0 +1,171 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="utf-8">
+  <title>活动管理</title>
+  <meta name="renderer" content="webkit">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+  <link rel="stylesheet" href="../../layuiadmin/layui/css/layui.css" media="all">
+  <link rel="stylesheet" href="../../layuiadmin/style/admin.css" media="all">
+  <link rel="stylesheet" type="text/css" href="../../layuiadmin/style/formSelects-v4.css"/>
+    <style type="text/css">
+    .LAY-btns .layui-nav {padding-left:0;padding-right:10px;top:-4px;margin: 0 10px;border: 0;background-color: #009688;}
+    .LAY-btns .layui-nav .layui-nav-item{line-height: 30px;}
+    .LAY-btns .layui-nav .layui-nav-child{top:34px;}
+    .LAY-btns .layui-nav .layui-nav-bar{display: none;}
+    .LAY-btns .layui-nav .layui-nav-child dd.layui-this a{color:#333;background-color:#fff;}
+    .LAY-btns .layui-nav .layui-nav-child dd.layui-this a:hover {background-color: #f2f2f2;color: #000;}
+    .seach_items {float:right;margin-left: 10px;}
+  </style>
+</head>
+<body>
+
+  <div class="layui-fluid">
+    <div class="layui-card">
+        <div class="layui-card-body" pad15>
+        <div class="layui-row layui-col-space15">
+          <div class="layui-col-md12">
+            <div class="LAY-btns" style="margin-bottom: 10px;">
+                <div class="layui-col-xs2">
+                    <button class="layui-btn" id="btn_add"><i class="layui-icon layui-icon-add-circle"></i>添加</button>
+                </div>
+                <form class="layui-form" lay-filter="query-form-element">
+                    <div class="seach_items">
+                        <button class="layui-btn" lay-submit lay-filter="query-form-element"><i class="layui-icon layui-icon-search"></i>查询</button>
+                    </div>
+                    <div class="seach_items">
+                        <input type="text"  name="title" autocomplete="off" class="layui-input" placeholder="标题"/>
+                    </div>
+                </form>
+                <div style="clear: both;"></div>
+            </div>
+            <table class="layui-hide" id="datagrid" lay-filter="datagrid-operate"></table>
+
+            <script type="text/html" id="datagrid-operate-bar">
+                <div class="layui-btn-group">
+                    <a class="layui-btn layui-btn-xs" lay-event="detail">查看</a>
+                    <a class="layui-btn layui-btn-warm layui-btn-xs" lay-event="edit">修改</a>
+                    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
+                </div>
+            </script>
+          </div>
+        </div>
+        </div>
+    </div>
+  </div>
+
+  <script src="../../layuiadmin/layui/layui.js?t=1"></script>
+  <script>
+  layui.config({
+    base: '../../../layuiadmin/' //静态资源所在路径
+  }).extend({
+    index: 'lib/index' //主入口模块
+     ,formSelects: 'formSelects-v4'
+  }).use(['index', 'table', 'form', 'formSelects'], function(){
+    var $ = layui.$
+        ,table = layui.table
+        ,form = layui.form;
+
+
+    table.render({
+      elem: '#datagrid'
+      ,url: '/activity/'
+      ,cols: [[
+       {field:'title', title:'标题',width: 200}
+       ,{field:'end_date', title:'截止日期',width: 170}
+       ,{field:'notes', title:'备注',width: 350}
+       ,{field:'create_user_t', title:'添加人',width: 100}
+       ,{field:'create_time', title:'添加时间',width: 170}
+        ,{width: 140, align:'center', fixed: 'right', toolbar: '#datagrid-operate-bar'}
+      ]]
+      ,page: true
+      ,height: 'full-108'
+      , done: function () {
+        layui.index.removeNoPermButtons()
+      }
+    });
+    form.on('submit(query-form-element)', function(data){
+      //layer.msg(JSON.stringify(data.field));
+      table.reload('datagrid', {
+          where: data.field
+          ,page:{curr:1}
+      });
+      layer.closeAll();
+      return false;
+    });
+    //监听工具条
+    table.on('tool(datagrid-operate)', function(obj){
+      var data = obj.data;
+      table.editdata = data;
+        if(obj.event === 'edit'){
+            if (data.is_deleted) {
+                layer.msg('该活动已删除,禁止修改!');
+                return;
+            }
+        layer.open({
+          type: 2,
+          title: '修改',
+          shadeClose: false,
+          area: ['70%', '90%'],
+          btn: ['保存', '取消'],
+          yes: function (index, dom) {
+            layui.onSubmitChild = function (data) {
+                layer.close(index);
+                table.reload('datagrid', {});
+              };
+              layui.submitChild();
+          },
+          btn2: function(index, layero){
+            layer.close(index);//关闭当前按钮
+          },
+          content: 'edit.html?id='+data.id
+        });
+      }else if(obj.event === 'detail'){
+        layer.open({
+          type: 2,
+          title: '查看',
+          shadeClose: true,
+          area: ['70%', '90%'],
+          content: 'details.html?id='+data.id
+        });
+      }else if(obj.event === 'del'){
+         layer.confirm('确定要删除吗?', function(index){
+                layer.close(index);
+                layui.admin.req({
+                    notice: true
+                    ,url: '/activity/'+data.id + '/'
+                    ,type: 'delete'
+                    ,done: function(res){
+                        table.reload('datagrid',{});
+                    }
+                });
+            });
+      }
+    });
+
+    $('#btn_add').on('click', function(){
+        layer.open({
+          type: 2,
+          title: '添加',
+          shadeClose: false,
+          area: ['70%', '90%'],
+          btn: ['保存', '取消'],
+          yes: function (index, dom) {
+            layui.onSubmitChild = function (data) {
+                layer.close(index);
+                table.reload('datagrid', {});
+              };
+              layui.submitChild();
+          },
+          btn2: function(index, layero){
+            layer.close(index);//关闭当前按钮
+          },
+          content: 'edit.html'
+        });
+    });
+  });
+  </script>
+</body>
+</html>
+

+ 3 - 0
uis/views/index.html

@@ -138,6 +138,9 @@
                 <dd data-name="nav">
                   <a lay-href="product/index.html">商品管理</a>
                 </dd>
+                <dd data-name="nav">
+                  <a lay-href="activity/index.html">活动管理</a>
+                </dd>
                 <dd data-name="nav">
                   <a lay-href="option/index.html">系统选项</a>
                 </dd>

+ 5 - 3
uis/views/product/details.html

@@ -86,9 +86,11 @@
 
             var id = layui.view.getParameterByName('id');
             var editdata = JSON.parse(JSON.stringify(parent.layui.table.editdata));
-            $('#cover_url').attr('src', editdata.cover_url);
-            $('#cover_a').attr('href', editdata.cover_url);
-            $('#cover_a').attr('target', '_blank');
+            if (editdata.cover_url) {
+                $('#cover_url').attr('src', editdata.cover_url);
+                $('#cover_a').attr('href', editdata.cover_url);
+                $('#cover_a').attr('target', '_blank');
+            }
             $('.cell').each(function (index, element) {
                 element.innerHTML =  (editdata[element.id])
             });

+ 4 - 0
uis/views/product/index.html

@@ -122,6 +122,10 @@
       var data = obj.data;
       table.editdata = data;
         if(obj.event === 'edit'){
+            if (data.is_deleted) {
+                layer.msg('该商品已删除,禁止修改!');
+                return;
+            }
         layer.open({
           type: 2,
           title: '修改',