Browse Source

git-svn-id: svn+ssh://10.10.101.21/source/platform/platform-b2b@294 f3bf4e98-0cf0-11e4-a00c-a99a8b9d557d

administrator 11 years ago
parent
commit
29bb3e4786

+ 66 - 23
src/main/webapp/resources/js/index/app.js

@@ -262,31 +262,31 @@ define([ 'toaster', 'charts', 'ngTable', 'common/services', 'service/PurcOrder',
 			}
 		};
 	});
+	var isNumber = function(n) {
+        return !isNaN(parseFloat(n)) && isFinite(n);
+    };
+	var parseParams = function(requestParams) {
+        // parse url params
+        for (var key in requestParams) {
+            if (key.indexOf('[') >= 0) {
+                var params = key.split(/\[(.*)\]/), value = requestParams[key], lastKey = '';
+                angular.forEach(params.reverse(), function(name) {
+                    if (name != '') {
+                        var v = value;
+                        value = {};
+                        value[lastKey = name] = isNumber(v) ? parseFloat(v) : v;
+                    }
+                });
+                requestParams[lastKey] = angular.extend(requestParams[lastKey] || {}, value[lastKey]);
+                delete requestParams[key];
+            } else {
+                requestParams[key] = isNumber(requestParams[key]) ? parseFloat(requestParams[key]) : requestParams[key];
+            }
+        }
+        return requestParams;
+	};
 	app.controller('SaleOrderCtrl', function($scope, $filter, PurcOrderItem, ngTableParams, 
 		toaster, ReportService){
-		var isNumber = function(n) {
-            return !isNaN(parseFloat(n)) && isFinite(n);
-        };
-		var parseParams = function(requestParams) {
-            // parse url params
-            for (var key in requestParams) {
-                if (key.indexOf('[') >= 0) {
-                    var params = key.split(/\[(.*)\]/), value = requestParams[key], lastKey = '';
-                    angular.forEach(params.reverse(), function(name) {
-                        if (name != '') {
-                            var v = value;
-                            value = {};
-                            value[lastKey = name] = isNumber(v) ? parseFloat(v) : v;
-                        }
-                    });
-                    requestParams[lastKey] = angular.extend(requestParams[lastKey] || {}, value[lastKey]);
-                    delete requestParams[key];
-                } else {
-                    requestParams[key] = isNumber(requestParams[key]) ? parseFloat(requestParams[key]) : requestParams[key];
-                }
-            }
-            return requestParams;
-		};
 		$scope.tableParams = new ngTableParams({
 			page : 1, // show first page
 			count : 5, // count per page
@@ -348,5 +348,48 @@ define([ 'toaster', 'charts', 'ngTable', 'common/services', 'service/PurcOrder',
 			ReportService.print(order.vendUU, 'purchase', '{purc_orders.pu_id}=' + order.id, '销售订单-' + order.code);
 		};
 	});
+	app.controller('SaleChangeCtrl', function($scope, $filter, PurcChange, ngTableParams, toaster){
+		$scope.tableParams = new ngTableParams({
+			page : 1, 
+			count : 5,
+			sorting: {
+                date: 'desc' 
+            },
+            filter: {
+            	'status' : 200
+            }
+		}, {
+			total : 0, 
+			counts: [5, 10, 25, 50],
+			getData : function($defer, params) {
+				PurcChange.get(parseParams(params.url()), function(page){
+					if(page) {
+						params.total(page.totalElements);
+						$defer.resolve(page.content);
+					}
+				});
+			}
+		});
+		
+		$scope.getOrderTotal = function(items) {
+			var sum = 0;
+			angular.forEach(items, function(item){
+				sum += item.newQty * item.newPrice;
+			});
+			return sum;
+		};
+		
+		$scope.onReplyClick = function(item) {
+			if(item.agreed) {
+				var reply = {id: item.id, agreed: item.agreed, replyRemark: item.replyRemark}; 
+				PurcChange.reply({changeId: item.id}, reply, function(){
+					toaster.pop('info', '提示', '回复成功');
+					$scope.tableParams.reload();
+				}, function(response){
+					toaster.pop('error', '回复失败', response.data);
+				});
+			}
+		};
+	});
 	return app;
 });

+ 10 - 0
src/main/webapp/resources/js/index/services/PurcOrder.js

@@ -14,5 +14,15 @@ define([ 'ngResource' ], function() {
 				}
 			}
 		});
+	}).factory('PurcChange', function($resource) {
+		return $resource('sale/changes/:id', {
+			reply: {
+				url: 'sale/changes/:changeId/reply',
+				method: 'POST',
+				params: {
+					changeId: 'changeId'
+				}
+			}
+		});
 	});
 });

+ 1 - 1
src/main/webapp/resources/tpl/index/home/right.html

@@ -40,7 +40,7 @@
 				<li class="doing">
 					<ul class="list-unstyled">
 						<li><a href="#">待发货(0)</a></li>
-						<li><a href="#">变更中(0)</a></li>
+						<li><a ui-sref="sale.order.change">变更中(2)</a></li>
 					</ul>
 				</li>
 				<li class="end">

+ 219 - 0
src/main/webapp/resources/tpl/index/sale/change.html

@@ -0,0 +1,219 @@
+<style>
+.order-table .header>th {
+	height: 38px;
+	text-align: center;
+	background: #f5f5f5;
+	border-top: 1px solid #e8e8e8;
+	border-bottom: 1px solid #e8e8e8;
+}
+
+.order-table .sep-row {
+	height: 10px;
+}
+
+.order-table .selector {
+	vertical-align: middle;
+	margin: 0 0 2px 0;
+}
+
+.toolbar label {
+	margin-right: 10px;
+	margin-bottom: 0;
+}
+
+.toolbar .select_all {
+	margin: 0 6px 0 10px;
+	line-height: 20px;
+}
+
+.toolbar .btn {
+	-moz-border-radius: 2px;
+	margin-right: 5px;
+	border: 1px solid #dcdcdc;
+	border-radius: 2px;
+	-webkit-border-radius: 2px;
+}
+
+.order-table .order-hd {
+	background: #f5f5f5;
+	height: 40px;
+	line-height: 40px;
+}
+
+.order-table .order-hd td.first {
+	padding-left: 20px;
+}
+
+.order-table .order-hd .order-main span {
+	margin-right: 8px;
+}
+
+.order-table .order-hd .order-code {
+	font-style: normal;
+	font-family: verdana;
+}
+
+.order-table .order-hd .order-sum {
+	padding: 0 5px;
+}
+
+.order-table>tbody {
+	border: 1px solid transparent;
+}
+
+.order-table>tbody:hover {
+	border-color: #ccc;
+}
+
+.order-table .operates {
+	display: none;
+}
+
+.order-table>tbody:hover .operates {
+	display: block;
+}
+
+.order-table .order-bd {
+	border-bottom: 1px solid #e6e6e6;
+}
+
+.order-table .order-bd>td {
+	padding: 10px 5px;
+	vertical-align: top;
+	position: relative;
+}
+
+.order-table .order-bd .product {
+	padding-left: 20px;
+}
+
+.input-xs,.input-group-xs>.form-control,.input-group-xs>.input-group-addon,.input-group-xs>.input-group-btn>.btn
+	{
+	height: 26px;
+	padding: 0 5px;
+	font-size: 12px;
+	line-height: 1.5;
+	border-radius: 3px;
+}
+
+.input-group-xs .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn:not
+	 (:first-child ),.input-group-btn:last-child>.btn {
+	border-top-left-radius: 0;
+	border-bottom-left-radius: 0;
+}
+
+.input-trigger .dropdown-menu tr>td>.btn {
+	border-radius: 0;
+	border: none;
+}
+</style>
+<div ng-controller="SaleOrderCtrl" class="block">
+	<div class="loading in">
+		<i></i>
+	</div>
+	<div class="condition block">
+		<div class="state-wrap">
+			<ul class="list-unstyled list-inline">
+				<li class="first"><a href="#"><span>所有订单</span></a></li>
+				<li><a href="#"><span>待回复</span><em class="tm-h">6</em></a></li>
+				<li class="active"><a href="#"><span>变更中</span><em class="tm-h">2</em></a></li>
+				<li><a href="#"><span>待发货</span><em class="tm-h">0</em></a></li>
+				<li><a href="#"><span>退货中</span><em class="tm-h">0</em></a></li>
+			</ul>
+		</div>
+	</div>
+	<table class="order-table block" ng-table="tableParams">
+		<thead>
+			<tr class="header">
+				<th>商品</th>
+				<th>单价</th>
+				<th width="100">数量</th>
+				<th width="120">交货日期</th>
+				<th width="180">变更内容</th>
+				<th width="60">操作</th>
+			</tr>
+			<tr class="sep-row">
+				<td colspan="6"></td>
+			</tr>
+			<tr class="toolbar toolbar-top">
+				<td colspan="6">
+					<div>
+						<label><input type="checkbox" class="selector select_all"
+							ng-model="selectAll">全选</label> <a href="javascript:void(0)"
+							class="btn btn-default btn-xs">批量回复</a>
+					</div> <!-- 分页 -->
+				</td>
+			</tr>
+			<tr class="sep-row">
+				<td colspan="6"></td>
+			</tr>
+		</thead>
+		<tbody ng-repeat="change in $data">
+			<tr class="order-hd">
+				<td class="first">
+					<div class="order-main">
+						<span> <input type="checkbox" class="selector"
+							ng-model="change.$selected">
+						</span> <span class="text-num text-bold" title="{{change.date}}"
+							ng-bind="change.date"></span> <span>订单号:<a
+							class="text-num" ng-bind="change.code" href="#"></a></span>
+					</div>
+				</td>
+				<td colspan="3"><a href="#"
+					ng-bind="change.order.enterprise.enName"></a></td>
+				<td colspan="1" class="order-sum">{{change.newCurrency}}: <span
+					ng-bind="getOrderTotal(change.changeItems) | number : 2"
+					class="text-num text-bold"></span>
+				</td>
+				<td colspan="1" class="text-center">
+					<div class="operates">
+						<a href="#" class="text-muted" title="打印"><i
+							class="fa fa-print fa-lg"></i></a>
+					</div>
+				</td>
+			</tr>
+			<tr class="order-bd" ng-repeat="item in change.changeItems">
+				<td class="product">
+					<div class="text-num text-bold">
+						<a href="#" ng-bind="item.newProduct.code"></a>
+					</div>
+					<div>
+						<a href="#" ng-bind="item.newProduct.title"></a>
+					</div>
+					<div class="text-muted" title="{{item.newProduct.spec}}"
+						ng-bind="item.newProduct.spec"></div>
+				</td>
+				<td class="text-center text-num" title="{{item.newQrice}}"
+					ng-bind="item.newPrice"></td>
+				<td class="text-center">
+					<div class="text-num" title="{{item.qty}}" ng-bind="item.newQty"></div>
+					<div class="text-muted" ng-bind="item.newProduct.unit"></div>
+				</td>
+				<td class="text-center br-l">
+					<div class="text-num" ng-bind="item.newDelivery"></div> <br>
+				</td>
+				<td class="text-center br-l">
+					<div ng-bind="item.description"></div>
+					<div style="margin: 0 auto" ng-show="item.$editing">
+						<input type="text" ng-model="item.replyRemark"
+							class="form-control input-xs" placeholder="回复备注">
+					</div>
+				</td>
+				<td class="text-center br-l">
+					<div ng-show="!item.$editing">
+						<a ng-click="item.$editing=!item.$editing">回复</a>
+					</div>
+					<div ng-show="item.$editing">
+						<div>
+							<a ng-click="item.$editing=!item.$editing">取消</a>
+						</div>
+						<br>
+						<div>
+							<a ng-click="onReplyClick(item)" class="text-inverse">确认回复</a>
+						</div>
+					</div>
+				</td>
+			</tr>
+		</tbody>
+	</table>
+</div>

+ 2 - 2
src/main/webapp/resources/tpl/index/sale/index.html

@@ -29,9 +29,9 @@
 				</li>
 				<li>
 					<div class="title">
-						<a href="#">变更中</a>
+						<a ui-sref="sale.order.change">变更中</a>
 					</div>
-					<div class="count">0</div>
+					<div class="count">2</div>
 				</li>
 				<li>
 					<div class="title">

+ 2 - 1
src/main/webapp/resources/tpl/index/sale/order.html

@@ -97,7 +97,7 @@
 }
 
 .input-group-xs .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn:not
-	(:first-child ),.input-group-btn:last-child>.btn {
+	 (:first-child ),.input-group-btn:last-child>.btn {
 	border-top-left-radius: 0;
 	border-bottom-left-radius: 0;
 }
@@ -117,6 +117,7 @@
 				<li class="first"><a href="#"><span>所有订单</span></a></li>
 				<li class="active"><a href="#"><span>待回复</span><em
 						class="tm-h">6</em></a></li>
+				<li><a href="#"><span>变更中</span><em class="tm-h">2</em></a></li>
 				<li><a href="#"><span>待发货</span><em class="tm-h">0</em></a></li>
 				<li><a href="#"><span>退货中</span><em class="tm-h">0</em></a></li>
 			</ul>