|
|
@@ -46,6 +46,9 @@ define([ 'app/app' ], function(app) {
|
|
|
$scope.editRule = function (data) {
|
|
|
$scope.editFrame = true;
|
|
|
$scope.tab = 'editRule';
|
|
|
+ if ($scope.tree){
|
|
|
+ $scope.resetData($scope.tree.$data);
|
|
|
+ }
|
|
|
if (data){
|
|
|
$scope.modifyRule = data;
|
|
|
$scope.isModify = true;
|
|
|
@@ -68,6 +71,7 @@ define([ 'app/app' ], function(app) {
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
+ $scope.mapArray = [];
|
|
|
if ($scope.modifyRule.areas){
|
|
|
var data = angular.fromJson($scope.modifyRule.areas);
|
|
|
$scope.mapArray = data;
|
|
|
@@ -98,16 +102,18 @@ define([ 'app/app' ], function(app) {
|
|
|
}
|
|
|
});
|
|
|
|
|
|
+ $scope.mapArray = [];
|
|
|
+
|
|
|
$scope.fareArray = [];
|
|
|
var firstFare = {
|
|
|
start : 0,
|
|
|
- end : 0,
|
|
|
- fare : 0
|
|
|
+ end : "",
|
|
|
+ fare : ""
|
|
|
};
|
|
|
var secondFare = {
|
|
|
- start : 0,
|
|
|
- end : 0,
|
|
|
- fare : 0
|
|
|
+ start : "",
|
|
|
+ end : 100000,
|
|
|
+ fare : ""
|
|
|
};
|
|
|
$scope.fareArray.push(firstFare);
|
|
|
$scope.fareArray.push(secondFare);
|
|
|
@@ -117,7 +123,7 @@ define([ 'app/app' ], function(app) {
|
|
|
$scope.loadCityData = function () {
|
|
|
$http.get('static/js/prod/data/city.json').success(function (data) {
|
|
|
$scope.cityJson = data;
|
|
|
- $scope.cityData = convert($scope.cityJson);
|
|
|
+ $scope.cityData = convert($scope.cityJson, null);
|
|
|
}).error(function (res) {
|
|
|
console.log(res);
|
|
|
});
|
|
|
@@ -132,7 +138,7 @@ define([ 'app/app' ], function(app) {
|
|
|
$scope.checkRuleName = function () {
|
|
|
var k = 1;
|
|
|
angular.forEach($scope.nameArray, function (item) {
|
|
|
- if (item == $scope.rule.ruleName){
|
|
|
+ if (item == $scope.modifyRule.ruleName){
|
|
|
k = 0;
|
|
|
return;
|
|
|
}
|
|
|
@@ -149,10 +155,12 @@ define([ 'app/app' ], function(app) {
|
|
|
* @param data
|
|
|
*/
|
|
|
$scope.addQtyFare = function (data) {
|
|
|
+ var index = $scope.fareArray.length-1;
|
|
|
+ $scope.fareArray[index].end = "";
|
|
|
var fare = {
|
|
|
start : data.end,
|
|
|
- end : 0,
|
|
|
- fare : 0
|
|
|
+ end : 100000,
|
|
|
+ fare : ""
|
|
|
};
|
|
|
$scope.fareArray.push(fare);
|
|
|
};
|
|
|
@@ -167,64 +175,68 @@ define([ 'app/app' ], function(app) {
|
|
|
};
|
|
|
|
|
|
$scope.inputFare = function (data) {
|
|
|
- if(!data.fare) {
|
|
|
- data.fare = 0;
|
|
|
- return false;
|
|
|
- }
|
|
|
+ // if(!data.fare) {
|
|
|
+ // data.fare = 0;
|
|
|
+ // return false;
|
|
|
+ // }
|
|
|
if(isNaN(data.fare)){
|
|
|
- data.fare = 0;
|
|
|
+ data.fare = "";
|
|
|
toaster.pop('warning', '提示', '运费必须是整数');
|
|
|
return false;
|
|
|
}
|
|
|
if(Number(data.fare) < 0 || Number(data.fare) % 1 != 0) {
|
|
|
- data.fare = 0;
|
|
|
+ data.fare = "";
|
|
|
toaster.pop('warning', '提示', '运费必须是整数');
|
|
|
return false;
|
|
|
}
|
|
|
if(Number(data.fare) > 100000){
|
|
|
data.fare = 100000;
|
|
|
}
|
|
|
- data.fare = Number(data.fare);
|
|
|
+ if(data.fare.length > 0){
|
|
|
+ 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;
|
|
|
+ // if(!$scope.modifyRule.uniformPrice) {
|
|
|
+ // $scope.modifyRule.uniformPrice = 0;
|
|
|
+ // return false;
|
|
|
+ // }
|
|
|
+ if(isNaN($scope.modifyRule.uniformPrice)){
|
|
|
+ $scope.modifyRule.uniformPrice = "";
|
|
|
toaster.pop('warning', '提示', '运费必须是整数');
|
|
|
return false;
|
|
|
}
|
|
|
- if(Number($scope.rule.uniformPrice) < 0 || Number($scope.rule.uniformPrice) % 1 != 0) {
|
|
|
- data.fare = 0;
|
|
|
+ if(Number($scope.modifyRule.uniformPrice) < 0 || Number($scope.modifyRule.uniformPrice) % 1 != 0) {
|
|
|
+ $scope.modifyRule.uniformPrice = "";
|
|
|
toaster.pop('warning', '提示', '运费必须是整数');
|
|
|
return false;
|
|
|
}
|
|
|
- if(Number($scope.rule.uniformPrice) > 100000){
|
|
|
- $scope.rule.uniformPrice = 100000;
|
|
|
+ if(Number($scope.modifyRule.uniformPrice) > 100000){
|
|
|
+ $scope.modifyRule.uniformPrice = 100000;
|
|
|
+ }
|
|
|
+ if ($scope.modifyRule.uniformPrice.length != 0){
|
|
|
+ $scope.modifyRule.uniformPrice = Number($scope.modifyRule.uniformPrice);
|
|
|
}
|
|
|
- data.fare = Number($scope.rule.uniformPrice);
|
|
|
};
|
|
|
|
|
|
$scope.inputQtyFare = function (data, index) {
|
|
|
if(!data.start && !data.end) {
|
|
|
- data.start = 0;
|
|
|
- data.end = 0;
|
|
|
+ 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 = Number(data.end);
|
|
|
+ $scope.fareArray[index+1].start = data.end;
|
|
|
toaster.pop('warning', '提示', '金额必须是数字');
|
|
|
return false;
|
|
|
}
|
|
|
- if(Number(data.start) < 0) {
|
|
|
- data.start = 0;
|
|
|
- toaster.pop('warning', '提示', '金额必须大于0');
|
|
|
- return false;
|
|
|
- }
|
|
|
+ // 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);
|
|
|
@@ -246,9 +258,7 @@ define([ 'app/app' ], function(app) {
|
|
|
};
|
|
|
|
|
|
$scope.saveDistributionRule = function (isAdd) {
|
|
|
- console.log(angular.toJson($scope.fareArray));
|
|
|
- console.log(angular.toJson($scope.mapArray));
|
|
|
- $scope.checkRuleName();
|
|
|
+ // $scope.checkRuleName();
|
|
|
if (!$scope.modifyRule.shippingMethod){
|
|
|
toaster.pop('error', "请选择配送方式");
|
|
|
return;
|
|
|
@@ -261,15 +271,45 @@ define([ 'app/app' ], function(app) {
|
|
|
toaster.pop('error', "该规则名称已存在,请修改");
|
|
|
return;
|
|
|
}
|
|
|
- if(!$scope.orderType.normal && !$scope.orderType.preSale && !$scope.orderType.bill){
|
|
|
- toaster.pop('error', "请选择适用类型");
|
|
|
+ /**
|
|
|
+ * TODO 暂时注释,以后在放出来
|
|
|
+ */
|
|
|
+ // if(!$scope.orderType.normal && !$scope.orderType.preSale && !$scope.orderType.bill){
|
|
|
+ // toaster.pop('error', "请选择适用类型");
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+ // if(!$scope.modifyRule.userType){
|
|
|
+ // toaster.pop('error', "请选择适用类型");
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+ if ($scope.mapArray.length > 0){
|
|
|
+ $scope.modifyRule.qtyArea = angular.toJson($scope.mapArray);
|
|
|
+ }else {
|
|
|
+ toaster.pop('error', "您还没有选择任何地区");
|
|
|
return;
|
|
|
}
|
|
|
- if(!$scope.modifyRule.userType){
|
|
|
- toaster.pop('error', "请选择适用类型");
|
|
|
- return;
|
|
|
+ if ($scope.modifyRule.fareType == 1){
|
|
|
+ if (!$scope.modifyRule.uniformPrice){
|
|
|
+ toaster.pop('error', "请输入统一规定运费");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ($scope.modifyRule.fareType == 2){
|
|
|
+ var lackData = false;
|
|
|
+ angular.forEach($scope.fareArray, function (item) {
|
|
|
+ if (typeof(item.fare) == "string" || typeof (item.start)=="string" || typeof (item.end)=="string"){
|
|
|
+ lackData = true;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ if (lackData){
|
|
|
+ toaster.pop('error', "请完善计费方式");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ $scope.modifyRule.qtyFare = angular.toJson($scope.fareArray);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
//拼接适用类型
|
|
|
var typeArray = [];
|
|
|
if ($scope.orderType.normal){
|
|
|
@@ -282,13 +322,11 @@ define([ 'app/app' ], function(app) {
|
|
|
typeArray.push(1203);
|
|
|
}
|
|
|
$scope.modifyRule.orderType = typeArray.join("-");
|
|
|
- if ($scope.modifyRule.fareType == 2){
|
|
|
- $scope.modifyRule.qtyFare = angular.toJson($scope.fareArray);
|
|
|
- }
|
|
|
- $scope.modifyRule.qtyArea = angular.toJson($scope.mapArray);
|
|
|
+
|
|
|
DistributionRule.saveRule({isAdd:isAdd, isActive:$scope.isActive}, $scope.modifyRule , function (data) {
|
|
|
if (data){
|
|
|
- // $scope.loadDeliveryRule();
|
|
|
+ $scope.editFrame = false;
|
|
|
+ $scope.tab = 'deliverRule';
|
|
|
if (isAdd){
|
|
|
toaster.pop('info', "保存成功");
|
|
|
}else{
|
|
|
@@ -347,23 +385,67 @@ define([ 'app/app' ], function(app) {
|
|
|
* @param item
|
|
|
* @returns {Array}
|
|
|
*/
|
|
|
- function convert(item) {
|
|
|
+ function convert(item, parent) {
|
|
|
var arr = [];
|
|
|
if(angular.isArray(item)) {
|
|
|
angular.forEach(item, function (v) {
|
|
|
arr.push({
|
|
|
- label: v
|
|
|
+ label: v,
|
|
|
+ checked: false,
|
|
|
+ parent:parent
|
|
|
})
|
|
|
})
|
|
|
} else {
|
|
|
- angular.forEach(item, function (v, k) {
|
|
|
- arr.push({
|
|
|
- label: k,
|
|
|
- items: convert(v),
|
|
|
- selectedNum : 0,
|
|
|
- folded: true
|
|
|
+ if (parent == null){
|
|
|
+ var china = {
|
|
|
+ label:'中国大陆',
|
|
|
+ checked: false,
|
|
|
+ parent:null,
|
|
|
+ items:null,
|
|
|
+ selectedNum: 0,
|
|
|
+ folded: false
|
|
|
+ };
|
|
|
+ $scope.hmt = {
|
|
|
+ label:'港澳台',
|
|
|
+ checked: false,
|
|
|
+ parent:null,
|
|
|
+ items:null,
|
|
|
+ selectedNum:0,
|
|
|
+ folded: false
|
|
|
+ };
|
|
|
+ china.items = convert(item, china);
|
|
|
+ arr.push(china);
|
|
|
+ arr.push($scope.hmt);
|
|
|
+ }else {
|
|
|
+ angular.forEach(item, function (v, k) {
|
|
|
+ if (k != '香港特别行政区'){
|
|
|
+ var object = {
|
|
|
+ label: k,
|
|
|
+ checked: false,
|
|
|
+ parent:parent,
|
|
|
+ items: null,
|
|
|
+ selectedNum : 0,
|
|
|
+ folded: true
|
|
|
+ };
|
|
|
+ object.items = convert(v, object);
|
|
|
+ arr.push(object);
|
|
|
+ }else {
|
|
|
+ $scope.hmtChild = {
|
|
|
+ label: k,
|
|
|
+ checked: false,
|
|
|
+ parent:$scope.hmt,
|
|
|
+ items: null,
|
|
|
+ selectedNum : 0,
|
|
|
+ folded: true
|
|
|
+ }
|
|
|
+ $scope.hmtChild.items = convert(v, $scope.hmtChild);
|
|
|
+ var hmtArr = [];
|
|
|
+ hmtArr.push($scope.hmtChild);
|
|
|
+ $scope.hmt.items = hmtArr;
|
|
|
+ // arr.push($scope.hmtChild);
|
|
|
+ }
|
|
|
})
|
|
|
- })
|
|
|
+ }
|
|
|
}
|
|
|
return arr;
|
|
|
}
|
|
|
@@ -429,46 +511,68 @@ define([ 'app/app' ], function(app) {
|
|
|
me.$data = tree;
|
|
|
|
|
|
me.initData = function (initData) {
|
|
|
+ console.log(initData);
|
|
|
if(initData) {
|
|
|
angular.forEach(initData, function (v) {
|
|
|
var p = {};
|
|
|
for(var i in me.$data) {
|
|
|
var value = me.$data[i];
|
|
|
- if(value.label == v.province) {
|
|
|
+ if(value.label == v.mainland) {
|
|
|
p = value; break;
|
|
|
}
|
|
|
}
|
|
|
p.checked = true;
|
|
|
- if(v.city) {
|
|
|
+ if(v.province) {
|
|
|
var c = {};
|
|
|
for(var i in p.items) {
|
|
|
var value = p.items[i];
|
|
|
- if(value.label == v.city) {
|
|
|
+ if(value.label == v.province) {
|
|
|
c = value; break;
|
|
|
}
|
|
|
}
|
|
|
c.checked = true;
|
|
|
- if(v.area) {
|
|
|
+ if(v.city) {
|
|
|
+ var a = {};
|
|
|
for(var i in c.items) {
|
|
|
var value = c.items[i];
|
|
|
- if(value.label == v.area) {
|
|
|
- value.checked = true; break;
|
|
|
+ if(value.label == v.city) {
|
|
|
+ a = value; 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 (area) {
|
|
|
- area.checked = true;
|
|
|
+ angular.forEach(c.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;
|
|
|
+ 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;
|
|
|
+ })
|
|
|
})
|
|
|
})
|
|
|
}
|
|
|
})
|
|
|
+ console.log(me.$data);
|
|
|
me._updateParentsCheck(me.$data);
|
|
|
}
|
|
|
};
|
|
|
@@ -480,15 +584,15 @@ define([ 'app/app' ], function(app) {
|
|
|
* @param folded
|
|
|
*/
|
|
|
me.toggleFold = function (item, folded) {
|
|
|
- item.folded = angular.isUndefined(folded) ? !item.folded : folded;
|
|
|
- }
|
|
|
-
|
|
|
- me.getLastItems = function (item) {
|
|
|
- while (item.items){
|
|
|
- item = item.items;
|
|
|
+ var f = item.folded;
|
|
|
+ if (item.items){
|
|
|
+ me._resetFold(me.$data);
|
|
|
+ if (item.parent != null){
|
|
|
+ me._unFoldThisItem(item.parent);
|
|
|
+ }
|
|
|
}
|
|
|
- return item;
|
|
|
- };
|
|
|
+ item.folded = angular.isUndefined(folded) ? !f : folded;
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* 折叠文件夹
|
|
|
@@ -511,9 +615,39 @@ define([ 'app/app' ], function(app) {
|
|
|
* @param item
|
|
|
*/
|
|
|
me.check = function (item) {
|
|
|
+ if (item.items){
|
|
|
+ me._resetFold(me.$data);
|
|
|
+ me._unFoldThisItem(item);
|
|
|
+ }
|
|
|
me._updateChildrenCheck(item);
|
|
|
me._updateParentsCheck(me.$data);
|
|
|
- // me.getChecked();
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 展开当前列表和父列表
|
|
|
+ * @param item
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+ me._unFoldThisItem = function (item) {
|
|
|
+ me.unFold(item);
|
|
|
+ if (item.parent != null){
|
|
|
+ me._unFoldThisItem(item.parent);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 折叠全部
|
|
|
+ * @param items
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+ me._resetFold = function (items) {
|
|
|
+ angular.forEach(items, function (v) {
|
|
|
+ v.folded = true;
|
|
|
+ if (v.items){
|
|
|
+ me._resetFold(v.items);
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -604,7 +738,7 @@ define([ 'app/app' ], function(app) {
|
|
|
if(v.checked) {
|
|
|
if(!v.semiChecked) {
|
|
|
var first = {
|
|
|
- province : v.label
|
|
|
+ mainland : v.label
|
|
|
};
|
|
|
addressArray.push(first);
|
|
|
} else {
|
|
|
@@ -612,19 +746,30 @@ define([ 'app/app' ], function(app) {
|
|
|
if (data.checked){
|
|
|
if(!data.semiChecked) {
|
|
|
var second = {
|
|
|
- province : v.label,
|
|
|
- city : data.label
|
|
|
+ mainland : v.label,
|
|
|
+ province : data.label
|
|
|
};
|
|
|
addressArray.push(second);
|
|
|
}else {
|
|
|
angular.forEach(data.items, function (item) {
|
|
|
- if (item.checked){
|
|
|
+ if(!item.semiChecked) {
|
|
|
var third = {
|
|
|
- province : v.label,
|
|
|
- city : data.label,
|
|
|
- area : item.label
|
|
|
+ mainland : v.label,
|
|
|
+ province : data.label,
|
|
|
+ city : item.label
|
|
|
};
|
|
|
addressArray.push(third);
|
|
|
+ }else {
|
|
|
+ angular.forEach(item.items, function (m) {
|
|
|
+ if (m.checked){
|
|
|
+ var forth = {
|
|
|
+ mainland : v.label,
|
|
|
+ province : data.label,
|
|
|
+ city : item.label
|
|
|
+ };
|
|
|
+ addressArray.push(forth);
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
})
|
|
|
}
|