Bläddra i källkod

Merge branch 'vendor_logistics_v2' into function_vendor_modify

# Conflicts:
#	src/main/webapp/resources/js/vendor/controllers/forstore/vendor_deliveryRule_ctrl.js
hulh 8 år sedan
förälder
incheckning
41210d8f74

+ 1 - 1
src/main/java/com/uas/platform/b2c/logistics/service/impl/AddressServiceImpl.java

@@ -156,7 +156,7 @@ public class AddressServiceImpl implements AddressService {
 				address.setUsetype((short)2);
 				address.setUsetype((short)2);
 				num = addressDao.getCountByEnuuAndTypeAndUsetype(user.getEnterprise().getUu(), address.getType(), address.getUsetype());
 				num = addressDao.getCountByEnuuAndTypeAndUsetype(user.getEnterprise().getUu(), address.getType(), address.getUsetype());
 			}
 			}
-			address.setNum(num == null ? 1 : ++num);
+			address.setNum(num == 0 ? 1 : ++num);
 		}
 		}
 		Long modifyId = address.getId();
 		Long modifyId = address.getId();
 		Address add = save(address);
 		Address add = save(address);

+ 237 - 163
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_deliveryRule_ctrl.js

@@ -1,6 +1,6 @@
 define([ 'app/app' ], function(app) {
 define([ 'app/app' ], function(app) {
     'use strict';
     'use strict';
-    app.register.controller('vendorDeliveryRuleCtrl', ['$scope', '$rootScope', 'ngTableParams', 'DistributionRule', 'BaseService', 'toaster', '$state', '$http', 'Enterprise', 'TreeData', function ($scope, $rootScope, ngTableParams, DistributionRule, BaseService, toaster, $state, $http, Enterprise, TreeData) {
+    app.register.controller('vendorDeliveryRuleCtrl', ['$scope', '$rootScope', 'ngTableParams', 'DistributionRule', 'BaseService', 'toaster', '$state', '$http', 'Enterprise', 'TreeData','$q','NumberService', function ($scope, $rootScope, ngTableParams, DistributionRule, BaseService, toaster, $state, $http, Enterprise, TreeData,$q,NumberService) {
         $rootScope.active = 'vendor_logistics';
         $rootScope.active = 'vendor_logistics';
         $scope.tab = 'deliverRule';
         $scope.tab = 'deliverRule';
         $scope.title = '配送规则';
         $scope.title = '配送规则';
@@ -53,17 +53,19 @@ define([ 'app/app' ], function(app) {
                 $scope.modifyRule = data;
                 $scope.modifyRule = data;
                 $scope.isModify = true;
                 $scope.isModify = true;
                 $scope.isActive = $scope.modifyRule.active == 1;
                 $scope.isActive = $scope.modifyRule.active == 1;
-                $scope.fareArray = angular.fromJson($scope.modifyRule.fares);
+                if ($scope.modifyRule.fareType == 2){
+                    $scope.fareArray = angular.fromJson($scope.modifyRule.fares);
+                }
+                $scope.currencySymbol = $scope.modifyRule.currencyName == "RMB" ? "¥" : "$";
                 if (!$scope.fareArray){
                 if (!$scope.fareArray){
                     $scope.fareArray = [];
                     $scope.fareArray = [];
                     var firstFare = {
                     var firstFare = {
-                        start : 0,
+                        start : "0",
                         end : "",
                         end : "",
                         fare : ""
                         fare : ""
                     };
                     };
                     var secondFare = {
                     var secondFare = {
                         start : "",
                         start : "",
-                        end : 100000,
                         fare : ""
                         fare : ""
                     };
                     };
                     $scope.fareArray.push(firstFare);
                     $scope.fareArray.push(firstFare);
@@ -89,10 +91,9 @@ define([ 'app/app' ], function(app) {
                 $scope.mapArray = [];
                 $scope.mapArray = [];
                 if ($scope.modifyRule.areas){
                 if ($scope.modifyRule.areas){
                     var data = angular.fromJson($scope.modifyRule.areas);
                     var data = angular.fromJson($scope.modifyRule.areas);
-                    $scope.mapArray = data;
-                }
-                if ($scope.mapArray.length == 0){
-
+                    $scope.tree = $scope.tree ? $scope.tree : new TreeData($scope.cityData);
+                    $scope.tree.newInitData(data);
+                    $scope.mapArray = $scope.tree.getChecked();
                 }
                 }
             }else {
             }else {
                 $scope.isModify = false;
                 $scope.isModify = false;
@@ -107,7 +108,11 @@ define([ 'app/app' ], function(app) {
                 };
                 };
                 Enterprise.getCurrencyByRegisterAddress({}, {} ,function (data) {
                 Enterprise.getCurrencyByRegisterAddress({}, {} ,function (data) {
                     if (data){
                     if (data){
-                        $scope.modifyRule.currencyName = data.data;
+                        /**
+                         * 目前存在没有注册地址的公司,暂时设为RMB
+                         */
+                        $scope.modifyRule.currencyName = data.data ? data.data : 'RMB';
+                        $scope.currencySymbol = $scope.modifyRule.currencyName == "RMB" ? "¥" : "$";
                     }
                     }
                 }, function (error) {
                 }, function (error) {
                     toaster.pop('error', "获取企业币别信息失败");
                     toaster.pop('error', "获取企业币别信息失败");
@@ -124,13 +129,12 @@ define([ 'app/app' ], function(app) {
 
 
                 $scope.fareArray = [];
                 $scope.fareArray = [];
                 var firstFare = {
                 var firstFare = {
-                    start : 0,
+                    start : "0",
                     end : "",
                     end : "",
                     fare : ""
                     fare : ""
                 };
                 };
                 var secondFare = {
                 var secondFare = {
                     start : "",
                     start : "",
-                    end : 100000,
                     fare : ""
                     fare : ""
                 };
                 };
                 $scope.fareArray.push(firstFare);
                 $scope.fareArray.push(firstFare);
@@ -147,12 +151,12 @@ define([ 'app/app' ], function(app) {
 
 
         $scope.inputNum = function (data) {
         $scope.inputNum = function (data) {
             if(isNaN(data.num)){
             if(isNaN(data.num)){
-                data.num = 1;
+                data.num = null;
                 toaster.pop('warning', '提示', '请输入大于0的整数');
                 toaster.pop('warning', '提示', '请输入大于0的整数');
                 return false;
                 return false;
             }
             }
-            if(Number(data.num) < 0 || Number(data.num) % 1 != 0) {
-                data.num = 1;
+            if(Number(data.num) < 1 || Number(data.num) % 1 != 0) {
+                data.num = null;
                 toaster.pop('warning', '提示', '请输入大于0的整数');
                 toaster.pop('warning', '提示', '请输入大于0的整数');
                 return false;
                 return false;
             }
             }
@@ -177,21 +181,7 @@ define([ 'app/app' ], function(app) {
         $scope.loadCityData();
         $scope.loadCityData();
 
 
         $scope.repeatError = false;
         $scope.repeatError = false;
-        $scope.checkRuleName = function () {
-            console.log($scope.nameArray);
-            var k = 1;
-            angular.forEach($scope.nameArray, function (item) {
-                if (item == $scope.modifyRule.ruleName){
-                    k = 0;
-                    return;
-                }
-            });
-            if (k == 1){
-                $scope.repeatError = false;
-            }else {
-                $scope.repeatError = true;
-            }
-
+        $scope.checkRuleNameSize = function () {
             if ($scope.modifyRule.ruleName){
             if ($scope.modifyRule.ruleName){
                 var size = $scope.modifyRule.ruleName.replace(/[^x00-xFF]/g,'**').length;
                 var size = $scope.modifyRule.ruleName.replace(/[^x00-xFF]/g,'**').length;
                 if (size > 20) {
                 if (size > 20) {
@@ -201,7 +191,7 @@ define([ 'app/app' ], function(app) {
                 }
                 }
             }
             }
             if ($scope.nameError){
             if ($scope.nameError){
-                toaster.pop("error", "最多可输入10个文字")
+                toaster.pop("error", "规则名称,最多可输入10个文字")
                 return;
                 return;
             }
             }
         };
         };
@@ -211,11 +201,14 @@ define([ 'app/app' ], function(app) {
          * @param data
          * @param data
          */
          */
         $scope.addQtyFare = function (data) {
         $scope.addQtyFare = function (data) {
+            if (Number(data.start) == 1000000){
+                toaster.pop('warning', '提示', '已达到最大值1,000,000,请修改后再新增');
+                return;
+            }
             var index = $scope.fareArray.length-1;
             var index = $scope.fareArray.length-1;
             $scope.fareArray[index].end = "";
             $scope.fareArray[index].end = "";
             var fare = {
             var fare = {
                 start : data.end,
                 start : data.end,
-                end : 100000,
                 fare : ""
                 fare : ""
             };
             };
             $scope.fareArray.push(fare);
             $scope.fareArray.push(fare);
@@ -231,22 +224,19 @@ define([ 'app/app' ], function(app) {
         };
         };
 
 
         $scope.inputFare = function (data) {
         $scope.inputFare = function (data) {
-            // if(!data.fare) {
-            //     data.fare = 0;
-            //     return false;
-            // }
             if(isNaN(data.fare)){
             if(isNaN(data.fare)){
                 data.fare = "";
                 data.fare = "";
                 toaster.pop('warning', '提示', '运费必须是整数');
                 toaster.pop('warning', '提示', '运费必须是整数');
-                return false;
+                return;
             }
             }
             if(Number(data.fare) < 0 || Number(data.fare) % 1 != 0) {
             if(Number(data.fare) < 0 || Number(data.fare) % 1 != 0) {
                 data.fare = "";
                 data.fare = "";
                 toaster.pop('warning', '提示', '运费必须是整数');
                 toaster.pop('warning', '提示', '运费必须是整数');
-                return false;
+                return;
             }
             }
             if(Number(data.fare) > 100000){
             if(Number(data.fare) > 100000){
                 data.fare = 100000;
                 data.fare = 100000;
+                toaster.pop('warning', '提示', '请勿超过100,100');
             }
             }
             if(data.fare.length > 0){
             if(data.fare.length > 0){
                 data.fare = Number(data.fare);
                 data.fare = Number(data.fare);
@@ -254,10 +244,6 @@ define([ 'app/app' ], function(app) {
         };
         };
 
 
         $scope.inputUniform = function () {
         $scope.inputUniform = function () {
-            // if(!$scope.modifyRule.uniformPrice) {
-            //     $scope.modifyRule.uniformPrice = 0;
-            //     return false;
-            // }
             if(isNaN($scope.modifyRule.uniformPrice)){
             if(isNaN($scope.modifyRule.uniformPrice)){
                 $scope.modifyRule.uniformPrice = "";
                 $scope.modifyRule.uniformPrice = "";
                 toaster.pop('warning', '提示', '运费必须是整数');
                 toaster.pop('warning', '提示', '运费必须是整数');
@@ -281,127 +267,186 @@ define([ 'app/app' ], function(app) {
         };
         };
 
 
         $scope.inputQtyFare = function (data, index) {
         $scope.inputQtyFare = function (data, index) {
-            if(!data.start && !data.end) {
-                data.start = 1;
-                data.end = 1;
-                return false;
-            }
-            if(isNaN(data.start) || isNaN(data.end)) {
-                data.end = data.start + 1;
-                $scope.fareArray[index+1].start = data.end;
-                toaster.pop('warning', '提示', '金额必须是数字');
-                return false;
+            if(isNaN(data.end)) {
+                data.end = "";
+                toaster.pop('warning', '提示', '仅可输入数值');
+                return;
             }
             }
-            // if(Number(data.start) < 0) {
-            //     data.start = "";
-            //     toaster.pop('warning', '提示', '金额必须大于0');
-            //     return false;
-            // }
-            if(Number(data.end) < 0){
-                data.end = data.start + 1;
-                $scope.fareArray[index+1].start = Number(data.end);
-                toaster.pop('warning', '提示', '金额必须大于0');
-                return false;
+            if(Number(data.end) > 1000000){
+                data.end = "";
+                toaster.pop('warning', '提示', '请勿超过1,000,000');
+                return;
             }
             }
-            if(Number(data.end) <= Number(data.start)){
-                data.end = data.start + 1;
+            if(Number(data.end) <= Number(data.start)) {
+                data.end = "";
+                toaster.pop('warning', '提示', '输入值应大于该行起始金额');
+                return;
             }
             }
-            if(Number(data.start) > 100000){
-                data.start = 100000;
+            if ($scope.fareArray[index+1].end){
+                if($scope.fareArray[index+1].end.length != 0){
+                    if (Number(data.end) >= Number($scope.fareArray[index+1].end)){
+                        data.end = "";
+                        toaster.pop('warning', '提示', '输入值应小于下一行结束金额');
+                        return;
+                    }
+                }
             }
             }
-            if(Number(data.end) > 100000){
-                data.end = 100000;
+            if (data.end.length != 0){
+                data.end = Number(NumberService.toCeil(data.end, 2)) + "";
+                $scope.fareArray[index+1].start = data.end;
             }
             }
-            data.start = Number(data.start);
-            data.end = Number(data.end);
-            $scope.fareArray[index+1].start = Number(data.end);
         };
         };
 
 
-        $scope.saveDistributionRule = function (isAdd) {
-            if (!isAdd){
-                $scope.checkRuleName();
+        $scope.formatMoney = function (data) {
+            if (Number(data) > 100000){
+                data = 100000;
             }
             }
+            return Number(data);
+        };
+
+        /**
+         * 后台检查规则名是否重复
+         * @param newSave
+         * @returns {*|{url, method}}
+         */
+        var checkRepeatName = function (newSave) {
+            return DistributionRule.checkRuleName({id:$scope.modifyRule.id,ruleName:$scope.modifyRule.ruleName,newSave:newSave}, {}, function (data) {
+
+            })
+        };
+
+        /**
+         * 检查配送规则字段
+         * @returns {boolean}
+         */
+        var checkRuleError = function () {
             if (!$scope.modifyRule.shippingMethod){
             if (!$scope.modifyRule.shippingMethod){
                 toaster.pop('error', "请选择配送方式");
                 toaster.pop('error', "请选择配送方式");
-                return;
+                return false;
             }
             }
             if(!$scope.modifyRule.ruleName){
             if(!$scope.modifyRule.ruleName){
                 toaster.pop('error', "请填写规则名称");
                 toaster.pop('error', "请填写规则名称");
-                return;
+                return false;
             }
             }
             if($scope.nameError){
             if($scope.nameError){
-                toaster.pop('error', "最多可输入10个文字");
-                return;
+                toaster.pop('error', "规则名称,最多可输入10个文字");
+                return false;
             }
             }
             if($scope.repeatError){
             if($scope.repeatError){
                 toaster.pop('error', "该规则名称已存在,请修改");
                 toaster.pop('error', "该规则名称已存在,请修改");
-                return;
+                return false;
             }
             }
             /**
             /**
              * TODO 暂时注释,以后在放出来
              * TODO 暂时注释,以后在放出来
              */
              */
             // if(!$scope.orderType.normal && !$scope.orderType.preSale && !$scope.orderType.bill){
             // if(!$scope.orderType.normal && !$scope.orderType.preSale && !$scope.orderType.bill){
             //     toaster.pop('error', "请选择适用类型");
             //     toaster.pop('error', "请选择适用类型");
-            //     return;
+            //     return false;
             // }
             // }
             // if(!$scope.modifyRule.userType){
             // if(!$scope.modifyRule.userType){
             //     toaster.pop('error', "请选择适用类型");
             //     toaster.pop('error', "请选择适用类型");
-            //     return;
+            //     return false;
             // }
             // }
+            if (!$scope.mapArray){
+                toaster.pop('error', "您还没有选择任何地区");
+                return false;
+            }
             if ($scope.mapArray.length > 0){
             if ($scope.mapArray.length > 0){
-                $scope.modifyRule.qtyArea = angular.toJson($scope.mapArray);
+                var resultArray = convertArray($scope.mapArray);
+                $scope.modifyRule.qtyArea = angular.toJson(resultArray);
             }else {
             }else {
                 toaster.pop('error', "您还没有选择任何地区");
                 toaster.pop('error', "您还没有选择任何地区");
-                return;
+                return false;
+            }
+            if (!$scope.modifyRule.qtyArea){
+                toaster.pop('error', "您还没有选择任何地区");
+                return false;
             }
             }
             if ($scope.modifyRule.fareType == 1){
             if ($scope.modifyRule.fareType == 1){
-                if (!$scope.modifyRule.uniformPrice){
+                if (typeof($scope.modifyRule.uniformPrice) == 'undefined' ||
+                    typeof($scope.modifyRule.uniformPrice) == 'string'){
                     toaster.pop('error', "请输入统一规定运费");
                     toaster.pop('error', "请输入统一规定运费");
-                    return;
+                    return false;
                 }
                 }
             }
             }
             if ($scope.modifyRule.fareType == 2){
             if ($scope.modifyRule.fareType == 2){
                 var lackData = false;
                 var lackData = false;
                 angular.forEach($scope.fareArray, function (item) {
                 angular.forEach($scope.fareArray, function (item) {
-                    if (typeof(item.fare) == "string" || typeof (item.start)=="string" || typeof (item.end)=="string"){
-                        lackData = true;
-                        return;
+                    if (item.start.length == 0 || item.fare.length == 0){
+                        lackData = true
+                    }
+                    if (item.end){
+                        if (item.end.length == 0){
+                            lackData = true
+                        }
                     }
                     }
                 });
                 });
                 if (lackData){
                 if (lackData){
                     toaster.pop('error', "请完善计费方式");
                     toaster.pop('error', "请完善计费方式");
-                    return;
+                    return false;
                 }
                 }
                 $scope.modifyRule.qtyFare = angular.toJson($scope.fareArray);
                 $scope.modifyRule.qtyFare = angular.toJson($scope.fareArray);
             }
             }
+            return true;
+        };
 
 
+        /**
+         * isAdd false-另存为
+         * @param isAdd
+         */
+        $scope.saveDistributionRule = function (isAdd) {
+            if ($scope.modifyRule.ruleName){
+                $q.all([checkRepeatName(!isAdd).$promise]).then(function(data) {
+                    if (data){
+                        $scope.repeatError = data[0].data;
+                    }
+                    var valid = checkRuleError();
+                    if (!valid){
+                        return;
+                    }
 
 
-            //拼接适用类型
-            var typeArray = [];
-            if ($scope.orderType.normal){
-                typeArray.push(1201);
-            }
-            if ($scope.orderType.preSale){
-                typeArray.push(1202);
-            }
-            if ($scope.orderType.bill){
-                typeArray.push(1203);
-            }
-            $scope.modifyRule.orderType = typeArray.join("-");
+                    //拼接适用类型
+                    var typeArray = [];
+                    if ($scope.orderType.normal){
+                        typeArray.push(1201);
+                    }
+                    if ($scope.orderType.preSale){
+                        typeArray.push(1202);
+                    }
+                    if ($scope.orderType.bill){
+                        typeArray.push(1203);
+                    }
+                    $scope.modifyRule.orderType = typeArray.join("-");
 
 
-            DistributionRule.saveRule({isAdd:isAdd, isActive:$scope.isActive}, $scope.modifyRule , function (data) {
-                if (data){
-                    $scope.editFrame = false;
-                    $scope.tab = 'deliverRule';
-                    if (isAdd){
-                        toaster.pop('info', "保存成功");
-                    }else{
-                        toaster.pop('info', "新增规则成功");
+                    if (!$scope.modifyRule.qtyArea){
+                        toaster.pop('error', "您还没有选择任何地区");
+                        return;
                     }
                     }
-                }
-            },function (error) {
-                toaster.pop('error', "保存配送规则失败");
-            })
+
+                    if (valid){
+                        DistributionRule.saveRule({isAdd:isAdd, isActive:$scope.isActive}, $scope.modifyRule , function (data) {
+                            if (data.success){
+                                $scope.editFrame = false;
+                                $scope.tab = 'deliverRule';
+                                if (isAdd){
+                                    toaster.pop('info', "保存成功");
+                                }else{
+                                    toaster.pop('info', "新增规则成功");
+                                }
+                            }else {
+                                toaster.pop('error', data.message);
+                                return;
+                            }
+                        },function (error) {
+                            toaster.pop('error', "保存配送规则失败");
+                        })
+                    }
+                });
+            }else {
+                toaster.pop('error', "请填写规则名称");
+                return;
+            }
+
         };
         };
 
 
         // 切换计费类型
         // 切换计费类型
@@ -409,10 +454,39 @@ define([ 'app/app' ], function(app) {
             $scope.modifyRule.fareType = t;
             $scope.modifyRule.fareType = t;
         };
         };
 
 
+        var convertArray = function (array) {
+            var resultArray = angular.copy(array);
+            var indexArray = [];
+            angular.forEach(array, function (item, index) {
+                if (item.mainland && !item.province){
+                    indexArray.push(index);
+                    angular.forEach($scope.tree.$data, function (v) {
+                        if (v.label == item.mainland){
+                            angular.forEach(v.items, function (p) {
+                                var object = {
+                                    province : p.label
+                                };
+                                resultArray.push(object);
+                            })
+                        }
+                    });
+                }
+            });
+            var count = 0;
+            angular.forEach(indexArray, function (index) {
+                resultArray.splice(index - count, 1);
+                count++;
+            });
+            return resultArray;
+        };
+
         $scope.chooseBox = false;
         $scope.chooseBox = false;
         $scope.cancel = function () {
         $scope.cancel = function () {
             $scope.resetData($scope.tree.$data);
             $scope.resetData($scope.tree.$data);
-            $scope.tree.initData($scope.mapArray);
+            if ($scope.mapArray.length > 0){
+                var resultArray = convertArray($scope.mapArray);
+                $scope.tree.newInitData(resultArray);
+            }
             $scope.chooseBox = false;
             $scope.chooseBox = false;
         };
         };
 
 
@@ -424,6 +498,11 @@ define([ 'app/app' ], function(app) {
         $scope.resetData = function (items) {
         $scope.resetData = function (items) {
             angular.forEach(items, function (item) {
             angular.forEach(items, function (item) {
                 item.checked = false;
                 item.checked = false;
+                if (item.parent == null){
+                    item.folded = false;
+                }else {
+                    item.folded = true;
+                }
                 item.selectedNum = 0;
                 item.selectedNum = 0;
                 if (item.items){
                 if (item.items){
                     $scope.resetData(item.items);
                     $scope.resetData(item.items);
@@ -438,12 +517,17 @@ define([ 'app/app' ], function(app) {
                 toaster.pop("info", "您还没有选择任何地区");
                 toaster.pop("info", "您还没有选择任何地区");
                 return;
                 return;
             }
             }
-            $scope.tree.initData($scope.mapArray);
+            $scope.tree.newInitData($scope.mapArray);
             $scope.chooseBox = false;
             $scope.chooseBox = false;
         };
         };
 
 
         $scope.deleteMapItem = function (index) {
         $scope.deleteMapItem = function (index) {
             $scope.mapArray.splice(index, 1);
             $scope.mapArray.splice(index, 1);
+            $scope.resetData($scope.tree.$data);
+            if ($scope.mapArray.length > 0){
+                var resultArray = convertArray($scope.mapArray);
+                $scope.tree.newInitData(resultArray);
+            }
         };
         };
 
 
         /**
         /**
@@ -518,8 +602,8 @@ define([ 'app/app' ], function(app) {
         // 选择地区
         // 选择地区
         $scope.chooseAddress = function () {
         $scope.chooseAddress = function () {
             $scope.chooseBox = true;
             $scope.chooseBox = true;
-            $scope.tree = new TreeData($scope.cityData);
-            $scope.tree.initData($scope.mapArray);
+            $scope.tree = $scope.tree ? $scope.tree : new TreeData($scope.cityData);
+            $scope.tree.newInitData($scope.mapArray);
         }
         }
 
 
         /**
         /**
@@ -528,8 +612,8 @@ define([ 'app/app' ], function(app) {
          * @param isAdd
          * @param isAdd
          * @param active
          * @param active
          */
          */
-        $scope.changeActive = function (rule, isAdd, active) {
-            DistributionRule.saveRule({isAdd:isAdd,isActive:active}, rule, function (data) {
+        $scope.changeActive = function (ruleId, active) {
+            DistributionRule.changeActive({id:ruleId, isActive:active}, {}, function (data) {
                 if (data){
                 if (data){
                     $scope.ruleTableParams.reload();
                     $scope.ruleTableParams.reload();
                 }
                 }
@@ -576,70 +660,60 @@ define([ 'app/app' ], function(app) {
             var me = this;
             var me = this;
             me.$data = tree;
             me.$data = tree;
 
 
-            me.initData = function (initData) {
-                console.log(initData);
+            /**
+             * 根据已选地区映射到树对象中
+             * @param initData
+             */
+            me.newInitData = function (initData) {
+                if (initData){
+                     angular.forEach(me.$data, function (v) {
+                         me.initData(v.items, initData);
+                    })
+                }
+                me._updateParentsCheck(me.$data);
+            };
+
+            me.initData = function (data, initData) {
                 if(initData) {
                 if(initData) {
                     angular.forEach(initData, function (v) {
                     angular.forEach(initData, function (v) {
                         var p = {};
                         var p = {};
-                        for(var i in me.$data) {
-                            var value = me.$data[i];
-                            if(value.label == v.mainland) {
+                        for(var i in data) {
+                            var value = data[i];//获取单个省
+                            if(value.label == v.province) {
                                 p = value; break;
                                 p = value; break;
                             }
                             }
                         }
                         }
                         p.checked = true;
                         p.checked = true;
-                        if(v.province) {
+                        if(v.city) {
                             var c = {};
                             var c = {};
                             for(var i in p.items) {
                             for(var i in p.items) {
-                                var value = p.items[i];
-                                if(value.label == v.province) {
+                                var value = p.items[i];//获取单个市
+                                if(value.label == v.city) {
                                     c = value; break;
                                     c = value; break;
                                 }
                                 }
                             }
                             }
                             c.checked = true;
                             c.checked = true;
-                            if(v.city) {
-                                var a = {};
+                            if(v.area) {
                                 for(var i in c.items) {
                                 for(var i in c.items) {
-                                    var value = c.items[i];
-                                    if(value.label == v.city) {
-                                        a = value; break;
+                                    var a = c.items[i];//获取单个区
+                                    if(a.label == v.area) {
+                                        a.checked = true; break;
                                     }
                                     }
                                 }
                                 }
-                                a.checked = true;
-                                if (v.area){
-                                    for(var i in a.items){
-                                        var m = a.items[i];
-                                        if (m.label == v.area){
-                                            m.checked = true;break;
-                                        }
-                                    }
-                                }else {
-                                    angular.forEach(a.items, function (area) {
-                                        area.checked = true;
-                                    })
-                                }
-                            } else {
-                                angular.forEach(c.items, function (city) {
-                                    city.checked = true;
-                                    angular.forEach(city.items, function (area) {
-                                        area.checked = true;
-                                    })
+                            }else {
+                                angular.forEach(c.items, function (area) {
+                                    area.checked = true;
                                 })
                                 })
                             }
                             }
-                        } else {
-                            angular.forEach(p.items, function (province) {
-                                province.checked = true;
-                                angular.forEach(province.items, function (city) {
-                                    city.checked = true;
-                                    angular.forEach(city.items, function (area) {
-                                        area.checked = true;
-                                    })
+                        }else {
+                            angular.forEach(p.items, function (city) {
+                                city.checked = true;
+                                angular.forEach(city.items, function (area) {
+                                    area.checked = true;
                                 })
                                 })
                             })
                             })
                         }
                         }
                     })
                     })
-                    console.log(me.$data);
-                    me._updateParentsCheck(me.$data);
                 }
                 }
             };
             };
 
 
@@ -812,7 +886,7 @@ define([ 'app/app' ], function(app) {
                                 if (data.checked){
                                 if (data.checked){
                                     if(!data.semiChecked) {
                                     if(!data.semiChecked) {
                                         var second = {
                                         var second = {
-                                            mainland : v.label,
+                                            // mainland : v.label,
                                             province : data.label
                                             province : data.label
                                         };
                                         };
                                         addressArray.push(second);
                                         addressArray.push(second);
@@ -820,7 +894,7 @@ define([ 'app/app' ], function(app) {
                                         angular.forEach(data.items, function (item) {
                                         angular.forEach(data.items, function (item) {
                                             if(!item.semiChecked) {
                                             if(!item.semiChecked) {
                                                 var third = {
                                                 var third = {
-                                                    mainland : v.label,
+                                                    // mainland : v.label,
                                                     province : data.label,
                                                     province : data.label,
                                                     city : item.label
                                                     city : item.label
                                                 };
                                                 };
@@ -829,7 +903,7 @@ define([ 'app/app' ], function(app) {
                                                 angular.forEach(item.items, function (m) {
                                                 angular.forEach(item.items, function (m) {
                                                     if (m.checked){
                                                     if (m.checked){
                                                         var forth = {
                                                         var forth = {
-                                                            mainland : v.label,
+                                                            // mainland : v.label,
                                                             province : data.label,
                                                             province : data.label,
                                                             city : item.label,
                                                             city : item.label,
                                                             area : m.label
                                                             area : m.label

+ 2 - 2
src/main/webapp/resources/view/vendor/forstore/vendor_delivery_rule.html

@@ -386,7 +386,7 @@
 															<i ng-if="city.items" class="fa fa-fw" ng-class="city.folded?'fa-caret-right':'fa-caret-down'" ng-click="tree.toggleFold(city)"></i>
 															<i ng-if="city.items" class="fa fa-fw" ng-class="city.folded?'fa-caret-right':'fa-caret-down'" ng-click="tree.toggleFold(city)"></i>
 															<span ng-bind="::city.label" ng-click="tree.toggleFold(city)"></span><em ng-if="city.selectedNum!=0 && city.selectedNum!=city.items.length"></span>({{city.selectedNum}})</em>
 															<span ng-bind="::city.label" ng-click="tree.toggleFold(city)"></span><em ng-if="city.selectedNum!=0 && city.selectedNum!=city.items.length"></span>({{city.selectedNum}})</em>
 															<div class="check-1">
 															<div class="check-1">
-																<label class="check-act">
+																<label class="check-act" ng-class="{'intermediate': tree.isSemiChecked(city)}">
 																	<input type="checkbox" ng-model="city.checked" ng-change="tree.check(city)" id="{{city.label}}">
 																	<input type="checkbox" ng-model="city.checked" ng-change="tree.check(city)" id="{{city.label}}">
 																	<label for="{{city.label}}"></label>
 																	<label for="{{city.label}}"></label>
 																</label>
 																</label>
@@ -457,7 +457,7 @@
 						<div class="no-edit" style="margin-top: 6px; position: relative;">适用范围内统一运费
 						<div class="no-edit" style="margin-top: 6px; position: relative;">适用范围内统一运费
 							<em ng-bind="currencySymbol"></em>
 							<em ng-bind="currencySymbol"></em>
 							<div ng-bind="modifyRule.uniformPrice" style="width: 80px;overflow: hidden;float: left;
 							<div ng-bind="modifyRule.uniformPrice" style="width: 80px;overflow: hidden;float: left;
-    position: absolute;top: 0;left: 133px;"></div>
+    position: absolute;top: 0;left: 133px; white-space: nowrap;"></div>
 						</div>
 						</div>
 					</div>
 					</div>
 				</div>
 				</div>