Browse Source

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	apps/images/models.py
lyh 1 năm trước cách đây
mục cha
commit
7043a83956

+ 8 - 1
apps/images/models.py

@@ -58,6 +58,8 @@ class ImagesManager(models.Manager):
             Images.PRODUCT_COVER: product_cover,
             Images.PRODUCT_FILE: product_file,
             Images.ACTIVITY_COVER: activity_cover,
+            Images.VEHICLE_SERIES_THUMBNAIL: vehicle_cover,
+            Images.VEHICLE_MODEL_THUMBNAIL: vehicle_cover,
         }
 
         return path_map[type] + str(user_id) + '/'
@@ -77,6 +79,7 @@ usedvehicle_file = "usedvehicle/detail/"
 usedvehicle_thumbnail_file = "usedvehicle/"
 product_file = "product/file/"
 product_cover = "product/"
+vehicle_cover = "vehicle/"
 activity_cover = "activity/"
 customer_face_file = 'customer/face/'
 
@@ -86,13 +89,17 @@ class Images(models.Model):
     PRODUCT_COVER = 3
     PRODUCT_FILE = 4
     ACTIVITY_COVER = 5
-    CUSTOMER_FACE = 6
+    VEHICLE_SERIES_THUMBNAIL = 6
+    VEHICLE_MODEL_THUMBNAIL = 7
+    CUSTOMER_FACE = 8
     TYPE_CHOICES = (
         (USEDVEHICLE_FILE, u'二手车图片'),
         (USEDVEHICLE_THUMBNAIL, u'二手车缩略图'),
         (PRODUCT_COVER, u'商品封面图'),
         (PRODUCT_FILE, u'商品图片'),
         (ACTIVITY_COVER, u'活动封面图'),
+        (VEHICLE_SERIES_THUMBNAIL, u'车系展示图'),
+        (VEHICLE_MODEL_THUMBNAIL, u'车型展示图'),
         (CUSTOMER_FACE, u'客户头像'),
     )
 

+ 2 - 0
apps/vehicle/models.py

@@ -51,6 +51,8 @@ class Series(models.Model):
 class Model(models.Model):
     series = models.ForeignKey(Series, related_name='model_ref_series', verbose_name=u"车系", on_delete=models.PROTECT)
     name = models.CharField(max_length=100, verbose_name=u"名称")
+    thumbnail = models.ForeignKey(Images, verbose_name=u'缩略图', on_delete=models.PROTECT,
+                                  related_name=u'vehicle_model_thumbnail', null=True)
     price = models.BigIntegerField(verbose_name=u'指导价')
     sale_price = models.BigIntegerField(verbose_name=u'售价')
     engine = models.CharField(max_length=50, verbose_name=u'发动机',)

+ 8 - 57
apps/vehicle/serializers.py

@@ -5,7 +5,7 @@ from django.conf import settings
 from rest_framework import serializers
 from apps.vehicle.models import Brand, Series, Model, VehicleImg, VehicleModelImg
 from apps.images.models import Images
-
+from utils.booleancharfield import PriceShowCharField
 from utils.exceptions import CustomError
 from apps.base import Formater
 
@@ -71,60 +71,21 @@ class ModelSerializer(serializers.ModelSerializer):
     series_name = serializers.CharField(source='series.name', read_only=True)
     brand_name = serializers.CharField(source='series.brand.name', read_only=True)
     enabled_text = serializers.SerializerMethodField()
-    hot_text = serializers.SerializerMethodField()
-    thumbnail_url = serializers.SerializerMethodField()
-    price_show = serializers.SerializerMethodField()
-    shop_price_show = serializers.SerializerMethodField()
-    advance_pay_show = serializers.SerializerMethodField()
-    equal_pay_show = serializers.SerializerMethodField()
-    price = serializers.CharField()
-    advance_pay = serializers.CharField()
-    equal_pay = serializers.CharField()
-    commission_ratio = serializers.CharField(required=False)
-    playbill_url = serializers.SerializerMethodField()
-    full_name = serializers.SerializerMethodField()
-    commission_amount = serializers.SerializerMethodField()
-
-    def get_commission_amount(self, obj):
-        if obj.commission_ratio != None:
-            return Formater.formatAmountShow(obj.commission_ratio)
-        return ''
-
-    def get_shop_price_show(self, obj):
-        return Formater.formatAmountShow(obj.shop_price)
 
-    def get_price_show(self, obj):
-        return Formater.formatAmountShow(obj.price)
-
-    def get_advance_pay_show(self, obj):
-        return Formater.formatAmountShow(obj.advance_pay)
-
-    def get_equal_pay_show(self, obj):
-        return Formater.formatAmountShow(obj.equal_pay)
+    thumbnail_url = serializers.SerializerMethodField()
+    price = PriceShowCharField()
+    sale_price = PriceShowCharField()
 
     def get_enabled_text(self, obj):
         if obj.enabled:
             return u'是'
         return u'否'
 
-    def get_hot_text(self, obj):
-        if obj.is_hot:
-            return u'是'
-        return u'否'
-
-    def get_full_name(self, obj):
-        return obj.series.brand.name + '-' + obj.series.name + '-' + obj.name
-
     def get_thumbnail_url(self, obj):
         if obj.thumbnail:
             return '%s%s' % (settings.MEDIA_URL, obj.thumbnail.picture)
         return ''
 
-    def get_playbill_url(self, obj):
-        if obj.playbill:
-            return '%s%s' % (settings.MEDIA_URL, obj.playbill.picture)
-        return ''
-
     class Meta:
         model = Model
         fields = '__all__'
@@ -132,10 +93,8 @@ class ModelSerializer(serializers.ModelSerializer):
     def create(self, validated_data):
         user = self.context['request'].user
         thumbnail = self.context['request'].FILES.get('image', None)
-        tags = self.context['request'].data.get('tags')
-
         if thumbnail:
-            validated_data['thumbnail'] = Images.objects.employee_addnew(user.employee, Images.VEHICLE_MODEL_THUMBNAIL,
+            validated_data['thumbnail'] = Images.objects.employee_addnew(user, Images.VEHICLE_MODEL_THUMBNAIL,
                                                                          thumbnail)
         instance = super(ModelSerializer, self).create(validated_data)
 
@@ -143,17 +102,9 @@ class ModelSerializer(serializers.ModelSerializer):
 
     def validate(self, attrs):
         if 'price' in attrs:
-            attrs['price'] = Formater.formatAmount(attrs['price'])
-        if 'equal_pay' in attrs:
-            attrs['equal_pay'] = Formater.formatAmount(attrs['equal_pay'])
-        if 'advance_pay' in attrs:
-            attrs['advance_pay'] = Formater.formatAmount(attrs['advance_pay'])
-        if 'shop_price' in attrs:
-            attrs['shop_price'] = Formater.formatAmount(attrs['shop_price'])
-        if 'commission_ratio' in attrs and attrs['commission_ratio']:
-            attrs['commission_ratio'] = Formater.formatAmount(attrs['commission_ratio'])
-        else:
-            attrs['commission_ratio'] = None
+            attrs['price'] = Formater.formatPrice(attrs['price'])
+        if 'sale_price' in attrs:
+            attrs['sale_price'] = Formater.formatPrice(attrs['sale_price'])
         return attrs
 
 

+ 1 - 6
apps/vehicle/views.py

@@ -133,12 +133,9 @@ class VehicleModelViewSet(CustomModelViewSet):
 
     @action(methods=['post'], detail=True)
     def update_model(self, request, pk):
-        if not self.request.user.has_perm('vehicle_model.edit_vehicle_model'):
-            raise CustomError(u"您没有[车型管理-修改]权限,无法执行该操作,请联系管理员分配权限!")
         instance = self.get_object()
         user = request.user
         thumbnail = request.FILES.get('image', None)
-        tags = request.POST.get('tags')
 
         if instance.delete:
             raise CustomError(u'该车型已被删除,禁止操作!')
@@ -188,8 +185,6 @@ class VehicleModelViewSet(CustomModelViewSet):
     @action(methods=['post'], detail=True)
     def set_vehicle_img(self, request, pk):
         # 设置整车图片
-        if not self.request.user.has_perm('vehicle_model.edit_vehicle_model'):
-            raise CustomError(u"您没有[车型管理-修改]权限,无法执行该操作,请联系管理员分配权限!")
         image = request.FILES.get('images', None)
         vehicle_model = self.get_object()
 
@@ -199,7 +194,7 @@ class VehicleModelViewSet(CustomModelViewSet):
             raise CustomError(u'未找到上传文件!')
 
         with transaction.atomic():
-            image = Images.objects.employee_addnew(request.user, Images.VEHICLE_IMAGES, image)
+            image = Images.objects.employee_addnew(request.user, Images.VEHICLE_MODEL_THUMBNAIL, image)
             VehicleImg.objects.create(vehicle_model=vehicle_model, img=image)
             tenant_log(request.user, BizLog.DELETE, u'车型[%s]上传整车图片儿,id=%d' % (vehicle_model.name, vehicle_model.id))
 

+ 1 - 1
uis/layuiadmin/lib/view.js

@@ -389,4 +389,4 @@ layui.define(['laytpl', 'layer'], function(exports){
   
   //对外接口
   exports('view', view);
-});
+});

+ 1 - 1
uis/layuiadmin/modules/common.js

@@ -45,4 +45,4 @@ layui.define(function(exports){
   
   //对外暴露的接口
   exports('common', {});
-});
+});

+ 0 - 185
uis/views/vehicle_model/details.html

@@ -1,185 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <title>成品产品管理</title>
-    <meta name="renderer" content="webkit">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
-  <link rel="stylesheet" href="../../layuiadmin/layui/css/layui.css" media="all">
-  <link rel="stylesheet" href="../../layuiadmin/style/admin.css" media="all">
-</head>
-<body>
-    <div class="layui-fluid">
-        <div class="layui-card">
-            <div class="layui-card-body" pad15>
-               <div class="layui-tab layui-tab-card">
-                   <ul class="layui-tab-title">
-                       <li class="layui-this">车型信息</li>
-                       <li>海报信息</li>
-                       <li>整车图片</li>
-                       <li>车型图片</li>
-                       <li>车型规格</li>
-                   </ul>
-                   <div class="layui-tab-content">
-                       <div class="layui-tab-item layui-show">
-                           <table class="layui-table">
-                               <tr>
-                                   <th style="width: 100px;">品牌名称</th>
-                                   <td id="brand_name" class="cell"></td>
-                               </tr>
-                               <tr>
-                                   <th style="width: 100px;">车系名称</th>
-                                   <td id="series_name" class="cell"></td>
-                               </tr>
-                               <tr>
-                                   <th style="width: 100px;">车型名称</th>
-                                   <td id="name" class="cell"></td>
-                               </tr>
-                               <tr>
-                                   <th style="width: 100px;">定金金额</th>
-                                   <td id="advance_pay_show" class="cell"></td>
-                               </tr>
-                               <tr>
-                                   <th style="width: 100px;">顶现金额</th>
-                                   <td id="equal_pay_show" class="cell"></td>
-                               </tr>
-                               <tr>
-                                   <th style="width: 100px;">指导价格</th>
-                                   <td id="price_show" class="cell"></td>
-                               </tr>
-                               <tr>
-                                   <th style="width: 100px;">本店价格</th>
-                                   <td id="shop_price_show" class="cell"></td>
-                               </tr>
-                               <tr>
-                                   <th style="width: 100px;">车型介绍</th>
-                                   <td id="describe" class="cell"></td>
-                               </tr>
-                               <tr>
-                                   <th style="width: 100px;">是否热门</th>
-                                   <td id="hot_text" class="cell"></td>
-                               </tr>
-                               <tr>
-                                   <th style="width: 100px;">推荐数</th>
-                                   <td id="recommend_count" class="cell"></td>
-                               </tr>
-                               <tr>
-                                   <th style="width: 100px;">成交数</th>
-                                   <td id="success_count" class="cell"></td>
-                               </tr>
-                               <tr>
-                                   <th style="width: 100px;">收藏数</th>
-                                   <td id="collection_count" class="cell"></td>
-                               </tr>
-                               <tr>
-                                   <th style="width: 100px;">车型图片</th>
-                                   <td>
-                                       <img class="layui-upload-img" id="thumbnail" style="max-height: 250px;">
-                                   </td>
-                               </tr>
-                               <tr>
-                                   <th style="width: 100px;">备注</th>
-                                   <td id="notes" class="cell"></td>
-                               </tr>
-                           </table>
-                       </div>
-                       <div class="layui-tab-item">
-                           <img class="layui-upload-img" id="playbill" style="max-height: 250px;">
-                       </div>
-                       <div class="layui-tab-item">
-                           <div class="layui-upload-list" id="images" style="display: flex;flex-wrap: wrap;">
-                           </div>
-                       </div>
-                       <div class="layui-tab-item">
-                           <div class="layui-upload" id="div_upload">
-                           </div>
-                       </div>
-                       <div class="layui-tab-item">
-                           <table class="layui-hide" id="datagrid"></table>
-                       </div>
-                   </div>
-               </div>
-            </div>
-        </div>
-    </div>
-
-    <script src="../../layuiadmin/layui/layui.js?t=1"></script>
-    <script>
-        layui.config({
-            base: '../../../layuiadmin/' //静态资源所在路径
-        }).extend({
-            index: 'lib/index' //主入口模块
-        }).use(['index', 'table','laydate', 'utils'], function () {
-            var $ = layui.$;
-            var table = layui.table;
-            var admin = layui.admin;
-            var options = null;
-
-            var id = layui.view.getParameterByName('id');
-            var editdata = JSON.parse(JSON.stringify(parent.layui.table.editdata));
-            $('#thumbnail').attr('src', editdata.thumbnail_url);
-            $('#playbill').attr('src', editdata.playbill_url);
-            $('.cell').each(function (index, element) {
-                element.innerHTML =  (editdata[element.id])
-            });
-
-            admin.req({
-                 url: '/vehicle/images/?vehicle_model=' + id,
-                done: function (res) {
-                   $('#images').html('');
-                   var data = res.data;
-                   for (var i in data){
-                       var html = '<div style="margin-top: 10px;"><a href="'+data[i].img_url+'" target="_blank"><img src="'+ data[i].img_url +'" class="layui-upload-img" style="margin-left: 5px;min-width: 80px; height: 100px;max-width: 200px;"></a></div>';
-                        $('#images').append(html)
-                   }
-                }
-             });
-
-            admin.req({
-                 url: '/option/search/?type=3'
-                 ,done: function(res){
-                     var data = res.data;
-                     options = res.data;
-                     for (var m in data){
-                         var div_id='show_image_'+data[m].id;
-                         var html  = '<span >'+data[m].name+'图片</span>' +
-                         '<blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;">' +
-                         '<div class="layui-upload-list" id="'+div_id+'" style="display: flex;flex-wrap: wrap;"></div></blockquote>';
-                         $('#div_upload').append(html)
-                     }
-                     loadUpload();
-                 }
-            });
-
-            var loadUpload = function(){
-                admin.req({
-                     url: '/vehicle/model_images/?vehicle_model=' + id,
-                    done: function (res) {
-                       for (var i in options){
-                          $('#show_image_' + options[i].id).html('');
-                        }
-
-                       var data = res.data;
-                       for (var i in data){
-                           var html = '<div style="margin-top: 10px;"><a href="'+data[i].img_url+'" target="_blank"><img src="'+ data[i].img_url +'" class="layui-upload-img" style="margin-left: 5px;min-width: 80px; height: 100px;max-width: 200px;"></a></div>';
-                            $('#show_image_'+ data[i].type).append(html)
-                       }
-                    }
-                 });
-            };
-
-            table.render({
-              elem: '#datagrid'
-              ,url: '/vehicle/model_specs/?vehicle_model=' + id
-              ,cols: [[
-                {field:'name_text', title:'名称',width: 150}
-               ,{field:'value', title:'值',width: 100}
-               ,{field:'notes', title:'备注',width: 200}
-              ]]
-              ,height: 'full-108'
-            });
-        })
-    </script>
-</body>
-</html>

+ 225 - 268
uis/views/vehicle_model/edit.html

@@ -1,19 +1,16 @@
 <!DOCTYPE html>
 <html>
 <head>
-  <meta charset="utf-8">
-  <title>添加员工信息</title>
-  <meta name="renderer" content="webkit">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
-  <link rel="stylesheet" href="../../layuiadmin/layui/css/layui.css" media="all">
-  <link rel="stylesheet" href="../../layuiadmin/style/admin.css" media="all">
-  <link rel="stylesheet" type="text/css" href="../../layuiadmin/style/formSelects-v4.css"/>
-    <link rel="stylesheet" type="text/css" href="../../layuiadmin/layui/ueditor/themes/default/css/umeditor.css"/>
+    <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"/>
     <script type="text/javascript" src="../../layuiadmin/layui/ueditor/third-party/jquery.min.js"></script>
-    <script type="text/javascript" charset="utf-8" src="../../layuiadmin/layui/ueditor/umeditor.config.js"></script>
-    <script type="text/javascript" charset="utf-8" src="../../layuiadmin/layui/ueditor/umeditor.js"></script>
-    <script type="text/javascript" src="../../layuiadmin/layui/ueditor/lang/zh-cn/zh-cn.js"></script>
     <style>
         .xm-select-parent .xm-form-selected dl {
             height: 160px;
@@ -22,283 +19,243 @@
 </head>
 <body>
 
-  <div class="layui-fluid">
-        <div class="layui-card">
-          <div class="layui-card-body" pad15>
+<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 class="layui-form-label"><font color='red' size="4">*</font>车系:</label>
-                  <div class="layui-input-block">
-                       <input id="id_series" name="series" class="layui-input" autocomplete="off" lay-verify="required"/>
-                  </div>
-                </div>
-                <div>
-                  <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>
-                  <label class="layui-form-label"><font color='red' size="4">*</font>定金:</label>
-                  <div class="layui-input-block">
-                    <input type="text" name="advance_pay_show" placeholder="请输入定金" lay-verify="required|numberGtZ" autocomplete="off" class="layui-input">
-                  </div>
-                </div>
-                 <div>
-                  <label class="layui-form-label"><font color='red' size="4">*</font>顶现金额:</label>
-                  <div class="layui-input-block">
-                    <input type="text" name="equal_pay_show" placeholder="请输入顶现金额" lay-verify="required|numberGtZ" autocomplete="off" class="layui-input">
-                  </div>
-                </div>
-                <div>
-                  <label class="layui-form-label"><font color='red' size="4">*</font>指导价:</label>
-                  <div class="layui-input-block">
-                    <input type="text" name="price_show" lay-verify="required|numberGtZ" placeholder="请输入指导价" autocomplete="off" class="layui-input">
-                  </div>
-                </div>
-                <div>
-                  <label class="layui-form-label"><font color='red' size="4">*</font>本店价格:</label>
-                  <div class="layui-input-block">
-                    <input type="text" name="shop_price_show" lay-verify="required|numberGtZ" placeholder="请输入本店价格" autocomplete="off" class="layui-input">
-                  </div>
-                </div>
-                <div>
-                    <label class="layui-form-label">车型标签:</label>
-                    <div class="layui-input-block">
-                      <select name="tags" xm-select="manager_tags"></select>
+                <div class="layui-row layui-col-space10 layui-form-item">
+                    <div>
+                        <label class="layui-form-label"><font color='red' size="4">*</font>车系:</label>
+                        <div class="layui-input-block">
+                              <input id="id_series" name="series" class="layui-input" autocomplete="off" lay-verify="required"/>
+                        </div>
+                    </div>
+                    <div>
+                        <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>
+                        <label class="layui-form-label"><font color='red' size="4">*</font>指导价:</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="price" lay-verify="required|numberGtZ" placeholder="请输入指导价"
+                                   autocomplete="off" class="layui-input">
+                        </div>
+                    </div>
+                    <div>
+                        <label class="layui-form-label"><font color='red' size="4">*</font>售价:</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="sale_price" lay-verify="required|numberGtZ"
+                                   placeholder="请输入价格" autocomplete="off" class="layui-input">
+                        </div>
+                    </div>
+                    <div>
+                        <label class="layui-form-label"><font color='red' size="4">*</font>发动机:</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="engine" lay-verify="required"
+                                   placeholder="请输入" autocomplete="off" class="layui-input">
+                        </div>
+                    </div>
+                    <div>
+                        <label class="layui-form-label"><font color='red' size="4">*</font>车身结构:</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="car_body" lay-verify="required"
+                                   placeholder="请输入" autocomplete="off" class="layui-input">
+                        </div>
+                    </div>
+                    <div>
+                        <label class="layui-form-label"><font color='red' size="4">*</font>变速箱:</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="transmission" lay-verify="required"
+                                   placeholder="请输入" autocomplete="off" class="layui-input">
+                        </div>
                     </div>
-                </div>
-                <div>
-                  <label class="layui-form-label">提成金额:</label>
-                  <div class="layui-input-block">
-                    <input type="text" name="commission_amount" placeholder="请输入提成金额" lay-verify="numberGeZ" autocomplete="off" class="layui-input">
-                    <div class="layui-word-aux" ><span style="color: red;">佣金=提成金额</span></div>
-                  </div>
-                </div>
-                <div>
-                  <label class="layui-form-label">排序:</label>
-                  <div class="layui-input-block">
-                    <input type="text" name="sort" placeholder="请输入排序" lay-verify="numberGez"  autocomplete="off" class="layui-input">
-                  </div>
-                </div>
 
-                <div >
-                  <label class="layui-form-label">在用:</label>
-                  <div class="layui-input-block">
-                    <input type="checkbox" name="enabled" lay-skin="switch" lay-text="是|否" checked="" value="1">
-                  </div>
-                </div>
-                <div >
-                  <label class="layui-form-label">热门:</label>
-                  <div class="layui-input-block">
-                      <input id="id_checked" type="checkbox" name="is_hot" lay-skin="switch" lay-text="是|否" checked="">
-                  </div>
-                </div>
-                <div>
-                <label class="layui-form-label"><font color='red' size="4">*</font>车型介绍:</label>
-                  <div class="layui-input-block">
-                      <script type="text/plain" id="myEditor"></script>
-                  </div>
-                </div>
-                <div>
-                  <label class="layui-form-label">备注:</label>
-                  <div class="layui-input-block">
-                    <input type="text" name="notes" placeholder="请输入备注" autocomplete="off" class="layui-input">
-                  </div>
-                </div>
-               <div>
-                  <label class="layui-form-label"><font color='red' size="4">*</font>车型图片:</label>
-                  <div class="layui-input-block">
-                      <button type="button" class="layui-btn-sm" id="test1">上传图片</button><br><br>
-                      <img class="layui-upload-img" id="demo1" style="max-width: 300px; max-height: 200px;">
-                  </div>
+                    <div>
+                        <label class="layui-form-label">在用:</label>
+                        <div class="layui-input-block">
+                            <input type="checkbox" name="enabled" lay-skin="switch" lay-text="是|否" checked="" value="1">
+                        </div>
+                    </div>
+
+                    <div>
+                        <label class="layui-form-label">备注:</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="notes" placeholder="请输入备注" autocomplete="off" class="layui-input">
+                        </div>
+                    </div>
+                    <div>
+                        <label class="layui-form-label"><font color='red' size="4">*</font>车型图片:</label>
+                        <div class="layui-input-block">
+                            <button type="button" class="layui-btn-sm" id="test1">上传图片</button>
+                            <br><br>
+                            <img class="layui-upload-img" id="demo1" style="max-width: 300px; max-height: 200px;">
+                        </div>
+                    </div>
+                    <button class="layui-btn" id="id_save" lay-submit lay-filter="component-form-element"
+                            style="display: none">保存
+                    </button>
+                    <button class="layui-btn" type="button" id="upload_image" style="display: none"></button>
                 </div>
-                <button class="layui-btn" id="id_save" lay-submit lay-filter="component-form-element" style="display: none">保存</button>
-                  <button class="layui-btn" type="button" id="upload_image" style="display: none"></button>
-              </div>
             </form>
-          </div>
         </div>
-  </div>
-
+    </div>
+</div>
 
-  <script src="../../layuiadmin/layui/layui.js"></script>
-  <script>
-  layui.link('../../../layuiadmin/style/autocomplete.css');
-  layui.config({
-    base: '../../../layuiadmin/' //静态资源所在路径
 
-  }).extend({
-    index: 'lib/index',
-    formSelects: 'formSelects-v4',
-    autocomplete: 'autocomplete'
-  }).use(['index', 'form', 'utils', 'upload', 'autocomplete', 'formSelects'], function(){
-    var $ = layui.$
-    ,admin = layui.admin
-    ,upload = layui.upload
-    ,autocomplete = layui.autocomplete
-    ,formSelects = layui.formSelects
-    ,form = layui.form;
-    var id = layui.view.getParameterByName('id');
-    var series = null;
+<script src="../../layuiadmin/layui/layui.js"></script>
+<script>
+    layui.link('../../../layuiadmin/style/autocomplete.css');
+    layui.config({
+        base: '../../../layuiadmin/' //静态资源所在路径
 
-    if (!id || id === '') {
-        $('#id_checked').removeAttr('checked');
-    }
+    }).extend({
+        index: 'lib/index',
+        formSelects: 'formSelects-v4',
+        autocomplete: 'autocomplete'
+    }).use(['index', 'form', 'utils', 'upload', 'autocomplete', 'formSelects'], function () {
+        var $ = layui.$
+            , admin = layui.admin
+            , upload = layui.upload
+            , autocomplete = layui.autocomplete
+            , formSelects = layui.formSelects
+            , form = layui.form;
+        var id = layui.view.getParameterByName('id');
+        var series = null;
 
-    var um = UM.getEditor('myEditor');
-    um.setWidth('100%');
-    $(".edui-body-container").css("width", "98%");
-
-    autocomplete.render({
-        elem:$('#id_series'),
-        url:'/vehicle/series/search/',
-        template_val:'',
-        template_txt:'<span class=\'layui-badge layui-bg-gray\'>{{d.brand_name}} - {{d.name}}',
-        onselect: function (resp) {
-            $('#id_series').val(resp.brand_name + '-' + resp.name);
-            series = resp.id;
-        }
-    });
+        autocomplete.render({
+            elem: $('#id_series'),
+            url: '/vehicle/series/search/',
+            template_val: '',
+            template_txt: '<span class=\'layui-badge layui-bg-gray\'>{{d.brand_name}} - {{d.name}}',
+            onselect: function (resp) {
+                $('#id_series').val(resp.brand_name + '-' + resp.name);
+                series = resp.id;
+            }
+        });
 
+        var loadData = function () {
+            if (id) {
+                var editdata = JSON.parse(JSON.stringify(parent.layui.table.editdata)); // 框架有Bug所以这么转换
+                form.val("component-form-element", editdata);
+                $('#id_series').val(editdata.brand_name + '-' + editdata.series_name);
+                series = editdata.series;
+                formSelects.value('manager_tags', editdata.tags);
 
-    formSelects.value('manager_tags', []);
-    admin.req({
-        url: '/option/search/?type=2'
-        ,done: function(res){
-            var _nodes = res.data;
-            formSelects.data('manager_tags', 'local', {
-            arr: _nodes,
-            tree: {
-                //在点击节点的时候, 如果没有子级数据, 会触发此事件
-                nextClick: function(id, item, callback){
-                    return false;
-                    },
+                if (editdata.thumbnail_url) {
+                    $('#demo1').attr('src', editdata.thumbnail_url);
                 }
-            });
-            //formSelects.value('manager_range', manages);
-            loadData();
-        }
-    });
-
-    var loadData = function () {
-        if(id){
-            var editdata = JSON.parse(JSON.stringify(parent.layui.table.editdata)); // 框架有Bug所以这么转换
-            form.val("component-form-element", editdata);
-            $('#id_series').val(editdata.brand_name + '-' + editdata.series_name);
-            series = editdata.series;
-            formSelects.value('manager_tags', editdata.tags);
-            um.setContent(editdata.describe);
-            if(editdata.thumbnail_url){
-                $('#demo1').attr('src', editdata.thumbnail_url);
             }
-        }
-    };
-
+        };
 
-    form.render(null, 'component-form-element');
+        form.render(null, 'component-form-element');
+        loadData()
+        var form_data = {field: {}};
+        if (id) {
+            var url = '/vehicle/model/' + id + '/update_model/';
+        } else {
+            url = '/vehicle/model/';
+        }
+        upload.render({
+            elem: '#test1',
+            url: url,
+            auto: false,
+            field: 'image',
+            bindAction: '#upload_image',
+            choose: function (obj) {
+                obj.preview(
+                    function (index, file, result) {
+                        $('#demo1').attr('src', result);
+                    }
+                );
+            },
+            data: {
+                series: function () {
+                    return form_data.field.series;
+                },
+                name: function () {
+                    return form_data.field.name;
+                },
+                price: function () {
+                    return form_data.field.price;
+                },
+                sale_price: function () {
+                    return form_data.field.sale_price
+                },
+                engine: function () {
+                    return form_data.field.engine;
+                },
+                car_body: function () {
+                    return form_data.field.car_body;
+                },
+                notes: function () {
+                    return form_data.field.notes;
+                },
+                transmission: function () {
+                    return form_data.field.transmission;
+                },
+                enabled: function () {
+                    if (form_data.field.enabled) {
+                        return form_data.field.enabled;
+                    } else {
+                        return '0';
+                    }
+                },
+            },
+            done: function (res) {
+                if (res.code != 0) {
+                    layer.msg(res.msg);
+                } else {
+                    parent.layui.onSubmitChild(res.data);
+                }
+            },
+            error: function () {
+                layer.msg('保存失败');
+            }
+        });
 
-    var form_data = {field:{}};
-    if (id){
-          var url = '/vehicle/model/' +id + '/update_model/';
-      }else{
-          url =  '/vehicle/model/';
-      }
-    upload.render({
-         elem: '#test1',
-         url: url,
-         auto: false,
-         field: 'image',
-         bindAction: '#upload_image',
-         choose: function(obj) {
-             obj.preview(
-                 function(index, file, result) {
-                     $('#demo1').attr('src', result);
-                 }
-             );
-         },
-         data:{
-             series: function(){return form_data.field.series;},
-             name: function(){return form_data.field.name;},
-             price: function(){return form_data.field.price_show;},
-             shop_price: function(){return form_data.field.shop_price_show},
-             advance_pay: function(){return form_data.field.advance_pay_show;},
-             equal_pay: function(){return form_data.field.equal_pay_show;},
-             notes: function(){return form_data.field.notes;},
-             describe: function(){return form_data.field.describe;},
-             tags: function(){return form_data.field.tags;},
-             commission_ratio: function(){return form_data.field.commission_amount;},
-             sort: function(){return form_data.field.sort;},
-             enabled: function(){
-                 if (form_data.field.enabled){
-                     return form_data.field.enabled;
-                 }else{
-                     return '0';
-                 }
-             },
-             is_hot: function(){
-                 if (form_data.field.is_hot){
-                     return form_data.field.is_hot;
-                 }else{
-                     return '0';
-                 }
-             }
-             },
-        done: function (res) {
-            if (res.code != 0) {
-                layer.msg(res.msg);
-            }else {
-                parent.layui.onSubmitChild(res.data);
+        form.on('submit(component-form-element)', function (data) {
+            if (!series) {
+                layer.msg('请搜索并选择车型');
+                return false;
             }
-        },
-        error: function () {
-            layer.msg('保存失败');
-        }
-    });
+            //console.log('000000000000000000000000000000');
+            //console.log(JSON.stringify(data.field));
 
-    form.on('submit(component-form-element)', function (data) {
-        if (!series){
-            layer.msg('请搜索并选择车型');
-            return false;
-        }
-        //console.log('000000000000000000000000000000');
-        //console.log(JSON.stringify(data.field));
+            if (!id && !data.field.image) {
+                layer.msg('车型图片是必填项', {icon: 5});
+                return false;
+            }
 
-        if (!id && !data.field.image) {
-            layer.msg('车型图片是必填项',{icon: 5});
+            data.field['series'] = series;
+            if (data.field.image) {
+                form_data = data;
+                $('#upload_image').click();
+            } else {
+                var save_data = data.field;
+                save_data['price'] = data.field.price;
+                save_data['sale_price'] = data.field.sale_price;
+                save_data['engine'] = data.field.engine;
+                save_data['car_body'] = data.field.car_body;
+                save_data['transmission'] = data.field.transmission;
+                admin.req({
+                    url: url
+                    , data: data.field
+                    , type: 'post'
+                    , done: function (res) {
+                        parent.layui.onSubmitChild(res.data);
+                    }
+                });
+            }
             return false;
-        }
+        });
 
-        var describe = UM.getEditor('myEditor').getContent();
-        data.field['describe'] = describe;
-        data.field['series'] = series;
-        if (data.field.image){
-            form_data = data;
-            $('#upload_image').click();
-        }else{
-            var save_data = data.field;
-            save_data['price'] = data.field.price_show;
-            save_data['shop_price'] = data.field.shop_price_show;
-            save_data['advance_pay'] = data.field.advance_pay_show;
-            save_data['equal_pay'] = data.field.equal_pay_show;
-            save_data['commission_ratio'] = data.field.commission_amount;
-            admin.req({
-                url: url
-                ,data: data.field
-                ,type: 'post'
-                ,done: function(res){
-                    parent.layui.onSubmitChild(res.data);
-                }
-              });
-        }
-        return false;
+        parent.layui.submitChild = function () {
+            $("#id_save").click();
+        };
     });
-
-    parent.layui.submitChild = function () {
-      $("#id_save").click();
-    };
-  });
-  </script>
+</script>
 </body>
 </html>

+ 10 - 103
uis/views/vehicle_model/index.html

@@ -52,12 +52,8 @@
 
             <script type="text/html" id="datagrid-operate-bar">
                 <div class="layui-btn-group">
-                    <a class="layui-btn layui-btn-xs" lay-event="detail">查看</a>
                     <a class="layui-btn layui-btn-xs" lay-event="edit" >修改</a>
-                    <a class="layui-btn layui-btn-xs" lay-event="upload_poster" >海报</a>
                     <a class="layui-btn layui-btn-xs" lay-event="upload" >整车图片</a>
-                    <a class="layui-btn layui-btn-xs" lay-event="model_upload" >车型图片</a>
-                    <a class="layui-btn layui-btn-xs" lay-event="specs" >规格</a>
                     <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del" >删除</a>
                 </div>
             </script>
@@ -80,55 +76,25 @@
             ,admin = layui.admin
             ,form = layui.form;
 
-    admin.req({
-        url: '/vehicle/dict/',
-        done: function (res) {
-            var brands = res.data.brand;
-            var brand_node = $('#id_brand');
-            for (var i in brands) {
-                var pid = brands[i].id;
-                var value = brands[i].name;
-                brand_node.append("<option value='" + pid + "'>" + value + "</option>");
-            }
-
-            var series = res.data.series;
-            var series_node = $('#id_series');
-            for (var i in series) {
-                var pid = series[i].id;
-                var value = series[i].name;
-                series_node.append("<option value='" + pid + "'>" + value + "</option>");
-            }
-
-            form.render();
-        }
-    });
-
-
     table.render({
       elem: '#datagrid'
       ,url: '/vehicle/model/'
       ,cols: [[
         {field:'brand_name', title:'品牌',width: 100}
-        ,{field:'series_name', title:'车系',width: 200}
-       ,{field:'name', title:'车型',width: 200}
-       ,{field:'advance_pay_show', align:'right', title:'定金',width: 100}
-       ,{field:'equal_pay_show', align:'right', title:'顶现金额',width: 100}
-       ,{field:'price_show', align:'right', title:'指导价',width: 150}
-       ,{field:'shop_price_show', align:'right', title:'本店价格',width: 150}
-       ,{field:'commission_amount', align:'right', title:'提成金额',width: 100}
-       ,{field:'sort', title:'排序', width:70}
-       ,{field:'enabled_text', title:'在用',width: 70}
-       ,{field:'hot_text', title:'热门',width: 70}
-       ,{field:'recommend_count', align:'right', title:'推荐数',width: 80}
-       ,{field:'success_count', align:'right', title:'成交数',width: 80}
-       ,{field:'collection_count', align:'right', title:'收藏数',width: 80}
+        ,{field:'series_name', title:'车系',width: 150}
+       ,{field:'name', title:'车型',width: 150}
+       ,{field:'price', align:'right', title:'指导价',width: 80}
+       ,{field:'sale_price', align:'right', title:'售价',width: 80}
+       ,{field:'engine', title:'发动机',width: 100}
+       ,{field:'car_body', title:'车身结构',width: 150}
+       ,{field:'transmission', title:'变速箱',width: 200}
+       ,{field:'enabled_text', title:'在用',width: 80}
         ,{field:'notes', title:'备注'}
-        ,{width:330, align:'center', fixed: 'right', toolbar: '#datagrid-operate-bar'}
+        ,{width:200, align:'center', fixed: 'right', toolbar: '#datagrid-operate-bar'}
       ]]
       ,page: true
       ,height: 'full-108'
       , done: function () {
-        layui.index.removeNoPermButtons()
       }
     });
     form.on('submit(query-form-element)', function(data){
@@ -163,14 +129,6 @@
           },
           content: 'edit.html?id='+data.id
         });
-      }else if(obj.event === 'detail'){
-        layer.open({
-          type: 2,
-          title: '查看',
-          shadeClose: true,
-          area: ['70%', '90%'],
-          content: 'details.html?id='+data.id
-        });
       }else if(obj.event === 'del'){
          layer.confirm('确定要删除吗?', function(index){
                 layer.close(index);
@@ -198,58 +156,7 @@
           },
           content: 'upload.html?id='+data.id
         });
-      }else if(obj.event === 'upload_poster'){
-        layer.open({
-          type: 2,
-          title: '上传海报',
-          area: ['600px', '450px'],
-          btn: ['保存', '取消'],
-          yes: function(index, dom){
-            layui.onSubmitChild = function (data) {
-              layer.close(index);
-              table.reload('datagrid',{});
-            };
-            layui.submitChild();
-          },
-          btn2: function(index, layero){
-            layer.close(index);//关闭当前按钮
-          },
-          content: 'upload_poster.html?id='+data.id
-        });
-      }else if (obj.event === 'specs'){
-            layer.open({
-              type: 2,
-              title: '设置规格参数',
-              area: ['70%', '500px'],
-              btn: ['保存', '取消'],
-              yes: function(index, dom){
-                 layui.onSubmitChild = function (data) {
-                  layer.close(index);
-                  table.reload('datagrid',{});
-                };
-                layui.submitChild();
-              },
-              btn2: function(index, layero){
-                layer.close(index);//关闭当前按钮
-              },
-              content: 'specs.html?id='+data.id
-            });
-        }else if (obj.event === 'model_upload'){
-            layer.open({
-              type: 2,
-              title: '上传车型图片',
-              area: ['70%', '90%'],
-              btn: ['保存', '取消'],
-              yes: function(index, dom){
-                 table.reload('datagrid',{});
-                 layer.close(index);
-              },
-              btn2: function(index, layero){
-                layer.close(index);//关闭当前按钮
-              },
-              content: 'upload_model.html?id='+data.id
-            });
-        }
+      }
     });
 
     $('#btn_add').on('click', function(){

+ 0 - 213
uis/views/vehicle_model/specs.html

@@ -1,213 +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">
-        .table-overlay .layui-table-body{overflow: visible;}
-        .table-overlay .layui-table-cell{height: auto; overflow: visible;}
-    </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">
-                    <form class="layui-form" action="" lay-filter="component-form-element">
-                        <fieldset class="layui-elem-field layui-field-title">
-                            <legend>规格参数<button type="button" id="btn-add" class="layui-btn layui-btn-primary layui-btn-sm"><i class="layui-icon"></i></button></legend>
-                        </fieldset>
-                            <div id="consumableDataTable" class="table-overlay">
-                                <table id="consumable_layTable" lay-filter="consumable_layTable" class="layui-hide"></table>
-                            </div>
-                        <button class="layui-btn" id="btn_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.link('../../../layuiadmin/style/autocomplete.css');
-layui.config({
-    base: '../../../layuiadmin/', //静态资源所在路径
-     autocomplete: 'autocomplete'
-}).extend({
-    index: 'lib/index' //主入口模块
-}).use(['index', 'form', 'table', 'laydate', 'utils', 'autocomplete'], function() {
-    var $ = layui.$;
-    var admin = layui.admin;
-    var form = layui.form;
-    var table = layui.table;
-    var id = layui.view.getParameterByName('id');
-
-    var consumable_tbWidth = $("#consumableDataTable").width();
-    var consumable_layTable = "consumable_layTable";
-    var consumable_tableIns = table.render({
-        elem: '#consumable_layTable',
-        id: consumable_layTable,
-        data: [],
-        width: consumable_tbWidth,
-        page: false,
-        limit: 1000,
-        loading: true,
-        even: true, //不开启隔行背景
-        cols: [[
-            {title: '序号', type: 'numbers'},
-            {field: 'name', title: '名称', width: 100},
-            {field: 'value', title: '值', width: 300,  templet: function (d) {
-                    return '<input id="value' + d.num + '" value="' + d.value + '" type="text" lay-verify="required" autocomplete="off" class="layui-input">';
-                }},
-            {field: 'notes', title: '备注', width: 200},
-            {
-                field: 'id', minWidth: 80, title: '操作', templet: function (d) {
-                    return '<a class="layui-btn layui-btn-xs layui-btn-danger" lay-event="del" lay-id="' + d.num + '"><i class="layui-icon layui-icon-delete"></i>删除</a>';
-                }
-            }
-        ]],
-    });
-
-    admin.req({
-        url: '/vehicle/model_specs/?vehicle_model=' + id,
-        done: function (res) {
-            var data = res.data;
-            var roldData = table.cache[consumable_layTable];
-            var k=0;
-            for (var i in data) {
-                k = k + 1;
-                var newRow = {
-                    id: data[i].name,
-                    name: data[i].name_text,
-                    notes: data[i].notes,
-                    value: data[i].value,
-                    num: k
-                };
-                roldData.push(newRow);
-            }
-            consumable_tableIns.reload({
-                data: roldData
-            });
-
-        }
-    });
-
-
-    table.on('tool(consumable_layTable)', function (obj) {
-        var data = obj.data;
-        var event = obj.event;
-        switch (event) {
-            case "del":
-                obj.del();
-                layer.msg('删除成功', {icon: 6});
-                break;
-        }
-    });
-
-    var getconsumableData = function () {
-        var rows = table.cache[consumable_layTable];
-        var data = [];
-        for (var n in rows) {
-            if (rows[n] == false) {
-                continue;
-            }
-            var value = $('#value'+rows[n].num).val();
-            var item = {
-                num: rows[n].num,
-                id: rows[n].id,
-                name: rows[n].name,
-                notes: rows[n].notes,
-                value: value
-            };
-            data.push(item);
-        }
-        return data;
-    };
-    form.on('submit(component-form-element)', function (data) {
-        var rows = table.cache[consumable_layTable];
-        var save_data = [];
-        for (var n in rows) {
-            if (rows[n] == false) {
-                continue;
-            }
-            var value = $('#value'+rows[n].num).val();
-            var item = {
-                key: rows[n].id,
-                value: value
-            };
-            save_data.push(item);
-        }
-        admin.req({
-            url: '/vehicle/model/' + id + '/set_specs/'
-            ,type: 'post'
-            , data: {data: JSON.stringify(save_data)}
-            , done: function (res) {
-                parent.layui.onSubmitChild(res.data);
-            }
-        });
-        return false;
-    });
-    $('#btn-add').on('click', function () {
-        layer.open({
-            type: 2,
-            title: '添加产品',
-            area: ['90%', '98%'],
-            btn: ['确定', '取消'],
-            yes: function (index, dom) {
-                layui.onSubmitChild = function (data) {
-                    if(data.length === 0) {
-                        layer.msg('请先选择记录!');
-                        return;
-                    }
-                    var oldData = getconsumableData();
-                    var k=0;
-                    if (oldData.length > 0){
-                        k = oldData[oldData.length-1].num;
-                    }
-                    for (var i in data) {
-                        for(var m in oldData){
-                            if(oldData[m].id === data[i].id){
-                                layer.msg('规格['+data[i].name+']已添加!', {icon: 5});
-                                return;
-                            }
-                        }
-                        k = k + 1;
-                        var newRow = {
-                            id: data[i].id,
-                            name: data[i].name,
-                            notes: data[i].notes,
-                            num: k,
-                            value:''
-                        };
-                        oldData.push(newRow);
-                    }
-                    consumable_tableIns.reload({
-                        data: oldData
-                    });
-
-                    layer.msg('添加成功!', {icon: 6});
-                };
-                layui.submitChild();
-            },
-            btn2: function (index, layero) {
-                layer.close(index);//关闭当前按钮
-            },
-            content: '../option/search.html'
-        });
-    });
-    parent.layui.submitChild = function () {
-      $("#btn_save").click();
-    };
-});
-
-  </script>
-</body>
-</html>

+ 0 - 132
uis/views/vehicle_model/upload_model.html

@@ -1,132 +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>
-
-<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">
-                    <form class="layui-form" action="" lay-filter="component-form-element">
-                        <div class="layui-upload" id="div_upload">
-                        </div>
-                        <button class="layui-btn" id="upload_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>
-   var main_id = null;
-   var options = null;
-  layui.link('../../../layuiadmin/style/autocomplete.css');
-  layui.config({
-    base: '../../../layuiadmin/' //静态资源所在路径
-  }).extend({
-    index: 'lib/index',
-    autocomplete: 'autocomplete'
-  }).use(['index','utils', 'form', 'element', 'upload'], function(){
-    var $ = layui.$
-    ,admin = layui.admin
-    ,element = layui.element
-    ,form = layui.form
-    ,upload = layui.upload;
-
-    var id = layui.view.getParameterByName('id');
-    main_id = id;
-
-    form.render(null, 'component-form-element');
-    element.render('breadcrumb', 'breadcrumb');
-
-    admin.req({
-         url: '/option/search/?type=3'
-         ,done: function(res){
-             var data = res.data;
-             options = res.data;
-             for (var m in data){
-                 var button_id='upload_image_'+data[m].id;
-                 var div_id='show_image_'+data[m].id;
-                 var html  = '<button type="button" class="layui-btn" id="'+button_id+'">上传'+data[m].name+'图片</button>' +
-                         '<blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;">已上传图片:' +
-                         '<div class="layui-upload-list" id="'+div_id+'" style="display: flex;flex-wrap: wrap;"></div></blockquote>';
-                 $('#div_upload').append(html)
-             }
-             loadUpload();
-            refresh();
-         }
-    });
-    //refresh();
-
-    //多图片上传
-    var loadUpload = function () {
-        for (var i in options){
-          upload.render({
-            elem: '#upload_image_' + options[i].id
-            ,url:  '/vehicle/model/'+id+'/set_model_img/'
-            ,field: 'images'
-            ,exts: 'jpg|png|jpeg|bmp'
-            ,acceptMime: '.jpg,.png,.jpeg,.bmp'
-            ,multiple: true
-            ,data: {type: options[i].id}
-            ,done: function (res) {
-                if (res.code != 0) {
-                    layer.msg(res.msg);
-                }else{
-                    refresh();
-                }
-            },
-            error: function () {
-                layer.msg('保存失败');
-            }
-          });
-      }
-    };
-    parent.layui.submitChild = function () {
-      $("#upload_save").click();
-    };
-  });
-
-  function refresh () {
-      var $ = layui.$;
-
-      layui.admin.req({
-        url: '/vehicle/model_images/?vehicle_model=' + main_id,
-        done: function (res) {
-         for (var i in options){
-              $('#show_image_' + options[i].id).html('');
-          }
-           var data = res.data;
-           for (var i in data){
-               var html = '<div style="margin-top: 10px;"><a href="'+data[i].img_url+'" target="_blank"><img src="'+ data[i].img_url +'" class="layui-upload-img" style="margin-left: 5px;min-width: 80px; height: 100px;max-width: 200px;"></a>' +
-                      '<div align="center" style="margin-top: 3px;"><button type="button" class="layui-btn layui-btn-danger layui-btn-xs" onclick="delImage('+data[i].id+')">删除</button></div></div>';
-                $('#show_image_'+ data[i].type).append(html)
-           }
-        }
-    });
-  }
-
-  function delImage(id) {
-      layui.admin.req({
-         url: '/vehicle/model_images/'+id + '/'
-         ,type: 'delete'
-         ,done: function(res){
-             refresh();
-         }
-      });
-  }
-
-  </script>
-</body>
-</html>

+ 0 - 105
uis/views/vehicle_model/upload_poster.html

@@ -1,105 +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>
-        img{
-            width: 40%;
-            height: 30%;
-        }
-    </style>
-</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-row layui-col-space10 layui-form-item">
-               <div class="layui-col-lg6">
-                  <label class="layui-form-label">海报图片:</label>
-                  <div class="layui-input-block">
-                      <button type="button" class="layui-btn-sm" id="upload_image">上传图片</button><br><br>
-                      <img class="layui-upload-img" id="show_image">
-                  </div>
-               </div>
-                <button class="layui-btn" id="id_save" lay-submit lay-filter="component-form-element" style="display: none">保存</button>
-                  <button class="layui-btn" type="button" id="upload_save" style="display: none"></button>
-              </div>
-            </form>
-          </div>
-        </div>
-      </div>
-    </div>
-  </div>
-
-
-  <script src="../../layuiadmin/layui/layui.js"></script>
-  <script>
-  layui.config({
-    base: '../../../layuiadmin/' //静态资源所在路径
-  }).extend({
-    index: 'lib/index',
-    formSelects: 'formSelects-v4'
-  }).use(['index', 'form', 'utils', 'upload'], function(){
-    var $ = layui.$
-    ,admin = layui.admin
-    ,upload = layui.upload
-    ,form = layui.form;
-    var id = layui.view.getParameterByName('id');
-    var editdata = JSON.parse(JSON.stringify(parent.layui.table.editdata)); // 框架有Bug所以这么转换
-    if(editdata.playbill_url){
-        $('#show_image').attr('src', editdata.playbill_url);
-    }
-
-    form.render(null, 'component-form-element');
-
-    var form_data = {field:{}};
-    upload.render({
-         elem: '#upload_image',
-         url: '/vehicle/model/' +id + '/upload_playbill/',
-         auto: false,
-         field: 'image',
-         bindAction: '#upload_save',
-         choose: function(obj) {
-             obj.preview(
-                 function(index, file, result) {
-                     $('#show_image').attr('src', result);
-                 }
-             );
-         },
-        done: function (res) {
-            if (res.code != 0) {
-                layer.msg(res.msg);
-            }else {
-                parent.layui.onSubmitChild(res.data);
-            }
-        },
-        error: function () {
-            layer.msg('上传失败');
-        }
-    });
-
-    form.on('submit(component-form-element)', function (data) {
-         form_data = data;
-         $('#upload_save').click();
-        return false;
-    });
-
-    parent.layui.submitChild = function () {
-      $("#id_save").click();
-    };
-  });
-  </script>
-</body>
-</html>

+ 16 - 8
uis/views/vehicle_series/series_edit.html

@@ -9,7 +9,6 @@
           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>
         img {
             width: 40%;
@@ -43,7 +42,7 @@
                         <div class="layui-col-lg6">
                             <label class="layui-form-label">热门:</label>
                             <div class="layui-input-block">
-                                <input type="checkbox" name="is_hot" lay-skin="switch" lay-text="是|否" checked=""
+                                <input type="checkbox" name="is_hot" lay-skin="switch" lay-text="是|否"
                                        value="1">
                             </div>
                         </div>
@@ -71,9 +70,9 @@
                         <div>
                             <label class="layui-form-label">车系展示:</label>
                             <div class="layui-input-block">
-                                <button type="button" class="layui-btn-sm" id="test1">上传图片</button>
+                                <button type="button" class="layui-btn-sm" id="up_series_image">上传图片</button>
                                 <br><br>
-                                <img class="layui-upload-img" id="demo1">
+                                <img class="layui-upload-img" id="series_img">
                             </div>
                         </div>
                         <button id="id_save" class="layui-btn" lay-submit lay-filter="component-form-element"
@@ -94,7 +93,6 @@
         base: '../../../layuiadmin/' //静态资源所在路径
     }).extend({
         index: 'lib/index',
-        formSelects: 'formSelects-v4'
     }).use(['index', 'form', 'utils', 'upload'], function () {
         var $ = layui.$
             , admin = layui.admin
@@ -121,7 +119,7 @@
                 var editdata = JSON.parse(JSON.stringify(parent.layui.table.editdata)); // 框架有Bug所以这么转换
                 form.val("component-form-element", editdata);
                 if (editdata.img_url) {
-                    $('#demo1').attr('src', editdata.img_url);
+                    $('#series_img').attr('src', editdata.img_url);
                 }
             }
         };
@@ -135,7 +133,7 @@
             url = '/vehicle/series/';
         }
         upload.render({
-            elem: '#test1',
+            elem: '#up_series_image',
             url: url,
             auto: false,
             field: 'image',
@@ -143,7 +141,7 @@
             choose: function (obj) {
                 obj.preview(
                     function (index, file, result) {
-                        $('#demo1').attr('src', result);
+                        $('#series_img').attr('src', result);
                     }
                 );
             },
@@ -154,9 +152,19 @@
                 name: function () {
                     return form_data.field.name;
                 },
+                min_price: function () {
+                    return form_data.field.min_price;
+                },
                 notes: function () {
                     return form_data.field.notes;
                 },
+                is_hot: function () {
+                    if (form_data.field.is_hot) {
+                        return form_data.field.is_hot;
+                    } else {
+                        return '0'
+                    }
+                },
                 enabled: function () {
                     if (form_data.field.enabled) {
                         return form_data.field.enabled;

+ 128 - 0
utils/booleancharfield.py

@@ -0,0 +1,128 @@
+#coding=utf-8
+
+from rest_framework import serializers
+from utils.format import strftime,strfdate
+from apps.base import Formater
+class BooleanCharField(serializers.BooleanField):
+    def get_attribute(self, obj):
+        return obj
+
+    def to_representation(self, obj):
+        if '.' in self.source:
+            k = self.source.split('.')
+            has_r = hasattr(obj, k[0])
+            if has_r:
+                r = getattr(obj, k[0])
+                if hasattr(r, k[1]):
+                    val = getattr(r, k[1])
+                else:
+                    val = self.get_attribute(obj)
+            else:
+                return u'未知'
+        else:
+            val = getattr(obj, self.source)
+        return u'是' if val else u'否'
+
+class TimeCharField(serializers.CharField):
+    def get_attribute(self, obj):
+        return obj
+
+    def to_representation(self, obj):
+        if '.' in self.source:
+            k = self.source.split('.')
+            has_r = hasattr(obj, k[0])
+            if has_r:
+                r = getattr(obj, k[0])
+                if hasattr(r, k[1]):
+                    val = getattr(r, k[1])
+                else:
+                    val = self.get_attribute(obj)
+            else:
+                return ''
+        else:
+            val = getattr(obj, self.source)
+
+        return strftime(val)
+
+class DateCharField(serializers.CharField):
+    def get_attribute(self, obj):
+        return obj
+
+    def to_representation(self, obj):
+        if '.' in self.source:
+            k = self.source.split('.')
+            has_r = hasattr(obj, k[0])
+            if has_r:
+                r = getattr(obj, k[0])
+                if hasattr(r, k[1]):
+                    val = getattr(r, k[1])
+                else:
+                    val = self.get_attribute(obj)
+            else:
+                return ''
+        else:
+            val = getattr(obj, self.source)
+        return strfdate(val)
+
+class AmountShowCharField(serializers.CharField):
+    def get_attribute(self, obj):
+        return obj
+
+    def to_representation(self, obj):
+        if '.' in self.source:
+            k = self.source.split('.')
+            has_r = hasattr(obj, k[0])
+            if has_r:
+                r = getattr(obj, k[0])
+                if hasattr(r, k[1]):
+                    val = getattr(r, k[1])
+                else:
+                    val = self.get_attribute(obj)
+            else:
+                return ''
+        else:
+            val = getattr(obj, self.source)
+
+        return Formater.formatAmountShow(val)
+
+class PriceShowCharField(serializers.CharField):
+    def get_attribute(self, obj):
+        return obj
+
+    def to_representation(self, obj):
+        if '.' in self.source:
+            k = self.source.split('.')
+            has_r = hasattr(obj, k[0])
+            if has_r:
+                r = getattr(obj, k[0])
+                if hasattr(r, k[1]):
+                    val = getattr(r, k[1])
+                else:
+                    val = self.get_attribute(obj)
+            else:
+                return ''
+        else:
+            val = getattr(obj, self.source)
+
+        return Formater.formatPriceShow(val)
+
+class CountShowCharField(serializers.CharField):
+    def get_attribute(self, obj):
+        return obj
+
+    def to_representation(self, obj):
+        if '.' in self.source:
+            k = self.source.split('.')
+            has_r = hasattr(obj, k[0])
+            if has_r:
+                r = getattr(obj, k[0])
+                if hasattr(r, k[1]):
+                    val = getattr(r, k[1])
+                else:
+                    val = self.get_attribute(obj)
+            else:
+                return ''
+        else:
+            val = getattr(obj, self.source)
+
+        return Formater.formatCountShow(val)