|
|
@@ -29,6 +29,22 @@ define([ 'app/app' ], function(app) {
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
+ if ($scope.rule.areas){
|
|
|
+ var data = angular.fromJson($scope.rule.areas);
|
|
|
+ $scope.mapArray = data;
|
|
|
+ $scope.qtyAreaArray = [];
|
|
|
+ angular.forEach(data, function (item) {
|
|
|
+ if (item.province){
|
|
|
+ $scope.qtyAreaArray.push(item.province);
|
|
|
+ }
|
|
|
+ if (item.city){
|
|
|
+ $scope.qtyAreaArray.push(item.city);
|
|
|
+ }
|
|
|
+ if (item.area){
|
|
|
+ $scope.qtyAreaArray.push(item.area);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
}else {
|
|
|
$scope.isModify = false;
|
|
|
$scope.rule = {};
|
|
|
@@ -74,17 +90,38 @@ define([ 'app/app' ], function(app) {
|
|
|
|
|
|
$scope.loadCityData = function () {
|
|
|
$http.get('static/js/prod/data/city.json').success(function (data) {
|
|
|
- var time1 = new Date().getTime();
|
|
|
- $scope.cityData = convert(data);
|
|
|
- var time2 = new Date().getTime();
|
|
|
- console.log(time1+"=="+time2);
|
|
|
- console.log(time2-time1);
|
|
|
+ $scope.cityJson = data;
|
|
|
+ $scope.cityData = convert($scope.cityJson);
|
|
|
+ // $scope.tree = new TreeData($scope.cityData);
|
|
|
}).error(function (res) {
|
|
|
console.log(res);
|
|
|
});
|
|
|
+
|
|
|
+ DistributionRule.findAllRuleName({},{},function (data) {
|
|
|
+ $scope.nameArray = data;
|
|
|
+ })
|
|
|
};
|
|
|
$scope.loadCityData();
|
|
|
|
|
|
+ $scope.repeatError = false;
|
|
|
+ $scope.checkRuleName = function () {
|
|
|
+ var k = 1;
|
|
|
+ angular.forEach($scope.nameArray, function (item) {
|
|
|
+ if (item == $scope.rule.ruleName){
|
|
|
+ k = 0;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ if (k == 1){
|
|
|
+ $scope.repeatError = false;
|
|
|
+ }else {
|
|
|
+ $scope.repeatError = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ };
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
$scope.addQtyFare = function (data) {
|
|
|
var fare = {
|
|
|
start : data.end,
|
|
|
@@ -120,6 +157,27 @@ define([ 'app/app' ], function(app) {
|
|
|
data.fare = Number(data.fare);
|
|
|
};
|
|
|
|
|
|
+ $scope.inputUniform = function () {
|
|
|
+ if(!$scope.rule.uniformPrice) {
|
|
|
+ $scope.rule.uniformPrice = 0;
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if(isNaN($scope.rule.uniformPrice)){
|
|
|
+ $scope.rule.uniformPrice = 0;
|
|
|
+ toaster.pop('warning', '提示', '运费必须是整数');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if(Number($scope.rule.uniformPrice) < 0 || Number($scope.rule.uniformPrice) % 1 != 0) {
|
|
|
+ data.fare = 0;
|
|
|
+ toaster.pop('warning', '提示', '运费必须是整数');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if(Number($scope.rule.uniformPrice) > 100000){
|
|
|
+ $scope.rule.uniformPrice = 100000;
|
|
|
+ }
|
|
|
+ data.fare = Number($scope.rule.uniformPrice);
|
|
|
+ };
|
|
|
+
|
|
|
$scope.inputQtyFare = function (data, index) {
|
|
|
if(!data.start && !data.end) {
|
|
|
data.start = 0;
|
|
|
@@ -159,6 +217,8 @@ define([ 'app/app' ], function(app) {
|
|
|
|
|
|
$scope.saveDistributionRule = function (isAdd) {
|
|
|
console.log(angular.toJson($scope.fareArray));
|
|
|
+ console.log(angular.toJson($scope.mapArray));
|
|
|
+ $scope.checkRuleName();
|
|
|
if (!$scope.rule.shippingMethod){
|
|
|
toaster.pop('error', "请选择配送方式");
|
|
|
return;
|
|
|
@@ -167,6 +227,10 @@ define([ 'app/app' ], function(app) {
|
|
|
toaster.pop('error', "请填写规则名称");
|
|
|
return;
|
|
|
}
|
|
|
+ if($scope.repeatError){
|
|
|
+ toaster.pop('error', "该规则名称已存在,请修改");
|
|
|
+ return;
|
|
|
+ }
|
|
|
if(!$scope.orderType.normal && !$scope.orderType.preSale && !$scope.orderType.bill){
|
|
|
toaster.pop('error', "请选择适用类型");
|
|
|
return;
|
|
|
@@ -175,10 +239,6 @@ define([ 'app/app' ], function(app) {
|
|
|
toaster.pop('error', "请选择适用类型");
|
|
|
return;
|
|
|
}
|
|
|
- if($scope.repeatError){
|
|
|
- toaster.pop('error', "该规则名称已存在,请修改");
|
|
|
- return;
|
|
|
- }
|
|
|
|
|
|
//拼接适用类型
|
|
|
var typeArray = [];
|
|
|
@@ -193,9 +253,15 @@ define([ 'app/app' ], function(app) {
|
|
|
}
|
|
|
$scope.rule.orderType = typeArray.join("-");
|
|
|
$scope.rule.qtyFare = angular.toJson($scope.fareArray);
|
|
|
+ $scope.rule.qtyArea = angular.toJson($scope.mapArray);
|
|
|
DistributionRule.saveRule({isAdd:isAdd, isActive:$scope.isActive}, $scope.rule , function (data) {
|
|
|
if (data){
|
|
|
// $scope.loadDeliveryRule();
|
|
|
+ if (isAdd){
|
|
|
+ toaster.pop('info', "保存成功");
|
|
|
+ }else{
|
|
|
+ toaster.pop('info', "新增规则成功");
|
|
|
+ }
|
|
|
}
|
|
|
},function (error) {
|
|
|
toaster.pop('error', "保存配送规则失败");
|
|
|
@@ -213,8 +279,38 @@ define([ 'app/app' ], function(app) {
|
|
|
|
|
|
$scope.chooseBox = false;
|
|
|
$scope.cancel = function () {
|
|
|
+ $scope.cityData = convert($scope.cityJson);
|
|
|
+ // $scope.tree = new TreeData($scope.cityData);
|
|
|
$scope.chooseBox = false;
|
|
|
};
|
|
|
+ $scope.showSelectedData = function () {
|
|
|
+ $scope.mapArray = [];
|
|
|
+ $scope.mapArray = $scope.tree.getChecked();
|
|
|
+ if ($scope.mapArray.length == 0){
|
|
|
+ toaster.pop("info", "您还没有选择任何地区");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ $scope.chooseBox = false;
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.deleteMapItem = function (index) {
|
|
|
+ $scope.mapArray.splice(index, 1);
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.containsArea = function (value) {
|
|
|
+ var k = 1;
|
|
|
+ angular.forEach($scope.qtyAreaArray, function (item) {
|
|
|
+ if (value == item){
|
|
|
+ k = 0;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ if (k == 1){
|
|
|
+ return false;
|
|
|
+ }else {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
/**
|
|
|
* 将本地地址数据转化为可用的结构
|
|
|
* @param item
|
|
|
@@ -225,7 +321,8 @@ define([ 'app/app' ], function(app) {
|
|
|
if(angular.isArray(item)) {
|
|
|
angular.forEach(item, function (v) {
|
|
|
arr.push({
|
|
|
- label: v
|
|
|
+ label: v,
|
|
|
+ checked: $scope.containsArea(v)
|
|
|
})
|
|
|
})
|
|
|
} else {
|
|
|
@@ -233,7 +330,9 @@ define([ 'app/app' ], function(app) {
|
|
|
arr.push({
|
|
|
label: k,
|
|
|
items: convert(v),
|
|
|
- folded: true
|
|
|
+ selectedNum : 0,
|
|
|
+ folded: true,
|
|
|
+ checked: $scope.containsArea(k)
|
|
|
})
|
|
|
})
|
|
|
}
|
|
|
@@ -243,11 +342,8 @@ define([ 'app/app' ], function(app) {
|
|
|
$scope.chooseAddress = function () {
|
|
|
$scope.chooseBox = true;
|
|
|
function getData() {
|
|
|
- var time1 = new Date().getTime();
|
|
|
$scope.tree = new TreeData($scope.cityData);
|
|
|
- var time2 = new Date().getTime();
|
|
|
- console.log(time1+"=="+time2);
|
|
|
- console.log(time2-time1);
|
|
|
+ // $scope.tree._updateParentsCheck($scope.tree.$data);
|
|
|
// $http.get('static/js/prod/data/city.json').success(function (data) {
|
|
|
// // console.log(convert(data));
|
|
|
// $scope.tree = new TreeData(convert(data));
|
|
|
@@ -259,7 +355,7 @@ define([ 'app/app' ], function(app) {
|
|
|
}
|
|
|
}]);
|
|
|
// 地区选择
|
|
|
- app.register.factory('TreeData', function () {
|
|
|
+ app.register.factory('TreeData', function(){
|
|
|
return function (tree) {
|
|
|
var me = this;
|
|
|
me.$data = tree;
|
|
|
@@ -296,6 +392,7 @@ define([ 'app/app' ], function(app) {
|
|
|
me.check = function (item) {
|
|
|
me._updateChildrenCheck(item);
|
|
|
me._updateParentsCheck(me.$data);
|
|
|
+ // me.getChecked();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -305,6 +402,8 @@ define([ 'app/app' ], function(app) {
|
|
|
*/
|
|
|
me._updateChildrenCheck = function (item) {
|
|
|
if(item.items) {
|
|
|
+ // console.log(item.items.length);
|
|
|
+ item.selectedNum = item.checked ? item.items.length : 0;
|
|
|
angular.forEach(item.items, function (v) {
|
|
|
v.checked = item.checked;
|
|
|
me._updateChildrenCheck(v);
|
|
|
@@ -327,6 +426,7 @@ define([ 'app/app' ], function(app) {
|
|
|
})
|
|
|
}
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
* 判断是否有选中的子树
|
|
|
* @param item
|
|
|
@@ -335,12 +435,17 @@ define([ 'app/app' ], function(app) {
|
|
|
*/
|
|
|
me._hasCheckedChildren = function (item) {
|
|
|
var result = false;
|
|
|
+ var count = 0;
|
|
|
angular.forEach(item.items, function (v) {
|
|
|
result = result || v.checked;
|
|
|
+ if (v.checked){
|
|
|
+ count++;
|
|
|
+ }
|
|
|
if(v.items && !result) {
|
|
|
result = result || me._hasCheckedChildren(v);
|
|
|
}
|
|
|
})
|
|
|
+ item.selectedNum = count;
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
@@ -374,9 +479,42 @@ define([ 'app/app' ], function(app) {
|
|
|
* 获取所有选中的数据
|
|
|
*/
|
|
|
me.getChecked = function () {
|
|
|
-
|
|
|
+ var addressArray = [];
|
|
|
+ angular.forEach(me.$data, function (v) {
|
|
|
+ if(v.checked) {
|
|
|
+ if(!v.semiChecked) {
|
|
|
+ var first = {
|
|
|
+ province : v.label
|
|
|
+ };
|
|
|
+ addressArray.push(first);
|
|
|
+ } else {
|
|
|
+ angular.forEach(v.items, function (data) {
|
|
|
+ if (data.checked){
|
|
|
+ if(!data.semiChecked) {
|
|
|
+ var second = {
|
|
|
+ province : v.label,
|
|
|
+ city : data.label
|
|
|
+ };
|
|
|
+ addressArray.push(second);
|
|
|
+ }else {
|
|
|
+ angular.forEach(data.items, function (item) {
|
|
|
+ if (item.checked){
|
|
|
+ var third = {
|
|
|
+ province : v.label,
|
|
|
+ city : data.label,
|
|
|
+ area : item.label
|
|
|
+ };
|
|
|
+ addressArray.push(third);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return addressArray;
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
})
|
|
|
});
|