Browse Source

认定单

git-svn-id: svn+ssh://10.10.101.21/source/platform/platform-b2b@705 f3bf4e98-0cf0-11e4-a00c-a99a8b9d557d
suntg 11 years ago
parent
commit
c7d5b411ed

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

@@ -113,6 +113,10 @@ define([ 'toaster', 'charts', 'ngTable', 'common/services', 'service/Purc', 'ser
 			url : "/sample",
 			templateUrl : "static/tpl/index/sale/sample.html",
 			controller: 'SaleSampleCtrl'
+		}).state('sale.approval', {
+			url : "/approval",
+			templateUrl : "static/tpl/index/sale/approval.html",
+			controller: 'SaleApprovalCtrl'
 		}).state('account', {
 			url : "/account",
 			views : {
@@ -964,6 +968,68 @@ define([ 'toaster', 'charts', 'ngTable', 'common/services', 'service/Purc', 'ser
   		};
 	});
 	
+	/**
+	 * 客户认定单
+	 */
+	app.controller('SaleApprovalCtrl', function($scope, $rootScope, $filter, PurcApproval, ngTableParams, toaster, BaseService, Symbol){
+		$rootScope.active = 'approval';
+		$scope.active = 'all';
+		$scope.agreedText = '全部';
+		$scope.dateZoneText = '一个月内';
+		$scope.condition = {dateZone: 1};
+		$scope.currency = Symbol.currency;//将币别转化为对应的符号
+		$scope.changeAgreed = function(agreed) {
+			$scope.condition.agreed = agreed;
+			$scope.agreedText = typeof agreed == 'undefined' ? '全部' : (agreed == 1 ? '已同意' : '不同意');
+			$scope.condition.$agreedOpen = false;
+		};
+		$scope.changeDateZone = function(zone) {
+			$scope.condition.dateZone = zone;
+			$scope.dateZoneText = typeof zone == 'undefined' ? '半年前' : (zone == 1 ? '一个月内' : '半年内');
+			$scope.condition.$dateZoneOpen = false;
+		};
+		$scope.setActive = function(state) {
+			if($scope.active != state) {
+				$scope.active = state;
+				if($scope.tableParams.page() == 1)
+					$scope.tableParams.reload();
+				else
+					$scope.tableParams.page(1);
+			}
+		};
+		var getService = function() {
+			return PurcApproval;
+		};
+		
+		$scope.tableParams = new ngTableParams({
+			page : 1, 
+			count : 5,
+			sorting: {
+				inDate: 'desc'
+            }
+		}, {
+			total : 0, 
+			counts: [5, 10, 25, 50],
+			getData : function($defer, params) {
+				$scope.loading = true;
+				getService()[getState($scope.active)].call(null, BaseService.parseParams(params.url()), function(page){
+					$scope.loading = false;
+					if(page) {
+						params.total(page.totalElements);
+						$defer.resolve(page.content);
+					}
+				});
+			}
+		});
+		
+		$scope.openDatePicker = function($event, item, openParam) {
+			$event.preventDefault();
+		    $event.stopPropagation();
+		    item[openParam] = !item[openParam];
+		};
+		
+	});
+	
 	/**
 	 * 客户采购预测
 	 */

+ 3 - 0
src/main/webapp/resources/js/index/services/Purc.js

@@ -152,6 +152,9 @@ define([ 'ngResource'], function() {
 				}
 			}
 		});
+	}).factory('PurcApproval', function($resource) {
+		return $resource('sale/sample/approval/:id', {}, {
+		});
 	}).factory('PurcOrderItemHis', function($resource) {
 		return $resource('sale/orders/history/items', {}, {
 			getTodo: {

+ 369 - 0
src/main/webapp/resources/tpl/index/sale/approval.html

@@ -0,0 +1,369 @@
+<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: #56a022;
+	border-width: 2px;
+}
+
+.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;
+}
+
+ .modal-dialog {
+	margin-top: 110px;
+}
+
+.sampleSend .col {
+	padding-left: 5px;
+	padding-right: 5px;
+	line-height: 30px;
+}
+
+.sampleSend label {
+	font-weight: bold;
+	text-align: right;
+	font-family: "Microsoft YaHei","微软雅黑";
+	line-height: 30px;
+}
+
+.file {
+	color: #336699;
+	text-decoration: underline;
+}
+
+</style>
+<div class="block">
+<div class="loading in" ng-class="{'in': loading}">
+	<i></i>
+</div>
+<div class="condition block">
+		<div class="row">
+			<div class="col-xs-4">
+				<div class="btn-group btn-group-sm btn-group-justified">
+					<div class="btn-group btn-group-sm">
+						<button type="button" class="btn btn-default btn-line"
+							ng-class="{'btn-info':active=='all'}" ng-click="setActive('all')">全部</button>
+					</div>
+				</div>
+			</div>
+			<div class="col-xs-6">
+				<div class="search">
+					<div class="form-group form-group-sm has-feedback">
+						<input type="search" class="form-control input-sm" placeholder="输入商品、客户名称或单据流水号搜索" /><span
+							class="form-control-feedback text-simple"><i
+							class="fa fa-search"></i></span>
+					</div>
+				</div>
+			</div>
+			<div class="col-xs-2 toggle">
+				<a ng-click="condition.$open=!condition.$open" class="text-simple">
+					<span ng-bind="condition.$open ? '简化筛选条件' : '更多筛选条件'"></span>
+					<i class="fa fa-fw" ng-class="{'fa-angle-up': condition.$open, 'fa-angle-down': !condition.$open}"></i>
+				</a>
+			</div>
+		</div>
+		<div class="more" ng-class="{'open': condition.$open}">
+			<form class="form-inline">
+			  <div class="form-group ">
+			    <label>日期:</label>
+			    <div class="btn-group btn-menu" dropdown is-open="condition.$dateZoneOpen">
+				  <button type="button" style="width: 85px;" class="btn btn-default btn-xs dropdown-toggle">
+				    	{{dateZoneText}}<i class="fa fa-fw fa-angle-down icon-right"></i></span>
+				  </button>
+				  <ul class="dropdown-menu">
+					<li><a ng-click="changeDateZone(1)">一个月内</a></li>
+				    <li><a ng-click="changeDateZone(6)">半年内</a></li>
+				    <li><a ng-click="changeDateZone()">半年前</a></li>
+				  </ul>
+				</div>
+			    <div class="form-group input-group input-group-xs input-trigger">
+						<input type="text" ng-model="condition.dateFrom"
+							class="form-control" placeholder="从"
+							datepicker-popup="yyyy-MM-dd" is-open="condition.$fromOpened"
+							ng-required="true"
+							current-text="今天" clear-text="清除" close-text="关闭"
+							datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+							ng-focus="openDatePicker($event, condition, '$fromOpened')">
+						<span class="input-group-btn">
+							<button type="button" class="btn btn-default"
+								ng-click="openDatePicker($event, condition, '$fromOpened')">
+								<i class="fa fa-calendar"></i>
+							</button>
+						</span>
+					</div>
+					<div class="form-group input-group input-group-xs input-trigger">
+						<input type="text" ng-model="condition.dateTo"
+							class="form-control" placeholder="到"
+							datepicker-popup="yyyy-MM-dd" is-open="condition.$toOpened"
+							ng-required="true"
+							current-text="今天" clear-text="清除" close-text="关闭"
+							datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+							ng-focus="openDatePicker($event, condition, '$toOpened')">
+						<span class="input-group-btn">
+							<button type="button" class="btn btn-default"
+								ng-click="openDatePicker($event, condition, '$toOpened')">
+								<i class="fa fa-calendar"></i>
+							</button>
+						</span>
+					</div>
+			  </div>
+			</form>
+		</div>
+	</div>
+<table class="order-table block" ng-table="tableParams">
+	<thead>
+		<tr class="header">
+			<th>商品</th>
+			<th>样品数量</th>
+			<th colspan="2">关联单据</th>
+			<th width="140">送样信息</th>
+			<th width="70">操作</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="approval in $data">
+		<tr class="order-hd">
+			<td class="first">
+				<div class="order-main">
+					<span> <input type="checkbox" class="selector"
+						ng-model="approval.$selected">
+					</span> <span class="text-num text-bold" title="{{approval.inDate | date: 'yyyy年MM月dd日 hh:mm'}}"
+						ng-bind="::approval.inDate | date:'yyyy-MM-dd'"></span>
+					<span title="认定单号" ng-bind="::approval.code"></span>
+				</div>
+			</td>
+			<td colspan="3"><a title="客户名称" href="#"
+				ng-bind="::approval.enterprise.enName"></a></td>
+			<td colspan="1" class="order-sum" >
+				<span ng-if="approval.finalresult" class="label " ng-class="{'label-success': approval.finalresult == '合格', 'label-warning': approval.finalresult != '合格'}">
+					<i class="fa fa-legal" ></i>
+					 {{::approval.finalresult}}
+				</span>
+			</td>
+			<td colspan="1" class="text-center">
+				<div class="operates">
+					<a href="#" class="text-muted" title="打印">
+						<i class="fa fa-print fa-lg fa-fw"></i>
+					</a>
+				</div>
+			</td>
+		</tr>
+		<tr class="order-bd">
+			<td class="product" title="{{approval.prodSpec}}">
+				<div class="text-num text-bold">
+					<a href="#" ng-bind="approval.prodcode"></a>
+				</div>
+				<div>
+					<a href="#" ng-bind="approval.prodDetail"></a>
+				</div>
+				<div class="text-muted"
+					ng-bind="approval.prodSpec"></div>
+			</td>
+			<td class="text-center">
+				<div class="text-num text-bold"
+					title="{{approval.sampleqty}}" ng-bind="approval.sampleqty"></div>
+				<div class="text-muted" ng-bind="approval.prodUnit"></div>
+			</td>
+			<td colspan="2" class="br-l">
+				<div class="dropdown">申请单:
+					<a href="#" ng-bind="::approval.pscode" class="dropdown-toggle text-success" ng-mouseover="getProofing(approval)"></a>
+					<i class="fa fa-fw fa-angle-down"></i>
+					<div class="dropdown-menu pane" style="width: 270px;">
+						<div class="pane-body">
+							申请单
+						</div>
+					</div>
+				</div>
+				<div class="row">
+					<div class="col-xs-3">附件:</div>
+					<div class="col-xs-9" ng-if="approval.attachs == 0">无</div>
+					<div class="col-xs-9 file" ng-repeat="attach in approval.attachs" ng-if="approval.attachs.length > 0">
+						<a href="file/{{attach.id}}" ng-bind="::attach.name"></a>
+					</div>
+				</div>
+				<div ng-if="approval.finalresultremark">
+					最终认定:{{::approval.finalresultremark}}
+				</div>
+			</td>
+			<td class="br-l" colspan="2">
+				<div ng-if="approval.material || approval.materialquality">
+					<span ng-if="approval.material">材料:{{::approval.material}}</span>&nbsp;&nbsp;
+					<span ng-if="approval.materialquality">材质:{{::approval.materialquality}}</span>
+				</div>
+				<div ng-if="approval.address || approval.addressmark">
+					<span ng-if="approval.address">产地:{{::approval.address}}</span>&nbsp;&nbsp;
+					<span ng-if="approval.addressmark">产地标示:{{::approval.addressmark}}</span>
+				</div>
+				<div ng-if="approval.height">
+					<span ng-if="approval.height">单重:{{::approval.height}} g</span>&nbsp;&nbsp;
+				</div>
+			</td>
+		</tr>
+		<tr class="order-bd checkItem">
+			<td class="product" colspan="6">
+				<ul class="list-group">
+					<li class="list-group-item text-muted ">
+						<div class="row">
+							<div class="col-md-2">
+								<i class="fa fa-check-square-o fa-fw"></i>&nbsp;研发认定
+							</div>
+							<div class="col-md-10">
+								<span ng-if="approval.prdtime">收到样品时间:{{::approval.prdtime | date: 'yyyy-MM-dd'}}&nbsp;&nbsp;</span>
+								<span ng-if="approval.prdypsl">收到样品数量:{{::approval.prdypsl}}&nbsp;&nbsp;</span>
+								<span ng-if="approval.prdresult">综合判定:{{::approval.prdresult}}&nbsp;&nbsp;</span>
+								<span ng-if="approval.prdadvice">建议:{{::approval.prdadvice}}&nbsp;&nbsp;</span>
+								<span ng-if="approval.prdremark">描述:{{::approval.prdremark}}&nbsp;&nbsp;</span>
+								附件:<span ng-if="approval.prdAttachs.length == 0">无</span>
+								<span ng-repeat="attach in approval.prdAttachs"><a class="file" href="file/{{attach.id}}" ng-bind="::attach.name"></a>&nbsp;&nbsp;</span>
+							</div>
+						</div>
+					</li>
+				</ul>
+				<ul class="list-group" style="margin-top: 10px;">
+					<li class="list-group-item text-muted ">
+						<div class="row">
+							<div class="col-md-2">
+								<i class="fa fa-check-square-o fa-fw"></i>&nbsp;IQC认定
+							</div>
+							<div class="col-md-10">
+								<span ng-if="approval.padtime">收到样品时间:{{::approval.padtime | date: 'yyyy-MM-dd'}}&nbsp;&nbsp;</span>
+								<span ng-if="approval.padypsl">收到样品数量:{{::approval.padypsl}}&nbsp;&nbsp;</span>
+								<span ng-if="approval.padresult">综合判定:{{::approval.padresult}}&nbsp;&nbsp;</span>
+								<span ng-if="approval.padadvice">建议:{{::approval.padadvice}}&nbsp;&nbsp;</span>
+								<span ng-if="approval.padremark">描述:{{::approval.padremark}}&nbsp;&nbsp;</span>
+								附件:<span ng-if="approval.padAttachs.length == 0">无</span>
+								<span ng-repeat="attach in approval.padAttachs"><a class="file" href="file/{{attach.id}}" ng-bind="::attach.name"></a>&nbsp;&nbsp;</span>
+							</div>
+						</div>
+					</li>
+				</ul>
+				<ul class="list-group" style="margin-top: 10px;">
+					<li class="list-group-item text-muted ">
+						<div class="row">
+							<div class="col-md-2">
+								<i class="fa fa-check-square-o fa-fw"></i>&nbsp;工程认定
+							</div>
+							<div class="col-md-10">
+								<span ng-if="approval.ppdtime">收到样品时间:{{::approval.ppdtime | date: 'yyyy-MM-dd'}}&nbsp;&nbsp;</span>
+								<span ng-if="approval.ppdypsl">收到样品数量:{{::approval.ppdypsl}}&nbsp;&nbsp;</span>
+								<span ng-if="approval.ppdresult">综合判定:{{::approval.ppdresult}}&nbsp;&nbsp;</span>
+								<span ng-if="approval.ppdadvice">建议:{{::approval.ppdadvice}}&nbsp;&nbsp;</span>
+								<span ng-if="approval.ppdremark">描述:{{::approval.ppdremark}}&nbsp;&nbsp;</span>
+								附件:<span ng-if="approval.ppdAttachs.length == 0">无</span>
+								<span ng-repeat="attach in approval.ppdAttachs"><a class="file" href="file/{{attach.id}}" ng-bind="::attach.name"></a>&nbsp;&nbsp;</span>
+							</div>
+						</div>
+					</li>
+				</ul>
+			</td>
+		</tr>
+	</tbody>
+</table>
+</div>

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

@@ -29,7 +29,7 @@
 	</div>
 	<ul class="list-unstyled">
 		<li ng-class="{'active': active=='sample'}"><a ui-sref="sale.sample">客户打样申请</a></li>
-		<li ng-class="{'active': active=='quotation'}"><a ui-sref="sale.quotation">送样单</a></li>
+		<li ng-class="{'active': active=='approval'}"><a ui-sref="sale.approval">客户认定单</a></li>
 	</ul>
 </div>
 <div class="left-nav">

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

@@ -119,6 +119,11 @@
 	line-height: 30px;
 }
 
+.file {
+	color: #336699;
+	text-decoration: underline;
+}
+
 </style>
 <div class="block">
 <div class="loading in" ng-class="{'in': loading}">
@@ -304,7 +309,7 @@
 									<div class="row row-sm" ng-if="sample.send.attachs.length > 0">
 										<div class="col-xs-3">附件:</div>
 										<div class="col-xs-9">
-											<div ng-repeat="attach in sample.send.attachs"><a href="file/{{attach.id}}">{{attach.name}}</a></div>
+											<div ng-repeat="attach in sample.send.attachs"><a href="file/{{attach.id}}" class="file">{{attach.name}}</a></div>
 										</div>
 									</div>
 								</li>
@@ -320,7 +325,7 @@
 				<div>附件:<span ng-if="sample.proofing.attachs.length == 0">无</span></div>
 				<div ng-if="sample.proofing.attachs.length > 0">
 					<div ng-repeat="attach in sample.proofing.attachs">
-						<a href="file/{{attach.id}}" ng-bind="::attach.name"></a>
+						<a class="file" href="file/{{attach.id}}" ng-bind="::attach.name"></a>
 					</div>
 				</div>
 			</td>