wushaodong 3 gadi atpakaļ
vecāks
revīzija
9ea2667882

+ 4 - 3
apps/account/models.py

@@ -39,9 +39,11 @@ class UserManager(BaseUserManager):
 
 class User(AbstractBaseUser, PermissionsMixin):
     EMPLOYEE = 1
-    CUSTOMER = 2
+    SELLER = 2
+    CUSTOMER = 3
     TYPE_CHOICES = (
-        (EMPLOYEE, u'员工'),  # 内部员工
+        (EMPLOYEE, u'管理者'),  # 内部员工
+        (SELLER, u'业务员'),  # 客户
         (CUSTOMER, u'客户'),  # 客户
     )
     username = models.CharField(verbose_name=u'用户名', max_length=30, unique=True, db_index=True,
@@ -57,7 +59,6 @@ class User(AbstractBaseUser, PermissionsMixin):
     face = models.CharField(max_length=200, verbose_name=u'头像', null=True)
     ID_card = models.CharField(max_length=18, verbose_name=u"身份证号", null=True, blank=True)
     address = models.CharField(max_length=100, verbose_name=u"家庭住址", null=True, blank=True)
-    tel = models.CharField(max_length=15, verbose_name=u"手机", null=True, )
     position = models.CharField(max_length=15, verbose_name=u"岗位", null=True)
     create_user = models.ForeignKey('self', verbose_name='创建者', null=True, on_delete=models.PROTECT)
 

+ 14 - 1
apps/order/models.py

@@ -17,6 +17,8 @@ class Product(models.Model):
     enable = models.BooleanField(verbose_name=u'是否在用', default=True,)
     main_image = models.ForeignKey(Upload, verbose_name=u'主图', on_delete=models.SET_NULL, null=True,
                                    related_name='main_image')
+    notes = models.CharField(verbose_name=u'备注', max_length=200, null=True,)
+
     class Meta:
         db_table = "product"
         verbose_name = u"贷款产品"
@@ -37,8 +39,19 @@ class ProductImages(models.Model):
         ordering = ('id',)
         default_permissions = ()
 
-class Order(models.Model):
+    @staticmethod
+    def getById(id):
+        try:
+            id = int(id)
+        except:
+            raise CustomError(u'无效的ID')
 
+        instance = ProductImages.objects.filter(pk=id).first()
+        if not instance:
+            raise CustomError(u'未找到相应的产品图片')
+        return instance
+
+class Order(models.Model):
 
     category = models.PositiveSmallIntegerField(choices=order.CATEGORY_CHOICES, verbose_name=u"订单类型", default=order.ZERO)
     status = models.PositiveSmallIntegerField(choices=order.STATUS_CHOICES, verbose_name=u"订单状态", default=order.ZERO)

+ 8 - 2
apps/order/serializers.py

@@ -3,13 +3,19 @@ import datetime
 from rest_framework import serializers
 from .models import *
 from django.conf import settings
-from utils.booleancharfield import PriceShowCharField
-from apps.base import Formater
+from utils.booleancharfield import BooleanCharField
 
 class ProductSerializer(serializers.ModelSerializer):
+    enable = BooleanCharField()
     create_user_text = serializers.CharField(source='create_user.username', read_only=True)
     create_time_f = serializers.DateTimeField(source='create_time', format=settings.SHORT_DATETIME_FORMAT,
                                               read_only=True)
+    main_image_url = serializers.CharField(source='main_image.picture', read_only=True)
+    detail_image = serializers.SerializerMethodField()
+
+    def get_detail_image(self, obj):
+        count = ProductImages.objects.filter(product=obj).count()
+        return count
 
     class Meta:
         model = Product

+ 1 - 0
apps/order/urls.py

@@ -5,6 +5,7 @@ from rest_framework.routers import SimpleRouter
 from .views import *
 
 urlpatterns = [
+    url(r'^deleteProductImage/$', DeleteProductImageView.as_view()),
     url(r'productDict/$', ProductView.as_view()),
 ]
 

+ 78 - 1
apps/order/views.py

@@ -12,7 +12,7 @@ from apps.base import Formater
 from utils import response_ok, response_error
 from utils.permission import isLogin
 from apps.order.models import Order
-from apps.WeChatResponse import WechatAppletPay
+from rest_framework.decorators import action
 from django.contrib.auth import get_user_model
 
 User = get_user_model()
@@ -32,6 +32,24 @@ class ProductView(APIView):
             data.append(item)
         return response_ok(data)
 
+class DeleteProductImageView(APIView):
+    permission_classes = [isLogin, ]
+
+    def post(self, request, *args, **kwargs):
+        # 商品图片 删除
+        id = request.GET.get('id')
+        try:
+            instance = ProductImages.getById(id)
+            image = Upload.objects.filter(id=instance.image_id).first()
+            with transaction.atomic():
+                instance.delete()
+                image.del_images()
+        except CustomError as e:
+            return response_error(e.get_error_msg())
+        except Exception as e:
+            return response_error(str(e))
+        return response_ok()
+
 class ProductViewSet(CustomModelViewSet):
     permission_classes = [isLogin, ]
     queryset = Product.objects.filter()
@@ -41,6 +59,65 @@ class ProductViewSet(CustomModelViewSet):
         f = ProductFilter(self.request.GET, queryset=queryset)
         return f.qs
 
+    @action(methods=['post'], detail=True)
+    def upload_image(self, request, pk):
+        banner_img = request.FILES.get('banner_img')
+        try:
+            with transaction.atomic():
+                instance = self.get_object()
+                upload = Upload.objects._addnew(banner_img, 'commodity_image')
+                if upload:
+                    if instance.main_image_id:
+                        img = Upload.objects.filter(id=instance.main_image_id).first()
+                        img.del_images()
+                    instance.main_image_id = upload.id
+                    instance.save()
+                    return response_ok(upload.id)
+                return response_error('上传失败,请重新上传!')
+        except CustomError as e:
+            return response_error(e.get_error_msg())
+        except Exception as e:
+            return response_error(str(e))
+
+    @action(methods=['post'], detail=True)
+    def upload_detail_img(self, request, pk):
+        # 上传详情、参数图片
+        try:
+            with transaction.atomic():
+                instance = self.get_object()
+                for i in range(10):
+                    file = request.data.get('file{}'.format(i))
+                    if file:
+                        upload = Upload.objects._addnew(file, 'commodity_image')
+                        ProductImages.objects.create(product_id=instance.id,
+                                                           image_id=upload.id)
+
+                        if not upload:
+                            return response_error('上传失败,请重新上传!')
+        except CustomError as e:
+            return response_error(e.get_error_msg())
+        except Exception as e:
+            return response_error(str(e))
+        return response_ok()
+
+    @action(methods=['post'], detail=True)
+    def query_detail_img(self, request, pk):
+        # 查看 详情图片
+        instance = self.get_object()
+        data = []
+
+        commodity_images = ProductImages.objects.filter(product_id=instance.id)
+        for commodity_image in commodity_images:
+            image = Upload.objects.filter(id=commodity_image.image_id).first()
+            image_path = image.get_path()
+            commodity_image_item = {
+                'id': commodity_image.id,
+                'name': commodity_image.name,
+                'src': image_path,
+            }
+            data.append(commodity_image_item)
+        return response_ok(data)
+
 class OrderViewSet(CustomModelViewSet):
     permission_classes = [isLogin, ]
     queryset = Order.objects.filter()

+ 8 - 4
apps/upload/models.py

@@ -8,11 +8,11 @@ from utils.file_operation import UploadFile, DeleteFile
 
 class UploadManager(models.Manager):
 
-    def _addnew(self, file):
+    def _addnew(self, file, path):
         width = None
         height = None
 
-        path = UploadManager.calculatePath()
+        path = UploadManager.calculatePath(path)
         filename = UploadFile(file, path)
         fullname = "%s%s" % (settings.MEDIA_ROOT, filename)
         size = os.path.getsize(fullname)
@@ -55,10 +55,14 @@ class UploadManager(models.Manager):
         return instance
 
     @staticmethod
-    def calculatePath():
-        return commodity_image
+    def calculatePath(path='user_image'):
+        if path == 'commodity_image':
+            return commodity_image
+        elif path == 'user_image':
+            return user_image
 
 commodity_image = "product_image/"
+user_image = "user_image/"
 
 class Upload(models.Model):
     picture = models.CharField(verbose_name=u'图片路径', max_length=250)

+ 2 - 2
nostone_loan/settings.py

@@ -219,8 +219,8 @@ SERVER_DOMAIN = 'https://print.zzliaoyuan.com'
 # SERVER_DOMAIN = 'http://192.168.2.45:8887'
 
 JWT_AUTH = {
-    'JWT_EXPIRATION_DELTA': datetime.timedelta(days=30),
-    'JWT_REFRESH_EXPIRATION_DELTA': datetime.timedelta(days=360),
+    'JWT_EXPIRATION_DELTA': datetime.timedelta(days=1),
+    'JWT_REFRESH_EXPIRATION_DELTA': datetime.timedelta(days=1),
     'JWT_ALLOW_REFRESH': True,
 }
 

+ 3 - 3
uis/views/account/login.html

@@ -2,7 +2,7 @@
 <html>
 <head>
   <meta charset="utf-8">
-  <title>会员信息管理系统</title>
+  <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">
@@ -35,7 +35,7 @@
 
     <div class="layadmin-user-login-main">
       <div class="layadmin-user-login-box layadmin-user-login-header">
-        <h2>会员信息管理系统</h2>
+        <h2>业务审批系统</h2>
       </div>
       <form class="layui-form" action="" lay-filter="component-form-element">
       <div class="layadmin-user-login-box layadmin-user-login-body layui-form">
@@ -55,7 +55,7 @@
     </div>
 
     <div class="layui-trans layadmin-user-login-footer">
-      <p>© 2021 会员信息管理系统 <a href="http://www.zzliaoyuan.com/" target="_blank">郑州燎原计算机技术有限公司</a></p>
+      <p>© 2021 业务审批系统 <a href="http://www.zzliaoyuan.com/" target="_blank">郑州燎原计算机技术有限公司</a></p>
     </div>
 
   </div>

+ 0 - 69
uis/views/banner/detail.html

@@ -1,69 +0,0 @@
-<!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">
-    <style type="text/css">
-        .tenant-li {
-            margin: 10px
-        }
-
-        img {
-            width: 40%;
-            height: 30%;
-            margin-bottom: 20px;
-        }
-        /*企业营业执照样式*/
-        .imgStyle{
-            width: 200px;
-            height: auto;
-        }
-    </style>
-</head>
-<body>
-<div class="layui-card" style="min-height: 400px; padding: 10px" id="tenant_detail"></div>
-<script id="tenant_detail_demo" type="text/html">
-    <div class="layui-tab-item layui-show">
-        <ui>
-            {{# if(d.image){ }}
-            <li class="tenant-li">
-                <h3 style="margin-bottom: 10px">轮播图:</h3>
-                <img src="{{d.image}}" class="imgStyle" />
-            </li>
-            {{# } }}
-        </ui>
-    </div>
-</script>
-
-
-<script src="../../layuiadmin/layui/layui.js"></script>
-
-<script>
-    layui.config({
-        base: '../../../layuiadmin/' //静态资源所在路径
-    }).extend({
-        index: 'lib/index',
-    }).use(['index',  'laytpl'], function () {
-        var $ = layui.$
-            , laytpl = layui.laytpl;
-        var data = JSON.parse(JSON.stringify(parent.layui.table.editdata)); // 框架有Bug所以这么转换
-
-        var getTpl = tenant_detail_demo.innerHTML
-            , tenant_detail = document.getElementById('tenant_detail');
-        laytpl(getTpl).render(data, function (html) {
-            tenant_detail.innerHTML = html;
-        });
-        var dom = document.getElementById("content_demo");
-        if(data.content && dom){
-           dom.innerHTML = data.content;
-        }
-    });
-</script>
-</body>
-</html>

+ 0 - 160
uis/views/banner/index.html

@@ -1,160 +0,0 @@
-<!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">
-    <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 {
-            display: inline-block;
-            margin-right: 5px;
-            margin-top: 5px;
-        }
-    </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 style="float:left; margin-right: 5px; margin-top: 5px;">
-                            <button class="layui-btn" id="btn_add"><i class="layui-icon layui-icon-add-circle"></i>添加
-                            </button>
-                        </div>
-                        <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>
-                        </div>
-                        <div class="layui-btn-group">
-                            <a class="layui-btn layui-btn-xs" lay-event="delete">删除</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' //主入口模块
-    }).use(['index', 'table', 'form', 'upload'], function () {
-        var $ = layui.$
-            , table = layui.table
-            , form = layui.form;
-
-        table.render({
-            elem: '#datagrid'
-            , url: '/option/poster/'
-            , cols: [[
-                , {field: 'create_time', title: '添加时间', width: 200}
-                , {title: "操作", width: 120, align: 'left', fixed: 'right', toolbar: '#datagrid-operate-bar'}
-            ]]
-            , page: true
-            , height: 'full-108'
-        });
-        var _params;
-        form.on('submit(query-form-element)', function (data) {
-            //layer.msg(JSON.stringify(data.field));
-            _params = 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;
-            if (obj.event === 'detail') {
-                table.editdata = data;
-                layer.open({
-                    type: 2,
-                    title: "详情",
-                    shadeClose: false,
-                    area: ['700px', '500px'],
-                    content: 'detail.html'
-                })
-            } else if (obj.event === 'delete') {
-                layer.confirm('确定要删除吗?', function (index) {
-                    layer.close(index);
-                    layui.admin.req({
-                        url: '/option/poster/' + data.id + '/'
-                        , done: function (res) {
-                            table.reload('datagrid', {});
-                        }
-                    });
-                });
-            }
-        });
-
-        $('#btn_add').on('click', function () {
-            layer.open({
-                type: 2,
-                title: '添加',
-                shadeClose: false,
-                btn: ['保存', '取消'],
-                area: ['700px', '700px'],
-                yes: function (index, dom) {
-                    layui.submitChild();
-                },
-                btn2: function (index, layero) {
-                    layer.close(index);//关闭当前按钮
-                },
-                content: 'edit.html'
-            });
-        });
-
-    });
-</script>
-</body>
-</html>
-

+ 10 - 7
uis/views/employee/edit.html

@@ -40,13 +40,6 @@
                                     <input type="radio" name="gender" value="1" title="女">
                                 </div>
                             </div>
-                            <div class="layui-col-lg6">
-                                <label class="layui-form-label"><font color='red' size="4">*</font>电话:</label>
-                                <div class="layui-input-block">
-                                    <input type="text" name="tel" placeholder="请输入电话" lay-verify="required"
-                                           autocomplete="off" class="layui-input">
-                                </div>
-                            </div>
 
                             <div class="layui-col-lg6">
                                 <label class="layui-form-label"><font color='red' size="4">*</font>账号:</label>
@@ -65,6 +58,16 @@
                                 </div>
                             </div>
 
+                            <div class="layui-col-lg6">
+                                <label class="layui-form-label">类型:</label>
+                                <div class="layui-input-block">
+                                    <select name="type">
+                                        <option value="2">业务员</option>
+                                        <option value="1">管理者</option>
+                                    </select>
+                                </div>
+                            </div>
+
                             <div class="layui-col-lg6">
                                 <label class="layui-form-label">是否在用:</label>
                                 <div class="layui-input-block">

+ 1 - 4
uis/views/employee/index.html

@@ -38,10 +38,6 @@
                                     <input type="text" name="name" autocomplete="off" class="layui-input"
                                            placeholder="姓名"/>
                                 </div>
-                                <div class="seach_items">
-                                    <input type="text" name="tel" autocomplete="off" class="layui-input"
-                                           placeholder="电话"/>
-                                </div>
                                 <div class="seach_items">
                                     <input type="text" name="username" autocomplete="off" class="layui-input"
                                            placeholder="账号"/>
@@ -88,6 +84,7 @@
                 , {field: 'gender_text', title: '性别', width: 80}
                 , {field: 'tel', title: '电话', width: 120}
                 , {field: 'username', title: '账号', width: 120}
+                , {field: 'type_text', title: '类别', width: 120}
                 , {field: 'enable_text', title: '是否在用', width: 100}
                 , {field: 'date_joined_f', title: '添加时间', width: 150}
                 , {width: 100, align: 'center', fixed: 'right', toolbar: '#datagrid-operate-bar'}

+ 0 - 178
uis/views/employee/member.html

@@ -1,178 +0,0 @@
-<!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">
-        .seach_items {
-            display: inline-block;
-            margin-right: 5px;
-            margin-top: 5px;
-        }
-    </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 style="float:right;">
-                            <form class="layui-form" lay-filter="query-form-element">
-                                <div class="seach_items">
-                                    <input type="text" name="name" autocomplete="off" class="layui-input"
-                                           placeholder="姓名"/>
-                                </div>
-                                <div class="seach_items">
-                                    <input type="text" name="tel" autocomplete="off" class="layui-input"
-                                           placeholder="电话"/>
-                                </div>
-                                <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>
-                            </form>
-                        </div>
-                        <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="clear_balance"
-                            >清空余额</a>
-                        </div>
-                    </script>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-<div id="clear_balance" style="display: none">
-    <div class="layui-card-body" pad15>
-        <form class="layui-form" lay-filter="form-change">
-            <div class="layui-row layui-col-space10 layui-form-item">
-                <div class="layui-col-xs12 layui-col-sm12">
-                    <label class="layui-form-label"><font color='red' size="4">*</font>清空原因:</label>
-                    <div class="layui-input-block">
-                        <input type="text" class="layui-input" name="reason"
-                               lay-verify="required" placeholder="请输入清空原因">
-                    </div>
-                </div>
-                <div class="layui-form-item" style="text-align:right">
-                    <button class="layui-btn" lay-submit id="clear_balance_btn" lay-filter="form-change"
-                            style="display: none">保存
-                    </button>
-                </div>
-            </div>
-        </form>
-    </div>
-</div>
-<script src="../../layuiadmin/layui/layui.js?t=1"></script>
-<script>
-    layui.config({
-        base: '../../../layuiadmin/' //静态资源所在路径
-    }).extend({
-        index: 'lib/index' //主入口模块
-    }).use(['index', 'table', 'form', 'admin'], function () {
-        var $ = layui.$
-            , table = layui.table
-            , admin = layui.admin
-            , form = layui.form;
-
-        table.render({
-            elem: '#datagrid'
-            , url: '/option/balance/'
-            , cols: [[
-                {field: 'create_user_text', title: '电话', width: 120}
-                , {field: 'date_joined_f', title: '注册时间', width: 150}
-                , {field: 'balance', title: '余额', width: 150}
-                , {width: 100, align: 'center', fixed: 'right', toolbar: '#datagrid-operate-bar'}
-            ]]
-            , page: true
-            , height: 'full-108'
-        });
-        var _params;
-        form.on('submit(query-form-element)', function (data) {
-            //layer.msg(JSON.stringify(data.field));
-            _params = data.field;
-            table.reload('datagrid', {
-                where: data.field
-                , page: {curr: 1}
-            });
-            layer.closeAll();
-            return false;
-        });
-        form.on('submit(form-change)', function (data) {
-            admin.req({
-                url: '/option/balance/clear_balance/?create_user=' + create_user
-                , data: data.field
-                , type: 'post'
-                , done: function (res) {
-                    layer.closeAll();
-                    table.reload('datagrid', {});
-                }
-            });
-            return false;
-        });
-        var create_user = ''
-        //监听工具条
-        table.on('tool(datagrid-operate)', function (obj) {
-            var data = obj.data;
-            if (obj.event === 'clear_balance') {
-                if (parseFloat(data.balance) <= 0) {
-                    layer.msg("余额为0,不能清空!", {icon: 2});
-                    return false
-                }
-                create_user = data.create_user
-                layer.open({
-                    type: 1,
-                    title: '清空余额',
-                    area: ['40%', '40%'],
-                    btn: ['保存', '取消'],
-                    yes: function (index, dom) {
-                        $('#clear_balance_btn').click();
-                    },
-                    btn2: function (index, layero) {
-                        layer.close(index);//关闭当前按钮
-                    },
-                    content: $('#clear_balance')
-                });
-            }
-        });
-
-        $('#btn_add').on('click', function () {
-            layer.open({
-                type: 2,
-                title: '添加',
-                shadeClose: false,
-                area: ['550px', '80%'],
-                btn: ['保存', '取消'],
-                yes: function (index, dom) {
-                    layui.onSubmitChild = function (res) {
-                        layer.close(index);
-                        table.reload('datagrid', {});
-                    };
-                    layui.submitChild();
-                },
-                btn2: function (index, layero) {
-                    layer.close(index);//关闭当前按钮
-                },
-                content: 'edit.html'
-            });
-        });
-    });
-</script>
-</body>
-</html>
-

+ 4 - 13
uis/views/index.html

@@ -2,7 +2,7 @@
 <html>
 <head>
     <meta charset="utf-8">
-    <title>会员信息管理</title>
+    <title>业务审批</title>
     <meta name="renderer" content="webkit">
     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
     <meta name="viewport"
@@ -65,7 +65,7 @@
         <div class="layui-side layui-side-menu">
             <div class="layui-side-scroll">
                 <div class="layui-logo">
-                    <span>会员信息管理系统</span>
+                    <span>业务审批系统</span>
                 </div>
 
                 <ul class="layui-nav layui-nav-tree" lay-shrink="all" id="LAY-system-side-muen"
@@ -80,19 +80,10 @@
                                 <a lay-href="employee/index.html">人员管理</a>
                             </dd>
                             <dd data-name="nav">
-                                <a lay-href="employee/member.html">会员信息</a>
+                                <a lay-href="product/index.html">产品管理</a>
                             </dd>
                             <dd data-name="nav">
-                                <a lay-href="order/package.html">套餐设置</a>
-                            </dd>
-                            <dd data-name="nav">
-                                <a lay-href="order/index.html">缴费信息</a>
-                            </dd>
-                            <dd data-name="nav">
-                                <a lay-href="option/balance_log.html">余额明细</a>
-                            </dd>
-                            <dd data-name="nav">
-                                <a lay-href="banner/index.html">轮播设置</a>
+                                <a lay-href="order/index.html">订单管理</a>
                             </dd>
                         </dl>
                     </li>

+ 0 - 120
uis/views/option/balance_log.html

@@ -1,120 +0,0 @@
-<!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: 40px;
-        }
-
-        .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 {
-            display: inline-block;
-            margin-right: 5px;
-            margin-top: 5px;
-        }
-    </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">
-                    <table class="layui-hide" id="datagrid" lay-filter="datagrid-operate"></table>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-
-<script src="../../layuiadmin/layui/layui.js?t=1"></script>
-<script type="text/html" id="toolbarDemo">
-    <form class="layui-form" lay-filter="query-form-element">
-        <div class="seach_items">
-            <input type="text" name="description" autocomplete="off" class="layui-input"
-                   placeholder="描述"/>
-        </div>
-        <button class="layui-btn layui-btn-sm" lay-submit lay-filter="query-form-element">查询
-        </button>
-    </form>
-</script>
-
-<script>
-    layui.config({
-        base: '../../../layuiadmin/' //静态资源所在路径
-    }).extend({
-        index: 'lib/index' //主入口模块
-        , formSelects: 'formSelects-v4'
-    }).use(['index', 'table', 'form', 'formSelects', 'upload'], function () {
-        var $ = layui.$
-            , table = layui.table
-            , form = layui.form;
-
-        table.render({
-            elem: '#datagrid'
-            , url: '/option/balance_log/'
-            , toolbar: '#toolbarDemo'
-            , title: '余额明细' //标题
-            , cols: [[
-                {field: 'description', title: '描述', width: 400}
-                , {field: 'amount', title: '金额',align: 'right', width: 200,}
-                , {field: 'balance', title: '现有余额',align: 'right', width: 200,}
-                , {field: 'create_user_text', title: '操作人', width: 200,}
-                , {field: 'create_time', title: '操作时间', width: 200,}
-            ]]
-            , page: true
-            , height: 'full-108'
-        });
-        var _params;
-        form.on('submit(query-form-element)', function (data) {
-            //layer.msg(JSON.stringify(data.field));
-            _params = data.field;
-            table.reload('datagrid', {
-                where: data.field
-                , page: {curr: 1}
-            });
-            form.val("query-form-element", data.field);
-            layer.closeAll();
-            return false;
-        });
-    });
-</script>
-</body>
-</html>
-

+ 0 - 101
uis/views/option/config.html

@@ -1,101 +0,0 @@
-<!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">
-    <style>
-        img {
-            width: 40%;
-            height: 30%;
-        }
-    </style>
-</head>
-<body>
-
-<div class="layui-fluid">
-    <div class="layui-card">
-        <div class="layui-card-body" pad15>
-            <form class="layui-form" action="" lay-filter="component-form-element">
-                <div class="layui-form-item">
-                    <div class="layui-inline">
-                        <label class="layui-form-label ">请假提前:</label>
-                        <div class="layui-input-inline">
-                            <input type="text" name="leave_lead_time" lay-verify="number" class="layui-input"
-                                   placeholder="整数"/>
-                        </div>
-                        <div class="layui-form-mid ">小时。以第二天凌晨0点为起点往前推,如:晚上22点截止第二天请假,填2小时。</div>
-                    </div>
-                    <br>
-
-                    <div class="layui-input-block">
-                        <button class="layui-btn" lay-submit lay-filter="component-form-element">保存
-                        </button>
-                        <button class="layui-btn" type="button" id="upload_image" style="display: none"></button>
-                    </div>
-                </div>
-            </form>
-        </div>
-    </div>
-</div>
-
-<script src="../../layuiadmin/layui/layui.js"></script>
-<script>
-    layui.config({
-        base: '../../../layuiadmin/' //静态资源所在路径
-    }).extend({
-        index: 'lib/index' //主入口模块
-    }).use(['index', 'form', 'utils'], function () {
-        var $ = layui.$
-            , admin = layui.admin
-            , form = layui.form;
-        form.render(null, 'component-form-element');
-
-        admin.req({
-            url: '/option/config/',
-            done: function (res) {
-                var data = res.data;
-                var edit_data = {};
-                for (var i in data) {
-                    edit_data[data[i].property] = data[i].value
-                }
-                form.val("component-form-element", edit_data);
-                form.render();
-            }
-        });
-
-        form.on('submit(component-form-element)', function (data) {
-            var save_data = [];
-            for (var key in data.field) {
-                save_data.push({key: key, value: data.field[key]})
-            }
-            admin.req({
-                url: '/option/config/'
-                , data: {data: JSON.stringify(save_data)}
-                , type: 'post'
-                , done: function (res) {
-                    layer.open({
-                        type: 1
-                        , content: '<div style="padding: 20px 100px;">保存成功</div>'
-                        , btn: '关闭'
-                        , btnAlign: 'c' //按钮居中
-                        , shade: 0 //不显示遮罩
-                        , yes: function () {
-                            layer.closeAll();
-                            //admin.exit();
-                        }
-                    });
-                }
-            });
-            return false;
-        });
-
-    });
-</script>
-</body>
-</html>

+ 108 - 0
uis/views/product/edit.html

@@ -0,0 +1,108 @@
+<!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"/>
+</head>
+<body>
+
+<div class="layui-fluid">
+    <div class="layui-row layui-col-space15">
+        <div class="layui-col-md6">
+            <div class="layui-card">
+
+                <div class="layui-card-body">
+                    <form class="layui-form" action="" lay-filter="component-form-element">
+
+                        <div class="layui-form-item">
+                            <label class="layui-form-label"><font color='red' size="4">*</font>名称:</label>
+                            <div class="layui-input-block">
+                                <input type="text" name="name" lay-verify="required" placeholder="请输入名称"
+                                       autocomplete="off" class="layui-input">
+                            </div>
+                        </div>
+
+                        <div class="layui-form-item">
+                            <label class="layui-form-label"><font color='red' size="4">*</font>贷款期限:</label>
+                            <div class="layui-input-block">
+                                <input type="text" name="month" lay-verify="number" placeholder="请输入贷款期限"
+                                       autocomplete="off" class="layui-input">
+                            </div>
+                        </div>
+
+                        <div class="layui-form-item">
+                            <label class="layui-form-label"><font color='red' size="4">*</font>是否在售:</label>
+                            <div class="layui-input-block">
+                                <input type="checkbox" name="enable" lay-skin="switch" lay-text="是|否" checked=""
+                                       value="1">
+                            </div>
+                        </div>
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">备注:</label>
+                            <div class="layui-input-block">
+                                <textarea type="text" name="notes" class="layui-textarea"
+                                          placeholder="请输入备注"></textarea>
+                            </div>
+                        </div>
+                        <button class="layui-btn" id="id_save" lay-submit lay-filter="component-form-element"
+                                style="display: none">保存
+                        </button>
+                    </form>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
+
+<script src="../../layuiadmin/layui/layui.js"></script>
+<script>
+    layui.config({
+        base: '../../../layuiadmin/' //静态资源所在路径
+    }).extend({
+        index: 'lib/index',
+    }).use(['index', 'form', 'utils',  ], function () {
+        var $ = layui.$
+            , admin = layui.admin
+            , form = layui.form;
+
+        var id = layui.view.getParameterByName('id');
+        form.render(null, 'component-form-element');
+
+        if (id) {
+            var editdata = JSON.parse(JSON.stringify(parent.layui.table.editdata)); // 框架有Bug所以这么转换
+            form.val("component-form-element", editdata);
+        }
+        var url = id ? '/order/product/' + id + '/' : '/order/product/',
+            method = id ? 'put' : 'post';
+
+        form.on('submit(component-form-element)', function (data) {
+            if(!data.field.enable){
+                data.field.enable = '0'
+            }
+
+            admin.req({
+                url: url
+                , data: data.field
+                , type: method
+                , done: function (res) {
+                    parent.layui.onSubmitChild(res);
+                }
+            });
+            return false;
+        });
+
+        parent.layui.submitChild = function () {
+            $("#id_save").click();
+        };
+    });
+</script>
+</body>
+</html>

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

@@ -0,0 +1,244 @@
+<!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=agent-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">
+    <style type="text/css">
+        .seach_items {
+            float: right;
+            margin-left: 10px;
+        }
+    </style>
+    <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: 40px;
+        }
+
+        .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;
+        }
+
+        .tableContent {
+            width: 100%;
+            display: flex;
+            justify-content: space-between;
+            flex-direction: row;
+        }
+    </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 style="float: left">
+                            <button class="layui-btn" id="product_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="name" autocomplete="off" class="layui-input"
+                                       placeholder="名称"/>
+                            </div>
+                        </form>
+                        <div style="clear: both;"></div>
+                    </div>
+                    <table class="layui-hide" id="product_datagrid" lay-filter="product-operate"></table>
+
+                    <script type="text/html" id="product-operate-bar">
+                        <div class="layui-btn-group">
+                            <a class="layui-btn layui-btn-xs" lay-event="product_edit"
+                            >修改</a>
+                        </div>
+                    </script>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script type="text/html" id="mainImage">
+    {{# if(d.main_image){ }}
+    <a class="layui-btn layui-btn-xs" lay-event="upload_main">查看</a>
+    {{# }else{ }}
+    <a class="layui-btn layui-btn-xs" lay-event="upload_main">上传</a>
+    {{# } }}
+</script>
+
+<script type="text/html" id="detailImage">
+    {{# if(d.detail_image){ }}
+    <a class="layui-btn layui-btn-xs" lay-event="upload_detail">查看({{ d.detail_image }})</a>
+    {{# }else{ }}
+    <a class="layui-btn layui-btn-xs" lay-event="upload_detail">上传</a>
+    {{# } }}
+</script>
+
+<script src="../../layuiadmin/layui/layui.js?t=1"></script>
+<script>
+    layui.config({
+        base: '../../../layuiadmin/' //静态资源所在路径
+    }).extend({
+        index: 'lib/index' //主入口模块
+    }).use(['index', 'table',], function () {
+        var $ = layui.$;
+        var table = layui.table
+            , form = layui.form;
+
+        table.render({
+            elem: '#product_datagrid'
+            , url: '/order/product/'
+            , cols: [[
+                {field: 'name', title: '商品名称', width: 300}
+                , {field: 'main_image', title: '主图', templet: '#mainImage', width: 80}
+                , {field: 'detail_image', title: '详情图', templet: '#detailImage', width: 90}
+                , {field: 'enable', title: '是否在售', width: 100}
+                , {field: 'create_user_text', title: '添加人', width: 100}
+                , {field: 'create_time_f', title: '添加时间', width: 150}
+                , {field: 'notes', title: '备注', width: 200}
+                , {width: 150, align: 'center', fixed: 'right', toolbar: '#product-operate-bar'}
+            ]]
+            , page: true
+            , height: 'full-108'
+            , done: function () {
+                layui.index.removeNoPermButtons();
+            }
+        });
+
+        //监听工具条
+        table.on('tool(product-operate)', function (obj) {
+            var data = obj.data;
+            table.editdata = data;
+            if (obj.event === 'product_edit') {
+                layer.open({
+                    type: 2,
+                    title: '修改',
+                    shadeClose: false,
+                    area: ['40%', '80%'],
+                    btn: ['保存', '取消'],
+                    yes: function (index, dom) {
+                        layui.onSubmitChild = function (res) {
+                            layer.close(index);
+                            table.reload('product_datagrid', {});
+                        };
+                        layui.submitChild();
+                    },
+                    btn2: function (index, layero) {
+                        layer.close(index);//关闭当前按钮
+                    },
+                    content: 'edit.html?id=' + data.id
+                });
+            } else if (obj.event === 'upload_main') {
+                layer.open({
+                    type: 2,
+                    title: '上传主图片',
+                    shadeClose: false,
+                    area: ['40%', '80%'],
+                    btn: ['保存', '取消'],
+                    yes: function (index, dom) {
+                        layui.onSubmitChild = function (res) {
+                            layer.close(index);
+                            table.reload('product_datagrid', {});
+                        };
+                        layui.submitChild();
+                    },
+                    btn2: function (index, layero) {
+                        layer.close(index);//关闭当前按钮
+                        table.reload('product_datagrid', {});
+                    },
+                    content: 'uploadImage.html?id=' + data.id + '&type=' + obj.event
+                });
+            } else if (obj.event === 'upload_detail') {
+                layer.open({
+                    type: 2,
+                    title: '上传详情图片',
+                    shadeClose: false,
+                    area: ['80%', '80%'],
+                    btn: ['保存', '取消'],
+                    yes: function (index, dom) {
+                        layui.onSubmitChild = function (res) {
+                            layer.close(index);
+                            table.reload('product_datagrid', {});
+                        };
+                        layui.submitChild();
+                    },
+                    btn2: function (index, layero) {
+                        layer.close(index);//关闭当前按钮
+                        table.reload('product_datagrid', {});
+                    },
+                    content: 'uploadDetailImg.html?id=' + data.id + '&type=' + obj.event
+                });
+            }
+        });
+
+        form.on('submit(query-form-element)', function (data) {
+            table.reload('product_datagrid', {
+                where: data.field
+                , page: {curr: 1}
+            });
+            layer.closeAll();
+            return false
+        });
+
+        $('#product_add').on('click', function () {
+            layer.open({
+                type: 2,
+                title: '添加',
+                area: ['40%', '80%'],
+                btn: ['保存', '取消'],
+                yes: function (index, dom) {
+                    layui.onSubmitChild = function (res) {
+                        layer.close(index);
+                        table.reload('product_datagrid', {});
+                    };
+                    layui.submitChild();
+                },
+                btn2: function (index, layero) {
+                    layer.close(index);//关闭当前按钮
+                },
+                content: 'edit.html'
+            });
+        });
+    });
+
+</script>
+</body>
+</html>

+ 231 - 0
uis/views/product/uploadDetailImg.html

@@ -0,0 +1,231 @@
+<!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">
+    <style>
+        .input {
+            border-radius: 2px;
+            height: 38px;
+            border-width: 1px;
+            border-color: lightgray;
+            border-style: solid;
+            background-color: white;
+            padding-left: 3px;
+        }
+
+        .processText {
+            margin-top: 6px;
+        }
+
+        .layui-upload-drag {
+            padding: 10px;
+            margin-right: 15px;
+        }
+
+        .imgsContent {
+            display: flex;
+            justify-content: flex-start;
+            flex-direction: row;
+            flex-wrap: wrap;
+        }
+
+        .image {
+            width: 150px;
+            height: auto;
+        }
+
+        .imgItem {
+            margin: 3px 10px;
+        }
+
+        .option {
+            display: flex;
+            justify-content: space-between;
+            flex-direction: row;
+        }
+
+        .optionItem {
+            padding: 0 13px;
+            margin: 10px;
+            border: 1px solid rgba(0, 0, 0, 0.1);
+            background: #009688;
+            color: #ffffff;
+        }
+
+    </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="imgsContent">
+                                <div class="layui-upload-drag" id="upload_img">
+                                    <div>
+                                        <p style="padding-bottom: 10px">多选,最多选10张</p>
+                                        <i class="layui-icon"></i>
+                                        <p>点击上传,或将图片拖到此处</p>
+                                    </div>
+                                </div>
+                                <div id="imgsList" class="imgsContent"></div>
+                            </div>
+                        </div>
+
+                        <button id="id_save" class="layui-btn" lay-submit lay-filter="component-form-element"
+                                style="display: none">保存
+                        </button>
+                    </div>
+                </form>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="../../layuiadmin/layui/layui.js"></script>
+<script>
+    //即将上传的文件数组
+    var filesList = [];
+    //渲染的图片列表
+    var imgsList = [];
+
+    //渲染待上传的图片列表
+    var renderImgsList = function (list) {
+        var html = "";
+        list.forEach((item, index) => {
+            var src = item.src
+            html += "<div class='imgItem'>\n";
+            html += "<img src='" + src + "' class='image'>\n";
+            html += '<div class="option">\n';
+            html += '<div onclick="showImg(' + index + ')" class="optionItem">查看</div>\n';
+            html += '<div onclick="deleteImg(' + index + ')" class="optionItem">删除</div>\n';
+            html += '</div>\n';
+            html += '</div>\n';
+        })
+        layui.$('#imgsList').html(html);
+    }
+
+    var showImg = function (index) {
+        var newPage = window.open();
+        newPage.document.write("<img src=" + imgsList[index] + " />")
+    };
+
+    var deleteImg = function (index) {
+        var id = imgsList[index].id
+        if (id) {
+            // 删除此id
+            layer.confirm('确定要删除此图片吗?', function (conf_index) {
+                layer.close(conf_index);
+                layui.admin.req({
+                    notice: true
+                    , url: '/order/deleteProductImage/?id=' + id
+                    , type: 'post'
+                    , done: function (res) {
+                        imgsList.splice(index, 1);
+                        renderImgsList(imgsList);
+                    }
+                });
+            });
+        } else {
+            filesList.splice(index, 1);
+            imgsList.splice(index, 1);
+            renderImgsList(imgsList);
+        }
+    };
+
+    layui.link('../../../layuiadmin/style/autocomplete.css');
+    layui.config({
+        base: '../../../layuiadmin/' //静态资源所在路径
+        , autocomplete: 'autocomplete'
+    }).extend({
+        index: 'lib/index',
+    }).use(['index', 'form', 'autocomplete', 'upload'], function () {
+        var $ = layui.$
+            , admin = layui.admin
+            , upload = layui.upload
+            , form = layui.form;
+
+        var id = layui.view.getParameterByName('id');
+
+        admin.req({
+            url: '/order/product/' + id + '/query_detail_img/'
+            , type: 'post'
+            , done: function (res) {
+                imgsList = res.data
+                renderImgsList(imgsList)
+            }
+        });
+
+        //拖拽上传
+        upload.render({
+            elem: '#upload_img'
+            , accept: 'file'
+            , exts: 'jpg|png|jpeg|bmp'
+            , acceptMime: '.jpg,.png,.jpeg,.bmp'
+            , data: {}
+            , multiple: true
+            , number: 10
+            , auto: false
+            , choose: function (obj) {
+                if (imgsList.length > 10) {
+                    layer.msg("图片最多只允许上传10张", {icon: 2});
+                    return
+                }
+                //预读本地文件,如果是多文件,则会遍历。(不支持ie8/9)
+                obj.preview(function (index, file, result) {
+                    filesList.push(file);
+                    imgsList.push({
+                        id: '',
+                        src: result,
+                    });
+                    // 有图片列表的话渲染图片
+                    if (imgsList.length > 0) {
+                        renderImgsList(imgsList)
+                    }
+                });
+            }
+        });
+
+
+        form.on('submit(component-form-element)', function (data) {
+            if (filesList.length === 0) {
+                layer.msg("请先选择图片!", {icon: 2});
+                return false
+            }
+            var formData = new FormData();
+            filesList.forEach((item, index) => {
+                formData.append(`file${index}`, item)
+            });
+            var url = '/order/product/' + id + '/upload_detail_img/';
+            admin.req({
+                url: url
+                , data: formData
+                , contentType: false
+                , processData: false
+                , type: 'post'
+                , done: function (res) {
+                    parent.layui.onSubmitChild(res);
+                }
+            });
+
+            return false;
+        });
+
+        parent.layui.submitChild = function () {
+            $("#id_save").click();
+        };
+    });
+</script>
+</body>
+</html>

+ 17 - 26
uis/views/banner/edit.html → uis/views/product/uploadImage.html

@@ -2,7 +2,7 @@
 <html>
 <head>
     <meta charset="utf-8">
-    <title>添加轮播图</title>
+    <title>上传图片</title>
     <meta name="renderer" content="webkit">
     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
     <meta name="viewport"
@@ -20,11 +20,11 @@
                 <div class="layui-card-body">
                     <form class="layui-form" action="" lay-filter="component-form-element">
                         <div class="layui-form-item">
-                            <label class="layui-form-label"><font color='red' size="4">*</font>轮播图:</label>
+                            <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="banner_img">上传图片</button>
                                 <br><br>
-                                <img class="layui-upload-img" id="banner_img_demo" style="max-height: 100px;">
+                                <img class="layui-upload-img" id="banner_img_demo" style="max-height: 200px;">
                             </div>
                         </div>
 
@@ -46,12 +46,22 @@
         base: '../../../layuiadmin/' //静态资源所在路径
     }).extend({
         index: 'lib/index',
-    }).use(['index', 'form', 'utils', 'upload'], function () {
+    }).use(['index', 'form', 'utils', 'upload',], function () {
         var $ = layui.$
+            , admin = layui.admin
             , upload = layui.upload
             , form = layui.form;
 
-        var url = '/option/poster/'
+        var id = layui.view.getParameterByName('id');
+        form.render(null, 'component-form-element');
+
+        if (id) {
+            var editdata = JSON.parse(JSON.stringify(parent.layui.table.editdata)); // 框架有Bug所以这么转换
+            form.val("component-form-element", editdata);
+            $('#banner_img_demo').attr('src', editdata.main_image_url);
+        }
+        var url = '/order/product/' + id + '/upload_image/';
+
         upload.render({
             elem: "#banner_img",
             url: url,
@@ -66,21 +76,7 @@
                 )
             },
             done: function (res) {
-                if (res.code != 0) {
-                    layer.msg(res.msg);
-                } else {
-                    layer.open({
-                        type: 1
-                        , content: '<div style="padding: 20px 100px;">保存成功</div>'
-                        , btn: '关闭'
-                        , btnAlign: 'c' //按钮居中
-                        , shade: 0 //不显示遮罩
-                        , yes: function () {
-                            parent.layer.closeAll('iframe');
-                            parent.layui.table.reload('datagrid', {});
-                        }
-                    });
-                }
+                parent.layui.onSubmitChild(res);
             },
             error: function () {
                 layer.msg('保存失败');
@@ -89,16 +85,11 @@
 
         form.on('submit(component-form-element)', function (data) {
             //layer.msg(JSON.stringify(data.field));
-
-            if (!data.field.enable) {
-                data.field.enable = 0
-            }
             if (!data.field.banner_img) {
-                layer.msg('请选择轮播图图片');
+                layer.msg('请选择图片');
                 return false;
             }
             setTimeout($('#upload_image').click(), 30000)
-
             return false;
         });