Jelajahi Sumber

供应商发布商品自动保存信息

zhengjinyi 11 bulan lalu
induk
melakukan
0fd88393ec

+ 391 - 389
src/main/resources/static/js/supplier-center/shop/mixins/checkeMixins.js

@@ -1,389 +1,391 @@
-// 处理input&部分校验
-var checkeMixins = function () {
-    return {
-        data() {
-            return {
-                vShow_Name:false,
-                vShow_AliasName:false,
-                vShow_TinyTypeID:false,
-                vShow_BrandID:false,
-                vShow_GoodsType:false,
-                vShow_QualificationImg:false,
-                vShow_Tags:false,
-                vShow_price:false,
-                vShow_includedTax:false,
-                vShow_isNewProductType:false,
-                vShow_taxPoint:false,
-                vShow_GoodsImages:false,
-                vShow_detailInfoEditor:true,
-                vShow_orderInfoEditor:true,
-                vShow_attribute:false,
-                vShow_trainingMethod:false,
-                vShow_trainingType:false,
-                vShow_QualificationNo:false,
-                vShow_ProductName:false,
-                vShow_QualificationTime:false,
-                vShow_freePostFlag:false // 物流方式
-            }
-        },
-        mounted: function() {
-
-        },
-        methods: {
-            PrevStep: function(){//返回上一步
-                this.activeNum--;
-                this.scrollIntoView();
-            },
-            NextStep: function(){//进入第二步
-                this.handleNextStep();
-            },
-            NextStep1: function(){//进入第三步
-                this.handleNextStep1();
-            },
-            NextStep2: function() {//点击进入第四步
-                this.handleNextStep2();
-            },
-            NextStep3: function() {//点击进入5步
-                this.activeNum++;
-                this.scrollIntoView();
-            },
-            handleNextStep(){// 进入第二步
-                var _this = this;
-                var KeyString = '',TagString='';
-                console.log(_this.releaseParams);
-                if(_this.releaseParams.name === ''){
-                    _this.vShow_Name = true;
-                    _this.fromMessage = '请输入商品显示名';
-                    _this.scrollIntoView();
-                    setTimeout(function(){
-                        _this.vShow_Name = false;
-                    },2000);
-                    return
-                }
-                if(_this.releaseParams.aliasName === ''){
-                    _this.vShow_AliasName = true;
-                    _this.fromMessage = '请输入内部商品名';
-                    _this.scrollIntoView();
-                    setTimeout(function(){
-                        _this.vShow_AliasName = false;
-                    },2000);
-                    return;
-                }
-                if(_this.releaseParams.commodityType === ''){
-                    _this.vShow_attribute=true;
-                    _this.fromMessage = '请选择商品属性';
-                    _this.scrollIntoView();
-                    setTimeout(function(){
-                        _this.vShow_attribute = false;
-                    },2000);
-                    return;
-                }
-                if(_this.releaseParams.commodityType === 2){
-                    if(_this.releaseParams.trainingMethod === 0){
-                        _this.vShow_trainingMethod=true;
-                        _this.fromMessage = '请选择培训方式';
-                        _this.scrollIntoView();
-                        setTimeout(function(){
-                            _this.vShow_trainingMethod = false;
-                        },2000);
-                        return;
-                    }
-                    if(_this.releaseParams.trainingType === 0){
-                        _this.vShow_trainingType=true;
-                        _this.fromMessage = '请选择培训费用';
-                        _this.scrollIntoView();
-                        setTimeout(function(){
-                            _this.vShow_trainingType = false;
-                        },2000);
-                        return;
-                    }
-                    if(_this.releaseParams.trainingType === 1){
-                        if(_this.releaseParams.trainingFee === ''){
-                            _this.vShow_trainingType=true;
-                            _this.fromMessage = '请填写包含食宿,交通等各项费用的培训总金额';
-                            _this.scrollIntoView();
-                            setTimeout(function(){
-                                _this.vShow_trainingType = false;
-                            },2000);
-                            return;
-                        }
-                    }
-                }
-                if(_this.releaseParams.bigTypeId === ''){
-                    _this.vShow_TinyTypeID = true;
-                    _this.fromMessage = '请选择商品分类';
-                    _this.scrollIntoView();
-                    setTimeout(function(){
-                        _this.vShow_TinyTypeID = false;
-                    },2000);
-                    return;
-                }
-                if(_this.classificationTwoList.length >0){
-                    if(_this.releaseParams.smallTypeId === ''){
-                        _this.vShow_TinyTypeID = true;
-                        _this.fromMessage = '请选择二级分类';
-                        _this.scrollIntoView();
-                        setTimeout(function(){
-                            _this.vShow_TinyTypeID = false;
-                        },2000);
-                        return;
-                    }
-                }
-                if(_this.classificationThreeList.length >0){
-                    if(_this.releaseParams.tinyTypeId === ''){
-                        _this.vShow_TinyTypeID = true;
-                        _this.fromMessage = '请选择三级分类';
-                        _this.scrollIntoView();
-                        setTimeout(function(){
-                            _this.vShow_TinyTypeID = false;
-                        },2000);
-                        return;
-                    }
-                }
-                if(_this.releaseParams.brandId === ''){
-                    _this.vShow_BrandID = true;
-                    _this.fromMessage = '请选择商品品牌';
-                    _this.scrollIntoView();
-                    setTimeout(function(){
-                        _this.vShow_BrandID = false;
-                    },2000);
-                    return;
-                }
-                if(_this.releaseParams.productType === ""){
-                    _this.vShow_GoodsType = true;
-                    _this.fromMessage = '请选择商品类型';
-                    _this.scrollIntoView();
-                    setTimeout(function(){
-                        _this.vShow_GoodsType = false;
-                    },2000);
-                    return;
-                }
-                if(_this.releaseParams.productType === 2){
-                    if(_this.releaseParams.machineType === ''){
-                        _this.vShow_GoodsType = true;
-                        _this.fromMessage = '请选择器械类型';
-                        _this.scrollIntoView();
-                        setTimeout(function(){
-                            _this.vShow_GoodsType = false;
-                        },3000);
-                        return;
-                    }
-                    if(_this.releaseParams.qualificationImg === ''){
-                        _this.vShow_QualificationImg = true;
-                        _this.fromMessage = '请上传资质图片';
-                        _this.scrollIntoView();
-                        setTimeout(function(){
-                            _this.vShow_QualificationImg = false;
-                        },3000);
-                        return;
-                    }
-                    if(_this.releaseParams.qualificationNo === ''){
-                        _this.vShow_QualificationNo = true;
-                        _this.fromMessage = '请输入证书编号';
-                        _this.scrollIntoView();
-                        setTimeout(function(){
-                            _this.vShow_QualificationNo = false;
-                        },3000);
-                        return;
-                    }
-                    if(_this.releaseParams.productName === ''){
-                        _this.vShow_ProductName = true;
-                        _this.fromMessage = '请输入产品名称';
-                        _this.scrollIntoView();
-                        setTimeout(function(){
-                            _this.vShow_ProductName = false;
-                        },3000);
-                        return;
-                    }
-                    if(_this.releaseParams.qualificationTime === ''){
-                        _this.vShow_QualificationTime = true;
-                        _this.fromMessage = '请选择证书有效期';
-                        _this.scrollIntoView();
-                        setTimeout(function(){
-                            _this.vShow_QualificationTime = false;
-                        },3000);
-                        return;
-                    }
-                }
-                //商品标签
-                if(_this.tagsList ==='') {
-                    _this.vShow_Tags = true;
-                    _this.fromMessage = '请添加商品标签';
-                    _this.scrollIntoView();
-                    setTimeout(function(){
-                        _this.vShow_Tags = false;
-                    },3000);
-                    return;
-                }else{
-                    _this.tagsList.forEach(function(el){
-                        TagString += el.tag+',';
-                    });
-                    _this.releaseParams.tags = TagString.substring(0, TagString.lastIndexOf(','));
-                }
-                //搜索关键词
-                if(_this.searchKeyList!==''){
-                    _this.searchKeyList.forEach(function(el){
-                        KeyString+=el.value+',';
-                    });
-                    _this.releaseParams.searchKey = KeyString.substring(0, KeyString.lastIndexOf(','));
-                }
-                if( _this.paramKeyList[0].paramsName === ''){
-                    _this.params.param = [];
-                }else{
-                    _this.params.param = _this.paramKeyList;
-                }
-                _this.activeNum++;
-                _this.scrollIntoView();
-            },
-            handleNextStep1(){ //进入第三步
-                const _this = this;
-                if(this.releaseParams.groundMall === ''){
-                    _this.isPlatforms = true;
-                    _this.fromMessage = '请将选择上架平台';
-                    setTimeout(function(){
-                        _this.isPlatforms = false;
-                    },3000);
-                    return;
-                }
-                if(this.platformsFlag){
-                    if(!this.checkedSku()){
-                        _this.isSkuRule = true;
-                        _this.fromMessage = '请将【采美】平台SKU数据补充完整';
-                        setTimeout(function(){
-                            _this.isSkuRule = false;
-                        },3000);
-                        return;
-                    }
-                }
-                if(this.platformsMallFlag){
-                    if(!this.checkedMallSku()){
-                        _this.isMallSkuRule = true;
-                        _this.fromMessage = '请将【丽格集采联盟】平台SKU数据补充完整';
-                        setTimeout(function(){
-                            _this.isMallSkuRule = false;
-                        },3000);
-                        return;
-                    }
-                }
-                if(_this.releaseParams.includedTax === 3){
-                    _this.vShow_includedTax = true;
-                    _this.fromMessage = '请选择是否含税';
-                    _this.scrollIntoView();
-                    setTimeout(function(){
-                        _this.vShow_includedTax = false;
-                    },3000);
-                    return;
-                }
-                if(_this.releaseParams.freePostFlag === 1){
-                    if(!_this.releaseParams.freightTemplateId){
-                        _this.vShow_freePostFlag = true;
-                        _this.fromMessage = '请选择运费模板';
-                        setTimeout(function(){
-                            _this.vShow_freePostFlag = false;
-                        },3000);
-                        return;
-                    }
-                }
-                _this.activeNum++;
-                _this.scrollIntoView();
-                if(_this.vShow_detailInfoEditor){
-                    _this.initCKeditor();
-                }
-            },
-            handleNextStep2(){//点击进入第四步
-                var _this = this;
-                var detailInfo= detailInfoEditor.getData();
-                _this.releaseParams.detailInfo = detailInfo;
-                if(_this.GoodsImagesList ===''){
-                    CAIMEI.dialog('请上传商品图片');
-                    return;
-                }
-                if( _this.releaseParams.detailInfo ===''){
-                    CAIMEI.dialog('请填写商品详情');
-                    return;
-                }
-                _this.params.image = [];
-                _this.GoodsImagesList.forEach(function(el,index){
-                    var imageObject = {};
-                    if(index === 0 ){
-                        imageObject = {productImageId:'',image:el,mainFlag:'1'};
-                    }else{
-                        imageObject = {productImageId:'',image:el,mainFlag:'0'};
-                    }
-                    _this.params.image.push(imageObject);
-                });
-                _this.activeNum++;
-                _this.scrollIntoView();
-                if(_this.vShow_orderInfoEditor){
-                    _this.initOrderCKeditor();
-                    _this.initSeverCKeditor();
-                }
-            },
-            blur_name: function(e){//商品名失去焦点
-                var _this = this;
-                _this.vShow_Name = false;
-                if(e.target.value === ''){
-                    _this.vShow_Name = true;
-                    _this.fromMessage = '请输入商品显示名';
-                    setTimeout(function(){
-                        _this.vShow_Name = false;
-                    },3000);
-                }else{
-                    _this.vShow_Name = false;
-                }
-            },
-            blur_aliasName: function(e){//内部商品名失去焦点
-                var _this = this;
-                _this.vShow_AliasName = false;
-                if(e.target.value === ''){
-                    _this.vShow_AliasName = true;
-                    _this.fromMessage = '请输入内部商品名';
-                    setTimeout(function(){
-                        _this.vShow_AliasName = false;
-                    },3000);
-                }else{
-                    _this.vShow_AliasName = false;
-                }
-            },
-            blur_taxPoint: function(event){
-                var E_TaxPoint = event.target.value;
-                if(E_TaxPoint!==''){
-                    this.releaseParams.taxPoint = parseFloat(E_TaxPoint);
-                }else{
-                    this.releaseParams.taxPoint = '';
-                }
-                this.vShow_taxPoint = false;
-            },
-            blur_tags: function(e){
-                this.vShow_Tags = false;
-            },
-            blur_aliasUnit: function(e){
-                this.vShow_Unit = false;
-            },
-            blur_qualificationNo: function(e){
-                this.vShow_QualificationNo = false;
-            },
-            blur_productName: function(e){
-                this.vShow_ProductName = false;
-            },
-            input_normalPrice: function(e){
-                this.vShow_NormalPrice = false;
-            },
-            input_price: function(e){
-                this.vShow_price = false;
-            },
-            input_trainingFee: function(event){
-                var E_Number = event.target.value;
-                if(E_Number!==''){
-                    this.releaseParams.trainingFee = parseInt(E_Number.replace(/[^0-9]/g,''));
-                }else{
-                    this.releaseParams.trainingFee = '';
-                }
-            },
-            toFixedFn: function(text){
-                return Number(text).toFixed(2);
-            },
-        }
-    }
-}();
-
+// 处理input&部分校验
+var checkeMixins = function () {
+    return {
+        data() {
+            return {
+                vShow_Name:false,
+                vShow_AliasName:false,
+                vShow_TinyTypeID:false,
+                vShow_BrandID:false,
+                vShow_GoodsType:false,
+                vShow_QualificationImg:false,
+                vShow_Tags:false,
+                vShow_price:false,
+                vShow_includedTax:false,
+                vShow_isNewProductType:false,
+                vShow_taxPoint:false,
+                vShow_GoodsImages:false,
+                vShow_detailInfoEditor:true,
+                vShow_orderInfoEditor:true,
+                vShow_attribute:false,
+                vShow_trainingMethod:false,
+                vShow_trainingType:false,
+                vShow_QualificationNo:false,
+                vShow_ProductName:false,
+                vShow_QualificationTime:false,
+                vShow_freePostFlag:false // 物流方式
+            }
+        },
+        mounted: function() {
+
+        },
+        methods: {
+            PrevStep: function(){//返回上一步
+                this.activeNum--;
+                this.scrollIntoView();
+            },
+            NextStep: function(){//进入第二步
+                this.handleNextStep();
+            },
+            NextStep1: function(){//进入第三步
+                this.handleNextStep1();
+            },
+            NextStep2: function() {//点击进入第四步
+                this.handleNextStep2();
+            },
+            NextStep3: function() {//点击进入5步
+                this.releaseParams.orderInfo = orderInfoEditor.getData();
+                this.releaseParams.serviceInfo = severInfoEditor.getData();
+                this.activeNum++;
+                this.scrollIntoView();
+            },
+            handleNextStep(){// 进入第二步
+                var _this = this;
+                var KeyString = '',TagString='';
+                console.log(_this.releaseParams);
+                if(_this.releaseParams.name === ''){
+                    _this.vShow_Name = true;
+                    _this.fromMessage = '请输入商品显示名';
+                    _this.scrollIntoView();
+                    setTimeout(function(){
+                        _this.vShow_Name = false;
+                    },2000);
+                    return
+                }
+                if(_this.releaseParams.aliasName === ''){
+                    _this.vShow_AliasName = true;
+                    _this.fromMessage = '请输入内部商品名';
+                    _this.scrollIntoView();
+                    setTimeout(function(){
+                        _this.vShow_AliasName = false;
+                    },2000);
+                    return;
+                }
+                if(_this.releaseParams.commodityType === ''){
+                    _this.vShow_attribute=true;
+                    _this.fromMessage = '请选择商品属性';
+                    _this.scrollIntoView();
+                    setTimeout(function(){
+                        _this.vShow_attribute = false;
+                    },2000);
+                    return;
+                }
+                if(_this.releaseParams.commodityType === 2){
+                    if(_this.releaseParams.trainingMethod === 0){
+                        _this.vShow_trainingMethod=true;
+                        _this.fromMessage = '请选择培训方式';
+                        _this.scrollIntoView();
+                        setTimeout(function(){
+                            _this.vShow_trainingMethod = false;
+                        },2000);
+                        return;
+                    }
+                    if(_this.releaseParams.trainingType === 0){
+                        _this.vShow_trainingType=true;
+                        _this.fromMessage = '请选择培训费用';
+                        _this.scrollIntoView();
+                        setTimeout(function(){
+                            _this.vShow_trainingType = false;
+                        },2000);
+                        return;
+                    }
+                    if(_this.releaseParams.trainingType === 1){
+                        if(_this.releaseParams.trainingFee === ''){
+                            _this.vShow_trainingType=true;
+                            _this.fromMessage = '请填写包含食宿,交通等各项费用的培训总金额';
+                            _this.scrollIntoView();
+                            setTimeout(function(){
+                                _this.vShow_trainingType = false;
+                            },2000);
+                            return;
+                        }
+                    }
+                }
+                if(_this.releaseParams.bigTypeId === ''){
+                    _this.vShow_TinyTypeID = true;
+                    _this.fromMessage = '请选择商品分类';
+                    _this.scrollIntoView();
+                    setTimeout(function(){
+                        _this.vShow_TinyTypeID = false;
+                    },2000);
+                    return;
+                }
+                if(_this.classificationTwoList.length >0){
+                    if(_this.releaseParams.smallTypeId === ''){
+                        _this.vShow_TinyTypeID = true;
+                        _this.fromMessage = '请选择二级分类';
+                        _this.scrollIntoView();
+                        setTimeout(function(){
+                            _this.vShow_TinyTypeID = false;
+                        },2000);
+                        return;
+                    }
+                }
+                if(_this.classificationThreeList.length >0){
+                    if(_this.releaseParams.tinyTypeId === ''){
+                        _this.vShow_TinyTypeID = true;
+                        _this.fromMessage = '请选择三级分类';
+                        _this.scrollIntoView();
+                        setTimeout(function(){
+                            _this.vShow_TinyTypeID = false;
+                        },2000);
+                        return;
+                    }
+                }
+                if(_this.releaseParams.brandId === ''){
+                    _this.vShow_BrandID = true;
+                    _this.fromMessage = '请选择商品品牌';
+                    _this.scrollIntoView();
+                    setTimeout(function(){
+                        _this.vShow_BrandID = false;
+                    },2000);
+                    return;
+                }
+                if(_this.releaseParams.productType === ""){
+                    _this.vShow_GoodsType = true;
+                    _this.fromMessage = '请选择商品类型';
+                    _this.scrollIntoView();
+                    setTimeout(function(){
+                        _this.vShow_GoodsType = false;
+                    },2000);
+                    return;
+                }
+                if(_this.releaseParams.productType === 2){
+                    if(_this.releaseParams.machineType === ''){
+                        _this.vShow_GoodsType = true;
+                        _this.fromMessage = '请选择器械类型';
+                        _this.scrollIntoView();
+                        setTimeout(function(){
+                            _this.vShow_GoodsType = false;
+                        },3000);
+                        return;
+                    }
+                    if(_this.releaseParams.qualificationImg === ''){
+                        _this.vShow_QualificationImg = true;
+                        _this.fromMessage = '请上传资质图片';
+                        _this.scrollIntoView();
+                        setTimeout(function(){
+                            _this.vShow_QualificationImg = false;
+                        },3000);
+                        return;
+                    }
+                    if(_this.releaseParams.qualificationNo === ''){
+                        _this.vShow_QualificationNo = true;
+                        _this.fromMessage = '请输入证书编号';
+                        _this.scrollIntoView();
+                        setTimeout(function(){
+                            _this.vShow_QualificationNo = false;
+                        },3000);
+                        return;
+                    }
+                    if(_this.releaseParams.productName === ''){
+                        _this.vShow_ProductName = true;
+                        _this.fromMessage = '请输入产品名称';
+                        _this.scrollIntoView();
+                        setTimeout(function(){
+                            _this.vShow_ProductName = false;
+                        },3000);
+                        return;
+                    }
+                    if(_this.releaseParams.qualificationTime === ''){
+                        _this.vShow_QualificationTime = true;
+                        _this.fromMessage = '请选择证书有效期';
+                        _this.scrollIntoView();
+                        setTimeout(function(){
+                            _this.vShow_QualificationTime = false;
+                        },3000);
+                        return;
+                    }
+                }
+                //商品标签
+                if(_this.tagsList ==='') {
+                    _this.vShow_Tags = true;
+                    _this.fromMessage = '请添加商品标签';
+                    _this.scrollIntoView();
+                    setTimeout(function(){
+                        _this.vShow_Tags = false;
+                    },3000);
+                    return;
+                }else{
+                    _this.tagsList.forEach(function(el){
+                        TagString += el.tag+',';
+                    });
+                    _this.releaseParams.tags = TagString.substring(0, TagString.lastIndexOf(','));
+                }
+                //搜索关键词
+                if(_this.searchKeyList!==''){
+                    _this.searchKeyList.forEach(function(el){
+                        KeyString+=el.value+',';
+                    });
+                    _this.releaseParams.searchKey = KeyString.substring(0, KeyString.lastIndexOf(','));
+                }
+                if( _this.paramKeyList[0].paramsName === ''){
+                    _this.params.param = [];
+                }else{
+                    _this.params.param = _this.paramKeyList;
+                }
+                _this.activeNum++;
+                _this.scrollIntoView();
+            },
+            handleNextStep1(){ //进入第三步
+                const _this = this;
+                if(this.releaseParams.groundMall === ''){
+                    _this.isPlatforms = true;
+                    _this.fromMessage = '请将选择上架平台';
+                    setTimeout(function(){
+                        _this.isPlatforms = false;
+                    },3000);
+                    return;
+                }
+                if(this.platformsFlag){
+                    if(!this.checkedSku()){
+                        _this.isSkuRule = true;
+                        _this.fromMessage = '请将【采美】平台SKU数据补充完整';
+                        setTimeout(function(){
+                            _this.isSkuRule = false;
+                        },3000);
+                        return;
+                    }
+                }
+                if(this.platformsMallFlag){
+                    if(!this.checkedMallSku()){
+                        _this.isMallSkuRule = true;
+                        _this.fromMessage = '请将【丽格集采联盟】平台SKU数据补充完整';
+                        setTimeout(function(){
+                            _this.isMallSkuRule = false;
+                        },3000);
+                        return;
+                    }
+                }
+                if(_this.releaseParams.includedTax === 3){
+                    _this.vShow_includedTax = true;
+                    _this.fromMessage = '请选择是否含税';
+                    _this.scrollIntoView();
+                    setTimeout(function(){
+                        _this.vShow_includedTax = false;
+                    },3000);
+                    return;
+                }
+                if(_this.releaseParams.freePostFlag === 1){
+                    if(!_this.releaseParams.freightTemplateId){
+                        _this.vShow_freePostFlag = true;
+                        _this.fromMessage = '请选择运费模板';
+                        setTimeout(function(){
+                            _this.vShow_freePostFlag = false;
+                        },3000);
+                        return;
+                    }
+                }
+                _this.activeNum++;
+                _this.scrollIntoView();
+                if(_this.vShow_detailInfoEditor){
+                    _this.initCKeditor();
+                }
+            },
+            handleNextStep2(){//点击进入第四步
+                var _this = this;
+                var detailInfo= detailInfoEditor.getData();
+                _this.releaseParams.detailInfo = detailInfo;
+                if(_this.GoodsImagesList ===''){
+                    CAIMEI.dialog('请上传商品图片');
+                    return;
+                }
+                if( _this.releaseParams.detailInfo ===''){
+                    CAIMEI.dialog('请填写商品详情');
+                    return;
+                }
+                _this.params.image = [];
+                _this.GoodsImagesList.forEach(function(el,index){
+                    var imageObject = {};
+                    if(index === 0 ){
+                        imageObject = {productImageId:'',image:el,mainFlag:'1'};
+                    }else{
+                        imageObject = {productImageId:'',image:el,mainFlag:'0'};
+                    }
+                    _this.params.image.push(imageObject);
+                });
+                _this.activeNum++;
+                _this.scrollIntoView();
+                if(_this.vShow_orderInfoEditor){
+                    _this.initOrderCKeditor();
+                    _this.initSeverCKeditor();
+                }
+            },
+            blur_name: function(e){//商品名失去焦点
+                var _this = this;
+                _this.vShow_Name = false;
+                if(e.target.value === ''){
+                    _this.vShow_Name = true;
+                    _this.fromMessage = '请输入商品显示名';
+                    setTimeout(function(){
+                        _this.vShow_Name = false;
+                    },3000);
+                }else{
+                    _this.vShow_Name = false;
+                }
+            },
+            blur_aliasName: function(e){//内部商品名失去焦点
+                var _this = this;
+                _this.vShow_AliasName = false;
+                if(e.target.value === ''){
+                    _this.vShow_AliasName = true;
+                    _this.fromMessage = '请输入内部商品名';
+                    setTimeout(function(){
+                        _this.vShow_AliasName = false;
+                    },3000);
+                }else{
+                    _this.vShow_AliasName = false;
+                }
+            },
+            blur_taxPoint: function(event){
+                var E_TaxPoint = event.target.value;
+                if(E_TaxPoint!==''){
+                    this.releaseParams.taxPoint = parseFloat(E_TaxPoint);
+                }else{
+                    this.releaseParams.taxPoint = '';
+                }
+                this.vShow_taxPoint = false;
+            },
+            blur_tags: function(e){
+                this.vShow_Tags = false;
+            },
+            blur_aliasUnit: function(e){
+                this.vShow_Unit = false;
+            },
+            blur_qualificationNo: function(e){
+                this.vShow_QualificationNo = false;
+            },
+            blur_productName: function(e){
+                this.vShow_ProductName = false;
+            },
+            input_normalPrice: function(e){
+                this.vShow_NormalPrice = false;
+            },
+            input_price: function(e){
+                this.vShow_price = false;
+            },
+            input_trainingFee: function(event){
+                var E_Number = event.target.value;
+                if(E_Number!==''){
+                    this.releaseParams.trainingFee = parseInt(E_Number.replace(/[^0-9]/g,''));
+                }else{
+                    this.releaseParams.trainingFee = '';
+                }
+            },
+            toFixedFn: function(text){
+                return Number(text).toFixed(2);
+            },
+        }
+    }
+}();
+

+ 443 - 443
src/main/resources/static/js/supplier-center/shop/mixins/freightMixins.js

@@ -1,443 +1,443 @@
-// 发布商品
-const freightDefault = () =>{
-    return {
-        id:'', // 运费规则的Id
-        freightId:'', // 运费模板Id
-        areaTax:'', // 运费规则地区名
-        ruleTax:'', // 运费规则文案
-        freightAreaList:[], // 运费规则地区id集合
-        freightAmount:'',// 运费金额
-        freeType:0, //是否指定条件包邮 0无条件 1指定条件包邮
-        freeCondition:'',// 包邮条件 0 满足件数 1 满足金额
-        productNum:'', // 包邮商品件数
-        allAmount:'' // 包邮商品金额
-    }
-}
-const freightTempDefault = () =>{
-    return {
-        id:'', //模板Id
-        name:'', // 模板名称
-        shopId:'', // 供应商ID
-        freightRuleList:[] // 运费规则
-    }
-}
-const freightMixins = function () {
-    return {
-        data() {
-            return {
-                rules: {
-                    name: [{ required: true, message: '请输入模板名称', trigger: 'blur' }],
-                    freightAmount: [{ required: true, message: '请输入固定运费金额', trigger: 'blur' }],
-                    freights: [{ required: true, type: 'array', message: '请添加运费规则', trigger: ['change'] }],
-                },
-                dialogFormVisible:false, // 控制运费模板弹窗显示
-                rulesFormVisible:false, // 控制运费规则弹窗显示
-                areasFormVisible:false, // 控制省市区弹窗显示
-                urbanFormVisible:false, // 控制数去弹窗显示
-                rulesChecked:false,// 控制指定条件包邮
-                freightTemp:{
-                    id:'',
-                    name:'',
-                    shopId:'',
-                    freightRuleList:[]
-                },
-                freightRuleList:[],
-                freightRulesForm:{}, // 记录运费规则
-                freightAreasType:'', // 设置省市类型
-                cityUrbanForm:{}, // 市区
-                areaUrbanForm:{}, // 区域
-                areaRulesForm:{}, // 规则
-                areaRulesIndex:0, // 规则记录
-                areaData:[],
-                templateType:'',// 模板修改
-            }
-        },
-        computed: {
-
-        },
-        mounted () {
-
-        },
-        methods: {
-            disabled(value){
-                // 如果是添加的情况下 如果 value 值 大于 0 设置禁用
-                // 如果是编辑的情况下 如果 value === 索引 就设为 false 否则 大于 0 设置禁用
-                if(this.freightAreasType === 'add'){
-                    return value.type !== this.areaRulesIndex && value.type > 0;
-                }else if(this.freightAreasType === 'edit'){
-                   if(value.type === this.areaRulesIndex ){
-                       return false
-                   }else{
-                       if(value.type>0){
-                           return true
-                       }
-                   }
-                }
-            },
-            // 新增运费模板
-            handleAddFreight(){
-                this.templateType = 'add'
-                this.freightRuleList = []
-                this.freightRuleList.push(freightDefault())
-                this.freightTemp = freightTempDefault()
-                this.freightTemp.shopId = globalUserData.shopId
-                console.log('freightRuleList',this.freightRuleList)
-                console.log('freightTemp',this.freightTemp)
-                this.getFreightArea()
-                this.handleInitAreas()
-                this.dialogFormVisible = true
-            },
-            // 新增运费规则
-            handleAddRole(){
-                this.rulesChecked = false
-                if(this.templateType === 'edit'){
-                    let roul = {freightId:this.freightTemp.id}
-                    let freight = { ...freightDefault(), ...roul  }
-                    this.freightRuleList.push(freight)
-                }else{
-                    this.freightRuleList.push(freightDefault())
-                }
-            },
-            // 删除运费规则
-            handleDelRole(index){
-                this.freightRuleList.splice(index, 1)
-            },
-            // 修改运费规则
-            changeFreightRole(freight,index){
-                this.freightRulesForm = freight
-                this.rulesChecked = freight.freeType === 1
-                this.rulesFormVisible = true
-            },
-            // 设置运费规则
-            sittingFreightRole(freight,index){
-                this.freightRulesForm = freight
-                this.rulesFormVisible = true
-            },
-            // 勾选指定条件包邮
-            handleFreightFreeType(value){
-                console.log('value',value)
-                if(value){
-                    this.freightRulesForm.freeType = 1
-                    this.freightRulesForm.freeCondition = 0
-                }else{
-                    this.freightRulesForm.freeType = 0
-                    this.freightRulesForm.freeCondition = ''
-                }
-            },
-            // 确认设置规则
-            handleConfirmRoles(){
-                this.$refs['ruleForm'].validate(valid => {
-                    if (valid) {
-                        if(this.rulesChecked){
-                            this.freightRulesForm.ruleTax = `固定运费${this.freightRulesForm.freightAmount}元 / ${this.freightRulesForm.freeCondition === 0 ? `满${this.freightRulesForm.productNum}件包邮` : `满¥${this.freightRulesForm.allAmount}包邮` }`
-                        }else{
-                            this.freightRulesForm.ruleTax = `固定运费${this.freightRulesForm.freightAmount}元`
-                        }
-                        console.log('freightRulesForm',this.freightRulesForm)
-                        this.rulesFormVisible = false
-                    } else {
-                        return false
-                    }
-                })
-            },
-            // 获取地区集合
-            getFreightArea(freightId='',ruleId=''){
-                const _this = this;
-                SupplierApi.getFreightArea({ freightId:freightId,ruleId:ruleId },function(response){
-                    if(response.code === 0){
-                        _this.areaData =  response.data
-                        console.log('areaData',_this.areaData)
-                    }else{
-                        console.log('获取地区集合失败')
-                    }
-                })
-            },
-            // 修改省市区
-            changeFreightAreas(type,freight,index){
-                this.freightAreasType = type
-                this.areaRulesForm = freight
-                this.areaRulesIndex = index+1
-                if(this.templateType === 'edit'){
-                    this.getFreightArea(freight.freightId,freight.id)
-                }
-                this.areasFormVisible = true
-            },
-            // 设置省市区
-            sittingFreightAreas(type,freight,index){
-                this.freightAreasType = type
-                this.areaRulesForm = freight
-                this.areaRulesIndex = index+1
-                if(this.templateType === 'edit'){
-                    this.getFreightArea(freight.freightId,freight.id)
-                }
-                this.areasFormVisible = true
-            },
-            // 取消选择省市
-            handleCanleAreas(){
-                // this.handleInitAreas()
-                this.areasFormVisible = false
-            },
-            // 勾选地区
-            handleCheckAllChange(area,value) {
-                if(area.checked){
-                    area.type = this.areaRulesIndex
-                    area.checkedCities = area.provinceList.map(city => { return city.name })
-                    area.provinceList.forEach(city=> {
-                        city.type = area.type
-                        city.checked = area.checked
-                        city.checkedCities = city.cityList.map(el => {
-                            return el.name
-                        })
-                        city.cityList.forEach(urban => {
-                            urban.type = city.type
-                            urban.checked = city.checked
-                        })
-                    })
-                }else{
-                    area.checkedCities = []
-                    area.type =  0
-                    area.provinceList.forEach(city=>{
-                        city.type = area.type
-                        city.checked = area.checked
-                        city.checkedCities = []
-                        city.cityList.forEach(urban=>{
-                            urban.type =  city.type
-                            urban.checked = city.checked
-                        })
-                    })
-                }
-                let checkedCount = area.checkedCities.length;
-                area.checked = checkedCount === area.provinceList.length;
-                area.isIndeterminate = checkedCount > 0 && checkedCount < area.provinceList.length;
-                console.log('areaData',this.areaData)
-            },
-            // 勾选省份
-            handleCheckedCitiesChange(city,area,value) {
-                if(city.checked){
-                    city.type = area.type = this.areaRulesIndex
-                    area.checkedCities.push(city.name)
-                    city.checkedCities = city.cityList.map(el => {return el.name})
-                    city.cityList.forEach(el=>{
-                        el.type = city.type
-                        el.checked = city.checked
-                    })
-                }else{
-                    let index = area.checkedCities.indexOf(city.name);
-                    if (index !== -1) {
-                        area.checkedCities.splice(index, 1);
-                    }
-                    city.type = area.type = 0
-                    city.checkedCities = []
-                    city.cityList.forEach(el=>{
-                        el.type = city.type
-                        el.checked = city.checked
-                    })
-                }
-                let checkedCount = area.checkedCities.length;
-                area.checked = checkedCount === area.provinceList.length;
-                console.log('checkedCount',checkedCount)
-                area.isIndeterminate = checkedCount > 0 && checkedCount < area.provinceList.length;
-                console.log('isIndeterminate',area.isIndeterminate)
-            },
-            // 确认省份
-            handleConfirmAreas(){
-                const _this = this
-                console.log('areaRulesIndex',this.areaRulesIndex)
-                let newCheckedCities = []
-                this.areaData.forEach(area =>{
-                    if(area.checked && area.type === _this.areaRulesIndex){
-                        let areaCheckedCities = []
-                        area.provinceList.forEach(city => {
-                            if(city.type === _this.areaRulesIndex){
-                                areaCheckedCities.push(city.name)
-                            }
-                        })
-                        newCheckedCities = [...newCheckedCities,...areaCheckedCities]
-                    }else{
-                        // 省循环
-                       area.provinceList.forEach(city => {
-                           // 省勾选取省名字
-                           if(city.checked && city.type === _this.areaRulesIndex){
-                               let cityCheckedCities = []
-                               cityCheckedCities.push(city.name)
-                               newCheckedCities = [...newCheckedCities,...cityCheckedCities]
-                           }else{
-                               let newUrbanText = []
-                               let urbanCheckedCities = []
-                               city.cityList.forEach(urban => {
-                                   // 市勾选取市名字 如果勾选了取勾选的市名称存储
-                                   if(urban.checked && urban.type === _this.areaRulesIndex){
-                                       newUrbanText.push(urban.name)
-                                   }
-                               })
-                               if(newUrbanText.length > 0){
-                                   urbanCheckedCities.push(`${city.name}(${newUrbanText.join('、')})`)
-                               }
-                               newCheckedCities = [...newCheckedCities,...urbanCheckedCities]
-                           }
-                        })
-                    }
-                })
-                console.log('newCheckedCities',newCheckedCities)
-                this.areaRulesForm.freightAreaList = this.handleTotalUrban()
-                console.log('freightAreaList',this.areaRulesForm.freightAreaList)
-                this.areaRulesForm.areaTax = newCheckedCities.join('、')
-                console.log('areaTax',this.areaRulesForm.freightAreaList)
-                this.areasFormVisible = false
-            },
-            // 显示市区
-            handleUrbanForm(city,area,flag){
-                if(flag){ return }
-                this.cityUrbanForm = city
-                this.areaUrbanForm = area
-                this.urbanFormVisible = true
-            },
-            // 全选市区
-            handleUrbanChange(){
-                const _this = this
-                if(this.cityUrbanForm.checked){
-                    this.cityUrbanForm.cityList.forEach(el=>{
-                        el.checked = !!_this.cityUrbanForm.checked;
-                        el.type = _this.cityUrbanForm.type = _this.areaRulesIndex
-                    })
-                    this.cityUrbanForm.checkedCities = this.cityUrbanForm.cityList.map(el => { return el.name })
-                    this.cityUrbanForm.isIndeterminate = false
-                }else{
-                    this.cityUrbanForm.cityList.forEach(el=>{
-                        el.checked = false
-                        el.type = _this.cityUrbanForm.type = 0
-                    })
-                    this.cityUrbanForm.checkedCities = []
-                    this.cityUrbanForm.isIndeterminate = true
-                }
-            },
-            // 单选市区
-            handleCheckedUrbanChange(urban,value){
-                console.log('cityUrbanForm',this.cityUrbanForm)
-                if(urban.checked){
-                    urban.type =  this.areaRulesIndex
-                    this.cityUrbanForm.checkedCities.push(urban.name)
-                }else{
-                    let index = this.cityUrbanForm.checkedCities.indexOf(urban.name);
-                    if (index !== -1) {
-                        this.cityUrbanForm.checkedCities.splice(index, 1);
-                    }
-                    urban.type =  this.cityUrbanForm.type = 0;
-                }
-                let checkedCount = this.cityUrbanForm.checkedCities.length;
-                this.cityUrbanForm.checked = checkedCount === this.cityUrbanForm.cityList.length;
-                this.cityUrbanForm.isIndeterminate = checkedCount > 0 && checkedCount < this.cityUrbanForm.cityList.length;
-            },
-            // 确认市
-            handleConfirmUrban(){
-                if(this.cityUrbanForm.checked){
-                    this.areaUrbanForm.checkedCities.push(this.cityUrbanForm.name)
-                }else{
-                    let index = this.areaUrbanForm.checkedCities.indexOf(this.cityUrbanForm.name);
-                    if (index !== -1) {
-                        this.areaUrbanForm.checkedCities.splice(index, 1);
-                    }
-                }
-                let checkedCount = this.areaUrbanForm.checkedCities.length;
-                this.areaUrbanForm.checked = checkedCount === this.areaUrbanForm.provinceList.length;
-                console.log('checkedCount',checkedCount)
-                this.areaUrbanForm.isIndeterminate = checkedCount > 0 && checkedCount < this.areaUrbanForm.provinceList.length;
-                console.log('isIndeterminate',this.areaUrbanForm.isIndeterminate)
-                this.urbanFormVisible = false
-            },
-            // 取消保存运费模板
-            handleCanleFreights(){
-                // 取消保存运费模板, 全部初始化
-                this.freightRuleList = []
-                this.freightRuleList.push(freightDefault())
-                this.handleInitAreas()
-                this.dialogFormVisible = false
-            },
-            // 确认保存运费模板
-            handleConfirmShelf(){
-                let freightFlag = false
-                let aresFlag = false
-                this.freightRuleList.forEach(freight =>{
-                    if(!freight.ruleTax){
-                        freightFlag = true
-                    }
-                    if(!freight.areaTax){
-                        aresFlag = true
-                    }
-                })
-                // 判断是否有模板名称为空
-                if(!this.freightTemp.name){
-                    this.$message({ message: '请输入模板名称',type: 'warning'});
-                    return false
-                }
-                // 判断是否有运费规则为空
-                if(freightFlag){
-                    this.$message({ message: '请设置运费规则',type: 'warning'});
-                    return false
-                }
-                // 判断是否有省事为空
-                if(aresFlag){
-                    this.$message({ message: '运费规则对应的省市不能为空',type: 'warning'});
-                    return false
-                }
-                this.freightTemp.freightRuleList = JSON.stringify(this.freightRuleList)
-                this.saveFreightTemplate(this.freightTemp)
-            },
-            // 保存运费模板
-            saveFreightTemplate(params){
-                const _this = this;
-                console.log('params',params)
-                SupplierApi.saveFreightTemplate(params,function(response){
-                    if(response.code === 0){
-                        _this.$message({ message: '保存运费模板成功',type: 'success'});
-                        _this.handleCanleFreights()
-                        if(_this.pageType === 'list'){
-                            _this.getList()
-                        }
-                    }else{
-                        _this.$message({ message: `${response.msg}`,type: 'warning'});
-                    }
-                })
-            },
-            // 统计规则地区id
-            handleTotalUrban(){
-                const _this = this
-                const array = []
-                this.areaData.forEach(area =>{
-                    area.provinceList.forEach(city => {
-                        city.cityList.forEach(urban => {
-                            if(urban.checked && urban.type === _this.areaRulesIndex){
-                                array.push(
-                                    {
-                                        id:urban.id ? urban.id : '',
-                                        ruleId:urban.ruleId ? urban.ruleId : '',
-                                        type:urban.type,
-                                        cityId:urban.cityId
-                                    }
-                                )
-                            }
-                        })
-                    })
-                })
-                return array
-            },
-            // 初始化选择地区域数据
-            handleInitAreas(){
-                this.areaData.forEach(area =>{
-                    area.checked = false
-                    area.provinceList.forEach(city => {
-                        city.checked = false
-                        city.cityList.forEach(urban => {
-                            urban.checked = false
-                        })
-                    })
-                })
-            },
-            handleInput(e) {
-                // 通过正则过滤小数点后两位
-                e.target.value = (e.target.value.match(/^\d*(\.?\d{0,1})/g)[0]) || null
-            }
-        }
-    }
-}();
-
+// 发布商品
+const freightDefault = () =>{
+    return {
+        id:'', // 运费规则的Id
+        freightId:'', // 运费模板Id
+        areaTax:'', // 运费规则地区名
+        ruleTax:'', // 运费规则文案
+        freightAreaList:[], // 运费规则地区id集合
+        freightAmount:'',// 运费金额
+        freeType:0, //是否指定条件包邮 0无条件 1指定条件包邮
+        freeCondition:'',// 包邮条件 0 满足件数 1 满足金额
+        productNum:'', // 包邮商品件数
+        allAmount:'' // 包邮商品金额
+    }
+}
+const freightTempDefault = () =>{
+    return {
+        id:'', //模板Id
+        name:'', // 模板名称
+        shopId:'', // 供应商ID
+        freightRuleList:[] // 运费规则
+    }
+}
+const freightMixins = function () {
+    return {
+        data() {
+            return {
+                rules: {
+                    name: [{ required: true, message: '请输入模板名称', trigger: 'blur' }],
+                    freightAmount: [{ required: true, message: '请输入固定运费金额', trigger: 'blur' }],
+                    freights: [{ required: true, type: 'array', message: '请添加运费规则', trigger: ['change'] }],
+                },
+                dialogFormVisible:false, // 控制运费模板弹窗显示
+                rulesFormVisible:false, // 控制运费规则弹窗显示
+                areasFormVisible:false, // 控制省市区弹窗显示
+                urbanFormVisible:false, // 控制数去弹窗显示
+                rulesChecked:false,// 控制指定条件包邮
+                freightTemp:{
+                    id:'',
+                    name:'',
+                    shopId:'',
+                    freightRuleList:[]
+                },
+                freightRuleList:[],
+                freightRulesForm:{}, // 记录运费规则
+                freightAreasType:'', // 设置省市类型
+                cityUrbanForm:{}, // 市区
+                areaUrbanForm:{}, // 区域
+                areaRulesForm:{}, // 规则
+                areaRulesIndex:0, // 规则记录
+                areaData:[],
+                templateType:'',// 模板修改
+            }
+        },
+        computed: {
+
+        },
+        mounted () {
+
+        },
+        methods: {
+            disabled(value){
+                // 如果是添加的情况下 如果 value 值 大于 0 设置禁用
+                // 如果是编辑的情况下 如果 value === 索引 就设为 false 否则 大于 0 设置禁用
+                if(this.freightAreasType === 'add'){
+                    return value.type !== this.areaRulesIndex && value.type > 0;
+                }else if(this.freightAreasType === 'edit'){
+                   if(value.type === this.areaRulesIndex ){
+                       return false
+                   }else{
+                       if(value.type>0){
+                           return true
+                       }
+                   }
+                }
+            },
+            // 新增运费模板
+            handleAddFreight(){
+                this.templateType = 'add'
+                this.freightRuleList = []
+                this.freightRuleList.push(freightDefault())
+                this.freightTemp = freightTempDefault()
+                this.freightTemp.shopId = globalUserData.shopId
+                // console.log('freightRuleList',this.freightRuleList)
+                // console.log('freightTemp',this.freightTemp)
+                this.getFreightArea()
+                this.handleInitAreas()
+                this.dialogFormVisible = true
+            },
+            // 新增运费规则
+            handleAddRole(){
+                this.rulesChecked = false
+                if(this.templateType === 'edit'){
+                    let roul = {freightId:this.freightTemp.id}
+                    let freight = { ...freightDefault(), ...roul  }
+                    this.freightRuleList.push(freight)
+                }else{
+                    this.freightRuleList.push(freightDefault())
+                }
+            },
+            // 删除运费规则
+            handleDelRole(index){
+                this.freightRuleList.splice(index, 1)
+            },
+            // 修改运费规则
+            changeFreightRole(freight,index){
+                this.freightRulesForm = freight
+                this.rulesChecked = freight.freeType === 1
+                this.rulesFormVisible = true
+            },
+            // 设置运费规则
+            sittingFreightRole(freight,index){
+                this.freightRulesForm = freight
+                this.rulesFormVisible = true
+            },
+            // 勾选指定条件包邮
+            handleFreightFreeType(value){
+                // console.log('value',value)
+                if(value){
+                    this.freightRulesForm.freeType = 1
+                    this.freightRulesForm.freeCondition = 0
+                }else{
+                    this.freightRulesForm.freeType = 0
+                    this.freightRulesForm.freeCondition = ''
+                }
+            },
+            // 确认设置规则
+            handleConfirmRoles(){
+                this.$refs['ruleForm'].validate(valid => {
+                    if (valid) {
+                        if(this.rulesChecked){
+                            this.freightRulesForm.ruleTax = `固定运费${this.freightRulesForm.freightAmount}元 / ${this.freightRulesForm.freeCondition === 0 ? `满${this.freightRulesForm.productNum}件包邮` : `满¥${this.freightRulesForm.allAmount}包邮` }`
+                        }else{
+                            this.freightRulesForm.ruleTax = `固定运费${this.freightRulesForm.freightAmount}元`
+                        }
+                        // console.log('freightRulesForm',this.freightRulesForm)
+                        this.rulesFormVisible = false
+                    } else {
+                        return false
+                    }
+                })
+            },
+            // 获取地区集合
+            getFreightArea(freightId='',ruleId=''){
+                const _this = this;
+                SupplierApi.getFreightArea({ freightId:freightId,ruleId:ruleId },function(response){
+                    if(response.code === 0){
+                        _this.areaData =  response.data
+                        // console.log('areaData',_this.areaData)
+                    }else{
+                        console.log('获取地区集合失败')
+                    }
+                })
+            },
+            // 修改省市区
+            changeFreightAreas(type,freight,index){
+                this.freightAreasType = type
+                this.areaRulesForm = freight
+                this.areaRulesIndex = index+1
+                if(this.templateType === 'edit'){
+                    this.getFreightArea(freight.freightId,freight.id)
+                }
+                this.areasFormVisible = true
+            },
+            // 设置省市区
+            sittingFreightAreas(type,freight,index){
+                this.freightAreasType = type
+                this.areaRulesForm = freight
+                this.areaRulesIndex = index+1
+                if(this.templateType === 'edit'){
+                    this.getFreightArea(freight.freightId,freight.id)
+                }
+                this.areasFormVisible = true
+            },
+            // 取消选择省市
+            handleCanleAreas(){
+                // this.handleInitAreas()
+                this.areasFormVisible = false
+            },
+            // 勾选地区
+            handleCheckAllChange(area,value) {
+                if(area.checked){
+                    area.type = this.areaRulesIndex
+                    area.checkedCities = area.provinceList.map(city => { return city.name })
+                    area.provinceList.forEach(city=> {
+                        city.type = area.type
+                        city.checked = area.checked
+                        city.checkedCities = city.cityList.map(el => {
+                            return el.name
+                        })
+                        city.cityList.forEach(urban => {
+                            urban.type = city.type
+                            urban.checked = city.checked
+                        })
+                    })
+                }else{
+                    area.checkedCities = []
+                    area.type =  0
+                    area.provinceList.forEach(city=>{
+                        city.type = area.type
+                        city.checked = area.checked
+                        city.checkedCities = []
+                        city.cityList.forEach(urban=>{
+                            urban.type =  city.type
+                            urban.checked = city.checked
+                        })
+                    })
+                }
+                let checkedCount = area.checkedCities.length;
+                area.checked = checkedCount === area.provinceList.length;
+                area.isIndeterminate = checkedCount > 0 && checkedCount < area.provinceList.length;
+                // console.log('areaData',this.areaData)
+            },
+            // 勾选省份
+            handleCheckedCitiesChange(city,area,value) {
+                if(city.checked){
+                    city.type = area.type = this.areaRulesIndex
+                    area.checkedCities.push(city.name)
+                    city.checkedCities = city.cityList.map(el => {return el.name})
+                    city.cityList.forEach(el=>{
+                        el.type = city.type
+                        el.checked = city.checked
+                    })
+                }else{
+                    let index = area.checkedCities.indexOf(city.name);
+                    if (index !== -1) {
+                        area.checkedCities.splice(index, 1);
+                    }
+                    city.type = area.type = 0
+                    city.checkedCities = []
+                    city.cityList.forEach(el=>{
+                        el.type = city.type
+                        el.checked = city.checked
+                    })
+                }
+                let checkedCount = area.checkedCities.length;
+                area.checked = checkedCount === area.provinceList.length;
+                // console.log('checkedCount',checkedCount)
+                area.isIndeterminate = checkedCount > 0 && checkedCount < area.provinceList.length;
+                // console.log('isIndeterminate',area.isIndeterminate)
+            },
+            // 确认省份
+            handleConfirmAreas(){
+                const _this = this
+                // console.log('areaRulesIndex',this.areaRulesIndex)
+                let newCheckedCities = []
+                this.areaData.forEach(area =>{
+                    if(area.checked && area.type === _this.areaRulesIndex){
+                        let areaCheckedCities = []
+                        area.provinceList.forEach(city => {
+                            if(city.type === _this.areaRulesIndex){
+                                areaCheckedCities.push(city.name)
+                            }
+                        })
+                        newCheckedCities = [...newCheckedCities,...areaCheckedCities]
+                    }else{
+                        // 省循环
+                       area.provinceList.forEach(city => {
+                           // 省勾选取省名字
+                           if(city.checked && city.type === _this.areaRulesIndex){
+                               let cityCheckedCities = []
+                               cityCheckedCities.push(city.name)
+                               newCheckedCities = [...newCheckedCities,...cityCheckedCities]
+                           }else{
+                               let newUrbanText = []
+                               let urbanCheckedCities = []
+                               city.cityList.forEach(urban => {
+                                   // 市勾选取市名字 如果勾选了取勾选的市名称存储
+                                   if(urban.checked && urban.type === _this.areaRulesIndex){
+                                       newUrbanText.push(urban.name)
+                                   }
+                               })
+                               if(newUrbanText.length > 0){
+                                   urbanCheckedCities.push(`${city.name}(${newUrbanText.join('、')})`)
+                               }
+                               newCheckedCities = [...newCheckedCities,...urbanCheckedCities]
+                           }
+                        })
+                    }
+                })
+                // console.log('newCheckedCities',newCheckedCities)
+                this.areaRulesForm.freightAreaList = this.handleTotalUrban()
+                // console.log('freightAreaList',this.areaRulesForm.freightAreaList)
+                this.areaRulesForm.areaTax = newCheckedCities.join('、')
+                // console.log('areaTax',this.areaRulesForm.freightAreaList)
+                this.areasFormVisible = false
+            },
+            // 显示市区
+            handleUrbanForm(city,area,flag){
+                if(flag){ return }
+                this.cityUrbanForm = city
+                this.areaUrbanForm = area
+                this.urbanFormVisible = true
+            },
+            // 全选市区
+            handleUrbanChange(){
+                const _this = this
+                if(this.cityUrbanForm.checked){
+                    this.cityUrbanForm.cityList.forEach(el=>{
+                        el.checked = !!_this.cityUrbanForm.checked;
+                        el.type = _this.cityUrbanForm.type = _this.areaRulesIndex
+                    })
+                    this.cityUrbanForm.checkedCities = this.cityUrbanForm.cityList.map(el => { return el.name })
+                    this.cityUrbanForm.isIndeterminate = false
+                }else{
+                    this.cityUrbanForm.cityList.forEach(el=>{
+                        el.checked = false
+                        el.type = _this.cityUrbanForm.type = 0
+                    })
+                    this.cityUrbanForm.checkedCities = []
+                    this.cityUrbanForm.isIndeterminate = true
+                }
+            },
+            // 单选市区
+            handleCheckedUrbanChange(urban,value){
+                // console.log('cityUrbanForm',this.cityUrbanForm)
+                if(urban.checked){
+                    urban.type =  this.areaRulesIndex
+                    this.cityUrbanForm.checkedCities.push(urban.name)
+                }else{
+                    let index = this.cityUrbanForm.checkedCities.indexOf(urban.name);
+                    if (index !== -1) {
+                        this.cityUrbanForm.checkedCities.splice(index, 1);
+                    }
+                    urban.type =  this.cityUrbanForm.type = 0;
+                }
+                let checkedCount = this.cityUrbanForm.checkedCities.length;
+                this.cityUrbanForm.checked = checkedCount === this.cityUrbanForm.cityList.length;
+                this.cityUrbanForm.isIndeterminate = checkedCount > 0 && checkedCount < this.cityUrbanForm.cityList.length;
+            },
+            // 确认市
+            handleConfirmUrban(){
+                if(this.cityUrbanForm.checked){
+                    this.areaUrbanForm.checkedCities.push(this.cityUrbanForm.name)
+                }else{
+                    let index = this.areaUrbanForm.checkedCities.indexOf(this.cityUrbanForm.name);
+                    if (index !== -1) {
+                        this.areaUrbanForm.checkedCities.splice(index, 1);
+                    }
+                }
+                let checkedCount = this.areaUrbanForm.checkedCities.length;
+                this.areaUrbanForm.checked = checkedCount === this.areaUrbanForm.provinceList.length;
+                // console.log('checkedCount',checkedCount)
+                this.areaUrbanForm.isIndeterminate = checkedCount > 0 && checkedCount < this.areaUrbanForm.provinceList.length;
+                // console.log('isIndeterminate',this.areaUrbanForm.isIndeterminate)
+                this.urbanFormVisible = false
+            },
+            // 取消保存运费模板
+            handleCanleFreights(){
+                // 取消保存运费模板, 全部初始化
+                this.freightRuleList = []
+                this.freightRuleList.push(freightDefault())
+                this.handleInitAreas()
+                this.dialogFormVisible = false
+            },
+            // 确认保存运费模板
+            handleConfirmShelf(){
+                let freightFlag = false
+                let aresFlag = false
+                this.freightRuleList.forEach(freight =>{
+                    if(!freight.ruleTax){
+                        freightFlag = true
+                    }
+                    if(!freight.areaTax){
+                        aresFlag = true
+                    }
+                })
+                // 判断是否有模板名称为空
+                if(!this.freightTemp.name){
+                    this.$message({ message: '请输入模板名称',type: 'warning'});
+                    return false
+                }
+                // 判断是否有运费规则为空
+                if(freightFlag){
+                    this.$message({ message: '请设置运费规则',type: 'warning'});
+                    return false
+                }
+                // 判断是否有省事为空
+                if(aresFlag){
+                    this.$message({ message: '运费规则对应的省市不能为空',type: 'warning'});
+                    return false
+                }
+                this.freightTemp.freightRuleList = JSON.stringify(this.freightRuleList)
+                this.saveFreightTemplate(this.freightTemp)
+            },
+            // 保存运费模板
+            saveFreightTemplate(params){
+                const _this = this;
+                // console.log('params',params)
+                SupplierApi.saveFreightTemplate(params,function(response){
+                    if(response.code === 0){
+                        _this.$message({ message: '保存运费模板成功',type: 'success'});
+                        _this.handleCanleFreights()
+                        if(_this.pageType === 'list'){
+                            _this.getList()
+                        }
+                    }else{
+                        _this.$message({ message: `${response.msg}`,type: 'warning'});
+                    }
+                })
+            },
+            // 统计规则地区id
+            handleTotalUrban(){
+                const _this = this
+                const array = []
+                this.areaData.forEach(area =>{
+                    area.provinceList.forEach(city => {
+                        city.cityList.forEach(urban => {
+                            if(urban.checked && urban.type === _this.areaRulesIndex){
+                                array.push(
+                                    {
+                                        id:urban.id ? urban.id : '',
+                                        ruleId:urban.ruleId ? urban.ruleId : '',
+                                        type:urban.type,
+                                        cityId:urban.cityId
+                                    }
+                                )
+                            }
+                        })
+                    })
+                })
+                return array
+            },
+            // 初始化选择地区域数据
+            handleInitAreas(){
+                this.areaData.forEach(area =>{
+                    area.checked = false
+                    area.provinceList.forEach(city => {
+                        city.checked = false
+                        city.cityList.forEach(urban => {
+                            urban.checked = false
+                        })
+                    })
+                })
+            },
+            handleInput(e) {
+                // 通过正则过滤小数点后两位
+                e.target.value = (e.target.value.match(/^\d*(\.?\d{0,1})/g)[0]) || null
+            }
+        }
+    }
+}();
+

+ 282 - 281
src/main/resources/static/js/supplier-center/shop/mixins/getInfoMixins.js

@@ -1,281 +1,282 @@
-// 初始化
-var getInfoMixins = function () {
-    return {
-        data() {
-            return {
-
-            }
-        },
-        methods: {
-            GetEditReleaseProductInfo(productId){
-                const _this = this;
-                SupplierApi.EditReleaseProductInfo({productId:productId},function(response){
-                    if(response.code === 0){
-                        console.log(response);
-                        const data = response.data;
-                        _this.releaseParams.brandId = data.brandId;
-                        _this.releaseParams.name = data.name;
-                        _this.releaseParams.productId = data.productId;
-                        _this.releaseParams.mallProductId = data.mallProductId;
-                        _this.releaseParams.aliasName = data.aliasName;
-                        _this.releaseParams.productType = data.productType;
-                        _this.releaseParams.trainingMethod = data.trainingMethod;
-                        _this.releaseParams.trainingType = data.trainingType;
-                        _this.releaseParams.trainingFee = data.trainingFee;
-                        _this.releaseParams.machineType = data.machineType;
-                        _this.releaseParams.qualificationImg = data.qualificationImg;
-                        _this.skuParams = _this.setNewSkuArray(data.skus);
-                        _this.mallSkusParams = _this.setNewSkuArray(data.mallSkus);
-                        _this.releaseParams.groundMall = data.groundMall;
-                        _this.releaseParams.unit = data.unit;
-                        _this.releaseParams.productCode = data.productCode;
-                        _this.releaseParams.normalPrice = data.normalPrice;
-                        _this.releaseParams.price = data.price;
-                        _this.releaseParams.includedTax = data.includedTax;
-                        _this.releaseParams.invoiceType = data.invoiceType;
-                        _this.releaseParams.taxPoint = data.supplierTaxPoint;
-                        _this.releaseParams.costPrice = data.costPrice;
-                        _this.releaseParams.minBuyNumber = data.minBuyNumber;
-                        _this.releaseParams.stock = data.stock;
-                        _this.releaseParams.step = data.step;
-                        _this.releaseParams.freePostFlag = data.freePostFlag;
-                        _this.releaseParams.freightTemplateId = data.freightTemplateId;
-                        _this.releaseParams.allAreaFlag = data.allAreaFlag;
-                        _this.releaseParams.productName = data.productName;
-                        _this.releaseParams.qualificationNo = data.qualificationNo;
-                        _this.releaseParams.qualificationTime = data.qualificationTime;
-                        _this.releaseParams.newProductType = data.newProductType;
-                        _this.releaseParams.detailInfo = data.productDetail.detailInfo;
-                        _this.releaseParams.serviceInfo = data.productDetail.serviceInfo;
-                        _this.releaseParams.orderInfo = data.productDetail.orderInfo;
-                        _this.productDetailInfoId = data.productDetail.productDetailInfoId;
-                        _this.tagsList = _this.setTagArray(data.tags);
-                        _this.EchoProductFn(data.productType);
-                        _this.EchoMachineTypeFn(data.machineType);
-                        _this.selectText.bigTypeID = data.bigTypeName;
-                        _this.selectText.smallTypeID = data.smallTypeName;
-                        _this.selectText.tinyTypeID = data.tinyTypeName;
-                        _this.releaseParams.bigTypeId = data.bigTypeId;
-                        _this.releaseParams.smallTypeId =data.smallTypeId;
-                        _this.releaseParams.tinyTypeId =data.tinyTypeId;
-                        _this.releaseParams.firstClassifyName = data.bigTypeName;
-                        _this.releaseParams.twoClassifyName = data.smallTypeName;
-                        _this.releaseParams.threeClassifyName = data.tinyTypeName;
-                        _this.releaseParams.commodityType =data.commodityType;
-                        _this.releaseParams.brandName = data.brandName;
-                        _this.GoodsImagesList = _this.EchoGoodsImagesListFn(data.imageList);
-                        _this.classificationTwoList = data.smallTypeName;
-                        _this.classificationThreeList = data.tinyTypeName;
-                        if(data.commodityType !=null||data.commodityType != ''){
-                            _this.releaseParams.commodityType = data.commodityType;
-                            _this.GetFistClassFn(data.commodityType);
-                        }
-                        if(_this.classificationTwoList!=''){
-                            _this.GetTwoClassFn(data.bigTypeID);
-                        }
-                        if (_this.classificationThreeList){
-                            _this.GetThreeClassFn(data.smallTypeID);
-                        }
-                        if(data.searchKey != null){
-                            _this.setSearchKeyArray(data.searchKey);
-                        }
-                        if(data.parametersList.length === 0){
-                            _this.paramKeyList = [{paramsName:'',paramsContent:''}];
-                        }else{
-                            _this.paramKeyList = data.parametersList;
-                        }
-                        if(data.groundMall === '0'){
-                            _this.platformsFlag = _this.platforms[0].isChecked = true
-                            _this.platformsMallFlag = _this.platforms[1].isChecked = false
-                            _this.platformsMallFlag = false
-                        }else if(data.groundMall === '4'){
-                            _this.platformsFlag = _this.platforms[0].isChecked = false
-                            _this.platformsMallFlag = _this.platforms[1].isChecked = true
-                        }else if(data.groundMall === '0,4'){
-                            _this.platformsFlag = true
-                            _this.platformsMallFlag = true
-                            _this.platforms = _this.platforms.map((el)=>{
-                                el.isChecked = true
-                                return el
-                            })
-                        }
-                        // 下拉列表初始化
-                        setTimeout(function(){
-                            _this.ChangeClassificationFirst({bigTypeId:data.bigTypeId, name:data.bigTypeName});
-                            setTimeout(function(){
-                                _this.ChangeClassificationTwo({smallTypeId:data.smallTypeId, name:data.smallTypeName});
-                                setTimeout(function(){
-                                    _this.ChangeClassificationThree({tinyTypeId:data.tinyTypeId, name:data.tinyTypeName});
-                                },500);
-                            },500);
-                        },500);
-                    }else{
-                        CAIMEI.Alert(response.msg, '确定', false);
-                    }
-                })
-            },
-            // 获取所有运费模板
-            getFreightAll(shopId){
-                const _this = this
-                SupplierApi.getFreightAll({shopId:shopId},function(response){
-                    if(response.code === 0){
-                        _this.freightOptions = response.data
-                    }else{
-                        CAIMEI.Alert(response.msg, '确定');
-                    }
-                })
-            },
-            setNewSkuArray(arr){// 回显处理Sku数据
-                if(arr.length > 0){
-                    return arr.map((el)=>({
-                        unit: el.unit,
-                        stock: el.stock,
-                        price: el.price,
-                        skuId: el.skuId,
-                        normalPrice: el.normalPrice,
-                        minBuyNumber: el.minBuyNumber
-                    }))
-                }else{
-                    return []
-                }
-            },
-            setTagArray(arr){//回显处理商品标签
-                const arrSplit = arr.split(',');
-                const _ARRAY = [];
-                arrSplit.forEach(function(item){
-                    var _OBJ = {tag:item};
-                    _ARRAY.push(_OBJ)
-                });
-                return _ARRAY
-            },
-            setSearchKeyArray(arr){//回显处理商品搜索关键词
-                var _this = this;
-                var arrSplit = arr.split(',');
-                return _this.searchKeyList.map(function(el,index){
-                    el.value = arrSplit[index] || '';
-                })
-            },
-            EchoProductFn(type) {
-                switch (type) {
-                    case 0:
-                        this.selectText.goodsType = '其他';
-                        break;
-                    case 1:
-                        this.selectText.goodsType = '妆字号';
-                        break;
-                    case 2:
-                        this.selectText.goodsType = '械字号';
-                        break;
-                }
-            },
-            EchoMachineTypeFn(type) {
-                switch (type) {
-                    case 1:
-                        this.selectText.apparatusType = '一类医疗器械';
-                        break;
-                    case 2:
-                        this.selectText.apparatusType = '二类医疗器械';
-                        break;
-                    case 3:
-                        this.selectText.apparatusType = '三类医疗器械';
-                        break;
-                }
-            },
-            EchoGoodsImagesListFn(arr){//处理商品主图回显
-                const newArray = [];
-                arr.forEach( function(el){ newArray.push(el.image) });
-                return newArray;
-            },
-            GetFistClassFn(val){//获取一级分类菜单
-                const _this = this;
-                PublicApi.GetFirstClassFication({typeSort:val},function (response) {
-                    if(response.code === 0){
-                        _this.classificationFirstList = response.data;
-                    }else{
-                        CAIMEI.Alert(response.msg, '确定', false);
-                    }
-                })
-            },
-            GetTwoClassFn(value){//获取二级分类菜单
-                const _this = this;
-                PublicApi.GetTwoClassFication({bigTypeId:value},function (response) {
-                    if(response.code === 0){
-                        if(response.data.length>0){
-                            _this.classificationTwoList = response.data;
-                        }else {
-                            _this.classificationTwoList = [];
-                            _this.releaseParams.twoClassifyName = '';
-                            _this.releaseParams.smallTypeId = ''
-                        }
-                    }else{
-                        CAIMEI.Alert(response.msg, '确定', false);
-                    }
-                })
-            },
-            GetThreeClassFn(value){//获取三级分类菜单
-                var _this = this;
-                PublicApi.GetThreeClassFication({smallTypeId:value},function (response) {
-                    if(response.code == 0){
-                        if(response.data.length>0){
-                            _this.classificationThreeList = response.data;
-                        }else {
-                            _this.releaseParams.threeClassifyName = '';
-                            _this.classificationThreeList = [];
-                            _this.releaseParams.tinyTypeId = ''
-                        }
-                    }else{
-                        CAIMEI.Alert(response.msg, '确定', false);
-                    }
-                })
-            },
-            ChangeClassificationFirst(option){//选择一级分类
-                var _this = this;
-                _this.selectText.bigTypeID = option.name;
-                _this.releaseParams.firstClassifyName = option.name;
-                _this.releaseParams.bigTypeId = option.bigTypeId
-                _this.selectText.smallTypeID='请选择二级分类';
-                _this.selectText.tinyTypeID = '请选择三级分类';
-                _this.releaseParams.smallTypeId ='';
-                _this.releaseParams.tinyTypeId ='';
-                _this.classificationTwoList=[];
-                _this.classificationThreeList =[];
-                _this.isSelectActive = 0;
-                if(_this.releaseParams.bigTypeId!=''){
-                    _this.GetTwoClassFn(option.bigTypeId);
-                }
-            },
-            ChangeClassificationTwo(option){//选择二级分类
-                var _this = this;
-                if(!option.smallTypeId){_this.isSelectActive = 0; return;}
-                _this.selectText.smallTypeID = option.name;
-                _this.selectText.tinyTypeID = '请选择三级分类';
-                _this.releaseParams.smallTypeId = option.smallTypeId;
-                _this.releaseParams.twoClassifyName = option.name;
-                _this.isSelectActive = 0;
-                _this.GetThreeClassFn(option.smallTypeId);
-            },
-            ChangeClassificationThree(option){//选择三级分类
-                var _this = this;
-                if(!option.tinyTypeId){_this.isSelectActive = 0; return;}
-                _this.releaseParams.tinyTypeId = option.tinyTypeId;
-                _this.selectText.tinyTypeID = option.name;
-                _this.releaseParams.threeClassifyName = option.name;
-                _this.isSelectActive = 0;
-                _this.vShow_TinyTypeID = false;
-            }
-        },
-        mounted: function() {
-            if(globalUserData){
-                this.releaseParams.shopId = globalUserData.shopId;
-                this.releaseParams.userId = globalUserData.userId;
-                this.releaseType = CAIMEI.getUrlParam('type');
-                if(  this.releaseType == 'edit'){
-                    this.productId = Number(CAIMEI.getUrlParam('productId'));
-                    this.GetEditReleaseProductInfo(this.productId);
-                }
-                this.getFreightAll(this.releaseParams.shopId)
-            }
-        }
-    }
-}();
-
+// 初始化
+var getInfoMixins = function () {
+    return {
+        data() {
+            return {
+
+            }
+        },
+        methods: {
+
+            GetEditReleaseProductInfo(productId){
+                const _this = this;
+                SupplierApi.EditReleaseProductInfo({productId:productId},function(response){
+                    if(response.code === 0){
+                        console.log(response);
+                        const data = response.data;
+                        _this.releaseParams.brandId = data.brandId;
+                        _this.releaseParams.name = data.name;
+                        _this.releaseParams.productId = data.productId;
+                        _this.releaseParams.mallProductId = data.mallProductId;
+                        _this.releaseParams.aliasName = data.aliasName;
+                        _this.releaseParams.productType = data.productType;
+                        _this.releaseParams.trainingMethod = data.trainingMethod;
+                        _this.releaseParams.trainingType = data.trainingType;
+                        _this.releaseParams.trainingFee = data.trainingFee;
+                        _this.releaseParams.machineType = data.machineType;
+                        _this.releaseParams.qualificationImg = data.qualificationImg;
+                        _this.skuParams = _this.setNewSkuArray(data.skus);
+                        _this.mallSkusParams = _this.setNewSkuArray(data.mallSkus);
+                        _this.releaseParams.groundMall = data.groundMall;
+                        _this.releaseParams.unit = data.unit;
+                        _this.releaseParams.productCode = data.productCode;
+                        _this.releaseParams.normalPrice = data.normalPrice;
+                        _this.releaseParams.price = data.price;
+                        _this.releaseParams.includedTax = data.includedTax;
+                        _this.releaseParams.invoiceType = data.invoiceType;
+                        _this.releaseParams.taxPoint = data.supplierTaxPoint;
+                        _this.releaseParams.costPrice = data.costPrice;
+                        _this.releaseParams.minBuyNumber = data.minBuyNumber;
+                        _this.releaseParams.stock = data.stock;
+                        _this.releaseParams.step = data.step;
+                        _this.releaseParams.freePostFlag = data.freePostFlag;
+                        _this.releaseParams.freightTemplateId = data.freightTemplateId;
+                        _this.releaseParams.allAreaFlag = data.allAreaFlag;
+                        _this.releaseParams.productName = data.productName;
+                        _this.releaseParams.qualificationNo = data.qualificationNo;
+                        _this.releaseParams.qualificationTime = data.qualificationTime;
+                        _this.releaseParams.newProductType = data.newProductType;
+                        _this.releaseParams.detailInfo = data.productDetail.detailInfo;
+                        _this.releaseParams.serviceInfo = data.productDetail.serviceInfo;
+                        _this.releaseParams.orderInfo = data.productDetail.orderInfo;
+                        _this.productDetailInfoId = data.productDetail.productDetailInfoId;
+                        _this.tagsList = _this.setTagArray(data.tags);
+                        _this.EchoProductFn(data.productType);
+                        _this.EchoMachineTypeFn(data.machineType);
+                        _this.selectText.bigTypeID = data.bigTypeName;
+                        _this.selectText.smallTypeID = data.smallTypeName;
+                        _this.selectText.tinyTypeID = data.tinyTypeName;
+                        _this.releaseParams.bigTypeId = data.bigTypeId;
+                        _this.releaseParams.smallTypeId =data.smallTypeId;
+                        _this.releaseParams.tinyTypeId =data.tinyTypeId;
+                        _this.releaseParams.firstClassifyName = data.bigTypeName;
+                        _this.releaseParams.twoClassifyName = data.smallTypeName;
+                        _this.releaseParams.threeClassifyName = data.tinyTypeName;
+                        _this.releaseParams.commodityType =data.commodityType;
+                        _this.releaseParams.brandName = data.brandName;
+                        _this.GoodsImagesList = _this.EchoGoodsImagesListFn(data.imageList);
+                        _this.classificationTwoList = data.smallTypeName;
+                        _this.classificationThreeList = data.tinyTypeName;
+                        if(data.commodityType !=null||data.commodityType != ''){
+                            _this.releaseParams.commodityType = data.commodityType;
+                            _this.GetFistClassFn(data.commodityType);
+                        }
+                        if(_this.classificationTwoList!=''){
+                            _this.GetTwoClassFn(data.bigTypeID);
+                        }
+                        if (_this.classificationThreeList){
+                            _this.GetThreeClassFn(data.smallTypeID);
+                        }
+                        if(data.searchKey != null){
+                            _this.setSearchKeyArray(data.searchKey);
+                        }
+                        if(data.parametersList.length === 0){
+                            _this.paramKeyList = [{paramsName:'',paramsContent:''}];
+                        }else{
+                            _this.paramKeyList = data.parametersList;
+                        }
+                        if(data.groundMall === '0'){
+                            _this.platformsFlag = _this.platforms[0].isChecked = true
+                            _this.platformsMallFlag = _this.platforms[1].isChecked = false
+                            _this.platformsMallFlag = false
+                        }else if(data.groundMall === '4'){
+                            _this.platformsFlag = _this.platforms[0].isChecked = false
+                            _this.platformsMallFlag = _this.platforms[1].isChecked = true
+                        }else if(data.groundMall === '0,4'){
+                            _this.platformsFlag = true
+                            _this.platformsMallFlag = true
+                            _this.platforms = _this.platforms.map((el)=>{
+                                el.isChecked = true
+                                return el
+                            })
+                        }
+                        // 下拉列表初始化
+                        setTimeout(function(){
+                            _this.ChangeClassificationFirst({bigTypeId:data.bigTypeId, name:data.bigTypeName});
+                            setTimeout(function(){
+                                _this.ChangeClassificationTwo({smallTypeId:data.smallTypeId, name:data.smallTypeName});
+                                setTimeout(function(){
+                                    _this.ChangeClassificationThree({tinyTypeId:data.tinyTypeId, name:data.tinyTypeName});
+                                },500);
+                            },500);
+                        },500);
+                    }else{
+                        CAIMEI.Alert(response.msg, '确定', false);
+                    }
+                })
+            },
+            // 获取所有运费模板
+            getFreightAll(shopId){
+                const _this = this
+                SupplierApi.getFreightAll({shopId:shopId},function(response){
+                    if(response.code === 0){
+                        _this.freightOptions = response.data
+                    }else{
+                        CAIMEI.Alert(response.msg, '确定');
+                    }
+                })
+            },
+            setNewSkuArray(arr){// 回显处理Sku数据
+                if(arr.length > 0){
+                    return arr.map((el)=>({
+                        unit: el.unit,
+                        stock: el.stock,
+                        price: el.price,
+                        skuId: el.skuId,
+                        normalPrice: el.normalPrice,
+                        minBuyNumber: el.minBuyNumber
+                    }))
+                }else{
+                    return []
+                }
+            },
+            setTagArray(arr){//回显处理商品标签
+                const arrSplit = arr.split(',');
+                const _ARRAY = [];
+                arrSplit.forEach(function(item){
+                    var _OBJ = {tag:item};
+                    _ARRAY.push(_OBJ)
+                });
+                return _ARRAY
+            },
+            setSearchKeyArray(arr){//回显处理商品搜索关键词
+                var _this = this;
+                var arrSplit = arr.split(',');
+                return _this.searchKeyList.map(function(el,index){
+                    el.value = arrSplit[index] || '';
+                })
+            },
+            EchoProductFn(type) {
+                switch (type) {
+                    case 0:
+                        this.selectText.goodsType = '其他';
+                        break;
+                    case 1:
+                        this.selectText.goodsType = '妆字号';
+                        break;
+                    case 2:
+                        this.selectText.goodsType = '械字号';
+                        break;
+                }
+            },
+            EchoMachineTypeFn(type) {
+                switch (type) {
+                    case 1:
+                        this.selectText.apparatusType = '一类医疗器械';
+                        break;
+                    case 2:
+                        this.selectText.apparatusType = '二类医疗器械';
+                        break;
+                    case 3:
+                        this.selectText.apparatusType = '三类医疗器械';
+                        break;
+                }
+            },
+            EchoGoodsImagesListFn(arr){//处理商品主图回显
+                const newArray = [];
+                arr.forEach( function(el){ newArray.push(el.image) });
+                return newArray;
+            },
+            GetFistClassFn(val){//获取一级分类菜单
+                const _this = this;
+                PublicApi.GetFirstClassFication({typeSort:val},function (response) {
+                    if(response.code === 0){
+                        _this.classificationFirstList = response.data;
+                    }else{
+                        CAIMEI.Alert(response.msg, '确定', false);
+                    }
+                })
+            },
+            GetTwoClassFn(value){//获取二级分类菜单
+                const _this = this;
+                PublicApi.GetTwoClassFication({bigTypeId:value},function (response) {
+                    if(response.code === 0){
+                        if(response.data.length>0){
+                            _this.classificationTwoList = response.data;
+                        }else {
+                            _this.classificationTwoList = [];
+                            _this.releaseParams.twoClassifyName = '';
+                            _this.releaseParams.smallTypeId = ''
+                        }
+                    }else{
+                        CAIMEI.Alert(response.msg, '确定', false);
+                    }
+                })
+            },
+            GetThreeClassFn(value){//获取三级分类菜单
+                var _this = this;
+                PublicApi.GetThreeClassFication({smallTypeId:value},function (response) {
+                    if(response.code == 0){
+                        if(response.data.length>0){
+                            _this.classificationThreeList = response.data;
+                        }else {
+                            _this.releaseParams.threeClassifyName = '';
+                            _this.classificationThreeList = [];
+                            _this.releaseParams.tinyTypeId = ''
+                        }
+                    }else{
+                        CAIMEI.Alert(response.msg, '确定', false);
+                    }
+                })
+            },
+            ChangeClassificationFirst(option){//选择一级分类
+                var _this = this;
+                _this.selectText.bigTypeID = option.name;
+                _this.releaseParams.firstClassifyName = option.name;
+                _this.releaseParams.bigTypeId = option.bigTypeId
+                _this.selectText.smallTypeID='请选择二级分类';
+                _this.selectText.tinyTypeID = '请选择三级分类';
+                _this.releaseParams.smallTypeId ='';
+                _this.releaseParams.tinyTypeId ='';
+                _this.classificationTwoList=[];
+                _this.classificationThreeList =[];
+                _this.isSelectActive = 0;
+                if(_this.releaseParams.bigTypeId!=''){
+                    _this.GetTwoClassFn(option.bigTypeId);
+                }
+            },
+            ChangeClassificationTwo(option){//选择二级分类
+                var _this = this;
+                if(!option.smallTypeId){_this.isSelectActive = 0; return;}
+                _this.selectText.smallTypeID = option.name;
+                _this.selectText.tinyTypeID = '请选择三级分类';
+                _this.releaseParams.smallTypeId = option.smallTypeId;
+                _this.releaseParams.twoClassifyName = option.name;
+                _this.isSelectActive = 0;
+                _this.GetThreeClassFn(option.smallTypeId);
+            },
+            ChangeClassificationThree(option){//选择三级分类
+                var _this = this;
+                if(!option.tinyTypeId){_this.isSelectActive = 0; return;}
+                _this.releaseParams.tinyTypeId = option.tinyTypeId;
+                _this.selectText.tinyTypeID = option.name;
+                _this.releaseParams.threeClassifyName = option.name;
+                _this.isSelectActive = 0;
+                _this.vShow_TinyTypeID = false;
+            }
+        },
+        mounted: function() {
+            if(globalUserData){
+                this.releaseParams.shopId = globalUserData.shopId;
+                this.releaseParams.userId = globalUserData.userId;
+                this.releaseType = CAIMEI.getUrlParam('type');
+                if(  this.releaseType == 'edit'){
+                    this.productId = Number(CAIMEI.getUrlParam('productId'));
+                    this.GetEditReleaseProductInfo(this.productId);
+                }
+                this.getFreightAll(this.releaseParams.shopId)
+            }
+        }
+    }
+}();
+

+ 187 - 172
src/main/resources/static/js/supplier-center/shop/mixins/releaseMixins.js

@@ -1,172 +1,187 @@
-// 发布商品
-const defaultSku = () =>{
-    return {
-        unit:'', // 规格
-        normalPrice:'', // 市场价
-        price:'', // 售价
-        minBuyNumber:'',// 起订量
-        stock:'' // 库存
-    }
-}
-var releaseMixins = function () {
-    return {
-        data() {
-            return {
-                platforms:[
-                    {name:'【采美平台】',value:0,isChecked:true},
-                    {name:'【丽格集采联盟平台】',value:4,isChecked:false},
-                ],
-                skuParams:[],
-                mallSkusParams:[],
-                platformsFlag:true,
-                platformsMallFlag:false,
-                isSkuRule:false,
-                isMallSkuRule:false,
-                isPlatforms:false,
-                freightOptions: [],
-            }
-        },
-        mounted: function() {
-            this.skuParams.push(defaultSku())
-            // this.mallSkusParams.push(defaultSku())
-        },
-        methods: {
-            //选择平台
-            handleCheckedPlat(item,index){
-                item.isChecked = !item.isChecked
-                if(index === 0){
-                    this.platformsFlag = item.isChecked
-                    if(item.isChecked){
-                        this.skuParams.push(defaultSku())
-                    }else{
-                        this.skuParams =[]
-                    }
-                }else{
-                    this.platformsMallFlag = item.isChecked
-                    if(item.isChecked){
-                        this.mallSkusParams.push(defaultSku())
-                    }else{
-                        this.mallSkusParams =[]
-                    }
-                }
-                if(this.platformsFlag && this.platformsMallFlag){
-                    this.releaseParams.groundMall = '0,4'
-                }else if(this.platformsFlag && !this.platformsMallFlag){
-                    this.releaseParams.groundMall = '0'
-                }else if(this.platformsMallFlag && !this.platformsFlag){
-                    this.releaseParams.groundMall = '4'
-                }else{
-                    this.releaseParams.groundMall = ''
-                }
-                console.log('groundMall', this.releaseParams.groundMall)
-            },
-            // 复制上方SKU
-            handleCopySuk(){
-                const _this = this
-                CAIMEI.Modal('确定复制上方平台的SKU数据吗?','取消','确定',function () {
-                    _this.mallSkusParams =  _this.copySkusCkeck()
-                })
-            },
-            // 处理数据
-            copySkusCkeck(){
-                return  JSON.parse(JSON.stringify(this.skuParams))
-            },
-            addskuParamsFn(type,sku,index){ // 添加
-                if(type === 0){
-                    this.skuParams.push(defaultSku())
-                }else{
-                    this.mallSkusParams.push(defaultSku())
-                }
-            },
-            delskuParamsFn(type,sku,index){// 删除
-                const _this = this
-                if(this.releaseType === 'edit'){
-                    CAIMEI.Modal('确定要删除该条SKU吗?','取消','确定',function () {
-                        _this.updateDelProductSku(type,sku.skuId);
-                        if(type === 0){
-                            _this.skuParams.splice(index, 1)
-                        }else{
-                            _this.mallSkusParams.splice(index, 1)
-                        }
-                    })
-                }else{
-                    if(type === 0){
-                        _this.skuParams.splice(index, 1)
-                    }else{
-                        _this.mallSkusParams.splice(index, 1)
-                    }
-                }
-            },
-            updateDelProductSku(type,skuId){
-                SupplierApi.UpdateDelProductSku({type:type,skuId:skuId},function(response){
-                    if(response.code === 0){
-                       console.log('')
-                    }
-                });
-            },
-            checkedSku(){// 校验SKU 是否填写完整
-                return this.skuParams.every((params) => Object.keys(params).every(key => params[key]))
-            },
-            checkedMallSku(){// 校验SKU 是否填写完整
-                return this.mallSkusParams.every((params) => Object.keys(params).every(key => params[key]))
-            },
-            handleSkuInput(){
-                this.isSkuRule = false
-            },
-            // 刷新运费模板
-            handleRefresh(){
-                this.getFreightAll(this.releaseParams.shopId)
-            },
-            addSupplierReleaseInfo(){
-                var _this = this;
-                if(_this.releaseParams.newProductType === 0){
-                    _this.vShow_isNewProductType = true;
-                    _this.fromMessage = '请选择是否参与新品展示';
-                    _this.scrollIntoView();
-                    setTimeout(function(){
-                        _this.vShow_isNewProductType = false;
-                    },3000);
-                    return;
-                }
-                _this.releaseParams.orderInfo = orderInfoEditor.getData();
-                _this.releaseParams.serviceInfo = severInfoEditor.getData();
-                if(_this.releaseType === 'edit'){
-                    _this.releaseParams.productDetailInfoId = _this.productDetailInfoId;
-                    CAIMEI.returnedTarget();
-                    _this.releaseParams = Object.assign(_this.releaseParams,{params:JSON.stringify(_this.params)});
-                    delete _this.releaseParams.imageList;
-                    delete _this.releaseParams.parametersList;
-                    delete _this.releaseParams.productDetail;
-                }else{
-                    CAIMEI.returnedTarget();
-                    _this.releaseParams = Object.assign(_this.releaseParams,{params:JSON.stringify(_this.params)});
-                }
-                this.releaseParams.skus = this.platformsFlag ? JSON.stringify(this.skuParams) : [];
-                this.releaseParams.mallSkus = this.platformsMallFlag ? JSON.stringify(this.mallSkusParams) : [];
-                this.addSupplierReleaseProduct(_this.releaseParams);
-            },
-            addSupplierReleaseProduct(params){// 发布商品
-                const _this = this;
-                console.log('======', params);
-                SupplierApi.AddSupplierReleaseProduct(params,function(response){
-                    if(response.code === 0){
-                        CAIMEI.dialog('提交成功,等待审核',true,function () {
-                            if(_this.releaseType === 'edit'){
-                                SupplierApi.UpdateSearchManageProduct({productId:_this.productId},function (res) {
-                                    console.log('编辑商品更新搜索索引~~~成功');
-                                })
-                            }
-                            window.location.href = '/supplier/goods.html';
-                            if(CAIMEI.Storage.getItem('adProductPeview')){
-                                CAIMEI.Storage.removeItem('adProductPeview');
-                            }
-                        });
-                    }else{
-                        CAIMEI.Alert(response.msg, '确定', false);
-                    }
-                });
-            },
-        }
-    }
-}();
-
+// 发布商品
+const defaultSku = () =>{
+    return {
+        unit:'', // 规格
+        normalPrice:'', // 市场价
+        price:'', // 售价
+        minBuyNumber:'',// 起订量
+        stock:'' // 库存
+    }
+}
+var releaseMixins = function () {
+    return {
+        data() {
+            return {
+                platforms:[
+                    {name:'【采美平台】',value:0,isChecked:true},
+                    {name:'【丽格集采联盟平台】',value:4,isChecked:false},
+                ],
+                skuParams: JSON.parse(localStorage.getItem('skuParams')) || [{
+                    unit:'', // 规格
+                    normalPrice:'', // 市场价
+                    price:'', // 售价
+                    minBuyNumber:'',// 起订量
+                    stock:'' // 库存
+                }],
+                mallSkusParams: JSON.parse(localStorage.getItem('mallSkusParams')) || [],
+                platformsFlag:true,
+                platformsMallFlag:false,
+                isSkuRule:false,
+                isMallSkuRule:false,
+                isPlatforms:false,
+                freightOptions: [],
+            }
+        },
+        mounted: function() {
+            // this.skuParams.push(defaultSku())
+            // this.mallSkusParams.push(defaultSku())
+        },
+        methods: {
+            //选择平台
+            handleCheckedPlat(item,index){
+                item.isChecked = !item.isChecked
+                if(index === 0){
+                    this.platformsFlag = item.isChecked
+                    if(item.isChecked){
+                        this.skuParams.push(defaultSku())
+                    }else{
+                        this.skuParams =[]
+                    }
+                }else{
+                    this.platformsMallFlag = item.isChecked
+                    if(item.isChecked){
+                        this.mallSkusParams.push(defaultSku())
+                    }else{
+                        this.mallSkusParams =[]
+                    }
+                }
+                if(this.platformsFlag && this.platformsMallFlag){
+                    this.releaseParams.groundMall = '0,4'
+                }else if(this.platformsFlag && !this.platformsMallFlag){
+                    this.releaseParams.groundMall = '0'
+                }else if(this.platformsMallFlag && !this.platformsFlag){
+                    this.releaseParams.groundMall = '4'
+                }else{
+                    this.releaseParams.groundMall = ''
+                }
+                console.log('groundMall', this.releaseParams.groundMall)
+            },
+            // 复制上方SKU
+            handleCopySuk(){
+                const _this = this
+                CAIMEI.Modal('确定复制上方平台的SKU数据吗?','取消','确定',function () {
+                    _this.mallSkusParams =  _this.copySkusCkeck()
+                })
+            },
+            // 处理数据
+            copySkusCkeck(){
+                return  JSON.parse(JSON.stringify(this.skuParams))
+            },
+            addskuParamsFn(type,sku,index){ // 添加
+                if(type === 0){
+                    this.skuParams.push(defaultSku())
+                }else{
+                    this.mallSkusParams.push(defaultSku())
+                }
+            },
+            delskuParamsFn(type,sku,index){// 删除
+                const _this = this
+                if(this.releaseType === 'edit'){
+                    CAIMEI.Modal('确定要删除该条SKU吗?','取消','确定',function () {
+                        _this.updateDelProductSku(type,sku.skuId);
+                        if(type === 0){
+                            _this.skuParams.splice(index, 1)
+                        }else{
+                            _this.mallSkusParams.splice(index, 1)
+                        }
+                    })
+                }else{
+                    if(type === 0){
+                        _this.skuParams.splice(index, 1)
+                    }else{
+                        _this.mallSkusParams.splice(index, 1)
+                    }
+                }
+            },
+            updateDelProductSku(type,skuId){
+                SupplierApi.UpdateDelProductSku({type:type,skuId:skuId},function(response){
+                    if(response.code === 0){
+                       console.log('')
+                    }
+                });
+            },
+            checkedSku(){// 校验SKU 是否填写完整
+                return this.skuParams.every((params) => Object.keys(params).every(key => params[key]))
+            },
+            checkedMallSku(){// 校验SKU 是否填写完整
+                return this.mallSkusParams.every((params) => Object.keys(params).every(key => params[key]))
+            },
+            handleSkuInput(){
+                this.isSkuRule = false
+            },
+            // 刷新运费模板
+            handleRefresh(){
+                this.getFreightAll(this.releaseParams.shopId)
+            },
+            addSupplierReleaseInfo(){
+                var _this = this;
+                if(_this.releaseParams.newProductType === 0){
+                    _this.vShow_isNewProductType = true;
+                    _this.fromMessage = '请选择是否参与新品展示';
+                    _this.scrollIntoView();
+                    setTimeout(function(){
+                        _this.vShow_isNewProductType = false;
+                    },3000);
+                    return;
+                }
+                if(_this.releaseType === 'edit'){
+                    _this.releaseParams.productDetailInfoId = _this.productDetailInfoId;
+                    CAIMEI.returnedTarget();
+                    _this.releaseParams = Object.assign(_this.releaseParams,{params:JSON.stringify(_this.params)});
+                    delete _this.releaseParams.imageList;
+                    delete _this.releaseParams.parametersList;
+                    delete _this.releaseParams.productDetail;
+                }else{
+                    CAIMEI.returnedTarget();
+                    _this.releaseParams = Object.assign(_this.releaseParams,{params:JSON.stringify(_this.params)});
+                }
+                this.releaseParams.skus = this.platformsFlag ? JSON.stringify(this.skuParams) : [];
+                this.releaseParams.mallSkus = this.platformsMallFlag ? JSON.stringify(this.mallSkusParams) : [];
+                this.addSupplierReleaseProduct(_this.releaseParams);
+            },
+            addSupplierReleaseProduct(params){// 发布商品
+                const _this = this;
+                console.log('======', params);
+                SupplierApi.AddSupplierReleaseProduct(params,function(response){
+                    if(response.code === 0){
+                        CAIMEI.dialog('提交成功,等待审核',true,function () {
+                            if(_this.releaseType === 'edit'){
+                                SupplierApi.UpdateSearchManageProduct({productId:_this.productId},function (res) {
+                                    console.log('编辑商品更新搜索索引~~~成功');
+                                })
+                            }
+                            _this.clearStorage()
+                            window.location.href = '/supplier/goods.html';
+                            if(CAIMEI.Storage.getItem('adProductPeview')){
+                                CAIMEI.Storage.removeItem('adProductPeview');
+                            }
+                        });
+                    }else{
+                        CAIMEI.Alert(response.msg, '确定', false);
+                    }
+                });
+            },
+            // 清除本地缓存信息
+            clearStorage(){
+                CAIMEI.Storage.removeItem('releaseParams');
+                CAIMEI.Storage.removeItem('paramKeyList');
+                CAIMEI.Storage.removeItem('skuParams');
+                CAIMEI.Storage.removeItem('mallSkusParams');
+                CAIMEI.Storage.removeItem('tagsList');
+                CAIMEI.Storage.removeItem('searchKeyList');
+                CAIMEI.Storage.removeItem('GoodsImagesList');
+            }
+        }
+    }
+}();
+

+ 635 - 556
src/main/resources/static/js/supplier-center/shop/release.js

@@ -1,556 +1,635 @@
-/**
- * Created by ZHJY on 2020/9/17.
- */
-$('.navLayout').find('.navList').removeClass("on").find('.con').hide().find('a').removeClass("on");
-$('.navLayout').find('.navList').eq(1).addClass("on").find('.con').show().find('a').eq(2).addClass("on");
-var releaseContainer = new Vue({
-    el:"#releaseContainer",
-    mixins: [getInfoMixins,checkeMixins,freightMixins,releaseMixins,cmSysVitaMixins],
-    data: {
-        NODE_ENV_BASE_URL:'',
-        releaseType:'',
-        productId:'',
-        mallProductId:'',
-        activeNum:0,
-        isSelectActive:0,
-        isRequest:true,
-        isAddBrand:false,//控制提交品牌弹窗
-        tagsText:'',//标签输入框
-        brandImage:'',//品牌LOGO
-        brandTextarea:'',//品牌描述
-        brandAssociationList:[],//品牌联想
-        isNoneBrand:false,
-        releaseParams:{
-            userId:0,
-            shopId:0,
-            name:'', //商品名称
-            aliasName:'',//内部商品名称
-            bigTypeId:'',
-            smallTypeId:'',
-            tinyTypeId:'',//三级分类ID
-            brandId:'',//品牌ID
-            tags:'',//商品标签
-            unit:'',//包装规格
-            productCode:'',//商品编码
-            productType:'',//商品类型,
-            machineType:'',//医疗器械类型
-            searchKey:'',//搜索关键词
-            qualificationImg:"",//器械资质
-            normalPrice:'',//市场价
-            price:'',//售价
-            costPrice:'',//结算价
-            includedTax:1,//是否含税
-            invoiceType:1,//发票类型
-            taxPoint:13,//税率
-            minBuyNumber:'',//起订量
-            stock:'',//库存
-            step:1,//购买数量
-            freePostFlag:0,// 0 包邮 1 使用运费模板 2 到付
-            freightTemplateId:'', // 运费模板Id
-            allAreaFlag:1,//销售区域
-            provinceIds:0,//指定区域
-            detailInfo:'',//商品详情信息
-            orderInfo :'',//订购方案
-            serviceInfo:'',//服务详情
-            firstClassifyName:'',
-            twoClassifyName:'',
-            threeClassifyName:'',
-            brandName:'',
-            commodityType:1,
-            trainingMethod:0,// 线上培训方式
-            trainingType:0,// 售价包含培训费用
-            trainingFee:'',
-            newProductType:0,// 新品商品状态  1.参与 2.未参与
-            qualificationNo:'',//资质证书编号
-            productName:'',//资质产品名称
-            qualificationTime:'',//证书有效日期
-            groundMall:'0',
-            skus:[],// sku
-            mallSkus:[] //外部Sku
-        },
-        params:{
-            param:[],//相关参数
-            image:[],//商品图片
-        },
-        viewer:{},
-        tagsList:[],//本地存储标签
-        searchKeyArr:[],//本地存储关键词
-        paramKeyList:[{paramsName:'',paramsContent:''}],//相关参数
-        formData:new FormData(),
-        classificationFirstList:[{name:'请选择',value:''}],
-        classificationTwoList:[],
-        classificationThreeList:[],
-        keywordText:'请务必准确定义关键词,关键词会影响商品的搜索结果,建议从品牌,商品学名,商品别名,商品大类别和商品小类别5个方面考虑,每个关键词不超过16个汉字',
-        selectText:{
-            bigTypeID:'请选择一级分类',
-            smallTypeID:'请选择二级分类',
-            tinyTypeID:'请选择三级分类',
-            goodsType:'请选择商品类型',
-            apparatusType:'请选择器械类型',
-        },
-        goodsTypeList:[
-            {name:'妆字号',value:1},
-            {name:'械字号',value:2},
-            {name:'其他',value:0},
-        ],
-        apparatusTypeList:[
-            {name:'一类医疗器械',value:1},
-            {name:'二类医疗器械',value:2},
-            {name:'三类医疗器械',value:3},
-        ],
-        searchKeyList:[
-            {placeholder:'建议输入品牌关键词',value:""},
-            {placeholder:'建议输入品牌学名关键词',value:""},
-            {placeholder:'建议输入商品别名/市场称呼关键词',value:""},
-            {placeholder:'建议输入商品大类别关键词',value:""},
-            {placeholder:'建议输入商品小类别关键词',value:""},
-        ],
-        productDetailInfoId:null,
-        ProvinceList:[],
-        GoodsImagesList:[],
-        isProvince:false,
-        provinceIns:0,
-        oldNum:0,
-        newNum: 0,
-        orderingMin:0,
-        orderingMax:500,
-        severiMin:0,
-        severiMax:500,
-        isTaxPonitEditPopup:false,
-        isTaxPonitEdit:false,
-        fromMessage:'',//提示文字
-        isBrandAssociation:false,
-
-    },
-    methods: {
-        getclass:function(val){
-            this.selectText.bigTypeID='请选择一级分类';
-            this.selectText.smallTypeID = '请选择二级分类';
-            this.releaseParams.bigTypeId ='';
-            this.classificationTwoList=[];
-            this.classificationThreeList =[];
-            this.GetFistClassFn(val);
-        },
-        choiceTrain : function(val){
-            var _this = this;
-            _this.releaseParams.trainType = Number(val);
-        },
-        choiceTrainOutlay : function(val){
-            var _this = this;
-            _this.releaseParams.expensesType = Number(val);
-        },
-        touchmoveFn: function(){
-            this.isSelectActive =0;
-        },
-        showOption: function(type){//显示option
-            var _this = this;
-            switch (type) {
-                case 'first':
-                    _this.vShow_TinyTypeID = false;
-                    _this.isSelectActive=1;
-                    break;
-                case 'two':
-                    _this.vShow_TinyTypeID = false;
-                    _this.isSelectActive=2;
-                    break;
-                case 'three':
-                    _this.vShow_TinyTypeID = false;
-                    _this.isSelectActive=3;
-                    break;
-                case 'type':
-                    _this.vShow_GoodsType = false;
-                    _this.isSelectActive=4;
-                    break;
-                case 'ratus':
-                    _this.isSelectActive=5;
-                    break;
-            }
-        },
-        SelectChangeTypeFn: function(option){//选择商品类型
-            var _this = this;
-            _this.releaseParams.productType = Number(option.value);
-            _this.selectText.goodsType = option.name;
-            _this.isSelectActive = 0;
-            _this.vShow_GoodsType = false;
-        },
-        SelectChangeApparatusFn: function(option){//选择器械类型
-            var _this = this;
-            _this.releaseParams.machineType = Number(option.value);
-            _this.selectText.apparatusType = option.name;
-            _this.isSelectActive = 0;
-            _this.vShow_GoodsType = false;
-        },
-        bindBrandAssociationFn: function(e){//品牌输入联想
-            var _this = this;
-            var name = e.target.value;
-            if (name != ''){
-                SupplierApi.GetBrandAssociation({userId: _this.releaseParams.userId,name:name},function(response){
-                    if(response.code ==0){
-                        if(response.data&&response.data.length>0){
-                            _this.brandAssociationList = response.data;
-                            _this.isBrandAssociation = true;
-                        }else{
-                            _this.brandAssociationList = [];
-                            _this.isBrandAssociation = false;
-                        }
-                    }
-                });
-            }else{
-                _this.isBrandAssociation = false;
-            }
-        },
-        brandAssociationFn: function(){//失去焦点判断是否存在品牌信息
-            var _this = this;
-            if(_this.releaseParams.brandName === ''){
-                CAIMEI.dialog('请输入商品品牌名称');
-            }else{
-                SupplierApi.CheckSupplierBrandDetection({name:_this.releaseParams.brandName},function(response){
-                    if(response.code ===0){
-                        CAIMEI.dialog('您的品牌可以使用~');
-                        _this.releaseParams.brandId = response.data.id;
-                    }else{
-                        _this.releaseParams.brandId = '';
-                        CAIMEI.Modal('您输入的品牌名称暂未被采美收录,请检查品牌名称是否输入正确或者向采美提交该品牌','确定','去提交',function () {
-                            setTimeout(function(){
-                                _this.isAddBrand = true;
-                            },200);
-                        });
-                    }
-                });
-            }
-        },
-        uploadBrandImagesFn: function(){//上传品牌LOGO
-            var _this = this;
-            var inputDOM = _this.$refs.brandImage;
-            var formData = new FormData();
-            var file = inputDOM.files;
-            formData.append('file', file[0]);
-            SupplierApi.uploadimg(formData,function(response){
-                _this.brandImage = response.data;
-            });
-        },
-        removeBrandImageFn: function(){//删除品牌LOGO
-            var _this = this;
-            _this.brandImage = '';
-        },
-        confimAddBrandPopup: function(){//确定提交新品牌
-            var _this = this;
-            var params = {
-                    name:_this.releaseParams.brandName,
-                    userId:_this.releaseParams.userId,
-                    logo:_this.brandImage,
-                    description:_this.brandTextarea,
-                    source:1
-            };
-            SupplierApi.AddSupplierBrand(params,function(response){
-                if(response.code == 0){
-                    CAIMEI.Alert('品牌提交成功,将在1-2个工作日内进行审核~','确定',true,function () {
-                        _this.releaseParams.brandId = response.data.id;
-                        _this.isBrandAssociation = false;
-                        _this.isAddBrand = false;
-                    });
-                }else{
-                    CAIMEI.Alert(response.msg, '确定', false);
-                }
-            });
-        },
-        hideAddBrandPopup: function(){//取消提交新品牌
-            var _this = this;
-            _this.isAddBrand = false;
-        },
-        SelectChangeAssociationFn: function(option){//选择品牌
-            var _this = this;
-            _this.releaseParams.brandName = option.name;
-            _this.releaseParams.brandId = option.id;
-            _this.isBrandAssociation = false;
-            _this.vShow_BrandID = false;
-        },
-        addTag:function(){//添加标签
-            var _this = this;
-            if(_this.tagsText == ''){
-                _this.vShow_Tags = true;
-                _this.fromMessage = '请输入商品标签!';
-            }else if(_this.in_array(_this.tagsText,_this.tagsList)){
-                _this.vShow_Tags = true;
-                _this.fromMessage = '商品标签已存在!';
-            }else{
-                _this.tagsList.push({"tag":_this.tagsText});
-                _this.tagsText = '';
-                _this.vShow_Tags = false;
-                _this.fromMessage = '';
-            }
-        },
-        removeTags:function(index){//删除标签
-            this.tagsList.splice(index,1);
-        },
-        in_array:function(search,array){//判断标签是否已存在
-            for(var i in array){
-                if(array[i].tag==search){
-                    return true;
-                }
-            }
-            return false;
-        },
-        uploadQualificationsFn: function(el) {//上传资质证书
-            var _this = this;
-            var inputDOM = _this.$refs.inputer;
-            var file = inputDOM.files;
-            _this.formData.append('file', file[0]);
-            SupplierApi.uploadimg(_this.formData,function(response){
-                _this.releaseParams.qualificationImg = response.data;
-                _this.vShow_QualificationImg = false;
-            });
-        },
-        removeQualificationsFn: function(){//删除资质图片
-            var _this = this;
-            _this.releaseParams.qualificationImg  = '';
-        },
-        addParamsFn: function(){//添加参数
-            var _this = this;
-            if(_this.paramKeyList.length>50){return;}
-            var obj ={paramsName:'',paramsContent:''};
-            _this.paramKeyList.push(obj)
-        },
-        removeParamsFn: function(index){//删除参数
-            var _this = this;
-            _this.paramKeyList.splice(index,1);
-        },
-        radioChangeInvoiceType: function(event) {//选择发票类型
-            var _this = this;
-            _this.releaseParams.invoiceType= event.target.value;
-            switch (_this.releaseParams.invoiceType) {
-                case '1':
-                    _this.releaseParams.taxPoint = 13;
-                    _this.isTaxPonitEdit = true;
-                    break;
-                case '2':
-                    _this.releaseParams.taxPoint = 6;
-                    _this.isTaxPonitEdit = true;
-                    break;
-                case '3':
-                    _this.releaseParams.taxPoint = '';
-                    _this.isTaxPonitEdit = false;
-                    break;
-            }
-        },
-        taxPonitEdit: function(){//修改税率
-            this.isTaxPonitEditPopup = true;
-        },
-        hideTaxPonitEditPopup: function(){//取消修改税率弹窗
-            var _this = this;
-            if(_this.releaseParams.taxPoint == ''){
-                _this.vShow_taxPoint = true;
-                _this.fromMessage = '请输入税率';
-                return
-            }
-            if(_this.releaseParams.taxPoint == 0){
-                _this.vShow_taxPoint = true;
-                _this.fromMessage = '税率不能为0';
-                return
-            }
-            this.isTaxPonitEditPopup = false;
-        },
-        confimTaxPonitEditPopup: function(){//确定修改税率
-            var _this = this;
-            if(_this.releaseParams.taxPoint == ''){
-                _this.vShow_taxPoint = true;
-                _this.fromMessage = '请输入税率';
-                return
-            }
-            if(_this.releaseParams.taxPoint == 0){
-                _this.vShow_taxPoint = true;
-                _this.fromMessage = '税率不能为0';
-                return
-            }
-            this.isTaxPonitEditPopup = false;
-        },
-        radioChangeStep(event){//选择指定购买数量
-            this.releaseParams.step= event.target.value;
-        },
-        radioChangeByFlag(event){//选择运费
-            this.releaseParams.freePostFlag= event.target.value;
-        },
-        radioChangeAllAreaFlag(event){//选择指定区域
-            var _this = this;
-            _this.releaseParams.areaFlag= event.target.value;
-            if( _this.releaseParams.areaFlag == '0'){
-                _this.isProvince=true;
-                _this.GetProvinceFn();
-            }else{
-                _this.vShow_isProvince = false;
-                _this.isProvince=false;
-            }
-        },
-        radioChangeNewvalidFlag(event){//选择新品展示
-            this.releaseParams.newProductType= event.target.value;
-        },
-        addProvinceFn(item){//选择指定区域
-            item.isChecked = ! item.isChecked;
-        },
-        GetProvinceFn(){//查询指定区域
-            var _this = this;
-            PublicApi.GetProvince({},function(response){
-                if(response.code == 0){
-                    var arr =[];
-                    var data = response.data;
-                    data.forEach(function(el){
-                        CAIMEI.returnedTarget();
-                        arr.push(Object.assign({},el,{ isChecked : false }))
-                    });
-                    _this.ProvinceList =arr;
-                }else{
-                    CAIMEI.Alert(response.msg, '确定', false);
-                }
-            })
-        },
-        uploadGoodsImagesFn: function(event){//上传商品图片
-            var _this = this;
-            var inputDOM = _this.$refs.goodsImages;
-            var file = inputDOM.files;
-            var reader = new FileReader();
-            reader.readAsDataURL(file[0]);
-            reader.onload = function(e) {
-                var image = new Image();
-                image.src = e.target.result;
-                image.onload = function() {
-                    var w = this.width;
-                    var h = this.height;
-                    if (w != h) {
-                        CAIMEI.dialog('请上传尺寸比例为1:1的图片');
-                        return false;
-                    }
-                    if (w < 750 || h < 750) {
-                        CAIMEI.dialog('请上传分辨率大于750*750的图片');
-                        return false;
-                    }
-                    _this.formData.append('file', file[0]);
-                    SupplierApi.uploadimg(_this.formData,function(response){
-                        _this.GoodsImagesList.push(response.data);
-                        event.target.value = '';
-                    });
-                }
-            };
-        },
-        showViewerImageFn: function(index ){//预览上传图片
-            var _this = this;
-            var DomEven = '#uploadGoodsImages'+index;
-            var ViewerDom = document.querySelector(DomEven);
-            _this.viewer = new Viewer(ViewerDom, {url:'data-image'});
-        },
-        removeGoodsImagesFn: function(index){//删除商品图片
-            var _this = this;
-            _this.GoodsImagesList.splice(index,1);
-        },
-        orderingTextConInput: function(event){//订购方案文字控制
-            var value = event.target.value;
-            var len = parseInt(value.length);
-            if (len > this.orderingMax) return;
-            this.orderingMin = len;
-            if(this.orderingMin == 500){
-                return;
-            }
-        },
-        severiTextConInput: function(event){//服务项目文字控制
-            var value = event.target.value;
-            var len = parseInt(value.length);
-            if (len > this.severiMax) return;
-            this.severiMin = len;
-            if(this.severiMin == 500){
-                return;
-            }
-        },
-        initCKeditor: function(){//富文本
-            var _this = this;
-            _this.vShow_detailInfoEditor = false;
-            ClassicEditor.create(document.querySelector('#detailInfoEditor'), {
-                ckfinder: {
-                    uploadUrl: _this.NODE_ENV_BASE_URL+'/tools/image/upload/ckeditor'
-                }
-            }).then(function(editor) {
-                window.detailInfoEditor = editor;
-                var detailInfo= detailInfoEditor.getData();
-                ClassicEditor.instances.WORK_INTRODUCTION.setData(detailInfo);
-                console.log(detailInfo);
-            }).catch(function(error){
-                console.log(error);
-            });
-        },
-        initOrderCKeditor: function(){//富文本
-            var _this = this;
-            _this.vShow_orderInfoEditor = false;
-            ClassicEditor.create(document.querySelector('#orderInfoEditor'), {
-                ckfinder: {
-                    uploadUrl: _this.NODE_ENV_BASE_URL+'/tools/image/upload/ckeditor'
-                }
-            }).then(function(editor) {
-                window.orderInfoEditor = editor;
-                var detailInfo= orderInfoEditor.getData();
-                ClassicEditor.instances.WORK_INTRODUCTION.setData(detailInfo);
-                console.log(detailInfo);
-            }).catch(function(error){
-                console.log(error);
-            });
-        },
-        initSeverCKeditor: function(){//富文本
-            var _this = this;
-            _this.vShow_orderInfoEditor = false;
-            ClassicEditor.create(document.querySelector('#severInfoEditor'), {
-                ckfinder: {
-                    uploadUrl: _this.NODE_ENV_BASE_URL+'/tools/image/upload/ckeditor'
-                }
-            }).then(function(editor) {
-                window.severInfoEditor = editor;
-                var detailInfo= severInfoEditor.getData();
-                ClassicEditor.instances.WORK_INTRODUCTION.setData(detailInfo);
-            }).catch(function(error){
-                console.log(error);
-            });
-        },
-        addReleaseGoodSubmitFn: function(){//提交发布商品
-            this.addSupplierReleaseInfo();
-        },
-        addReleasePeview: function(){//预览按钮
-            var _this = this;
-            CAIMEI.returnedTarget();
-            this.releaseParams.orderInfo = orderInfoEditor.getData();
-            this.releaseParams.serviceInfo = severInfoEditor.getData();
-            this.releaseParams = Object.assign(_this.releaseParams,{params:_this.params,skus:_this.skuParams,mallSkus:_this.mallSkusParams});
-            CAIMEI.Storage.setItem('adProductPeview', JSON.stringify(_this.releaseParams));
-            setTimeout(function(){
-                window.open('/supplier/goods/preview.html');
-            },1000)
-        },
-        scrollIntoView: function(){
-            document.getElementById('releaseContainer').scrollIntoView({block: 'start', behavior: 'smooth'});
-        },
-        dragstart: function(value) {  // 记录初始信息
-            this.oldNum = value;
-        },
-        dragend: function(value) {   // 做最终操作
-            if (this.oldNum != this.newNum) {
-                var oldIndex = this.GoodsImagesList.indexOf(this.oldNum);
-                var newIndex = this.GoodsImagesList.indexOf(this.newNum);
-                var newItems = this.GoodsImagesList;
-                // 删除老的节点
-                newItems.splice(oldIndex, 1);
-                // 在列表中目标位置增加新的节点
-                newItems.splice(newIndex, 0, this.oldNum);
-                // this.items一改变,transition-group就起了作用
-                this.GoodsImagesList = newItems;
-            }
-        },
-        dragenter: function(value) {//记录移动过程中信息
-            this.newNum = value;
-        },
-    },
-    created: function () {
-        // 获取初始一级分类菜单
-        this.GetFistClassFn(this.releaseParams.commodityType);
-    },
-    mounted: function () {
-        var _this = this;
-        var NODE_ENV_BASE_URL = $('#coreServer').val();
-        _this.NODE_ENV_BASE_URL = NODE_ENV_BASE_URL;
-
-    }
-});
+/**
+ * Created by ZHJY on 2020/9/17.
+ */
+$('.navLayout').find('.navList').removeClass("on").find('.con').hide().find('a').removeClass("on");
+$('.navLayout').find('.navList').eq(1).addClass("on").find('.con').show().find('a').eq(2).addClass("on");
+var releaseContainer = new Vue({
+    el:"#releaseContainer",
+    mixins: [getInfoMixins,checkeMixins,freightMixins,releaseMixins,cmSysVitaMixins],
+    data: {
+        NODE_ENV_BASE_URL:'',
+        releaseType:'',
+        productId:'',
+        mallProductId:'',
+        activeNum:0,
+        isSelectActive:0,
+        isRequest:true,
+        isAddBrand:false,//控制提交品牌弹窗
+        tagsText:'',//标签输入框
+        brandImage:'',//品牌LOGO
+        brandTextarea:'',//品牌描述
+        brandAssociationList:[],//品牌联想
+        isNoneBrand:false,
+        releaseParams:JSON.parse(localStorage.getItem('releaseParams')) || {
+            userId:0,
+            shopId:0,
+            name:'', //商品名称
+            aliasName:'',//内部商品名称
+            bigTypeId:'',
+            smallTypeId:'',
+            tinyTypeId:'',//三级分类ID
+            brandId:'',//品牌ID
+            tags:'',//商品标签
+            unit:'',//包装规格
+            productCode:'',//商品编码
+            productType:'',//商品类型,
+            machineType:'',//医疗器械类型
+            searchKey:'',//搜索关键词
+            qualificationImg:"",//器械资质
+            normalPrice:'',//市场价
+            price:'',//售价
+            costPrice:'',//结算价
+            includedTax:1,//是否含税
+            invoiceType:1,//发票类型
+            taxPoint:13,//税率
+            minBuyNumber:'',//起订量
+            stock:'',//库存
+            step:1,//购买数量
+            freePostFlag:0,// 0 包邮 1 使用运费模板 2 到付
+            freightTemplateId:'', // 运费模板Id
+            allAreaFlag:1,//销售区域
+            provinceIds:0,//指定区域
+            detailInfo:'',//商品详情信息
+            orderInfo :'',//订购方案
+            serviceInfo:'',//服务详情
+            firstClassifyName:'',
+            twoClassifyName:'',
+            threeClassifyName:'',
+            brandName:'',
+            commodityType:1,
+            trainingMethod:0,// 线上培训方式
+            trainingType:0,// 售价包含培训费用
+            trainingFee:'',
+            newProductType:0,// 新品商品状态  1.参与 2.未参与
+            qualificationNo:'',//资质证书编号
+            productName:'',//资质产品名称
+            qualificationTime:'',//证书有效日期
+            groundMall:'0',
+            skus:[],// sku
+            mallSkus:[] //外部Sku
+        },
+        params: {
+            param: JSON.parse(localStorage.getItem('param')) || [],//相关参数
+            image: JSON.parse(localStorage.getItem('image')) || [],//商品图片
+        },
+        viewer:{},
+        tagsList:JSON.parse(localStorage.getItem('tagsList')) || [],//本地存储标签
+        searchKeyArr:JSON.parse(localStorage.getItem('searchKeyArr')) || [],//本地存储关键词
+        paramKeyList:JSON.parse(localStorage.getItem('paramKeyList')) || [{paramsName:'',paramsContent:''}],//相关参数
+        formData:new FormData(),
+        classificationFirstList:[{name:'请选择',value:''}],
+        classificationTwoList:[],
+        classificationThreeList:[],
+        keywordText:'请务必准确定义关键词,关键词会影响商品的搜索结果,建议从品牌,商品学名,商品别名,商品大类别和商品小类别5个方面考虑,每个关键词不超过16个汉字',
+        selectText:{
+            bigTypeID:'请选择一级分类',
+            smallTypeID:'请选择二级分类',
+            tinyTypeID:'请选择三级分类',
+            goodsType:'请选择商品类型',
+            apparatusType:'请选择器械类型',
+        },
+        goodsTypeList:[
+            {name:'妆字号',value:1},
+            {name:'械字号',value:2},
+            {name:'其他',value:0},
+        ],
+        apparatusTypeList:[
+            {name:'一类医疗器械',value:1},
+            {name:'二类医疗器械',value:2},
+            {name:'三类医疗器械',value:3},
+        ],
+        searchKeyList:JSON.parse(localStorage.getItem('searchKeyList')) || [
+            {placeholder:'建议输入品牌关键词',value:""},
+            {placeholder:'建议输入品牌学名关键词',value:""},
+            {placeholder:'建议输入商品别名/市场称呼关键词',value:""},
+            {placeholder:'建议输入商品大类别关键词',value:""},
+            {placeholder:'建议输入商品小类别关键词',value:""},
+        ],
+        productDetailInfoId:null,
+        ProvinceList:[],
+        GoodsImagesList: JSON.parse(localStorage.getItem('GoodsImagesList')) || [],
+        isProvince:false,
+        provinceIns:0,
+        oldNum:0,
+        newNum: 0,
+        orderingMin:0,
+        orderingMax:500,
+        severiMin:0,
+        severiMax:500,
+        isTaxPonitEditPopup:false,
+        isTaxPonitEdit:false,
+        fromMessage:'',//提示文字
+        isBrandAssociation:false,
+
+    },
+    watch: {
+        'releaseParams': {
+            handler(newValue) {
+                this.autoSaveProduct(newValue);
+            },
+            deep: true, // 深度监听对象内部属性的变化
+            immediate: true // 组件加载时立即执行一次
+        },
+        'paramKeyList': {
+            handler(newValue) {
+                this.autoSavepParamKeyList(newValue);
+            },
+            deep: true, // 深度监听对象内部属性的变化
+            immediate: true // 组件加载时立即执行一次
+        },
+        'skuParams': {
+            handler(newValue) {
+                this.autoSaveSkuParams(newValue);
+            },
+            deep: true, // 深度监听对象内部属性的变化
+            immediate: true // 组件加载时立即执行一次
+        },
+        'mallSkusParams': {
+            handler(newValue) {
+                this.autoSaveMallSkusParams(newValue);
+            },
+            deep: true, // 深度监听对象内部属性的变化
+            immediate: true // 组件加载时立即执行一次
+        },
+        'tagsList': {
+            handler(newValue) {
+                this.autoSaveTagsList(newValue);
+            },
+            deep: true, // 深度监听对象内部属性的变化
+            immediate: true // 组件加载时立即执行一次
+        },
+        'searchKeyList': {
+            handler(newValue) {
+                this.autoSaveSearchKeyList(newValue);
+            },
+            deep: true, // 深度监听对象内部属性的变化
+            immediate: true // 组件加载时立即执行一次
+        },
+        'GoodsImagesList': {
+            handler(newValue) {
+                this.autoSaveGoodsImagesList(newValue);
+            },
+            deep: true, // 深度监听对象内部属性的变化
+            immediate: true // 组件加载时立即执行一次
+        }
+    },
+    methods: {
+        // 自动保存商品信息
+        autoSaveProduct(value) {
+            localStorage.setItem('releaseParams', JSON.stringify(value));
+        },
+        // 自动保存相关参数
+        autoSavepParamKeyList(value) {
+            localStorage.setItem('paramKeyList', JSON.stringify(value));
+        },
+        // 自动保存Skus
+        autoSaveSkuParams(value) {
+            localStorage.setItem('skuParams', JSON.stringify(value));
+        },
+        // 自动保存mallSkus
+        autoSaveMallSkusParams(value) {
+            localStorage.setItem('mallSkusParams', JSON.stringify(value));
+        },
+        // 自动保存商品标签
+        autoSaveTagsList(value) {
+            localStorage.setItem('tagsList', JSON.stringify(value));
+        },
+        // 自动保存搜索关键词
+        autoSaveSearchKeyList(value) {
+            localStorage.setItem('searchKeyList', JSON.stringify(value));
+        },
+        // 自动保存图片
+        autoSaveGoodsImagesList(value) {
+            localStorage.setItem('GoodsImagesList', JSON.stringify(value));
+        },
+        getclass:function(val){
+            this.selectText.bigTypeID='请选择一级分类';
+            this.selectText.smallTypeID = '请选择二级分类';
+            this.releaseParams.bigTypeId ='';
+            this.classificationTwoList=[];
+            this.classificationThreeList =[];
+            this.GetFistClassFn(val);
+        },
+        choiceTrain : function(val){
+            var _this = this;
+            _this.releaseParams.trainType = Number(val);
+        },
+        choiceTrainOutlay : function(val){
+            var _this = this;
+            _this.releaseParams.expensesType = Number(val);
+        },
+        touchmoveFn: function(){
+            this.isSelectActive =0;
+        },
+        showOption: function(type){//显示option
+            var _this = this;
+            switch (type) {
+                case 'first':
+                    _this.vShow_TinyTypeID = false;
+                    _this.isSelectActive=1;
+                    break;
+                case 'two':
+                    _this.vShow_TinyTypeID = false;
+                    _this.isSelectActive=2;
+                    break;
+                case 'three':
+                    _this.vShow_TinyTypeID = false;
+                    _this.isSelectActive=3;
+                    break;
+                case 'type':
+                    _this.vShow_GoodsType = false;
+                    _this.isSelectActive=4;
+                    break;
+                case 'ratus':
+                    _this.isSelectActive=5;
+                    break;
+            }
+        },
+        SelectChangeTypeFn: function(option){//选择商品类型
+            var _this = this;
+            _this.releaseParams.productType = Number(option.value);
+            _this.selectText.goodsType = option.name;
+            _this.isSelectActive = 0;
+            _this.vShow_GoodsType = false;
+        },
+        SelectChangeApparatusFn: function(option){//选择器械类型
+            var _this = this;
+            _this.releaseParams.machineType = Number(option.value);
+            _this.selectText.apparatusType = option.name;
+            _this.isSelectActive = 0;
+            _this.vShow_GoodsType = false;
+        },
+        bindBrandAssociationFn: function(e){//品牌输入联想
+            var _this = this;
+            var name = e.target.value;
+            if (name != ''){
+                SupplierApi.GetBrandAssociation({userId: _this.releaseParams.userId,name:name},function(response){
+                    if(response.code ==0){
+                        if(response.data&&response.data.length>0){
+                            _this.brandAssociationList = response.data;
+                            _this.isBrandAssociation = true;
+                        }else{
+                            _this.brandAssociationList = [];
+                            _this.isBrandAssociation = false;
+                        }
+                    }
+                });
+            }else{
+                _this.isBrandAssociation = false;
+            }
+        },
+        brandAssociationFn: function(){//失去焦点判断是否存在品牌信息
+            var _this = this;
+            if(_this.releaseParams.brandName === ''){
+                CAIMEI.dialog('请输入商品品牌名称');
+            }else{
+                SupplierApi.CheckSupplierBrandDetection({name:_this.releaseParams.brandName},function(response){
+                    if(response.code ===0){
+                        CAIMEI.dialog('您的品牌可以使用~');
+                        _this.releaseParams.brandId = response.data.id;
+                    }else{
+                        _this.releaseParams.brandId = '';
+                        CAIMEI.Modal('您输入的品牌名称暂未被采美收录,请检查品牌名称是否输入正确或者向采美提交该品牌','确定','去提交',function () {
+                            setTimeout(function(){
+                                _this.isAddBrand = true;
+                            },200);
+                        });
+                    }
+                });
+            }
+        },
+        uploadBrandImagesFn: function(){//上传品牌LOGO
+            var _this = this;
+            var inputDOM = _this.$refs.brandImage;
+            var formData = new FormData();
+            var file = inputDOM.files;
+            formData.append('file', file[0]);
+            SupplierApi.uploadimg(formData,function(response){
+                _this.brandImage = response.data;
+            });
+        },
+        removeBrandImageFn: function(){//删除品牌LOGO
+            var _this = this;
+            _this.brandImage = '';
+        },
+        confimAddBrandPopup: function(){//确定提交新品牌
+            var _this = this;
+            var params = {
+                    name:_this.releaseParams.brandName,
+                    userId:_this.releaseParams.userId,
+                    logo:_this.brandImage,
+                    description:_this.brandTextarea,
+                    source:1
+            };
+            SupplierApi.AddSupplierBrand(params,function(response){
+                if(response.code == 0){
+                    CAIMEI.Alert('品牌提交成功,将在1-2个工作日内进行审核~','确定',true,function () {
+                        _this.releaseParams.brandId = response.data.id;
+                        _this.isBrandAssociation = false;
+                        _this.isAddBrand = false;
+                    });
+                }else{
+                    CAIMEI.Alert(response.msg, '确定', false);
+                }
+            });
+        },
+        hideAddBrandPopup: function(){//取消提交新品牌
+            var _this = this;
+            _this.isAddBrand = false;
+        },
+        SelectChangeAssociationFn: function(option){//选择品牌
+            var _this = this;
+            _this.releaseParams.brandName = option.name;
+            _this.releaseParams.brandId = option.id;
+            _this.isBrandAssociation = false;
+            _this.vShow_BrandID = false;
+        },
+        addTag:function(){//添加标签
+            var _this = this;
+            if(_this.tagsText == ''){
+                _this.vShow_Tags = true;
+                _this.fromMessage = '请输入商品标签!';
+            }else if(_this.in_array(_this.tagsText,_this.tagsList)){
+                _this.vShow_Tags = true;
+                _this.fromMessage = '商品标签已存在!';
+            }else{
+                _this.tagsList.push({"tag":_this.tagsText});
+                _this.tagsText = '';
+                _this.vShow_Tags = false;
+                _this.fromMessage = '';
+            }
+        },
+        removeTags:function(index){//删除标签
+            this.tagsList.splice(index,1);
+        },
+        in_array:function(search,array){//判断标签是否已存在
+            for(var i in array){
+                if(array[i].tag==search){
+                    return true;
+                }
+            }
+            return false;
+        },
+        uploadQualificationsFn: function(el) {//上传资质证书
+            var _this = this;
+            var inputDOM = _this.$refs.inputer;
+            var file = inputDOM.files;
+            _this.formData.append('file', file[0]);
+            SupplierApi.uploadimg(_this.formData,function(response){
+                _this.releaseParams.qualificationImg = response.data;
+                _this.vShow_QualificationImg = false;
+            });
+        },
+        removeQualificationsFn: function(){//删除资质图片
+            var _this = this;
+            _this.releaseParams.qualificationImg  = '';
+        },
+        addParamsFn: function(){//添加参数
+            var _this = this;
+            if(_this.paramKeyList.length>50){return;}
+            var obj ={paramsName:'',paramsContent:''};
+            _this.paramKeyList.push(obj)
+        },
+        removeParamsFn: function(index){//删除参数
+            var _this = this;
+            _this.paramKeyList.splice(index,1);
+        },
+        radioChangeInvoiceType: function(event) {//选择发票类型
+            var _this = this;
+            _this.releaseParams.invoiceType= event.target.value;
+            switch (_this.releaseParams.invoiceType) {
+                case '1':
+                    _this.releaseParams.taxPoint = 13;
+                    _this.isTaxPonitEdit = true;
+                    break;
+                case '2':
+                    _this.releaseParams.taxPoint = 6;
+                    _this.isTaxPonitEdit = true;
+                    break;
+                case '3':
+                    _this.releaseParams.taxPoint = '';
+                    _this.isTaxPonitEdit = false;
+                    break;
+            }
+        },
+        taxPonitEdit: function(){//修改税率
+            this.isTaxPonitEditPopup = true;
+        },
+        hideTaxPonitEditPopup: function(){//取消修改税率弹窗
+            var _this = this;
+            if(_this.releaseParams.taxPoint == ''){
+                _this.vShow_taxPoint = true;
+                _this.fromMessage = '请输入税率';
+                return
+            }
+            if(_this.releaseParams.taxPoint == 0){
+                _this.vShow_taxPoint = true;
+                _this.fromMessage = '税率不能为0';
+                return
+            }
+            this.isTaxPonitEditPopup = false;
+        },
+        confimTaxPonitEditPopup: function(){//确定修改税率
+            var _this = this;
+            if(_this.releaseParams.taxPoint == ''){
+                _this.vShow_taxPoint = true;
+                _this.fromMessage = '请输入税率';
+                return
+            }
+            if(_this.releaseParams.taxPoint == 0){
+                _this.vShow_taxPoint = true;
+                _this.fromMessage = '税率不能为0';
+                return
+            }
+            this.isTaxPonitEditPopup = false;
+        },
+        radioChangeStep(event){//选择指定购买数量
+            this.releaseParams.step= event.target.value;
+        },
+        radioChangeByFlag(event){//选择运费
+            this.releaseParams.freePostFlag= event.target.value;
+        },
+        radioChangeAllAreaFlag(event){//选择指定区域
+            var _this = this;
+            _this.releaseParams.areaFlag= event.target.value;
+            if( _this.releaseParams.areaFlag == '0'){
+                _this.isProvince=true;
+                _this.GetProvinceFn();
+            }else{
+                _this.vShow_isProvince = false;
+                _this.isProvince=false;
+            }
+        },
+        radioChangeNewvalidFlag(event){//选择新品展示
+            this.releaseParams.newProductType= event.target.value;
+        },
+        addProvinceFn(item){//选择指定区域
+            item.isChecked = ! item.isChecked;
+        },
+        GetProvinceFn(){//查询指定区域
+            var _this = this;
+            PublicApi.GetProvince({},function(response){
+                if(response.code == 0){
+                    var arr =[];
+                    var data = response.data;
+                    data.forEach(function(el){
+                        CAIMEI.returnedTarget();
+                        arr.push(Object.assign({},el,{ isChecked : false }))
+                    });
+                    _this.ProvinceList =arr;
+                }else{
+                    CAIMEI.Alert(response.msg, '确定', false);
+                }
+            })
+        },
+        uploadGoodsImagesFn: function(event){//上传商品图片
+            var _this = this;
+            var inputDOM = _this.$refs.goodsImages;
+            var file = inputDOM.files;
+            var reader = new FileReader();
+            reader.readAsDataURL(file[0]);
+            reader.onload = function(e) {
+                var image = new Image();
+                image.src = e.target.result;
+                image.onload = function() {
+                    var w = this.width;
+                    var h = this.height;
+                    if (w != h) {
+                        CAIMEI.dialog('请上传尺寸比例为1:1的图片');
+                        return false;
+                    }
+                    if (w < 750 || h < 750) {
+                        CAIMEI.dialog('请上传分辨率大于750*750的图片');
+                        return false;
+                    }
+                    _this.formData.append('file', file[0]);
+                    SupplierApi.uploadimg(_this.formData,function(response){
+                        _this.GoodsImagesList.push(response.data);
+                        event.target.value = '';
+                    });
+                }
+            };
+        },
+        showViewerImageFn: function(index ){//预览上传图片
+            var _this = this;
+            var DomEven = '#uploadGoodsImages'+index;
+            var ViewerDom = document.querySelector(DomEven);
+            _this.viewer = new Viewer(ViewerDom, {url:'data-image'});
+        },
+        removeGoodsImagesFn: function(index){//删除商品图片
+            var _this = this;
+            _this.GoodsImagesList.splice(index,1);
+        },
+        orderingTextConInput: function(event){//订购方案文字控制
+            var value = event.target.value;
+            var len = parseInt(value.length);
+            if (len > this.orderingMax) return;
+            this.orderingMin = len;
+            if(this.orderingMin == 500){
+                return;
+            }
+        },
+        severiTextConInput: function(event){//服务项目文字控制
+            var value = event.target.value;
+            var len = parseInt(value.length);
+            if (len > this.severiMax) return;
+            this.severiMin = len;
+            if(this.severiMin == 500){
+                return;
+            }
+        },
+        initCKeditor: function(){//富文本
+            var _this = this;
+            _this.vShow_detailInfoEditor = false;
+            ClassicEditor.create(document.querySelector('#detailInfoEditor'), {
+                ckfinder: {
+                    uploadUrl: _this.NODE_ENV_BASE_URL+'/tools/image/upload/ckeditor'
+                }
+            }).then(function(editor) {
+                window.detailInfoEditor = editor;
+                var detailInfo= detailInfoEditor.getData();
+                ClassicEditor.instances.WORK_INTRODUCTION.setData(detailInfo);
+                console.log(detailInfo);
+            }).catch(function(error){
+                console.log(error);
+            });
+        },
+        initOrderCKeditor: function(){//富文本
+            var _this = this;
+            _this.vShow_orderInfoEditor = false;
+            ClassicEditor.create(document.querySelector('#orderInfoEditor'), {
+                ckfinder: {
+                    uploadUrl: _this.NODE_ENV_BASE_URL+'/tools/image/upload/ckeditor'
+                }
+            }).then(function(editor) {
+                window.orderInfoEditor = editor;
+                var detailInfo= orderInfoEditor.getData();
+                ClassicEditor.instances.WORK_INTRODUCTION.setData(detailInfo);
+                console.log(detailInfo);
+            }).catch(function(error){
+                console.log(error);
+            });
+        },
+        initSeverCKeditor: function(){//富文本
+            var _this = this;
+            _this.vShow_orderInfoEditor = false;
+            ClassicEditor.create(document.querySelector('#severInfoEditor'), {
+                ckfinder: {
+                    uploadUrl: _this.NODE_ENV_BASE_URL+'/tools/image/upload/ckeditor'
+                }
+            }).then(function(editor) {
+                window.severInfoEditor = editor;
+                var detailInfo= severInfoEditor.getData();
+                ClassicEditor.instances.WORK_INTRODUCTION.setData(detailInfo);
+            }).catch(function(error){
+                console.log(error);
+            });
+        },
+        addReleaseGoodSubmitFn: function(){//提交发布商品
+            this.addSupplierReleaseInfo();
+        },
+        addReleasePeview: function(){//预览按钮
+            var _this = this;
+            CAIMEI.returnedTarget();
+            this.releaseParams.orderInfo = orderInfoEditor.getData();
+            this.releaseParams.serviceInfo = severInfoEditor.getData();
+            this.releaseParams = Object.assign(_this.releaseParams,{params:_this.params,skus:_this.skuParams,mallSkus:_this.mallSkusParams});
+            CAIMEI.Storage.setItem('adProductPeview', JSON.stringify(_this.releaseParams));
+            setTimeout(function(){
+                window.open('/supplier/goods/preview.html');
+            },1000)
+        },
+        scrollIntoView: function(){
+            document.getElementById('releaseContainer').scrollIntoView({block: 'start', behavior: 'smooth'});
+        },
+        dragstart: function(value) {  // 记录初始信息
+            this.oldNum = value;
+        },
+        dragend: function(value) {   // 做最终操作
+            if (this.oldNum != this.newNum) {
+                var oldIndex = this.GoodsImagesList.indexOf(this.oldNum);
+                var newIndex = this.GoodsImagesList.indexOf(this.newNum);
+                var newItems = this.GoodsImagesList;
+                // 删除老的节点
+                newItems.splice(oldIndex, 1);
+                // 在列表中目标位置增加新的节点
+                newItems.splice(newIndex, 0, this.oldNum);
+                // this.items一改变,transition-group就起了作用
+                this.GoodsImagesList = newItems;
+            }
+        },
+        dragenter: function(value) {//记录移动过程中信息
+            this.newNum = value;
+        },
+    },
+    created: function () {
+        // 获取初始一级分类菜单
+        this.GetFistClassFn(this.releaseParams.commodityType);
+    },
+    mounted: function () {
+        var _this = this;
+        var NODE_ENV_BASE_URL = $('#coreServer').val();
+        _this.NODE_ENV_BASE_URL = NODE_ENV_BASE_URL;
+
+    }
+});

+ 607 - 607
src/main/resources/templates/supplier-center/shop/release.html

@@ -1,607 +1,607 @@
-<!DOCTYPE html>
-<html lang="zh-CN" xmlns:th="https://www.thymeleaf.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-      xsi:schemaLocation="https://www.thymeleaf.org ">
-<head>
-    <title>采美365网-我的店铺-发布商品</title>
-    <template th:replace="components/head-link"></template>
-
-    <link th:href="@{/css/base/center.css(v=${version})}" rel="stylesheet" type="text/css">
-    <link th:href="@{/css/supplier-center/shop/release.css(v=${version})}" rel="stylesheet" type="text/css">
-
-    <template th:replace="components/analysis"></template>
-</head>
-<body>
-<!-- 引用头部 -->
-<template th:replace="components/header"></template>
-
-<!-- 发布商品 -->
-<div id="releaseContainer">
-    <div class="navLayout" v-cloak>
-        <div v-if="isPC" class="crumbs">
-            <span>我的采美</span>
-            <span>&gt;</span>
-            <span>我的店铺</span>
-            <span>&gt;</span>
-            <span>发布商品</span>
-        </div>
-        <div class="wrap clear">
-            <!--左侧导航-->
-            <template th:replace="supplier-center/components/tableft"></template>
-            <div class="right">
-                <div class="container shadow" @click.stop="touchmoveFn" >
-                    <div class="release-stepbox">
-                        <div class="stepSpan active">
-                            <p><span>1</span></p>
-                            <p>基本信息</p>
-                        </div>
-                        <div class="stepSpan" :class="activeNum == 1 || activeNum == 2 || activeNum == 3 || activeNum == 4 ? 'active':''">
-                            <p><span>2</span></p>
-                            <p>销售信息</p>
-                        </div>
-                        <div class="stepSpan" :class="activeNum == 2 || activeNum == 3 || activeNum == 4 ? 'active':''">
-                            <p><span>3</span></p>
-                            <p>上传图片</p>
-                        </div>
-                        <div class="stepSpan" :class="activeNum == 3 || activeNum == 4 ? 'active':''">
-                            <p><span>4</span></p>
-                            <p>服务项目</p>
-                        </div>
-                        <div class="stepSpan" :class="activeNum == 4 ? 'active':''">
-                            <p><span>5</span></p>
-                            <p>新品展示</p>
-                        </div>
-                    </div>
-                    <div class="release-container clear"  v-show="isRequest" :class="isRequest ? 'active' : ''" >
-                        <!--商品初始信息-->
-                        <div class="release-main-container clear" v-show="activeNum == 0">
-                            <div class="release-from none clear" >
-                                <div class="release-label"><span class="star">*</span>商品显示名:</div>
-                                <div class="release-input"><input class="input" v-model="releaseParams.name" maxlength="40" type="text" placeholder="请输入该商品在商城显示的名称" @blur="blur_name"></div>
-                                <div class="release-tips" v-show="vShow_Name">{{fromMessage}}</div>
-                            </div>
-                            <div class="release-from text">
-                                <P class="text">不超过40个汉字,请尽可能包含商品关键词,便于搜索</P>
-                            </div>
-                            <div class="release-from clear">
-                                <div class="release-label"><span class="star">*</span>内部商品名:</div>
-                                <div class="release-input"><input class="input" v-model="releaseParams.aliasName" maxlength="40" type="text" placeholder="请输入该商品在您公司内部的名称" @blur="blur_aliasName"></div>
-                                <div class="release-tips" v-show="vShow_AliasName">{{fromMessage}}</div>
-                            </div>
-                            <div class="release-from clear">
-                                <div class="release-label"><span class="star">*</span>商品属性:</div>
-                                <div class="release-input">
-                                    <div class="release-props">
-                                        <label class="release-radio" @click="getclass(1)"><input type="radio" name="commodityType" v-model="releaseParams.commodityType" value="1"><i class="icon mIcon">产品</i></label>
-                                        <label class="release-radio" @click="getclass(2)"><input type="radio" name="commodityType" v-model="releaseParams.commodityType" value="2" checked><i class="icon mIcon">仪器</i></label>
-                                    </div>
-                                </div>
-                                <div class="release-tips" v-show="vShow_attribute">{{fromMessage}}</div>
-                             </div>
-                            <div class="release-from clear" v-if="releaseParams.commodityType == 2">
-                                 <div class="release-label"><span class="star">*</span>培训方式:</div>
-                                    <div class="release-input">
-                                        <div class="release-props">
-                                            <label class="release-radio" @click="choiceTrain(1)"><input type="radio" name="trainingMethod" v-model="releaseParams.trainingMethod" value="1"><i class="icon mIcon">线上培训</i></label>
-                                            <label class="release-radio" @click="choiceTrain(2)"><input type="radio" name="trainingMethod" v-model="releaseParams.trainingMethod" value="2" checked><i class="icon mIcon">线下培训</i></label>
-                                        </div>
-                                    </div>
-                                <div class="release-tips" v-show="vShow_trainingMethod">{{fromMessage}}</div>
-                             </div>
-                            <div class="release-from clear" v-if="releaseParams.commodityType == 2">
-                                 <div class="release-label"><span class="star">*</span>培训费用:</div>
-                                    <div class="release-input">
-                                        <div class="release-props">
-                                            <label class="release-radio" @click="choiceTrainOutlay(1)"><input type="radio" name="trainingType" v-model="releaseParams.trainingType" value="1"><i class="icon mIcon">售价未包含</i></label>
-                                            <label class="release-radio" @click="choiceTrainOutlay(2)"><input type="radio" name="trainingType" v-model="releaseParams.trainingType" value="2" checked><i class="icon mIcon">售价已包含</i></label>
-                                        </div>
-                                    </div>
-                                    <div class="release-input expen" v-if="releaseParams.trainingType == 1">
-                                        <span class="span">¥</span>
-                                        <input class="input" v-model="releaseParams.trainingFee" maxlength="40" type="number" placeholder="请填写包含食宿,交通等各项费用的培训总金额" @input="input_trainingFee">
-                                    </div>
-                                <div class="release-tips" v-show="vShow_trainingType">{{fromMessage}}</div>
-                             </div>
-                            <div class="release-from clear">
-                                <div class="release-label"><span class="star">*</span>商品分类:</div>
-                                <div class="release-input">
-                                    <div class="select-main" :class="[isSelectActive == 1 ? 'border' : '']">
-                                        <input class="select" v-model="selectText.bigTypeID" type="text" readonly="readonly" placeholder="请选择分类" @click.stop.prevent="showOption('first')">
-                                        <i class="mIcon selected"></i>
-                                        <div class="option-main" v-if="isSelectActive == 1">
-                                            <div class="option" v-for="x in classificationFirstList" :key="x.bigTypeID" @click="ChangeClassificationFirst(x)">{{x.name}}</div>
-                                        </div>
-                                    </div>
-                                    <div class="select-main" :class="[isSelectActive == 2 ? 'border' : '']" v-show="classificationTwoList!=''&&classificationTwoList!=null">
-                                        <input class="select" v-model="selectText.smallTypeID" type="text" readonly="readonly" placeholder="请选择分类" @click.stop.prevent="showOption('two')">
-                                         <i class="mIcon selected"></i>
-                                        <div class="option-main" v-if="isSelectActive == 2">
-                                            <div class="option" v-for="x in classificationTwoList" :key="x.value" @click="ChangeClassificationTwo(x)">{{x.name}}</div>
-                                        </div>
-                                    </div>
-                                    <div class="select-main" :class="[isSelectActive == 3 ? 'border' : '']" v-show="classificationThreeList!=''&& classificationThreeList!=null">
-                                        <input class="select" v-model="selectText.tinyTypeID" type="text" readonly="readonly" placeholder="请选择分类" @click.stop.prevent="showOption('three')">
-                                         <i class="mIcon selected"></i>
-                                        <div class="option-main" v-if="isSelectActive == 3">
-                                            <div class="option" v-for="x in classificationThreeList" :key="x.value" @click="ChangeClassificationThree(x)">{{x.name}}</div>
-                                        </div>
-                                    </div>
-                                </div>
-                                <div class="release-tips" v-show="vShow_TinyTypeID">{{fromMessage}}</div>
-                            </div>
-                            <div class="release-from clear">
-                                <div class="release-label"><span class="star">*</span>商品品牌:</div>
-                                <div class="release-input">
-                                    <input class="input tags" type="text" v-model="releaseParams.brandName" maxlength="10" placeholder="请输入商品所属品牌" @input="bindBrandAssociationFn" >
-                                    <div class="add-btn active" v-show="tagsList.length<6" @click="brandAssociationFn()">检测</div>
-                                    <div class="release-opt" v-show="isBrandAssociation">
-                                        <div class="opt-item" v-for="x in brandAssociationList" :key="x.id" @click="SelectChangeAssociationFn(x)">{{x.name}}</div>
-                                    </div>
-                                </div>
-                                <div class="release-tips" v-show="vShow_BrandID">{{fromMessage}}</div>
-                            </div>
-                            <div class="popup" v-show="isAddBrand" :class="isAddBrand ? 'active':''">
-                                <div class="popup-layer bran">
-                                    <div class="popup-title"> <p>提交品牌</p> <i class="popup-close layui-layer-ico mIcon "  @click="hideAddBrandPopup"></i></div>
-                                    <div class="popup-content">
-                                        <div class="popup-from clear"><span>商品品牌:</span><p class="popup-p">{{releaseParams.brandName}}</p></div>
-                                        <div class="popup-from clear" style="margin-top: 10px">
-                                            <span>品牌logo:</span>
-                                            <div class="popup-upload">
-                                                <div class="upload-file" v-if="brandImage!=''">
-                                                    <img :src="brandImage" alt="" class="upload-img">
-                                                    <i class="icon-del mIcon icon" @click="removeBrandImageFn"></i>
-                                                </div>
-                                                <div class="upload-file" v-else>
-                                                    <i class="icon-add mIcon "></i>
-                                                    <input ref="brandImage" type="file" name="file" value="" class="input-file" accept="image/png,image/jpeg,image/gif,image/jpg"  @change="uploadBrandImagesFn">
-                                                </div>
-                                            </div>
-                                        </div>
-                                        <div class="popup-from clear" style="margin-top: 10px">
-                                            <span>品牌描述:</span>
-                                            <div class="popup-textarea">
-                                                <textarea name="" v-model="brandTextarea" cols="30" rows="10" maxlength="200" placeholder="请描述品牌信息,不超过200字"></textarea>
-                                            </div>
-                                        </div>
-                                    </div>
-                                    <div class="popup-button">
-                                        <div class="btn btn-confim" @click="confimAddBrandPopup">确定</div>
-                                        <div class="btn btn-cancel" @click="hideAddBrandPopup">取消</div>
-                                    </div>
-                                </div>
-                            </div>
-                            <div class="release-from clear">
-                                <div class="release-label"><span class="star">*</span>商品类型:</div>
-                                <div class="release-input">
-                                    <div class="select-main" :class="[isSelectActive == 4 ? 'border' : '']">
-                                        <input class="select" v-model="selectText.goodsType" type="text" readonly="readonly" placeholder="请选择商品类型" @click.stop.prevent="showOption('type')">
-                                         <i class="mIcon selected"></i>
-                                        <div class="option-main" v-if="isSelectActive == 4">
-                                            <div class="option" v-for="x in goodsTypeList" :key="x.value" @click="SelectChangeTypeFn(x)">{{x.name}}</div>
-                                        </div>
-                                    </div>
-                                    <div class="select-main" :class="[isSelectActive == 5 ? 'border' : '']" v-if="releaseParams.productType == 2">
-                                        <input class="select" v-model="selectText.apparatusType" type="text" readonly="readonly" placeholder="请选择器械类型" @click.stop.prevent="showOption('ratus')">
-                                        <div class="option-main" v-if="isSelectActive == 5">
-                                            <div class="option" v-for="x in apparatusTypeList" :key="x.value" @click="SelectChangeApparatusFn(x)">{{x.name}}</div>
-                                        </div>
-                                    </div>
-                                </div>
-                                <div class="release-tips" v-show="vShow_GoodsType">{{fromMessage}}</div>
-                            </div>
-                            <div class="release-from clear" v-if="releaseParams.productType == 2">
-                                <div class="release-label"><span class="star">*</span>资质证书:</div>
-                                <div class="release-input upload">
-                                    <div class="upload-file" v-if="releaseParams.qualificationImg!=''">
-                                        <img :src="releaseParams.qualificationImg" alt="" class="upload-img">
-                                        <i class="icon-del mIcon icon" @click="removeQualificationsFn"></i>
-                                    </div>
-                                    <div class="upload-file" v-else>
-                                        <i class="icon-add"></i>
-                                        <input ref="inputer" type="file" name="file" value="" class="input-file" accept="image/png,image/jpeg,image/gif,image/jpg"  @change="uploadQualificationsFn">
-                                    </div>
-                                </div>
-                                <div class="release-tips" v-show="vShow_QualificationImg">{{fromMessage}}</div>
-                            </div>
-                            <div class="release-from clear" v-if="releaseParams.productType == 2">
-                                <div class="release-label"><span class="star">*</span>证书编号:</div>
-                                <div class="release-input"><input class="input" v-model="releaseParams.qualificationNo" maxlength="50" type="text" placeholder="请完整输入证书上的编号" @blur="blur_qualificationNo"></div>
-                                <div class="release-tips" v-show="vShow_QualificationNo">{{fromMessage}}</div>
-                            </div>
-                            <div class="release-from clear" v-if="releaseParams.productType == 2">
-                                <div class="release-label"><span class="star">*</span>产品名称:</div>
-                                <div class="release-input"><input class="input" v-model="releaseParams.productName" maxlength="50" type="text" placeholder="请输入证书上的产品名称" @blur="blur_productName"></div>
-                                <div class="release-tips" v-show="vShow_ProductName">{{fromMessage}}</div>
-                            </div>
-                            <div class="release-from clear" v-if="releaseParams.productType == 2" id="EffectiveDate">
-                                <div class="release-label"><span class="star">*</span>证书有效期:</div>
-                                <div class="release-input"><input class="input" type="date"  style="width: 220px;" v-model="releaseParams.qualificationTime" maxlength="40" required="required"></div>
-                                <div class="release-tips" v-show="vShow_QualificationTime">{{fromMessage}}</div>
-                            </div>
-                            <div class="release-from none clear">
-                                <div class="release-label"><span class="star">*</span>商品标签:</div>
-                                <div class="release-input">
-                                    <input class="input tags" v-model="tagsText" type="text" placeholder="请输入商品标签" maxlength="15" @focus="blur_tags">
-                                    <div class="add-btn" v-show="tagsList.length<6" @click="addTag()">添加标签</div>
-                                </div>
-                                <div class="release-tips" v-show="vShow_Tags">{{fromMessage}}</div>
-                            </div>
-                            <div class="release-from text">
-                                <P class="text" style="line-height: 24px;">简述商品功效和特性,最多可添加6个标签,每个标签字数不超过15个汉字(如:美白祛斑,消除皱纹)</P>
-                            </div>
-                            <div class="release-from clear" v-show="tagsList.length>0">
-                                <div class="tags-main">
-                                    <div class="item-tags" v-for="(item, index) in tagsList" :key="index">
-                                        {{item.tag}}<i class="del-tags mIcon" @click="removeTags(index)"></i>
-                                    </div>
-                                </div>
-                            </div>
-<!--                            <div class="release-from clear">-->
-<!--                                <div class="release-label"><span class="star">*</span>包装规格:</div>-->
-<!--                                <div class="release-input"><input class="input" v-model="releaseParams.unit" type="text" placeholder="请输入包装规格,如:台,30ml/瓶" @blur="blur_aliasUnit" maxlength="20"></div>-->
-<!--                                <div class="release-tips" v-show="vShow_Unit">{{fromMessage}}</div>-->
-<!--                            </div>-->
-                            <div class="release-from clear">
-                                <div class="release-label rightTxt">商品编码:</div>
-                                <div class="release-input"><input class="input" v-model="releaseParams.productCode" type="text" placeholder="建议输入商品编码"></div>
-                            </div>
-                            <div class="release-from none clear">
-                                <div class="release-label rightTxt">搜索关键词:</div>
-                                <div class="release-input">
-                                    <input  v-for="(item, index) in searchKeyList" :key="index" class="input keyword" type="text" :placeholder="item.placeholder" v-model="searchKeyList[index].value" maxlength="16">
-                                    <a href="/supplier/goods/example.html" target="_blank" class="p" v-if="isPC">查看示例></a>
-                                </div>
-                            </div>
-                            <div class="release-from text shili" style="margin-bottom: 10px;">
-                                <P class="text" style="line-height: 24px;">{{keywordText}}</P>
-                                <a href="/supplier/goods/example.html" target="_blank" class="p" v-if="!(isPC)">查看示例</a>
-                            </div>
-                            <div class="release-from clear">
-                                <div class="release-label rightTxt">相关参数:</div>
-                                <div class="release-input clear">
-                                    <div class="release-param" v-for="(item, index) in paramKeyList" :key="index">
-                                        <input class="param-input" v-model="paramKeyList[index].paramsName" type="text" placeholder="参数名称" maxlength="10">
-                                        <input class="param-input" v-model="paramKeyList[index].paramsContent" type="text" placeholder="参数信息" maxlength="50">
-                                        <a href="javascript: void(0);" class="del-btn icon mIcon" v-show="index>0" @click="removeParamsFn"></a>
-                                    </div>
-                                    <a href="javascript: void(0);" class="add" @click="addParamsFn" v-if="isPC">添加参数<span>+</span></a>
-                                     <a href="javascript: void(0);" class="add" @click="addParamsFn" V-else>添加参数</a>
-                                </div>
-                            </div>
-                            <div class="release-from clear">
-                                <div class="from-button">
-                                    <a href="javascript: void(0);" class="btn next" @click="NextStep">下一步</a>
-                                </div>
-                            </div>
-                        </div>
-                        <!--商品价格信息-->
-                        <div class="release-main-tips" v-show="activeNum == 1">
-                            【采美】平台为采美网官方正品平台,包括采美网网站和采美采购商城小程序。其他平台为与采美网有紧密合作关系的平台,各项标准与采美平台一致,可拓宽您的销售渠道,请放心上架。
-                        </div>
-                        <div class="release-main-container" v-show="activeNum == 1">
-                            <div class="release-from clear">
-                                <div class="release-label"><span class="star">*</span>上架平台:</div>
-                                <div class="release-input">
-                                    <div class="release-props">
-                                        <a class="release-radios"
-                                           href="javascript: void(0);"
-                                           v-for="(item, index) in platforms"
-                                           :key="index"
-                                           :class="item.isChecked ? 'active':''"
-                                           @click="handleCheckedPlat(item,index)" >
-                                            {{item.name}}
-                                        </a>
-                                    </div>
-                                </div>
-                                <div class="release-tips" v-show="isPlatforms">{{fromMessage}}</div>
-                            </div>
-                            <template v-if="platformsFlag">
-                                <div class="release-from clear none">
-                                    <div class="release-label active">【采美平台】</div>
-                                    <div class="release-label"><span class="star">*</span>SKU种类:</div>
-                                </div>
-                                <div class="release-from clear">
-                                    <div class="release-from-tr">
-                                        <div class="tr-labe"><span class="star">*</span>规格</div>
-                                        <div class="tr-labe"><span class="star">*</span>市场价</div>
-                                        <div class="tr-labe"><span class="star">*</span>售价</div>
-                                        <div class="tr-labe"><span class="star">*</span>起订量</div>
-                                        <div class="tr-labe none"><span class="star">*</span>库存</div>
-                                    </div>
-                                    <div class="release-from-td" v-for="(sku,index) in skuParams" :key="index">
-                                        <div class="tr-labe"><input class="tr-input" type="text" v-model="sku.unit" @input="handleSkuInput" maxlength="10"></div>
-                                        <div class="tr-labe"><input class="tr-input" type="number" v-model="sku.normalPrice" @input="handleSkuInput" maxlength="10"></div>
-                                        <div class="tr-labe"><input class="tr-input" type="number" v-model="sku.price" @input="handleSkuInput" maxlength="10"></div>
-                                        <div class="tr-labe"><input class="tr-input" type="number" v-model="sku.minBuyNumber" @input="handleSkuInput" maxlength="10"></div>
-                                        <div class="tr-labe none"><input class="tr-input" type="number" v-model="sku.stock" @input="handleSkuInput" maxlength="10"></div>
-                                        <div class="tr-icon">
-                                            <i class="WEB-icon add" @click="addskuParamsFn(0,sku, index)" v-if="skuParams.length < 20 && index === 0"></i>
-                                            <i class="WEB-icon del" @click="delskuParamsFn(0,sku, index)" v-if="skuParams.length > 1 && index !=0"></i>
-                                        </div>
-                                    </div>
-                                    <div class="release-tips" v-show="isSkuRule">{{fromMessage}}</div>
-                                </div>
-                            </template>
-                            <template v-if="platformsMallFlag">
-                                <div class="release-from clear none">
-                                    <div class="release-label active">
-                                        【丽格集采联盟平台】
-                                        <span class="release-label-btn" @click="handleCopySuk" v-if="releaseType !== 'edit' && platformsFlag">复制上方SKU数据</span>
-                                    </div>
-                                    <div class="release-label"><span class="star">*</span>SKU种类:</div>
-                                </div>
-                                <div class="release-from clear">
-                                    <div class="release-from-tr">
-                                        <div class="tr-labe"><span class="star">*</span>规格</div>
-                                        <div class="tr-labe"><span class="star">*</span>市场价</div>
-                                        <div class="tr-labe"><span class="star">*</span>售价</div>
-                                        <div class="tr-labe"><span class="star">*</span>起订量</div>
-                                        <div class="tr-labe none"><span class="star">*</span>库存</div>
-                                    </div>
-                                    <div class="release-from-td" v-for="(sku,index) in mallSkusParams" :key="index">
-                                        <div class="tr-labe"><input class="tr-input" type="text" v-model="sku.unit" @input="handleSkuInput" maxlength="10"></div>
-                                        <div class="tr-labe"><input class="tr-input" type="number" v-model="sku.normalPrice" @input="handleSkuInput" maxlength="10"></div>
-                                        <div class="tr-labe"><input class="tr-input" type="number" v-model="sku.price" @input="handleSkuInput" maxlength="10"></div>
-                                        <div class="tr-labe"><input class="tr-input" type="number" v-model="sku.minBuyNumber" @input="handleSkuInput" maxlength="10"></div>
-                                        <div class="tr-labe none"><input class="tr-input" type="number" v-model="sku.stock" @input="handleSkuInput" maxlength="10"></div>
-                                        <div class="tr-icon">
-                                            <i class="WEB-icon add" @click="addskuParamsFn(4,sku, index)" v-if="mallSkusParams.length < 20 && index === 0"></i>
-                                            <i class="WEB-icon del" @click="delskuParamsFn(4,sku, index)" v-if="mallSkusParams.length > 1 && index !=0"></i>
-                                        </div>
-                                    </div>
-                                    <div class="release-tips" v-show="isMallSkuRule">{{fromMessage}}</div>
-                                </div>
-                            </template>
-                            <div class="release-from clear">
-                                <div class="release-label"><span class="star">*</span>售价是否含税:</div>
-                                <div class="release-input">
-                                    <div class="release-props">
-                                        <label class="release-radio"><input type="radio" name="includedTax" v-model="releaseParams.includedTax" value="1" ><i class="icon mIcon">含税</i></label>
-                                        <label class="release-radio"><input type="radio" name="includedTax" v-model="releaseParams.includedTax" value="0" checked><i class="icon mIcon">不含税</i></label>
-                                    </div>
-                                </div>
-                                <div class="release-tips" v-show="vShow_includedTax">{{fromMessage}}</div>
-                            </div>
-                            <div class="release-from clear" v-show="releaseParams.includedTax == 1 || releaseParams.includedTax == 0">
-                                <div class="release-input">
-                                    <div class="release-props" >
-                                        <label class="release-radio">
-                                            <input type="radio" name="invoiceType" v-model="releaseParams.invoiceType" value="1" @click="radioChangeInvoiceType">
-                                            <i class="icon mIcon">开增值税专用发票</i>
-                                        </label>
-                                        <label class="release-radio">
-                                            <input type="radio" name="invoiceType" v-model="releaseParams.invoiceType" value="2" checked @click="radioChangeInvoiceType">
-                                            <i class="icon mIcon">开增值税普通发票</i>
-                                        </label>
-                                        <label class="release-radio" v-show="releaseParams.includedTax == 0">
-                                            <input type="radio" name="invoiceType" v-model="releaseParams.invoiceType" value="3" checked @click="radioChangeInvoiceType">
-                                            <i class="icon mIcon">不开发票</i>
-                                        </label>
-                                    </div>
-                                </div>
-                            </div>
-                            <div class="release-from clear" v-show="releaseParams.invoiceType != '3'">
-                                <div class="release-input">
-                                    <span class="tax" :style="{color:'#FF0000'}">*</span>
-                                    <span class="tax">税率:<span class="mg">{{releaseParams.taxPoint}}%</span></span>
-                                    <a href="javascript: void(0);" class="edit-btn" @click="taxPonitEdit">修改</a>
-                                </div>
-                                <div class="release-tips" v-show="vShow_price">{{fromMessage}}</div>
-                            </div>
-                            <div class="popup" v-show="isTaxPonitEditPopup" :class="isTaxPonitEditPopup?'active':''">
-                                <div class="popup-layer edit">
-                                    <div class="popup-title"> <p>修改税率</p> <i class="popup-close layui-layer-ico mIcon" @click="hideTaxPonitEditPopup"></i></div>
-                                    <div class="popup-content">
-                                        <div class="popup-from"><span>税率:</span>
-                                            <input type="number" v-model="releaseParams.taxPoint" maxlength="4" @ placeholder="请输入税率" @focus="blur_taxPoint"><span class="poze">%</span>
-                                        </div>
-                                        <div class="popup-tips" v-show="vShow_taxPoint">{{fromMessage}}</div>
-                                    </div>
-                                    <div class="popup-button">
-                                        <div class="btn btn-confim" @click="confimTaxPonitEditPopup">确定</div>
-                                        <div class="btn btn-cancel" @click="hideTaxPonitEditPopup">取消</div>
-                                    </div>
-                                </div>
-                            </div>
-                            <div class="release-from clear">
-                                <div class="release-label"><span class="star">*</span>购买数量:</div>
-                                <div class="release-input">
-                                    <div class="release-props">
-                                        <div class="release-props" >
-                                            <label class="release-radio">
-                                                <input type="radio" name="step" v-model="releaseParams.step" value="1"  @click="radioChangeStep">
-                                                <i class="icon mIcon">逐步增长</i>
-                                            </label>
-                                            <label class="release-radio">
-                                                <input type="radio" name="step" v-model="releaseParams.step" value="2" checked @click="radioChangeStep">
-                                                <i class="icon mIcon">以起订量增长</i>
-                                            </label>
-                                        </div>
-                                    </div>
-                                </div>
-                            </div>
-                            <div class="release-from clear">
-                                <div class="release-label"><span class="star">*</span>物流方式:</div>
-                                <div class="release-input">
-                                    <div class="release-props">
-                                        <label class="release-radio">
-                                            <input type="radio" name="freePostFlag" v-model="releaseParams.freePostFlag" :value="0"  @click="radioChangeByFlag">
-                                            <i class="icon mIcon">包邮</i>
-                                        </label>
-                                        <label class="release-radio">
-                                            <input type="radio" name="freePostFlag" v-model="releaseParams.freePostFlag" :value="1" checked @click="radioChangeByFlag">
-                                            <i class="icon mIcon">使用运费模板</i>
-                                        </label>
-                                        <label class="release-radio">
-                                            <input type="radio" name="freePostFlag" v-model="releaseParams.freePostFlag" :value="2" checked @click="radioChangeByFlag">
-                                            <i class="icon mIcon">到付</i>
-                                        </label>
-                                    </div>
-                                </div>
-                            </div>
-                            <div class="release-from clear" v-if="releaseParams.freePostFlag === 1">
-                                <div class="release-label"><span class="star">*</span>选择模板:</div>
-                                <div class="release-input">
-                                    <div class="release-props">
-                                        <div class="release-select">
-                                            <el-select v-model="releaseParams.freightTemplateId" placeholder="请选择" style="width: 320px;">
-                                                <el-option
-                                                    v-for="freight in freightOptions"
-                                                    :key="freight.id"
-                                                    :label="freight.name"
-                                                    :value="freight.id">
-                                                    {{ freight.name }}
-                                                </el-option>
-                                            </el-select>
-                                        </div>
-                                        <div class="release-select-refresh">
-                                            <el-button type="text" icon="el-icon-refresh-right" @click="handleRefresh" style="padding: 0 0;color: #333333;">刷新</el-button>
-                                        </div>
-                                        <div class="release-select-all">
-                                            <a href="/supplier/freight.html" target="_blank">所有模板</a>
-                                        </div>
-                                    </div>
-                                </div>
-                                <div class="release-tips" v-show="vShow_freePostFlag">{{fromMessage}}</div>
-                                <div class="release-input-add">
-                                    <el-button type="primary" @click="handleAddFreight">新增运费模板</el-button>
-                                </div>
-                            </div>
-                            <template th:replace="supplier-center/components/freight-dialog"></template>
-                            <div class="release-from clear">
-                                <div class="from-button secondbtn">
-                                    <a href="javascript: void(0);" class="btn prev" @click="PrevStep">上一步</a>
-                                    <a href="javascript: void(0);" class="btn next" @click="NextStep1">下一步</a>
-                                </div>
-                            </div>
-                        </div>
-                        <!--商品信息-->
-                        <div class="release-main-container" v-show="activeNum == 2">
-                            <div class="release-from clear">
-                                <div class="release-label"><span class="star">*</span>商品图片:</div>
-                                <div class="release-input upload image"  id="uploadGoodsImages">
-                                    <div class="upload-file"  v-for="(item, index) in GoodsImagesList" :key="index"
-                                         draggable="true"
-                                         @dragstart="dragstart(item)"
-                                         @dragenter="dragenter(item)"
-                                         @dragend="dragend(item)"
-                                    >
-                                        <img :data-original='item' :src="item" :id="'uploadGoodsImages'+ index" :data-image="item" alt="" class="upload-img" @click="showViewerImageFn(index)">
-                                        <i class="icon-del mIcon icon" @click="removeGoodsImagesFn(index)"></i>
-                                    </div>
-                                    <div class="upload-file" v-show="GoodsImagesList.length<5">
-                                        <i class="icon-add mIcon"></i>
-                                        <p class="add-text" v-if="!(isPC)">添加图片</p>
-                                        <input ref="goodsImages" type="file" name="file" value="" class="input-file" accept="image/png,image/jpeg,image/gif,image/jpg"  @change="uploadGoodsImagesFn">
-                                    </div>
-                                </div>
-                                <div class="release-tips" v-show="vShow_GoodsImages">{{fromMessage}}</div>
-                            </div>
-                            <div class="release-from text imgText" style="margin-bottom: 10px;">
-                                <P class="text" style="line-height: 24px;">最多上传<span class="em">5张</span>图片,可拖动图片改变位置,第一张默认为产品主图;仅支持
-                                <span class="em">JPG、GIF、JPEG</span>和<span class="em">BMP</span>格式,建议图片<span class="em">比例必须为1:1且分辨率必须在750*750以上,</span>
-                                <span class="em">每张图小于5M</span>;图片请避免全文字,否则有可能审核不通过</P>
-<!--                                <P class="text" style="line-height: 24px;">仅支持<span class="em">JPG、GIF、JPEG</span>和<span class="em">BMP</span>格式,建议图片<span class="em">分辨率在750*750以上,</span></P>-->
-<!--                                <P class="text" style="line-height: 24px;"><span class="em">每张图小于5M</span>;图片请避免全文字,否则有可能审核不通过</P>-->
-                            </div>
-                            <div class="release-from clear" style="margin-top: 30px;">
-                                <div class="release-label"><span class="star">*</span>商品详情:</div>
-                                <div class="release-input Editor">
-                                    <textarea  class="textarea" id="detailInfoEditor" v-html="releaseParams.detailInfo"></textarea >
-                                </div>
-                            </div>
-                            <div class="release-from text imgText" style="margin-bottom: 10px;">
-                                <P class="text" style="line-height: 24px;">建议图文并茂并按照<span class="em">产品介绍>产品功效>操作流程>效果分享>疗程建议>注意事项>产品证书</span>的顺序进行描述;</P>
-                                <P class="text" style="line-height: 24px;">上传图片时,对每张图都填写关键词描述,有利于商品的曝光。</P>
-                            </div>
-                            <div class="release-from clear">
-                                <div class="from-button secondbtn">
-                                    <a href="javascript: void(0);" class="btn prev" @click="PrevStep">上一步</a>
-                                    <a href="javascript: void(0);" class="btn next" @click="NextStep2">下一步</a>
-                                </div>
-                            </div>
-                        </div>
-                        <div class="release-main-container" v-show="activeNum == 3">
-                            <div class="release-from clear">
-                                <div class="release-label">订购方案:</div>
-                                <div class="release-input Editor">
-                                    <textarea  class="textarea" id="orderInfoEditor" v-html="releaseParams.orderInfo" placeholder="建议从合作分成,活动形式两方面进行描述"></textarea >
-                                </div>
-                            </div>
-                            <div class="release-from clear">
-                                <div class="release-label">服务详情:</div>
-                                <div class="release-input Editor">
-                                    <textarea  class="textarea" id="severInfoEditor" v-html="releaseParams.serviceInfo" placeholder="建议从服务案例,美业年限,团队人数和资历认证各方面进行描述"></textarea >
-                                </div>
-                            </div>
-                            <div class="release-from clear">
-                                <div class="from-button last secondbtn">
-                                    <a href="javascript: void(0);" class="btn prev" @click="PrevStep">上一步</a>
-                                    <a href="javascript: void(0);" class="btn next" @click="NextStep3">下一步</a>
-                                </div>
-                            </div>
-                        </div>
-                        <!--新品展示编辑-->
-                        <div class="release-main-container new" v-show="activeNum == 4">
-                            <div class="release-from text imgText">
-                                <P style="line-height: 24px;">采美商城已上线新品重点展示功能,新发布的商品有机会直接展示在网站首页,增加商品曝光量,展示时长为3个月。 您可为这个即将发布的商品选择是否参与新品展示。</P>
-                            </div>
-                            <div class="release-from clear">
-                                <div class="release-label"><span class="star">*</span>新品展示:</div>
-                                <div class="release-input">
-                                    <div class="release-props">
-                                        <label class="release-radio">
-                                            <input type="radio" name="newProductType" v-model="releaseParams.newProductType" value="1"  @click="radioChangeNewvalidFlag">
-                                            <i class="icon mIcon">参与</i>
-                                        </label>
-                                        <label class="release-radio">
-                                            <input type="radio" name="newProductType" v-model="releaseParams.newProductType" value="2" checked @click="radioChangeNewvalidFlag">
-                                            <i class="icon mIcon">不参与</i>
-                                        </label>
-                                    </div>
-                                </div>
-                                <div class="release-tips" v-show="vShow_isNewProductType">{{fromMessage}}</div>
-                            </div>
-                            <div class="release-from clear">
-                                <div class="release-image">
-                                    <img src="/img/supplier/icon-hotimage.png" alt="新品展示">
-                                </div>
-                            </div>
-                            <div class="release-from text imgText">
-                                <P style="line-height: 24px;color: red;">请注意:</P>
-                                <P style="line-height: 24px;">最终能否展示在商城首页,需要经过采美审核人员进行审核(2-3个工作日),审核通过后才会展示。</P>
-                            </div>
-                            <div class="release-from clear">
-                                <div class="from-button last secondbtn">
-                                    <a href="javascript: void(0);" class="btn prev" @click="PrevStep">上一步</a>
-                                    <a href="javascript: void(0);" class="btn next" @click="addReleaseGoodSubmitFn">提交</a>
-                                    <a v-if="platformsFlag" href="javascript: void(0);" class="btn next"  @click="addReleasePeview">预览商品</a>
-                                </div>
-                            </div>
-                       </div>
-                        <div class="preview-container">
-                            <div class="preview-content">
-                                <img src="" class="preview-bigimg" alt="" style="border: 2px dashed #DBDBDB">
-                            </div>
-                        </div>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-
-<!-- 引入底部 -->
-<template th:replace="components/footer"></template>
-<template th:replace="components/foot-link"></template>
-<script charset="utf-8" type="text/javascript" th:src="@{/js/center.js(v=${version})}"></script>
-<script charset="utf-8" type="text/javascript" th:src="@{/lib/ckeditor5-new/ckeditor.js(v=${version})}"></script>
-<script charset="utf-8" type="text/javascript" th:src="@{/js/common/serviceapi/supplier.service.js(v=${version})}"></script>
-<script charset="utf-8" type="text/javascript" th:src="@{/js/supplier-center/shop/mixins/freightMixins.js(v=${version})}"></script>
-<script charset="utf-8" type="text/javascript" th:src="@{/js/supplier-center/shop/mixins/getInfoMixins.js(v=${version})}"></script>
-<script charset="utf-8" type="text/javascript" th:src="@{/js/supplier-center/shop/mixins/checkeMixins.js(v=${version})}"></script>
-<script charset="utf-8" type="text/javascript" th:src="@{/js/supplier-center/shop/mixins/releaseMixins.js(v=${version})}"></script>
-<script charset="utf-8" type="text/javascript" th:src="@{/js/supplier-center/shop/release.js(v=${version})}"></script>
-
-</body>
-</html>
+<!DOCTYPE html>
+<html lang="zh-CN" xmlns:th="https://www.thymeleaf.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="https://www.thymeleaf.org ">
+<head>
+    <title>采美365网-我的店铺-发布商品</title>
+    <template th:replace="components/head-link"></template>
+
+    <link th:href="@{/css/base/center.css(v=${version})}" rel="stylesheet" type="text/css">
+    <link th:href="@{/css/supplier-center/shop/release.css(v=${version})}" rel="stylesheet" type="text/css">
+
+    <template th:replace="components/analysis"></template>
+</head>
+<body>
+<!-- 引用头部 -->
+<template th:replace="components/header"></template>
+
+<!-- 发布商品 -->
+<div id="releaseContainer">
+    <div class="navLayout" v-cloak>
+        <div v-if="isPC" class="crumbs">
+            <span>我的采美</span>
+            <span>&gt;</span>
+            <span>我的店铺</span>
+            <span>&gt;</span>
+            <span>发布商品</span>
+        </div>
+        <div class="wrap clear">
+            <!--左侧导航-->
+            <template th:replace="supplier-center/components/tableft"></template>
+            <div class="right">
+                <div class="container shadow" @click.stop="touchmoveFn" >
+                    <div class="release-stepbox">
+                        <div class="stepSpan active">
+                            <p><span>1</span></p>
+                            <p>基本信息</p>
+                        </div>
+                        <div class="stepSpan" :class="activeNum == 1 || activeNum == 2 || activeNum == 3 || activeNum == 4 ? 'active':''">
+                            <p><span>2</span></p>
+                            <p>销售信息</p>
+                        </div>
+                        <div class="stepSpan" :class="activeNum == 2 || activeNum == 3 || activeNum == 4 ? 'active':''">
+                            <p><span>3</span></p>
+                            <p>上传图片</p>
+                        </div>
+                        <div class="stepSpan" :class="activeNum == 3 || activeNum == 4 ? 'active':''">
+                            <p><span>4</span></p>
+                            <p>服务项目</p>
+                        </div>
+                        <div class="stepSpan" :class="activeNum == 4 ? 'active':''">
+                            <p><span>5</span></p>
+                            <p>新品展示</p>
+                        </div>
+                    </div>
+                    <div class="release-container clear"  v-show="isRequest" :class="isRequest ? 'active' : ''" >
+                        <!--商品初始信息-->
+                        <div class="release-main-container clear" v-show="activeNum == 0">
+                            <div class="release-from none clear" >
+                                <div class="release-label"><span class="star">*</span>商品显示名:</div>
+                                <div class="release-input"><input class="input" v-model="releaseParams.name" maxlength="40" type="text" placeholder="请输入该商品在商城显示的名称" @blur="blur_name"></div>
+                                <div class="release-tips" v-show="vShow_Name">{{fromMessage}}</div>
+                            </div>
+                            <div class="release-from text">
+                                <P class="text">不超过40个汉字,请尽可能包含商品关键词,便于搜索</P>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="release-label"><span class="star">*</span>内部商品名:</div>
+                                <div class="release-input"><input class="input" v-model="releaseParams.aliasName" maxlength="40" type="text" placeholder="请输入该商品在您公司内部的名称" @blur="blur_aliasName"></div>
+                                <div class="release-tips" v-show="vShow_AliasName">{{fromMessage}}</div>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="release-label"><span class="star">*</span>商品属性:</div>
+                                <div class="release-input">
+                                    <div class="release-props">
+                                        <label class="release-radio" @click="getclass(1)"><input type="radio" name="commodityType" v-model="releaseParams.commodityType" value="1"><i class="icon mIcon">产品</i></label>
+                                        <label class="release-radio" @click="getclass(2)"><input type="radio" name="commodityType" v-model="releaseParams.commodityType" value="2" checked><i class="icon mIcon">仪器</i></label>
+                                    </div>
+                                </div>
+                                <div class="release-tips" v-show="vShow_attribute">{{fromMessage}}</div>
+                             </div>
+                            <div class="release-from clear" v-if="releaseParams.commodityType == 2">
+                                 <div class="release-label"><span class="star">*</span>培训方式:</div>
+                                    <div class="release-input">
+                                        <div class="release-props">
+                                            <label class="release-radio" @click="choiceTrain(1)"><input type="radio" name="trainingMethod" v-model="releaseParams.trainingMethod" value="1"><i class="icon mIcon">线上培训</i></label>
+                                            <label class="release-radio" @click="choiceTrain(2)"><input type="radio" name="trainingMethod" v-model="releaseParams.trainingMethod" value="2" checked><i class="icon mIcon">线下培训</i></label>
+                                        </div>
+                                    </div>
+                                <div class="release-tips" v-show="vShow_trainingMethod">{{fromMessage}}</div>
+                             </div>
+                            <div class="release-from clear" v-if="releaseParams.commodityType == 2">
+                                 <div class="release-label"><span class="star">*</span>培训费用:</div>
+                                    <div class="release-input">
+                                        <div class="release-props">
+                                            <label class="release-radio" @click="choiceTrainOutlay(1)"><input type="radio" name="trainingType" v-model="releaseParams.trainingType" value="1"><i class="icon mIcon">售价未包含</i></label>
+                                            <label class="release-radio" @click="choiceTrainOutlay(2)"><input type="radio" name="trainingType" v-model="releaseParams.trainingType" value="2" checked><i class="icon mIcon">售价已包含</i></label>
+                                        </div>
+                                    </div>
+                                    <div class="release-input expen" v-if="releaseParams.trainingType == 1">
+                                        <span class="span">¥</span>
+                                        <input class="input" v-model="releaseParams.trainingFee" maxlength="40" type="number" placeholder="请填写包含食宿,交通等各项费用的培训总金额" @input="input_trainingFee">
+                                    </div>
+                                <div class="release-tips" v-show="vShow_trainingType">{{fromMessage}}</div>
+                             </div>
+                            <div class="release-from clear">
+                                <div class="release-label"><span class="star">*</span>商品分类:</div>
+                                <div class="release-input">
+                                    <div class="select-main" :class="[isSelectActive == 1 ? 'border' : '']">
+                                        <input class="select" v-model="selectText.bigTypeID" type="text" readonly="readonly" placeholder="请选择分类" @click.stop.prevent="showOption('first')">
+                                        <i class="mIcon selected"></i>
+                                        <div class="option-main" v-if="isSelectActive == 1">
+                                            <div class="option" v-for="x in classificationFirstList" :key="x.bigTypeID" @click="ChangeClassificationFirst(x)">{{x.name}}</div>
+                                        </div>
+                                    </div>
+                                    <div class="select-main" :class="[isSelectActive == 2 ? 'border' : '']" v-show="classificationTwoList!=''&&classificationTwoList!=null">
+                                        <input class="select" v-model="selectText.smallTypeID" type="text" readonly="readonly" placeholder="请选择分类" @click.stop.prevent="showOption('two')">
+                                         <i class="mIcon selected"></i>
+                                        <div class="option-main" v-if="isSelectActive == 2">
+                                            <div class="option" v-for="x in classificationTwoList" :key="x.value" @click="ChangeClassificationTwo(x)">{{x.name}}</div>
+                                        </div>
+                                    </div>
+                                    <div class="select-main" :class="[isSelectActive == 3 ? 'border' : '']" v-show="classificationThreeList!=''&& classificationThreeList!=null">
+                                        <input class="select" v-model="selectText.tinyTypeID" type="text" readonly="readonly" placeholder="请选择分类" @click.stop.prevent="showOption('three')">
+                                         <i class="mIcon selected"></i>
+                                        <div class="option-main" v-if="isSelectActive == 3">
+                                            <div class="option" v-for="x in classificationThreeList" :key="x.value" @click="ChangeClassificationThree(x)">{{x.name}}</div>
+                                        </div>
+                                    </div>
+                                </div>
+                                <div class="release-tips" v-show="vShow_TinyTypeID">{{fromMessage}}</div>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="release-label"><span class="star">*</span>商品品牌:</div>
+                                <div class="release-input">
+                                    <input class="input tags" type="text" v-model="releaseParams.brandName" maxlength="10" placeholder="请输入商品所属品牌" @input="bindBrandAssociationFn" >
+                                    <div class="add-btn active" v-show="tagsList.length<6" @click="brandAssociationFn()">检测</div>
+                                    <div class="release-opt" v-show="isBrandAssociation">
+                                        <div class="opt-item" v-for="x in brandAssociationList" :key="x.id" @click="SelectChangeAssociationFn(x)">{{x.name}}</div>
+                                    </div>
+                                </div>
+                                <div class="release-tips" v-show="vShow_BrandID">{{fromMessage}}</div>
+                            </div>
+                            <div class="popup" v-show="isAddBrand" :class="isAddBrand ? 'active':''">
+                                <div class="popup-layer bran">
+                                    <div class="popup-title"> <p>提交品牌</p> <i class="popup-close layui-layer-ico mIcon "  @click="hideAddBrandPopup"></i></div>
+                                    <div class="popup-content">
+                                        <div class="popup-from clear"><span>商品品牌:</span><p class="popup-p">{{releaseParams.brandName}}</p></div>
+                                        <div class="popup-from clear" style="margin-top: 10px">
+                                            <span>品牌logo:</span>
+                                            <div class="popup-upload">
+                                                <div class="upload-file" v-if="brandImage!=''">
+                                                    <img :src="brandImage" alt="" class="upload-img">
+                                                    <i class="icon-del mIcon icon" @click="removeBrandImageFn"></i>
+                                                </div>
+                                                <div class="upload-file" v-else>
+                                                    <i class="icon-add mIcon "></i>
+                                                    <input ref="brandImage" type="file" name="file" value="" class="input-file" accept="image/png,image/jpeg,image/gif,image/jpg"  @change="uploadBrandImagesFn">
+                                                </div>
+                                            </div>
+                                        </div>
+                                        <div class="popup-from clear" style="margin-top: 10px">
+                                            <span>品牌描述:</span>
+                                            <div class="popup-textarea">
+                                                <textarea name="" v-model="brandTextarea" cols="30" rows="10" maxlength="200" placeholder="请描述品牌信息,不超过200字"></textarea>
+                                            </div>
+                                        </div>
+                                    </div>
+                                    <div class="popup-button">
+                                        <div class="btn btn-confim" @click="confimAddBrandPopup">确定</div>
+                                        <div class="btn btn-cancel" @click="hideAddBrandPopup">取消</div>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="release-label"><span class="star">*</span>商品类型:</div>
+                                <div class="release-input">
+                                    <div class="select-main" :class="[isSelectActive == 4 ? 'border' : '']">
+                                        <input class="select" v-model="selectText.goodsType" type="text" readonly="readonly" placeholder="请选择商品类型" @click.stop.prevent="showOption('type')">
+                                         <i class="mIcon selected"></i>
+                                        <div class="option-main" v-if="isSelectActive == 4">
+                                            <div class="option" v-for="x in goodsTypeList" :key="x.value" @click="SelectChangeTypeFn(x)">{{x.name}}</div>
+                                        </div>
+                                    </div>
+                                    <div class="select-main" :class="[isSelectActive == 5 ? 'border' : '']" v-if="releaseParams.productType == 2">
+                                        <input class="select" v-model="selectText.apparatusType" type="text" readonly="readonly" placeholder="请选择器械类型" @click.stop.prevent="showOption('ratus')">
+                                        <div class="option-main" v-if="isSelectActive == 5">
+                                            <div class="option" v-for="x in apparatusTypeList" :key="x.value" @click="SelectChangeApparatusFn(x)">{{x.name}}</div>
+                                        </div>
+                                    </div>
+                                </div>
+                                <div class="release-tips" v-show="vShow_GoodsType">{{fromMessage}}</div>
+                            </div>
+                            <div class="release-from clear" v-if="releaseParams.productType == 2">
+                                <div class="release-label"><span class="star">*</span>资质证书:</div>
+                                <div class="release-input upload">
+                                    <div class="upload-file" v-if="releaseParams.qualificationImg!=''">
+                                        <img :src="releaseParams.qualificationImg" alt="" class="upload-img">
+                                        <i class="icon-del mIcon icon" @click="removeQualificationsFn"></i>
+                                    </div>
+                                    <div class="upload-file" v-else>
+                                        <i class="icon-add"></i>
+                                        <input ref="inputer" type="file" name="file" value="" class="input-file" accept="image/png,image/jpeg,image/gif,image/jpg"  @change="uploadQualificationsFn">
+                                    </div>
+                                </div>
+                                <div class="release-tips" v-show="vShow_QualificationImg">{{fromMessage}}</div>
+                            </div>
+                            <div class="release-from clear" v-if="releaseParams.productType == 2">
+                                <div class="release-label"><span class="star">*</span>证书编号:</div>
+                                <div class="release-input"><input class="input" v-model="releaseParams.qualificationNo" maxlength="50" type="text" placeholder="请完整输入证书上的编号" @blur="blur_qualificationNo"></div>
+                                <div class="release-tips" v-show="vShow_QualificationNo">{{fromMessage}}</div>
+                            </div>
+                            <div class="release-from clear" v-if="releaseParams.productType == 2">
+                                <div class="release-label"><span class="star">*</span>产品名称:</div>
+                                <div class="release-input"><input class="input" v-model="releaseParams.productName" maxlength="50" type="text" placeholder="请输入证书上的产品名称" @blur="blur_productName"></div>
+                                <div class="release-tips" v-show="vShow_ProductName">{{fromMessage}}</div>
+                            </div>
+                            <div class="release-from clear" v-if="releaseParams.productType == 2" id="EffectiveDate">
+                                <div class="release-label"><span class="star">*</span>证书有效期:</div>
+                                <div class="release-input"><input class="input" type="date"  style="width: 220px;" v-model="releaseParams.qualificationTime" maxlength="40" required="required"></div>
+                                <div class="release-tips" v-show="vShow_QualificationTime">{{fromMessage}}</div>
+                            </div>
+                            <div class="release-from none clear">
+                                <div class="release-label"><span class="star">*</span>商品标签:</div>
+                                <div class="release-input">
+                                    <input class="input tags" v-model="tagsText" type="text" placeholder="请输入商品标签" maxlength="15" @focus="blur_tags">
+                                    <div class="add-btn" v-show="tagsList.length<6" @click="addTag()">添加标签</div>
+                                </div>
+                                <div class="release-tips" v-show="vShow_Tags">{{fromMessage}}</div>
+                            </div>
+                            <div class="release-from text">
+                                <P class="text" style="line-height: 24px;">简述商品功效和特性,最多可添加6个标签,每个标签字数不超过15个汉字(如:美白祛斑,消除皱纹)</P>
+                            </div>
+                            <div class="release-from clear" v-show="tagsList.length>0">
+                                <div class="tags-main">
+                                    <div class="item-tags" v-for="(item, index) in tagsList" :key="index">
+                                        {{item.tag}}<i class="del-tags mIcon" @click="removeTags(index)"></i>
+                                    </div>
+                                </div>
+                            </div>
+<!--                            <div class="release-from clear">-->
+<!--                                <div class="release-label"><span class="star">*</span>包装规格:</div>-->
+<!--                                <div class="release-input"><input class="input" v-model="releaseParams.unit" type="text" placeholder="请输入包装规格,如:台,30ml/瓶" @blur="blur_aliasUnit" maxlength="20"></div>-->
+<!--                                <div class="release-tips" v-show="vShow_Unit">{{fromMessage}}</div>-->
+<!--                            </div>-->
+                            <div class="release-from clear">
+                                <div class="release-label rightTxt">商品编码:</div>
+                                <div class="release-input"><input class="input" v-model="releaseParams.productCode" type="text" placeholder="建议输入商品编码"></div>
+                            </div>
+                            <div class="release-from none clear">
+                                <div class="release-label rightTxt">搜索关键词:</div>
+                                <div class="release-input">
+                                    <input  v-for="(item, index) in searchKeyList" :key="index" class="input keyword" type="text" :placeholder="item.placeholder" v-model="item.value" maxlength="16">
+                                    <a href="/supplier/goods/example.html" target="_blank" class="p" v-if="isPC">查看示例></a>
+                                </div>
+                            </div>
+                            <div class="release-from text shili" style="margin-bottom: 10px;">
+                                <P class="text" style="line-height: 24px;">{{keywordText}}</P>
+                                <a href="/supplier/goods/example.html" target="_blank" class="p" v-if="!(isPC)">查看示例</a>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="release-label rightTxt">相关参数:</div>
+                                <div class="release-input clear">
+                                    <div class="release-param" v-for="(item, index) in paramKeyList" :key="index">
+                                        <input class="param-input" v-model="item.paramsName" type="text" placeholder="参数名称" maxlength="10">
+                                        <input class="param-input" v-model="item.paramsContent" type="text" placeholder="参数信息" maxlength="50">
+                                        <a href="javascript: void(0);" class="del-btn icon mIcon" v-show="index>0" @click="removeParamsFn"></a>
+                                    </div>
+                                    <a href="javascript: void(0);" class="add" @click="addParamsFn" v-if="isPC">添加参数<span>+</span></a>
+                                     <a href="javascript: void(0);" class="add" @click="addParamsFn" V-else>添加参数</a>
+                                </div>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="from-button">
+                                    <a href="javascript: void(0);" class="btn next" @click="NextStep">暂时保存并下一步</a>
+                                </div>
+                            </div>
+                        </div>
+                        <!--商品价格信息-->
+                        <div class="release-main-tips" v-show="activeNum == 1">
+                            【采美】平台为采美网官方正品平台,包括采美网网站和采美采购商城小程序。其他平台为与采美网有紧密合作关系的平台,各项标准与采美平台一致,可拓宽您的销售渠道,请放心上架。
+                        </div>
+                        <div class="release-main-container" v-show="activeNum == 1">
+                            <div class="release-from clear">
+                                <div class="release-label"><span class="star">*</span>上架平台:</div>
+                                <div class="release-input">
+                                    <div class="release-props">
+                                        <a class="release-radios"
+                                           href="javascript: void(0);"
+                                           v-for="(item, index) in platforms"
+                                           :key="index"
+                                           :class="item.isChecked ? 'active':''"
+                                           @click="handleCheckedPlat(item,index)" >
+                                            {{item.name}}
+                                        </a>
+                                    </div>
+                                </div>
+                                <div class="release-tips" v-show="isPlatforms">{{fromMessage}}</div>
+                            </div>
+                            <template v-if="platformsFlag">
+                                <div class="release-from clear none">
+                                    <div class="release-label active">【采美平台】</div>
+                                    <div class="release-label"><span class="star">*</span>SKU种类:</div>
+                                </div>
+                                <div class="release-from clear">
+                                    <div class="release-from-tr">
+                                        <div class="tr-labe"><span class="star">*</span>规格</div>
+                                        <div class="tr-labe"><span class="star">*</span>市场价</div>
+                                        <div class="tr-labe"><span class="star">*</span>售价</div>
+                                        <div class="tr-labe"><span class="star">*</span>起订量</div>
+                                        <div class="tr-labe none"><span class="star">*</span>库存</div>
+                                    </div>
+                                    <div class="release-from-td" v-for="(sku,index) in skuParams" :key="index">
+                                        <div class="tr-labe"><input class="tr-input" type="text" v-model="sku.unit" @input="handleSkuInput" maxlength="10"></div>
+                                        <div class="tr-labe"><input class="tr-input" type="number" v-model="sku.normalPrice" @input="handleSkuInput" maxlength="10"></div>
+                                        <div class="tr-labe"><input class="tr-input" type="number" v-model="sku.price" @input="handleSkuInput" maxlength="10"></div>
+                                        <div class="tr-labe"><input class="tr-input" type="number" v-model="sku.minBuyNumber" @input="handleSkuInput" maxlength="10"></div>
+                                        <div class="tr-labe none"><input class="tr-input" type="number" v-model="sku.stock" @input="handleSkuInput" maxlength="10"></div>
+                                        <div class="tr-icon">
+                                            <i class="WEB-icon add" @click="addskuParamsFn(0,sku, index)" v-if="skuParams.length < 20 && index === 0"></i>
+                                            <i class="WEB-icon del" @click="delskuParamsFn(0,sku, index)" v-if="skuParams.length > 1 && index !=0"></i>
+                                        </div>
+                                    </div>
+                                    <div class="release-tips" v-show="isSkuRule">{{fromMessage}}</div>
+                                </div>
+                            </template>
+                            <template v-if="platformsMallFlag">
+                                <div class="release-from clear none">
+                                    <div class="release-label active">
+                                        【丽格集采联盟平台】
+                                        <span class="release-label-btn" @click="handleCopySuk" v-if="releaseType !== 'edit' && platformsFlag">复制上方SKU数据</span>
+                                    </div>
+                                    <div class="release-label"><span class="star">*</span>SKU种类:</div>
+                                </div>
+                                <div class="release-from clear">
+                                    <div class="release-from-tr">
+                                        <div class="tr-labe"><span class="star">*</span>规格</div>
+                                        <div class="tr-labe"><span class="star">*</span>市场价</div>
+                                        <div class="tr-labe"><span class="star">*</span>售价</div>
+                                        <div class="tr-labe"><span class="star">*</span>起订量</div>
+                                        <div class="tr-labe none"><span class="star">*</span>库存</div>
+                                    </div>
+                                    <div class="release-from-td" v-for="(sku,index) in mallSkusParams" :key="index">
+                                        <div class="tr-labe"><input class="tr-input" type="text" v-model="sku.unit" @input="handleSkuInput" maxlength="10"></div>
+                                        <div class="tr-labe"><input class="tr-input" type="number" v-model="sku.normalPrice" @input="handleSkuInput" maxlength="10"></div>
+                                        <div class="tr-labe"><input class="tr-input" type="number" v-model="sku.price" @input="handleSkuInput" maxlength="10"></div>
+                                        <div class="tr-labe"><input class="tr-input" type="number" v-model="sku.minBuyNumber" @input="handleSkuInput" maxlength="10"></div>
+                                        <div class="tr-labe none"><input class="tr-input" type="number" v-model="sku.stock" @input="handleSkuInput" maxlength="10"></div>
+                                        <div class="tr-icon">
+                                            <i class="WEB-icon add" @click="addskuParamsFn(4,sku, index)" v-if="mallSkusParams.length < 20 && index === 0"></i>
+                                            <i class="WEB-icon del" @click="delskuParamsFn(4,sku, index)" v-if="mallSkusParams.length > 1 && index !=0"></i>
+                                        </div>
+                                    </div>
+                                    <div class="release-tips" v-show="isMallSkuRule">{{fromMessage}}</div>
+                                </div>
+                            </template>
+                            <div class="release-from clear">
+                                <div class="release-label"><span class="star">*</span>售价是否含税:</div>
+                                <div class="release-input">
+                                    <div class="release-props">
+                                        <label class="release-radio"><input type="radio" name="includedTax" v-model="releaseParams.includedTax" value="1" ><i class="icon mIcon">含税</i></label>
+                                        <label class="release-radio"><input type="radio" name="includedTax" v-model="releaseParams.includedTax" value="0" checked><i class="icon mIcon">不含税</i></label>
+                                    </div>
+                                </div>
+                                <div class="release-tips" v-show="vShow_includedTax">{{fromMessage}}</div>
+                            </div>
+                            <div class="release-from clear" v-show="releaseParams.includedTax == 1 || releaseParams.includedTax == 0">
+                                <div class="release-input">
+                                    <div class="release-props" >
+                                        <label class="release-radio">
+                                            <input type="radio" name="invoiceType" v-model="releaseParams.invoiceType" value="1" @click="radioChangeInvoiceType">
+                                            <i class="icon mIcon">开增值税专用发票</i>
+                                        </label>
+                                        <label class="release-radio">
+                                            <input type="radio" name="invoiceType" v-model="releaseParams.invoiceType" value="2" checked @click="radioChangeInvoiceType">
+                                            <i class="icon mIcon">开增值税普通发票</i>
+                                        </label>
+                                        <label class="release-radio" v-show="releaseParams.includedTax == 0">
+                                            <input type="radio" name="invoiceType" v-model="releaseParams.invoiceType" value="3" checked @click="radioChangeInvoiceType">
+                                            <i class="icon mIcon">不开发票</i>
+                                        </label>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="release-from clear" v-show="releaseParams.invoiceType != '3'">
+                                <div class="release-input">
+                                    <span class="tax" :style="{color:'#FF0000'}">*</span>
+                                    <span class="tax">税率:<span class="mg">{{releaseParams.taxPoint}}%</span></span>
+                                    <a href="javascript: void(0);" class="edit-btn" @click="taxPonitEdit">修改</a>
+                                </div>
+                                <div class="release-tips" v-show="vShow_price">{{fromMessage}}</div>
+                            </div>
+                            <div class="popup" v-show="isTaxPonitEditPopup" :class="isTaxPonitEditPopup?'active':''">
+                                <div class="popup-layer edit">
+                                    <div class="popup-title"> <p>修改税率</p> <i class="popup-close layui-layer-ico mIcon" @click="hideTaxPonitEditPopup"></i></div>
+                                    <div class="popup-content">
+                                        <div class="popup-from"><span>税率:</span>
+                                            <input type="number" v-model="releaseParams.taxPoint" maxlength="4" @ placeholder="请输入税率" @focus="blur_taxPoint"><span class="poze">%</span>
+                                        </div>
+                                        <div class="popup-tips" v-show="vShow_taxPoint">{{fromMessage}}</div>
+                                    </div>
+                                    <div class="popup-button">
+                                        <div class="btn btn-confim" @click="confimTaxPonitEditPopup">确定</div>
+                                        <div class="btn btn-cancel" @click="hideTaxPonitEditPopup">取消</div>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="release-label"><span class="star">*</span>购买数量:</div>
+                                <div class="release-input">
+                                    <div class="release-props">
+                                        <div class="release-props" >
+                                            <label class="release-radio">
+                                                <input type="radio" name="step" v-model="releaseParams.step" value="1"  @click="radioChangeStep">
+                                                <i class="icon mIcon">逐步增长</i>
+                                            </label>
+                                            <label class="release-radio">
+                                                <input type="radio" name="step" v-model="releaseParams.step" value="2" checked @click="radioChangeStep">
+                                                <i class="icon mIcon">以起订量增长</i>
+                                            </label>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="release-label"><span class="star">*</span>物流方式:</div>
+                                <div class="release-input">
+                                    <div class="release-props">
+                                        <label class="release-radio">
+                                            <input type="radio" name="freePostFlag" v-model="releaseParams.freePostFlag" :value="0"  @click="radioChangeByFlag">
+                                            <i class="icon mIcon">包邮</i>
+                                        </label>
+                                        <label class="release-radio">
+                                            <input type="radio" name="freePostFlag" v-model="releaseParams.freePostFlag" :value="1" checked @click="radioChangeByFlag">
+                                            <i class="icon mIcon">使用运费模板</i>
+                                        </label>
+                                        <label class="release-radio">
+                                            <input type="radio" name="freePostFlag" v-model="releaseParams.freePostFlag" :value="2" checked @click="radioChangeByFlag">
+                                            <i class="icon mIcon">到付</i>
+                                        </label>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="release-from clear" v-if="releaseParams.freePostFlag === 1">
+                                <div class="release-label"><span class="star">*</span>选择模板:</div>
+                                <div class="release-input">
+                                    <div class="release-props">
+                                        <div class="release-select">
+                                            <el-select v-model="releaseParams.freightTemplateId" placeholder="请选择" style="width: 320px;">
+                                                <el-option
+                                                    v-for="freight in freightOptions"
+                                                    :key="freight.id"
+                                                    :label="freight.name"
+                                                    :value="freight.id">
+                                                    {{ freight.name }}
+                                                </el-option>
+                                            </el-select>
+                                        </div>
+                                        <div class="release-select-refresh">
+                                            <el-button type="text" icon="el-icon-refresh-right" @click="handleRefresh" style="padding: 0 0;color: #333333;">刷新</el-button>
+                                        </div>
+                                        <div class="release-select-all">
+                                            <a href="/supplier/freight.html" target="_blank">所有模板</a>
+                                        </div>
+                                    </div>
+                                </div>
+                                <div class="release-tips" v-show="vShow_freePostFlag">{{fromMessage}}</div>
+                                <div class="release-input-add">
+                                    <el-button type="primary" @click="handleAddFreight">新增运费模板</el-button>
+                                </div>
+                            </div>
+                            <template th:replace="supplier-center/components/freight-dialog"></template>
+                            <div class="release-from clear">
+                                <div class="from-button secondbtn">
+                                    <a href="javascript: void(0);" class="btn prev" @click="PrevStep">上一步</a>
+                                    <a href="javascript: void(0);" class="btn next" @click="NextStep1">暂时保存并下一步</a>
+                                </div>
+                            </div>
+                        </div>
+                        <!--商品信息-->
+                        <div class="release-main-container" v-show="activeNum == 2">
+                            <div class="release-from clear">
+                                <div class="release-label"><span class="star">*</span>商品图片:</div>
+                                <div class="release-input upload image"  id="uploadGoodsImages">
+                                    <div class="upload-file"  v-for="(item, index) in GoodsImagesList" :key="index"
+                                         draggable="true"
+                                         @dragstart="dragstart(item)"
+                                         @dragenter="dragenter(item)"
+                                         @dragend="dragend(item)"
+                                    >
+                                        <img :data-original='item' :src="item" :id="'uploadGoodsImages'+ index" :data-image="item" alt="" class="upload-img" @click="showViewerImageFn(index)">
+                                        <i class="icon-del mIcon icon" @click="removeGoodsImagesFn(index)"></i>
+                                    </div>
+                                    <div class="upload-file" v-show="GoodsImagesList.length<5">
+                                        <i class="icon-add mIcon"></i>
+                                        <p class="add-text" v-if="!(isPC)">添加图片</p>
+                                        <input ref="goodsImages" type="file" name="file" value="" class="input-file" accept="image/png,image/jpeg,image/gif,image/jpg"  @change="uploadGoodsImagesFn">
+                                    </div>
+                                </div>
+                                <div class="release-tips" v-show="vShow_GoodsImages">{{fromMessage}}</div>
+                            </div>
+                            <div class="release-from text imgText" style="margin-bottom: 10px;">
+                                <P class="text" style="line-height: 24px;">最多上传<span class="em">5张</span>图片,可拖动图片改变位置,第一张默认为产品主图;仅支持
+                                <span class="em">JPG、GIF、JPEG</span>和<span class="em">BMP</span>格式,建议图片<span class="em">比例必须为1:1且分辨率必须在750*750以上,</span>
+                                <span class="em">每张图小于5M</span>;图片请避免全文字,否则有可能审核不通过</P>
+<!--                                <P class="text" style="line-height: 24px;">仅支持<span class="em">JPG、GIF、JPEG</span>和<span class="em">BMP</span>格式,建议图片<span class="em">分辨率在750*750以上,</span></P>-->
+<!--                                <P class="text" style="line-height: 24px;"><span class="em">每张图小于5M</span>;图片请避免全文字,否则有可能审核不通过</P>-->
+                            </div>
+                            <div class="release-from clear" style="margin-top: 30px;">
+                                <div class="release-label"><span class="star">*</span>商品详情:</div>
+                                <div class="release-input Editor">
+                                    <textarea  class="textarea" id="detailInfoEditor" v-html="releaseParams.detailInfo"></textarea >
+                                </div>
+                            </div>
+                            <div class="release-from text imgText" style="margin-bottom: 10px;">
+                                <P class="text" style="line-height: 24px;">建议图文并茂并按照<span class="em">产品介绍>产品功效>操作流程>效果分享>疗程建议>注意事项>产品证书</span>的顺序进行描述;</P>
+                                <P class="text" style="line-height: 24px;">上传图片时,对每张图都填写关键词描述,有利于商品的曝光。</P>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="from-button secondbtn">
+                                    <a href="javascript: void(0);" class="btn prev" @click="PrevStep">上一步</a>
+                                    <a href="javascript: void(0);" class="btn next" @click="NextStep2">暂时保存并下一步</a>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="release-main-container" v-show="activeNum == 3">
+                            <div class="release-from clear">
+                                <div class="release-label">订购方案:</div>
+                                <div class="release-input Editor">
+                                    <textarea  class="textarea" id="orderInfoEditor" v-html="releaseParams.orderInfo" placeholder="建议从合作分成,活动形式两方面进行描述"></textarea >
+                                </div>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="release-label">服务详情:</div>
+                                <div class="release-input Editor">
+                                    <textarea  class="textarea" id="severInfoEditor" v-html="releaseParams.serviceInfo" placeholder="建议从服务案例,美业年限,团队人数和资历认证各方面进行描述"></textarea >
+                                </div>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="from-button last secondbtn">
+                                    <a href="javascript: void(0);" class="btn prev" @click="PrevStep">上一步</a>
+                                    <a href="javascript: void(0);" class="btn next" @click="NextStep3">暂时保存并下一步</a>
+                                </div>
+                            </div>
+                        </div>
+                        <!--新品展示编辑-->
+                        <div class="release-main-container new" v-show="activeNum == 4">
+                            <div class="release-from text imgText">
+                                <P style="line-height: 24px;">采美商城已上线新品重点展示功能,新发布的商品有机会直接展示在网站首页,增加商品曝光量,展示时长为3个月。 您可为这个即将发布的商品选择是否参与新品展示。</P>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="release-label"><span class="star">*</span>新品展示:</div>
+                                <div class="release-input">
+                                    <div class="release-props">
+                                        <label class="release-radio">
+                                            <input type="radio" name="newProductType" v-model="releaseParams.newProductType" value="1"  @click="radioChangeNewvalidFlag">
+                                            <i class="icon mIcon">参与</i>
+                                        </label>
+                                        <label class="release-radio">
+                                            <input type="radio" name="newProductType" v-model="releaseParams.newProductType" value="2" checked @click="radioChangeNewvalidFlag">
+                                            <i class="icon mIcon">不参与</i>
+                                        </label>
+                                    </div>
+                                </div>
+                                <div class="release-tips" v-show="vShow_isNewProductType">{{fromMessage}}</div>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="release-image">
+                                    <img src="/img/supplier/icon-hotimage.png" alt="新品展示">
+                                </div>
+                            </div>
+                            <div class="release-from text imgText">
+                                <P style="line-height: 24px;color: red;">请注意:</P>
+                                <P style="line-height: 24px;">最终能否展示在商城首页,需要经过采美审核人员进行审核(2-3个工作日),审核通过后才会展示。</P>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="from-button last secondbtn">
+                                    <a href="javascript: void(0);" class="btn prev" @click="PrevStep">上一步</a>
+                                    <a href="javascript: void(0);" class="btn next" @click="addReleaseGoodSubmitFn">提交信息</a>
+                                    <a v-if="platformsFlag" href="javascript: void(0);" class="btn next"  @click="addReleasePeview">预览商品</a>
+                                </div>
+                            </div>
+                       </div>
+                        <div class="preview-container">
+                            <div class="preview-content">
+                                <img src="" class="preview-bigimg" alt="" style="border: 2px dashed #DBDBDB">
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
+<!-- 引入底部 -->
+<template th:replace="components/footer"></template>
+<template th:replace="components/foot-link"></template>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/center.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/lib/ckeditor5-new/ckeditor.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/common/serviceapi/supplier.service.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/supplier-center/shop/mixins/freightMixins.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/supplier-center/shop/mixins/getInfoMixins.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/supplier-center/shop/mixins/checkeMixins.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/supplier-center/shop/mixins/releaseMixins.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/supplier-center/shop/release.js(v=${version})}"></script>
+
+</body>
+</html>