liu tao 3 роки тому
батько
коміт
6d12c4da3e

+ 0 - 68
apps/api/admin/department/serializers.py

@@ -1,68 +0,0 @@
-# coding=utf-8
-
-from rest_framework import serializers
-
-from utils.exceptions import CustomError
-from utils.serializersfield import BooleanCharField
-from apps.base import Formater
-from apps.coupon.models import Coupon, CouponItem
-
-
-class CouponSerializer(serializers.ModelSerializer):
-    show_amount = serializers.SerializerMethodField()
-    create_user_text = serializers.CharField(source='create_user.employee.name', read_only=True)
-    date_type_text = serializers.CharField(source="get_date_type_display", read_only=True)
-    create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
-
-    def get_show_amount(self, obj):
-        return Formater.formatAmountShow(obj.amount)
-
-    class Meta:
-        model = Coupon
-        fields = '__all__'
-
-    def validate(self, attrs):
-        if 'amount' in attrs:
-            attrs['amount'] = Formater.formatAmount(attrs['amount'])
-        if attrs['validity_begin_time'] and attrs['validity_end_time'] and attrs['validity_begin_time'] > attrs['validity_end_time']:
-            raise CustomError(u'无效的有效期开始/结束时间')
-        if attrs['receive_begin_time'] and attrs['receive_end_time'] and attrs['receive_begin_time'] > attrs['receive_end_time']:
-            raise CustomError(u'无效的领取开始/结束时间')
-        return attrs
-
-    def create(self, validated_data):
-        user = self.context['request'].user
-        validated_data['tenant'] = user.employee.tenant
-        validated_data['create_user'] = user
-        instance = super(CouponSerializer, self).create(validated_data)
-        return instance
-
-    def update(self, instance, validated_data):
-        if instance.tenant != self.context['request'].user.employee.tenant:
-            raise CustomError(u'禁止跨租户操作!')
-        if instance.delete:
-            raise CustomError(u'优惠券[%s]已经被删除,禁止操作' % instance.name)
-        if instance.left_count > validated_data['total_count']:
-            raise CustomError(u'总数量不能小于已领取数量!')
-        instance = super(CouponSerializer, self).update(instance, validated_data)
-        return instance
-
-
-class CouponItemSerializer(serializers.ModelSerializer):
-    write_off_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
-    write_off_user_text = serializers.CharField(source='write_off_user.employee.name', read_only=True)
-    is_used_text = BooleanCharField(source='is_used', read_only=True)
-    validity_begin_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
-    validity_end_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
-    create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
-    customer_name = serializers.CharField(source='customer.name', read_only=True)
-    customer_tel = serializers.CharField(source='customer.tel', read_only=True)
-    coupon_name = serializers.CharField(source='coupon.name', read_only=True)
-    amount = serializers.SerializerMethodField()
-
-    def get_amount(self, obj):
-        return Formater.formatAmountShow(obj.amount)
-
-    class Meta:
-        model = CouponItem
-        fields = '__all__'

+ 1 - 1
apps/api/admin/department/urls.py

@@ -9,5 +9,5 @@ urlpatterns = [
 ]
 
 router = SimpleRouter()
-router.register(r'', CouponViewSet)
+router.register(r'', DepartmentViewSet)
 urlpatterns += router.urls

+ 8 - 37
apps/api/admin/department/views.py

@@ -1,45 +1,16 @@
 # coding=utf-8
 
-import json
-from rest_framework.decorators import action
-from django.db import transaction
 from utils.permission import IsAdministrator
 from utils.custom_modelviewset import CustomModelViewSet
-from apps.coupon.models import Coupon, CouponItem
-from apps.coupon.filters import CouponFilter, CouponItemFilter
-from .serializers import CouponSerializer, CouponItemSerializer
-from utils.exceptions import CustomError
-from utils import response_ok
-from apps.system.models import SysLog
+from apps.staff.models import Department
+from apps.staff.serializers import DepartmentSerializer
+from apps.staff.filters import DepartmentFilter
 
-class CouponViewSet(CustomModelViewSet):
+class DepartmentViewSet(CustomModelViewSet):
     permission_classes = [IsAdministrator, ]
-    queryset = Coupon.objects.filter(delete=False)
-    serializer_class = CouponSerializer
+    queryset = Department.objects.filter(delete=False)
+    serializer_class = DepartmentSerializer
 
     def filter_queryset(self, queryset):
-        queryset = queryset.filter(tenant=self.request.user.employee.tenant)
-        f = CouponFilter(self.request.GET, queryset=queryset)
-        return f.qs
-
-    def perform_create(self, serializer):
-        super(CouponViewSet, self).perform_create(serializer)
-        instance = serializer.instance
-        validated_data = serializer.validated_data
-        tenant_log(self.request.user.employee, BizLog.INSERT, u'添加优惠券[%s],id=%d' % (instance.name, instance.id), validated_data)
-
-    def perform_update(self, serializer):
-        super(CouponViewSet, self).perform_update(serializer)
-        instance = serializer.instance
-        validated_data = serializer.validated_data
-        tenant_log(self.request.user.employee, BizLog.UPDATE, u'修改优惠券[%s],id=%d' % (instance.name, instance.id), validated_data)
-
-    def destroy(self, request, *args, **kwargs):
-        with transaction.atomic():
-            instance = self.get_object()
-            if instance.tenant != request.user.employee.tenant:
-                raise CustomError(u'禁止跨租户操作!')
-            instance.delete = True
-            instance.save()
-            tenant_log(self.request.user.employee, BizLog.DELETE, u'删除优惠券[%s],id=%d' % (instance.name, instance.id))
-        return response_ok()
+        f = DepartmentFilter(self.request.GET, queryset=queryset)
+        return f.qs

+ 9 - 1
apps/staff/filters.py

@@ -2,6 +2,7 @@
 import django_filters
 
 from django.contrib.auth import get_user_model
+from .models import Department
 
 User = get_user_model()
 
@@ -11,4 +12,11 @@ class UserFilter(django_filters.FilterSet):
 
     class Meta:
         model = User
-        fields = ['username', 'is_active']
+        fields = ['username', 'is_active']
+
+class DepartmentFilter(django_filters.FilterSet):
+    name = django_filters.CharFilter(field_name='name', lookup_expr='icontains')
+
+    class Meta:
+        model = Department
+        fields = ['name',]

+ 11 - 0
apps/staff/serializers.py

@@ -0,0 +1,11 @@
+# coding=utf-8
+
+from rest_framework import serializers
+
+from .models import Department
+
+class DepartmentSerializer(serializers.ModelSerializer):
+
+    class Meta:
+        model = Department
+        fields = '__all__'

+ 118 - 0
uis/admin/department/index.html

@@ -0,0 +1,118 @@
+<!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">
+        .input {
+            width: 70%;
+            border-radius: 2px;
+            height: 30px;
+            border-width: 1px;
+            border-color: lightgray;
+            border-style: solid;
+            background-color: white;
+            padding-left: 3px;
+            margin-top: 20px;
+        }
+    </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-row layui-col-space10 layui-form-item">
+                <div>
+                  <label><font color='red' size="4">*</font>商品提成比例:</label>
+                  <input type="text" name="package_percentage" lay-verify="required|numberGtZ" autocomplete="off" class="input">
+                  <label><font color='red' size="4" style="font-size: small;">佣金=商品优惠价*提成比例</font></label>
+                </div>
+                <div>
+                    <label ><font color='red' size="4">*</font>整车提成比例:</label>
+                    <input type="text" name="vehicle_percentage" lay-verify="required|numberGtZ" autocomplete="off" class="input">
+                    <label><font color='red' style="font-size: small;">佣金=车型定金*提成比例</font></label>
+                </div>
+              <div class="layui-form-item">
+                <div class="layui-input-block">
+                  <button class="layui-btn" lay-submit lay-filter="component-form-element">保存</button>
+                </div>
+              </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
+    ,element = layui.element
+    ,form = layui.form;
+    form.render(null, 'component-form-element');
+    element.render('breadcrumb', 'breadcrumb');
+
+    admin.req({
+        url: '/tenant/config/',
+        done: function (res) {
+            var data = res.data;
+            var edit_data = {};
+            for(var i in data) {
+                if (data[i].property === 'package_percentage'){
+                    edit_data['package_percentage'] = data[i].value;
+                }else if (data[i].property === 'vehicle_percentage') {
+                    edit_data['vehicle_percentage'] = data[i].value;
+                }
+            }
+            form.val("component-form-element", edit_data);
+            form.render();
+        }
+    });
+
+    form.on('submit(component-form-element)', function(data){
+      var save_data = [];
+      if (data.field['package_percentage']){
+          save_data.push({key: 'package_percentage', value: data.field['package_percentage']})
+      }
+      if (data.field['vehicle_percentage']){
+          save_data.push({key: 'vehicle_percentage', value: data.field['vehicle_percentage']})
+      }
+      admin.req({
+        url: '/tenant/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>

+ 118 - 0
uis/admin/exam/index.html

@@ -0,0 +1,118 @@
+<!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">
+        .input {
+            width: 70%;
+            border-radius: 2px;
+            height: 30px;
+            border-width: 1px;
+            border-color: lightgray;
+            border-style: solid;
+            background-color: white;
+            padding-left: 3px;
+            margin-top: 20px;
+        }
+    </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-row layui-col-space10 layui-form-item">
+                <div>
+                  <label><font color='red' size="4">*</font>商品提成比例:</label>
+                  <input type="text" name="package_percentage" lay-verify="required|numberGtZ" autocomplete="off" class="input">
+                  <label><font color='red' size="4" style="font-size: small;">佣金=商品优惠价*提成比例</font></label>
+                </div>
+                <div>
+                    <label ><font color='red' size="4">*</font>整车提成比例:</label>
+                    <input type="text" name="vehicle_percentage" lay-verify="required|numberGtZ" autocomplete="off" class="input">
+                    <label><font color='red' style="font-size: small;">佣金=车型定金*提成比例</font></label>
+                </div>
+              <div class="layui-form-item">
+                <div class="layui-input-block">
+                  <button class="layui-btn" lay-submit lay-filter="component-form-element">保存</button>
+                </div>
+              </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
+    ,element = layui.element
+    ,form = layui.form;
+    form.render(null, 'component-form-element');
+    element.render('breadcrumb', 'breadcrumb');
+
+    admin.req({
+        url: '/tenant/config/',
+        done: function (res) {
+            var data = res.data;
+            var edit_data = {};
+            for(var i in data) {
+                if (data[i].property === 'package_percentage'){
+                    edit_data['package_percentage'] = data[i].value;
+                }else if (data[i].property === 'vehicle_percentage') {
+                    edit_data['vehicle_percentage'] = data[i].value;
+                }
+            }
+            form.val("component-form-element", edit_data);
+            form.render();
+        }
+    });
+
+    form.on('submit(component-form-element)', function(data){
+      var save_data = [];
+      if (data.field['package_percentage']){
+          save_data.push({key: 'package_percentage', value: data.field['package_percentage']})
+      }
+      if (data.field['vehicle_percentage']){
+          save_data.push({key: 'vehicle_percentage', value: data.field['vehicle_percentage']})
+      }
+      admin.req({
+        url: '/tenant/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>

+ 118 - 0
uis/admin/examlog/index.html

@@ -0,0 +1,118 @@
+<!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">
+        .input {
+            width: 70%;
+            border-radius: 2px;
+            height: 30px;
+            border-width: 1px;
+            border-color: lightgray;
+            border-style: solid;
+            background-color: white;
+            padding-left: 3px;
+            margin-top: 20px;
+        }
+    </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-row layui-col-space10 layui-form-item">
+                <div>
+                  <label><font color='red' size="4">*</font>商品提成比例:</label>
+                  <input type="text" name="package_percentage" lay-verify="required|numberGtZ" autocomplete="off" class="input">
+                  <label><font color='red' size="4" style="font-size: small;">佣金=商品优惠价*提成比例</font></label>
+                </div>
+                <div>
+                    <label ><font color='red' size="4">*</font>整车提成比例:</label>
+                    <input type="text" name="vehicle_percentage" lay-verify="required|numberGtZ" autocomplete="off" class="input">
+                    <label><font color='red' style="font-size: small;">佣金=车型定金*提成比例</font></label>
+                </div>
+              <div class="layui-form-item">
+                <div class="layui-input-block">
+                  <button class="layui-btn" lay-submit lay-filter="component-form-element">保存</button>
+                </div>
+              </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
+    ,element = layui.element
+    ,form = layui.form;
+    form.render(null, 'component-form-element');
+    element.render('breadcrumb', 'breadcrumb');
+
+    admin.req({
+        url: '/tenant/config/',
+        done: function (res) {
+            var data = res.data;
+            var edit_data = {};
+            for(var i in data) {
+                if (data[i].property === 'package_percentage'){
+                    edit_data['package_percentage'] = data[i].value;
+                }else if (data[i].property === 'vehicle_percentage') {
+                    edit_data['vehicle_percentage'] = data[i].value;
+                }
+            }
+            form.val("component-form-element", edit_data);
+            form.render();
+        }
+    });
+
+    form.on('submit(component-form-element)', function(data){
+      var save_data = [];
+      if (data.field['package_percentage']){
+          save_data.push({key: 'package_percentage', value: data.field['package_percentage']})
+      }
+      if (data.field['vehicle_percentage']){
+          save_data.push({key: 'vehicle_percentage', value: data.field['vehicle_percentage']})
+      }
+      admin.req({
+        url: '/tenant/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>

+ 118 - 0
uis/admin/exampaper/index.html

@@ -0,0 +1,118 @@
+<!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">
+        .input {
+            width: 70%;
+            border-radius: 2px;
+            height: 30px;
+            border-width: 1px;
+            border-color: lightgray;
+            border-style: solid;
+            background-color: white;
+            padding-left: 3px;
+            margin-top: 20px;
+        }
+    </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-row layui-col-space10 layui-form-item">
+                <div>
+                  <label><font color='red' size="4">*</font>商品提成比例:</label>
+                  <input type="text" name="package_percentage" lay-verify="required|numberGtZ" autocomplete="off" class="input">
+                  <label><font color='red' size="4" style="font-size: small;">佣金=商品优惠价*提成比例</font></label>
+                </div>
+                <div>
+                    <label ><font color='red' size="4">*</font>整车提成比例:</label>
+                    <input type="text" name="vehicle_percentage" lay-verify="required|numberGtZ" autocomplete="off" class="input">
+                    <label><font color='red' style="font-size: small;">佣金=车型定金*提成比例</font></label>
+                </div>
+              <div class="layui-form-item">
+                <div class="layui-input-block">
+                  <button class="layui-btn" lay-submit lay-filter="component-form-element">保存</button>
+                </div>
+              </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
+    ,element = layui.element
+    ,form = layui.form;
+    form.render(null, 'component-form-element');
+    element.render('breadcrumb', 'breadcrumb');
+
+    admin.req({
+        url: '/tenant/config/',
+        done: function (res) {
+            var data = res.data;
+            var edit_data = {};
+            for(var i in data) {
+                if (data[i].property === 'package_percentage'){
+                    edit_data['package_percentage'] = data[i].value;
+                }else if (data[i].property === 'vehicle_percentage') {
+                    edit_data['vehicle_percentage'] = data[i].value;
+                }
+            }
+            form.val("component-form-element", edit_data);
+            form.render();
+        }
+    });
+
+    form.on('submit(component-form-element)', function(data){
+      var save_data = [];
+      if (data.field['package_percentage']){
+          save_data.push({key: 'package_percentage', value: data.field['package_percentage']})
+      }
+      if (data.field['vehicle_percentage']){
+          save_data.push({key: 'vehicle_percentage', value: data.field['vehicle_percentage']})
+      }
+      admin.req({
+        url: '/tenant/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>

+ 118 - 0
uis/admin/examquestion/index.html

@@ -0,0 +1,118 @@
+<!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">
+        .input {
+            width: 70%;
+            border-radius: 2px;
+            height: 30px;
+            border-width: 1px;
+            border-color: lightgray;
+            border-style: solid;
+            background-color: white;
+            padding-left: 3px;
+            margin-top: 20px;
+        }
+    </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-row layui-col-space10 layui-form-item">
+                <div>
+                  <label><font color='red' size="4">*</font>商品提成比例:</label>
+                  <input type="text" name="package_percentage" lay-verify="required|numberGtZ" autocomplete="off" class="input">
+                  <label><font color='red' size="4" style="font-size: small;">佣金=商品优惠价*提成比例</font></label>
+                </div>
+                <div>
+                    <label ><font color='red' size="4">*</font>整车提成比例:</label>
+                    <input type="text" name="vehicle_percentage" lay-verify="required|numberGtZ" autocomplete="off" class="input">
+                    <label><font color='red' style="font-size: small;">佣金=车型定金*提成比例</font></label>
+                </div>
+              <div class="layui-form-item">
+                <div class="layui-input-block">
+                  <button class="layui-btn" lay-submit lay-filter="component-form-element">保存</button>
+                </div>
+              </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
+    ,element = layui.element
+    ,form = layui.form;
+    form.render(null, 'component-form-element');
+    element.render('breadcrumb', 'breadcrumb');
+
+    admin.req({
+        url: '/tenant/config/',
+        done: function (res) {
+            var data = res.data;
+            var edit_data = {};
+            for(var i in data) {
+                if (data[i].property === 'package_percentage'){
+                    edit_data['package_percentage'] = data[i].value;
+                }else if (data[i].property === 'vehicle_percentage') {
+                    edit_data['vehicle_percentage'] = data[i].value;
+                }
+            }
+            form.val("component-form-element", edit_data);
+            form.render();
+        }
+    });
+
+    form.on('submit(component-form-element)', function(data){
+      var save_data = [];
+      if (data.field['package_percentage']){
+          save_data.push({key: 'package_percentage', value: data.field['package_percentage']})
+      }
+      if (data.field['vehicle_percentage']){
+          save_data.push({key: 'vehicle_percentage', value: data.field['vehicle_percentage']})
+      }
+      admin.req({
+        url: '/tenant/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>

+ 118 - 0
uis/admin/examquestion_feedback/index.html

@@ -0,0 +1,118 @@
+<!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">
+        .input {
+            width: 70%;
+            border-radius: 2px;
+            height: 30px;
+            border-width: 1px;
+            border-color: lightgray;
+            border-style: solid;
+            background-color: white;
+            padding-left: 3px;
+            margin-top: 20px;
+        }
+    </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-row layui-col-space10 layui-form-item">
+                <div>
+                  <label><font color='red' size="4">*</font>商品提成比例:</label>
+                  <input type="text" name="package_percentage" lay-verify="required|numberGtZ" autocomplete="off" class="input">
+                  <label><font color='red' size="4" style="font-size: small;">佣金=商品优惠价*提成比例</font></label>
+                </div>
+                <div>
+                    <label ><font color='red' size="4">*</font>整车提成比例:</label>
+                    <input type="text" name="vehicle_percentage" lay-verify="required|numberGtZ" autocomplete="off" class="input">
+                    <label><font color='red' style="font-size: small;">佣金=车型定金*提成比例</font></label>
+                </div>
+              <div class="layui-form-item">
+                <div class="layui-input-block">
+                  <button class="layui-btn" lay-submit lay-filter="component-form-element">保存</button>
+                </div>
+              </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
+    ,element = layui.element
+    ,form = layui.form;
+    form.render(null, 'component-form-element');
+    element.render('breadcrumb', 'breadcrumb');
+
+    admin.req({
+        url: '/tenant/config/',
+        done: function (res) {
+            var data = res.data;
+            var edit_data = {};
+            for(var i in data) {
+                if (data[i].property === 'package_percentage'){
+                    edit_data['package_percentage'] = data[i].value;
+                }else if (data[i].property === 'vehicle_percentage') {
+                    edit_data['vehicle_percentage'] = data[i].value;
+                }
+            }
+            form.val("component-form-element", edit_data);
+            form.render();
+        }
+    });
+
+    form.on('submit(component-form-element)', function(data){
+      var save_data = [];
+      if (data.field['package_percentage']){
+          save_data.push({key: 'package_percentage', value: data.field['package_percentage']})
+      }
+      if (data.field['vehicle_percentage']){
+          save_data.push({key: 'vehicle_percentage', value: data.field['vehicle_percentage']})
+      }
+      admin.req({
+        url: '/tenant/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>

+ 118 - 0
uis/admin/knowledge/index.html

@@ -0,0 +1,118 @@
+<!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">
+        .input {
+            width: 70%;
+            border-radius: 2px;
+            height: 30px;
+            border-width: 1px;
+            border-color: lightgray;
+            border-style: solid;
+            background-color: white;
+            padding-left: 3px;
+            margin-top: 20px;
+        }
+    </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-row layui-col-space10 layui-form-item">
+                <div>
+                  <label><font color='red' size="4">*</font>商品提成比例:</label>
+                  <input type="text" name="package_percentage" lay-verify="required|numberGtZ" autocomplete="off" class="input">
+                  <label><font color='red' size="4" style="font-size: small;">佣金=商品优惠价*提成比例</font></label>
+                </div>
+                <div>
+                    <label ><font color='red' size="4">*</font>整车提成比例:</label>
+                    <input type="text" name="vehicle_percentage" lay-verify="required|numberGtZ" autocomplete="off" class="input">
+                    <label><font color='red' style="font-size: small;">佣金=车型定金*提成比例</font></label>
+                </div>
+              <div class="layui-form-item">
+                <div class="layui-input-block">
+                  <button class="layui-btn" lay-submit lay-filter="component-form-element">保存</button>
+                </div>
+              </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
+    ,element = layui.element
+    ,form = layui.form;
+    form.render(null, 'component-form-element');
+    element.render('breadcrumb', 'breadcrumb');
+
+    admin.req({
+        url: '/tenant/config/',
+        done: function (res) {
+            var data = res.data;
+            var edit_data = {};
+            for(var i in data) {
+                if (data[i].property === 'package_percentage'){
+                    edit_data['package_percentage'] = data[i].value;
+                }else if (data[i].property === 'vehicle_percentage') {
+                    edit_data['vehicle_percentage'] = data[i].value;
+                }
+            }
+            form.val("component-form-element", edit_data);
+            form.render();
+        }
+    });
+
+    form.on('submit(component-form-element)', function(data){
+      var save_data = [];
+      if (data.field['package_percentage']){
+          save_data.push({key: 'package_percentage', value: data.field['package_percentage']})
+      }
+      if (data.field['vehicle_percentage']){
+          save_data.push({key: 'vehicle_percentage', value: data.field['vehicle_percentage']})
+      }
+      admin.req({
+        url: '/tenant/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>

+ 118 - 0
uis/admin/knowledge_feedback/index.html

@@ -0,0 +1,118 @@
+<!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">
+        .input {
+            width: 70%;
+            border-radius: 2px;
+            height: 30px;
+            border-width: 1px;
+            border-color: lightgray;
+            border-style: solid;
+            background-color: white;
+            padding-left: 3px;
+            margin-top: 20px;
+        }
+    </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-row layui-col-space10 layui-form-item">
+                <div>
+                  <label><font color='red' size="4">*</font>商品提成比例:</label>
+                  <input type="text" name="package_percentage" lay-verify="required|numberGtZ" autocomplete="off" class="input">
+                  <label><font color='red' size="4" style="font-size: small;">佣金=商品优惠价*提成比例</font></label>
+                </div>
+                <div>
+                    <label ><font color='red' size="4">*</font>整车提成比例:</label>
+                    <input type="text" name="vehicle_percentage" lay-verify="required|numberGtZ" autocomplete="off" class="input">
+                    <label><font color='red' style="font-size: small;">佣金=车型定金*提成比例</font></label>
+                </div>
+              <div class="layui-form-item">
+                <div class="layui-input-block">
+                  <button class="layui-btn" lay-submit lay-filter="component-form-element">保存</button>
+                </div>
+              </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
+    ,element = layui.element
+    ,form = layui.form;
+    form.render(null, 'component-form-element');
+    element.render('breadcrumb', 'breadcrumb');
+
+    admin.req({
+        url: '/tenant/config/',
+        done: function (res) {
+            var data = res.data;
+            var edit_data = {};
+            for(var i in data) {
+                if (data[i].property === 'package_percentage'){
+                    edit_data['package_percentage'] = data[i].value;
+                }else if (data[i].property === 'vehicle_percentage') {
+                    edit_data['vehicle_percentage'] = data[i].value;
+                }
+            }
+            form.val("component-form-element", edit_data);
+            form.render();
+        }
+    });
+
+    form.on('submit(component-form-element)', function(data){
+      var save_data = [];
+      if (data.field['package_percentage']){
+          save_data.push({key: 'package_percentage', value: data.field['package_percentage']})
+      }
+      if (data.field['vehicle_percentage']){
+          save_data.push({key: 'vehicle_percentage', value: data.field['vehicle_percentage']})
+      }
+      admin.req({
+        url: '/tenant/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>

+ 118 - 0
uis/admin/permission/index.html

@@ -0,0 +1,118 @@
+<!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">
+        .input {
+            width: 70%;
+            border-radius: 2px;
+            height: 30px;
+            border-width: 1px;
+            border-color: lightgray;
+            border-style: solid;
+            background-color: white;
+            padding-left: 3px;
+            margin-top: 20px;
+        }
+    </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-row layui-col-space10 layui-form-item">
+                <div>
+                  <label><font color='red' size="4">*</font>商品提成比例:</label>
+                  <input type="text" name="package_percentage" lay-verify="required|numberGtZ" autocomplete="off" class="input">
+                  <label><font color='red' size="4" style="font-size: small;">佣金=商品优惠价*提成比例</font></label>
+                </div>
+                <div>
+                    <label ><font color='red' size="4">*</font>整车提成比例:</label>
+                    <input type="text" name="vehicle_percentage" lay-verify="required|numberGtZ" autocomplete="off" class="input">
+                    <label><font color='red' style="font-size: small;">佣金=车型定金*提成比例</font></label>
+                </div>
+              <div class="layui-form-item">
+                <div class="layui-input-block">
+                  <button class="layui-btn" lay-submit lay-filter="component-form-element">保存</button>
+                </div>
+              </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
+    ,element = layui.element
+    ,form = layui.form;
+    form.render(null, 'component-form-element');
+    element.render('breadcrumb', 'breadcrumb');
+
+    admin.req({
+        url: '/tenant/config/',
+        done: function (res) {
+            var data = res.data;
+            var edit_data = {};
+            for(var i in data) {
+                if (data[i].property === 'package_percentage'){
+                    edit_data['package_percentage'] = data[i].value;
+                }else if (data[i].property === 'vehicle_percentage') {
+                    edit_data['vehicle_percentage'] = data[i].value;
+                }
+            }
+            form.val("component-form-element", edit_data);
+            form.render();
+        }
+    });
+
+    form.on('submit(component-form-element)', function(data){
+      var save_data = [];
+      if (data.field['package_percentage']){
+          save_data.push({key: 'package_percentage', value: data.field['package_percentage']})
+      }
+      if (data.field['vehicle_percentage']){
+          save_data.push({key: 'vehicle_percentage', value: data.field['vehicle_percentage']})
+      }
+      admin.req({
+        url: '/tenant/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>

+ 118 - 0
uis/admin/subject/index.html

@@ -0,0 +1,118 @@
+<!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">
+        .input {
+            width: 70%;
+            border-radius: 2px;
+            height: 30px;
+            border-width: 1px;
+            border-color: lightgray;
+            border-style: solid;
+            background-color: white;
+            padding-left: 3px;
+            margin-top: 20px;
+        }
+    </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-row layui-col-space10 layui-form-item">
+                <div>
+                  <label><font color='red' size="4">*</font>商品提成比例:</label>
+                  <input type="text" name="package_percentage" lay-verify="required|numberGtZ" autocomplete="off" class="input">
+                  <label><font color='red' size="4" style="font-size: small;">佣金=商品优惠价*提成比例</font></label>
+                </div>
+                <div>
+                    <label ><font color='red' size="4">*</font>整车提成比例:</label>
+                    <input type="text" name="vehicle_percentage" lay-verify="required|numberGtZ" autocomplete="off" class="input">
+                    <label><font color='red' style="font-size: small;">佣金=车型定金*提成比例</font></label>
+                </div>
+              <div class="layui-form-item">
+                <div class="layui-input-block">
+                  <button class="layui-btn" lay-submit lay-filter="component-form-element">保存</button>
+                </div>
+              </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
+    ,element = layui.element
+    ,form = layui.form;
+    form.render(null, 'component-form-element');
+    element.render('breadcrumb', 'breadcrumb');
+
+    admin.req({
+        url: '/tenant/config/',
+        done: function (res) {
+            var data = res.data;
+            var edit_data = {};
+            for(var i in data) {
+                if (data[i].property === 'package_percentage'){
+                    edit_data['package_percentage'] = data[i].value;
+                }else if (data[i].property === 'vehicle_percentage') {
+                    edit_data['vehicle_percentage'] = data[i].value;
+                }
+            }
+            form.val("component-form-element", edit_data);
+            form.render();
+        }
+    });
+
+    form.on('submit(component-form-element)', function(data){
+      var save_data = [];
+      if (data.field['package_percentage']){
+          save_data.push({key: 'package_percentage', value: data.field['package_percentage']})
+      }
+      if (data.field['vehicle_percentage']){
+          save_data.push({key: 'vehicle_percentage', value: data.field['vehicle_percentage']})
+      }
+      admin.req({
+        url: '/tenant/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>

+ 118 - 0
uis/admin/syslog/index.html

@@ -0,0 +1,118 @@
+<!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">
+        .input {
+            width: 70%;
+            border-radius: 2px;
+            height: 30px;
+            border-width: 1px;
+            border-color: lightgray;
+            border-style: solid;
+            background-color: white;
+            padding-left: 3px;
+            margin-top: 20px;
+        }
+    </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-row layui-col-space10 layui-form-item">
+                <div>
+                  <label><font color='red' size="4">*</font>商品提成比例:</label>
+                  <input type="text" name="package_percentage" lay-verify="required|numberGtZ" autocomplete="off" class="input">
+                  <label><font color='red' size="4" style="font-size: small;">佣金=商品优惠价*提成比例</font></label>
+                </div>
+                <div>
+                    <label ><font color='red' size="4">*</font>整车提成比例:</label>
+                    <input type="text" name="vehicle_percentage" lay-verify="required|numberGtZ" autocomplete="off" class="input">
+                    <label><font color='red' style="font-size: small;">佣金=车型定金*提成比例</font></label>
+                </div>
+              <div class="layui-form-item">
+                <div class="layui-input-block">
+                  <button class="layui-btn" lay-submit lay-filter="component-form-element">保存</button>
+                </div>
+              </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
+    ,element = layui.element
+    ,form = layui.form;
+    form.render(null, 'component-form-element');
+    element.render('breadcrumb', 'breadcrumb');
+
+    admin.req({
+        url: '/tenant/config/',
+        done: function (res) {
+            var data = res.data;
+            var edit_data = {};
+            for(var i in data) {
+                if (data[i].property === 'package_percentage'){
+                    edit_data['package_percentage'] = data[i].value;
+                }else if (data[i].property === 'vehicle_percentage') {
+                    edit_data['vehicle_percentage'] = data[i].value;
+                }
+            }
+            form.val("component-form-element", edit_data);
+            form.render();
+        }
+    });
+
+    form.on('submit(component-form-element)', function(data){
+      var save_data = [];
+      if (data.field['package_percentage']){
+          save_data.push({key: 'package_percentage', value: data.field['package_percentage']})
+      }
+      if (data.field['vehicle_percentage']){
+          save_data.push({key: 'vehicle_percentage', value: data.field['vehicle_percentage']})
+      }
+      admin.req({
+        url: '/tenant/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>

+ 118 - 0
uis/admin/user/index.html

@@ -0,0 +1,118 @@
+<!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">
+        .input {
+            width: 70%;
+            border-radius: 2px;
+            height: 30px;
+            border-width: 1px;
+            border-color: lightgray;
+            border-style: solid;
+            background-color: white;
+            padding-left: 3px;
+            margin-top: 20px;
+        }
+    </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-row layui-col-space10 layui-form-item">
+                <div>
+                  <label><font color='red' size="4">*</font>商品提成比例:</label>
+                  <input type="text" name="package_percentage" lay-verify="required|numberGtZ" autocomplete="off" class="input">
+                  <label><font color='red' size="4" style="font-size: small;">佣金=商品优惠价*提成比例</font></label>
+                </div>
+                <div>
+                    <label ><font color='red' size="4">*</font>整车提成比例:</label>
+                    <input type="text" name="vehicle_percentage" lay-verify="required|numberGtZ" autocomplete="off" class="input">
+                    <label><font color='red' style="font-size: small;">佣金=车型定金*提成比例</font></label>
+                </div>
+              <div class="layui-form-item">
+                <div class="layui-input-block">
+                  <button class="layui-btn" lay-submit lay-filter="component-form-element">保存</button>
+                </div>
+              </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
+    ,element = layui.element
+    ,form = layui.form;
+    form.render(null, 'component-form-element');
+    element.render('breadcrumb', 'breadcrumb');
+
+    admin.req({
+        url: '/tenant/config/',
+        done: function (res) {
+            var data = res.data;
+            var edit_data = {};
+            for(var i in data) {
+                if (data[i].property === 'package_percentage'){
+                    edit_data['package_percentage'] = data[i].value;
+                }else if (data[i].property === 'vehicle_percentage') {
+                    edit_data['vehicle_percentage'] = data[i].value;
+                }
+            }
+            form.val("component-form-element", edit_data);
+            form.render();
+        }
+    });
+
+    form.on('submit(component-form-element)', function(data){
+      var save_data = [];
+      if (data.field['package_percentage']){
+          save_data.push({key: 'package_percentage', value: data.field['package_percentage']})
+      }
+      if (data.field['vehicle_percentage']){
+          save_data.push({key: 'vehicle_percentage', value: data.field['vehicle_percentage']})
+      }
+      admin.req({
+        url: '/tenant/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>

+ 0 - 145
uis/staff/index.html

@@ -1,145 +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">
-</head>
-<body class="layui-layout-body">
-  
-  <div id="LAY_app">
-    <div class="layui-layout layui-layout-admin">
-      <div class="layui-header">
-        <!-- 头部区域 -->
-        <ul class="layui-nav layui-layout-left">
-          <li class="layui-nav-item layadmin-flexible" lay-unselect>
-            <a href="javascript:;" layadmin-event="flexible" title="侧边伸缩">
-              <i class="layui-icon layui-icon-shrink-right" id="LAY_app_flexible"></i>
-            </a>
-          </li>
-          <li class="layui-nav-item" lay-unselect>
-            <a href="javascript:;" layadmin-event="refresh" title="刷新">
-              <i class="layui-icon layui-icon-refresh-3"></i>
-            </a>
-          </li>
-        </ul>
-        <ul class="layui-nav layui-layout-right" lay-filter="layadmin-layout-right">
-          <li class="layui-nav-item layui-hide-xs" lay-unselect>
-            <a href="javascript:;" layadmin-event="theme">
-              <i class="layui-icon layui-icon-theme"></i>
-            </a>
-          </li>
-          <li class="layui-nav-item" lay-unselect>
-            <a href="javascript:;">
-              <cite id="id_username"></cite>
-            </a>
-            <dl class="layui-nav-child">
-              <dd><a lay-href="account/user_password.html">修改密码</a></dd>
-              <hr>
-              <dd layadmin-event="logout" style="text-align: center;"><a>退出</a></dd>
-            </dl>
-          </li>
-
-          <li class="layui-nav-item layui-hide-xs" lay-unselect>
-            <a href="javascript:;" layadmin-event="about"><i class="layui-icon layui-icon-more-vertical"></i></a>
-          </li>
-          <li class="layui-nav-item layui-show-xs-inline-block layui-hide-sm" lay-unselect>
-            <a href="javascript:;" layadmin-event="more"><i class="layui-icon layui-icon-more-vertical"></i></a>
-          </li>
-        </ul>
-      </div>
-      
-      <!-- 侧边菜单 -->
-      <div class="layui-side layui-side-menu">
-        <div class="layui-side-scroll">
-          <div class="layui-logo">
-            <span>燎原管理系统</span>
-          </div>
-
-          <ul class="layui-nav layui-nav-tree" lay-shrink="all" id="LAY-system-side-muen" lay-filter="layadmin-system-side-menu">
-            <li data-name="set" class="layui-nav-item">
-              <a href="javascript:;" lay-tips="基础信息" lay-direction="2">
-                <i class="layui-icon layui-icon-set"></i>
-                <cite>基础信息</cite>
-              </a>
-              <dl class="layui-nav-child">
-                <dd data-name="nav">
-                  <a lay-href="user/index.html">用户管理</a>
-                </dd>
-                <dd data-name="nav">
-                  <a lay-href="tenant/index.html">租户管理</a>
-                </dd>
-                <dd data-name="nav">
-                  <a lay-href="applet/index.html">小程序管理</a>
-                </dd>
-                <dd data-name="nav">
-                  <a lay-href="third_party/index.html">第三方设置</a>
-                </dd>
-              </dl>
-            </li>
-          </ul>
-        </div>
-      </div>
-
-      <!-- 页面标签 -->
-      <div class="layadmin-pagetabs" id="LAY_app_tabs">
-        <div class="layui-icon layadmin-tabs-control layui-icon-prev" layadmin-event="leftPage"></div>
-        <div class="layui-icon layadmin-tabs-control layui-icon-next" layadmin-event="rightPage"></div>
-        <div class="layui-icon layadmin-tabs-control layui-icon-down">
-          <ul class="layui-nav layadmin-tabs-select" lay-filter="layadmin-pagetabs-nav">
-            <li class="layui-nav-item" lay-unselect>
-              <a href="javascript:;"></a>
-              <dl class="layui-nav-child layui-anim-fadein">
-                <dd layadmin-event="closeThisTabs"><a href="javascript:;">关闭当前标签页</a></dd>
-                <dd layadmin-event="closeOtherTabs"><a href="javascript:;">关闭其它标签页</a></dd>
-                <dd layadmin-event="closeAllTabs"><a href="javascript:;">关闭全部标签页</a></dd>
-              </dl>
-            </li>
-          </ul>
-        </div>
-        <div class="layui-tab" lay-unauto lay-allowClose="true" lay-filter="layadmin-layout-tabs">
-          <ul class="layui-tab-title" id="LAY_app_tabsheader">
-            <li lay-id="home/console.html" class="layui-this"><i class="layui-icon layui-icon-home"></i></li>
-          </ul>
-        </div>
-      </div>
-      
-      
-      <!-- 主体内容 -->
-      <div class="layui-body" id="LAY_app_body">
-        <div class="layadmin-tabsbody-item layui-show">
-          <iframe src="dashboard/index.html" frameborder="0" class="layadmin-iframe"></iframe>
-        </div>
-      </div>
-      
-      <!-- 辅助元素,一般用于移动设备下遮罩 -->
-      <div class="layadmin-body-shade" layadmin-event="shade"></div>
-    </div>
-  </div>
-
-  <script src="../layuiadmin/layui/layui.js"></script>
-  <script>
-  layui.config({
-    base: '../layuiadmin/' //静态资源所在路径
-  }).extend({
-    index: 'lib/index' //主入口模块
-  }).use('index', function () {
-      var $ = layui.$;
-      var name = layui.data(layui.setter.tableName)['name'];
-      $('#id_username').html(name);
-
-      $('#LAY-system-side-muen .layui-nav-item dl').each(function () {
-          if($(this).children('dd').length == 0)
-              $(this).parent().remove();
-      });
-
-  });
-  </script>
-</body>
-</html>
-
-

+ 0 - 118
uis/staff/login/login.html

@@ -1,118 +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" href="../../layuiadmin/style/login.css" media="all">
-</head>
-<body>
-
-  <div class="layadmin-user-login layadmin-user-display-show" id="LAY-user-login" style="display: none;">
-
-    <div class="layadmin-user-login-main">
-      <div class="layadmin-user-login-box layadmin-user-login-header">
-        <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">
-        <div class="layui-form-item">
-          <label class="layadmin-user-login-icon layui-icon layui-icon-username" for="LAY-user-login-username"></label>
-          <input type="text" name="username" id="LAY-user-login-username" placeholder="用户名" autocomplete="off" class="layui-input">
-        </div>
-        <div class="layui-form-item">
-          <label class="layadmin-user-login-icon layui-icon layui-icon-password" for="LAY-user-login-password"></label>
-          <input type="password" name="password" id="LAY-user-login-password" autocomplete="off" placeholder="密码" class="layui-input">
-        </div>
-        <div class="layui-form-item">
-          <button class="layui-btn layui-btn-fluid" lay-submit lay-filter="component-form-element">登 录</button>
-        </div>
-      </div>
-       </form>
-    </div>
-    
-    <div class="layui-trans layadmin-user-login-footer">
-      <p>© 2020 燎原管理系统 <a href="http://www.zzliaoyuan.com/" target="_blank">郑州燎原计算机技术有限公司</a></p>
-    </div>
-    
-  </div>
-
-  <script src="../../layuiadmin/layui/layui.js"></script>
-  <script>
-  layui.config({
-    base: '../../layuiadmin/' //静态资源所在路径
-  }).extend({
-    index: 'lib/index' //主入口模块
-  }).use(['index', 'user'], function(){
-    var $ = layui.$
-    ,setter = layui.setter
-    ,admin = layui.admin
-    ,form = layui.form
-    ,router = layui.router()
-    ,search = router.search;
-
-    if (layui.data(setter.tableName)[setter.request.tokenName]) {
-      admin.req({
-        url: '/admin/token_refresh/'
-        ,data: {token: layui.data(setter.tableName)[setter.request.tokenName].substr(4)}
-        ,type: 'post'
-        ,done: function(res){
-
-          //请求成功后,写入 access_token
-          layui.data(setter.tableName, {
-            key: setter.request.tokenName
-            ,value: 'JWT ' + res.data.token
-          });
-
-          location.href = '../index.html'; //后台主页
-        }
-      });
-    }
-
-    form.render();
-
-    //提交
-    form.on('submit(component-form-element)', function(obj){
-
-      //请求登入接口
-      admin.req({
-        url: '/admin/token/obtain/'
-        ,data: obj.field
-        ,type: 'post'
-        ,done: function(res){
-
-          //请求成功后,写入 access_token
-          layui.data(setter.tableName, {
-            key: setter.request.tokenName
-            ,value: 'JWT ' + res.data.token
-          });
-          layui.data(setter.tableName, {
-            key: setter.request.userId
-            ,value: res.data.user_id
-          });
-          layui.data(setter.tableName, {
-            key: 'name'
-            ,value: res.data.name ? res.data.name: res.data.username
-          });
-
-          //登入成功的提示与跳转
-          layer.msg('登入成功', {
-            offset: '15px'
-            ,icon: 1
-            ,time: 1000
-          }, function(){
-            location.href = '../index.html'; //后台主页
-          });
-        }
-      });
-      return false;
-      
-    });
-  });
-  </script>
-</body>
-</html>

+ 45 - 0
utils/serializersfield.py

@@ -0,0 +1,45 @@
+#coding=utf-8
+from django.utils import timezone
+from rest_framework import serializers
+
+def getAttributeValue(instance, obj):
+    if '.' in instance.source:
+        k = instance.source.split('.')
+        for i in range(len(k)):
+            if hasattr(obj, k[i]):
+                obj = getattr(obj, k[i])
+        val = obj
+    else:
+        val = getattr(obj, instance.source)
+    return val
+
+class BooleanCharField(serializers.BooleanField):
+    def get_attribute(self, obj):
+        return obj
+
+    def to_representation(self, obj):
+        val = getAttributeValue(self, obj)
+        return u'是' if val else u'否'
+
+class DelayTimeCharField(serializers.CharField):
+    def get_attribute(self, obj):
+        return obj
+
+    def to_representation(self, obj):
+        val = getAttributeValue(self, obj)
+        delay = timezone.now() - val
+
+        if delay:
+            if delay.days:
+                delay = u'{}天前'.format(delay.days)
+            elif delay.seconds:
+                delay = delay.seconds / 60
+                if delay < 60:
+                    delay =u'{}分钟前'.format(int(delay))
+                elif delay < 60 * 24:
+                    delay = u'{}小时前'.format(int(delay / 60))
+            else:
+                delay = u''
+        else:
+            delay = u''
+        return delay