Browse Source

Merge remote-tracking branch 'origin/feature-b2b-ssr-wangcz' into feature-b2b-ssr-wangcz

shenjj 8 years ago
parent
commit
20bf115ece

+ 4 - 0
src/main/webapp/resources/css/common.css

@@ -1385,4 +1385,8 @@ i.must {
 }
 .text-align-center {
 	text-align: center !important;
+}
+.inline-block {
+	display: inline-block;
+	vertical-align: middle;
 }

+ 16 - 0
src/main/webapp/resources/js/common/b2bServices.js

@@ -1133,4 +1133,20 @@ define([ 'angular', 'common/services', 'common/utils', 'big'], function(angular,
             }
           });
         }])
+        .factory('B2bVendorPerformanceAssessService', ['$resource', 'BaseService', function($resource, BaseService) {
+            var b2bUrl = BaseService.getB2bUrl();
+        return $resource(b2bUrl + '/vendorPerformanceAssess/info/search', {}, {
+            getAll: {
+                url: b2bUrl + '/vendorPerformanceAssess/info/search',
+                method: 'GET'
+            },
+            setRead: {
+                url: b2bUrl + '/vendorPerformanceAssess/setRead',
+                method: 'POST'
+            },getDetail: {
+                url: b2bUrl + '/vendorPerformanceAssess/:id/info',
+                method: 'GET'
+            }
+        });
+    }]);
 });

+ 1 - 2
src/main/webapp/resources/js/common/services.js

@@ -151,8 +151,7 @@ define([ 'angular', 'common/utils', 'big'], function(angular, utils, Big) {
 					// defer.promise.then(function (resolve) {
 					// 	$rootScope.b2bUrl = resolve.url;
 					// });
-          // http://192.168.253.12:9000/b2b-test
-					$rootScope.b2bUrl = this.getRootPath().indexOf('usoftmall.com') > -1 ? 'http://uas.ubtob.com' : 'http://10.1.51.91:8090/platform-b2b/';
+					$rootScope.b2bUrl = this.getRootPath().indexOf('usoftmall.com') > -1 ? 'http://uas.ubtob.com' : 'http://192.168.253.12:9000/b2b-test';
 				}
 				return $rootScope.b2bUrl;
 			}

+ 11 - 3
src/main/webapp/resources/js/usercenter/app.js

@@ -1,7 +1,7 @@
 
-define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'common/services', 'common/directives','common/query/kind', 'common/query/brand', 'common/query/component', 'common/query/order', 'common/query/cart', 'common/query/goods', 'common/query/return' ,'angular-toaster', 'common/query/urlencryption', 'ui-jquery', 'common/query/bankTransfer', 'common/query/bankInfo', 'common/query/change', 'common/query/rate', 'common/query/logistics', 'common/query/address' ,'angular-toaster','common/query/collection', 'common/query/proofing', 'common/query/bill', 'common/query/user','file-upload', 'file-upload-shim', 'common/query/bankInfo' , 'common/query/responseLogistics', 'common/query/payment', 'common/query/afterSale', 'common/query/messageBoard', 'common/query/importDeclaration', 'common/query/enterprise', 'common/query/invoice', 'common/query/refund', 'common/query/recommendation', 'common/query/logisticsPort', 'common/query/storeInfo', 'common/query/tradeMessageNotice', 'common/query/tradeBasicProperties', 'common/query/browsingHistory', 'common/query/internalMessage', 'common/module/chat_web_module', 'angular-filter', 'common/query/vendor','common/query/seekPurchase', 'common/query/search', 'angular-sanitize', 'common/query/authority'], function(angularAMD) {
+define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'common/services', 'common/directives','common/query/kind', 'common/query/brand', 'common/query/component', 'common/query/order', 'common/query/cart', 'common/query/goods', 'common/query/return' ,'angular-toaster', 'common/query/urlencryption', 'ui-jquery', 'common/query/bankTransfer', 'common/query/bankInfo', 'common/query/change', 'common/query/rate', 'common/query/logistics', 'common/query/address' ,'angular-toaster','common/query/collection', 'common/query/proofing', 'common/query/bill', 'common/query/user','file-upload', 'file-upload-shim', 'common/query/bankInfo' , 'common/query/responseLogistics', 'common/query/payment', 'common/query/afterSale', 'common/query/messageBoard', 'common/query/importDeclaration', 'common/query/enterprise', 'common/query/invoice', 'common/query/refund', 'common/query/recommendation', 'common/query/logisticsPort', 'common/query/storeInfo', 'common/query/tradeMessageNotice', 'common/query/tradeBasicProperties', 'common/query/browsingHistory', 'common/query/internalMessage', 'common/module/chat_web_module', 'angular-filter', 'common/query/vendor','common/query/seekPurchase', 'common/query/search', 'angular-sanitize', 'common/query/authority', 'common/b2bServices'], function(angularAMD) {
 	'use strict';
-	var app = angular.module('myApp', [ 'ui.router', 'ui.bootstrap', 'ng.local', 'ngTable', 'common.services', 'common.directives', 'tool.directives', 'common.query.kind', 'brandServices', 'componentServices', 'orderServices', 'cartServices', 'goodsServices', 'returnServices' , 'toaster', 'urlencryptionServices', 'ui.jquery', 'bankTransfer', 'bankInfo', 'changeServices','rateServices', 'logisticsServices', 'addressServices', 'toaster','collection','proofingServices', 'billServices', 'common.query.user', 'angularFileUpload', 'bankInfo', 'responseLogisticsService', 'PaymentService', 'afterSaleService', 'messageBoardServices', 'table.directives', 'importDeclaration', 'common.query.enterprise', 'invoiceServices', 'refundModule', 'recommendation','logisticsPortService', 'storeInfoServices', 'tradeMessageNoticeModule', 'tradeBasicPropertiesServices', 'BrowsingHistory', 'internalMessageServices', 'WebChatModule', 'angular.filter', 'vendorServices','seekPurchaseServices', 'searchService', 'ngSanitize', 'authorityServices']);
+	var app = angular.module('myApp', [ 'ui.router', 'ui.bootstrap', 'ng.local', 'ngTable', 'common.services', 'common.directives', 'tool.directives', 'common.query.kind', 'brandServices', 'componentServices', 'orderServices', 'cartServices', 'goodsServices', 'returnServices' , 'toaster', 'urlencryptionServices', 'ui.jquery', 'bankTransfer', 'bankInfo', 'changeServices','rateServices', 'logisticsServices', 'addressServices', 'toaster','collection','proofingServices', 'billServices', 'common.query.user', 'angularFileUpload', 'bankInfo', 'responseLogisticsService', 'PaymentService', 'afterSaleService', 'messageBoardServices', 'table.directives', 'importDeclaration', 'common.query.enterprise', 'invoiceServices', 'refundModule', 'recommendation','logisticsPortService', 'storeInfoServices', 'tradeMessageNoticeModule', 'tradeBasicPropertiesServices', 'BrowsingHistory', 'internalMessageServices', 'WebChatModule', 'angular.filter', 'vendorServices','seekPurchaseServices', 'searchService', 'ngSanitize', 'authorityServices', 'common.b2bServices']);
 	app.init = function() {
 		angularAMD.bootstrap(app);
 	};
@@ -39,8 +39,10 @@ define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'commo
 
 
 	// ui-router 路由配置
-	app.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider){
+	app.config(['$stateProvider', '$urlRouterProvider', '$httpProvider', function($stateProvider, $urlRouterProvider, $httpProvider){
 		$urlRouterProvider.otherwise("/home");
+		// 设置该app下js访问带cookie
+		$httpProvider.defaults.withCredentials = true;
 		$stateProvider.state('home', angularAMD.route({
 			url: '/home',
 			templateUrl: 'static/view/usercenter/forstore/home_center.html',
@@ -436,6 +438,12 @@ define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'commo
 			templateUrl: 'static/view/usercenter/forstore/bomDetail.html',
 			controller: 'bomDetailCtrl',
 			controllerUrl: 'app/controllers/forstore/bom_detail_ctrl'
+		})).state('purc_vendor', angularAMD.route({
+			url: "/purc/vendor",
+			templateUrl: "static/view/usercenter/b2b/vendor/vendor.html",
+			controller: 'PurcVendorCtrl',
+			controllerUrl: 'app/controllers/b2b/vendor/PurcVendorCtrl'
+			/* 采购供应商资料 详情*/
 		}));
 	}]);
 

+ 62 - 0
src/main/webapp/resources/js/usercenter/controllers/b2b/vendor/PurcVendorCtrl.js

@@ -0,0 +1,62 @@
+define(['app/app'], function(app) {
+    /**
+     * 我的供应商
+     */
+    app.register.controller('PurcVendorCtrl', ['$scope', 'B2bVendor', 'BaseService', 'B2bAuthenticationService', 'ngTableParams', '$modal', 'toaster', '$rootScope', 'B2bVendorInfo', function ($scope, Vendor, BaseService, AuthenticationService, ngTableParams, $modal, toaster, $rootScope, VendorInfo) {
+        BaseService.scrollBackToTop();
+        $rootScope.active = 'purc_vendor';
+        // 搜索框回车
+        $scope.onSearch = function (keyword) {
+            $scope.keyword = keyword;
+            $scope.customerParams.page(1);
+            $scope.customerParams.reload();
+        };
+
+        $scope.customerParams = new ngTableParams({
+            page: 1,
+            count: 20
+        }, {
+            total: 0,
+            counts: [5, 10, 25, 50],
+            getData: function ($defer, params) {
+                $scope.loading = true;
+                var pageParams = params.url();
+                pageParams.keyword = $scope.keyword;
+                Vendor.getVendor.call(null, BaseService.parseParams(pageParams), function (page) {
+                    $scope.loading = false;
+                    if (page) {
+                        params.total(page.totalElement);
+                        $scope.total = page.totalElement;
+                        $defer.resolve(page.content);
+                    }
+                    $scope.totalCount = page.totalElement;
+                }, function (response) {
+                    $scope.loading = false;
+                    toaster.pop('error', '数据加载失败', response.data);
+                });
+            }
+        });
+
+        //设置消息已读
+        var setOrdersRead = function () {
+            var ids=[];
+            Vendor.setVendorRead({}, ids, function (message) {
+            });
+        };
+        setOrdersRead();
+
+        // 查看供应商详情
+        $scope.VendorDetail = function (id, uu) {
+            $rootScope.vendorId = id;
+            $rootScope.vendoruu = uu;
+            window.location.hash = "#/purc/vendor/" + $rootScope.vendorId;
+        }
+
+        // 向企业购买
+        $scope.purcByEn = function (businessCode) {
+            $rootScope.businessCode = businessCode;
+            window.location.hash = "#/purc/addOrder";
+        }
+
+    }]);
+});

+ 11 - 1
src/main/webapp/resources/js/vendor/app.js

@@ -1,4 +1,4 @@
-define([ 'angularAMD', 'ngLocal', 'common/services', 'common/directives', 'common/query/brand', 'common/query/kind', 'common/query/component', 'common/query/goods', 'common/query/rate','common/query/cart', 'common/query/order', 'common/query/address', 'common/query/invoice', 'common/query/property', 'common/query/kindAdvice', 'common/query/propertyAdvice', 'common/query/return' , 'common/query/change', 'common/query/logistics', 'ui.router', 'ui-bootstrap', 'ui-form', 'ui-jquery','angular-toaster', 'ngDraggable', 'angular-sanitize', 'ngTable', 'dynamicInput', 'jquery-imagezoom', 'file-upload', 'file-upload-shim', 'common/query/urlencryption' , 'common/query/purchase', 'common/query/vendor', 'common/query/goods', 'common/query/bankTransfer', 'common/query/enterprise', 'common/query/bill', 'common/query/receipt', 'common/query/collection', 'common/query/express', 'common/query/bankInfo','common/query/charge', 'common/query/statistics', 'common/query/currency', 'jquery-chart', 'common/query/responseLogistics', 'common/query/goodsPrice', 'common/query/address' , 'common/query/search', 'common/query/urlencryption', 'common/query/releaseProInfo', 'common/query/makerDemand', 'common/query/afterSale', 'common/query/messageBoard', 'common/query/logistics', 'common/query/storeInfo', 'common/query/recommendation', 'common/query/user', 'common/query/logisticsPort', 'common/query/cms', 'common/query/material', 'common/query/storeCms', 'common/query/productImport', 'common/query/stockInOut', 'common/module/store_recommend_product', 'common/module/chat_web_module', 'common/query/standardPutOnAdmin', 'common/query/storeViolations', 'common/query/internalMessage', 'common/query/installments','common/query/product','common/query/seekPurchase','common/query/UASBatchPutOnProperty', 'common/query/authority', 'common/query/attendtion', 'common/b2bServices', 'common/b2bServices', 'common/services/File', 'common/services/Token', 'common/services/Make'], function(angularAMD) {
+define([ 'angularAMD', 'ngLocal', 'common/services', 'common/directives', 'common/query/brand', 'common/query/kind', 'common/query/component', 'common/query/goods', 'common/query/rate','common/query/cart', 'common/query/order', 'common/query/address', 'common/query/invoice', 'common/query/property', 'common/query/kindAdvice', 'common/query/propertyAdvice', 'common/query/return' , 'common/query/change', 'common/query/logistics', 'ui.router', 'ui-bootstrap', 'ui-form', 'ui-jquery','angular-toaster', 'ngDraggable', 'angular-sanitize', 'ngTable', 'dynamicInput', 'jquery-imagezoom', 'file-upload', 'file-upload-shim', 'common/query/urlencryption' , 'common/query/purchase', 'common/query/vendor', 'common/query/goods', 'common/query/bankTransfer', 'common/query/enterprise', 'common/query/bill', 'common/query/receipt', 'common/query/collection', 'common/query/express', 'common/query/bankInfo','common/query/charge', 'common/query/statistics', 'common/query/currency', 'jquery-chart', 'common/query/responseLogistics', 'common/query/goodsPrice', 'common/query/address' , 'common/query/search', 'common/query/urlencryption', 'common/query/releaseProInfo', 'common/query/makerDemand', 'common/query/afterSale', 'common/query/messageBoard', 'common/query/logistics', 'common/query/storeInfo', 'common/query/recommendation', 'common/query/user', 'common/query/logisticsPort', 'common/query/cms', 'common/query/material', 'common/query/storeCms', 'common/query/productImport', 'common/query/stockInOut', 'common/module/store_recommend_product', 'common/module/chat_web_module', 'common/query/standardPutOnAdmin', 'common/query/storeViolations', 'common/query/internalMessage', 'common/query/installments','common/query/product','common/query/seekPurchase','common/query/UASBatchPutOnProperty', 'common/query/authority', 'common/query/attendtion', 'common/b2bServices', 'common/services/File', 'common/services/Token', 'common/services/Make'], function(angularAMD) {
 	'use strict';
 	/**
 	 * 自定义Array对象的属性last 方法
@@ -765,6 +765,16 @@ define([ 'angularAMD', 'ngLocal', 'common/services', 'common/directives', 'commo
 			templateUrl: "static/view/vendor/b2b/sale/customer_detail.html",
 			controller: 'CustomerDetailCtrl',
 			controllerUrl: 'app/controllers/b2b/sale/saleCustomerDetailCtrl'
+		})).state('sale_vendorPerformanceAssess', angularAMD.route({
+			url: "/sale/vendorPerformanceAssess",
+			templateUrl: "static/view/vendor/b2b/sale/vendorPerformanceAssess.html",
+			controller: 'VendorPerformanceAssessCtrl',
+			controllerUrl: 'app/controllers/b2b/sale/VendorPerformanceAssessCtrl'
+		})).state('sale_vendorPerformanceAssess_detail', angularAMD.route({
+			url: "/sale/vendorPerformanceAssess/:id",
+			templateUrl: "static/view/vendor/b2b/sale/vendorPerformanceAssess_detail.html",
+			controller: 'VendorPerformanceAssessDetailCtrl',
+			controllerUrl: 'app/controllers/b2b/sale/VendorPerformanceAssessDetailCtrl'
 		}));
 	}]);
 

+ 53 - 0
src/main/webapp/resources/js/vendor/controllers/b2b/sale/VendorPerformanceAssessCtrl.js

@@ -0,0 +1,53 @@
+define(['app/app'], function (app) {
+    // 供应商绩效考核
+    app.register.controller('VendorPerformanceAssessCtrl', ['$scope', '$rootScope', 'B2bVendorPerformanceAssessService', 'BaseService', 'B2bAuthenticationService', 'ngTableParams', '$modal', 'toaster', 'B2bVendor', 'B2bAccountUser', 'B2bCurrentRole', function ($scope, $rootScope, VendorPerformanceAssessService, BaseService, AuthenticationService, ngTableParams, $modal, toaster, Vendor, AccountUser, CurrentRole) {
+        BaseService.scrollBackToTop();
+        $rootScope.active = 'sale_customer';
+        $scope.vendorPerformanceAssessParams = new ngTableParams({
+            page: 1,
+            count: 20
+        }, {
+            total: 0,
+            counts: [5, 10, 25, 50],
+            getData: function ($defer, params) {
+                $scope.loading = true;
+                var pageParams = params.url();
+                pageParams.keyword = $scope.keyword;
+                VendorPerformanceAssessService.get(BaseService.parseParams(pageParams), function (page) {
+                    $scope.loading = false;
+                    if (page) {
+                        params.total(page.totalElement);
+                        $defer.resolve(page.content);
+                        $scope.keywordXls = pageParams.keyword;
+                    }
+                    $scope.totalCount = page.totalElement;
+                }, function (response) {
+                    $scope.loading = false;
+                    toaster.pop('error', '数据加载失败', response.data);
+                });
+            }
+        });
+
+        //设置消息已读
+        var setOrdersRead = function () {
+            var sourceId = [];
+            VendorPerformanceAssessService.setRead({}, sourceId, function (message) {
+                // $scope.getUnreadIds();
+            });
+        };
+        setOrdersRead();
+
+        // 搜索框回车
+        $scope.onSearch = function (keyword) {
+            $scope.vendorPerformanceAssessParams.page(1);
+            $scope.vendorPerformanceAssessParams.reload();
+            $scope.tip = keyword;
+        };
+
+        // 查看详情
+        $scope.viewDetail = function (id) {
+            window.location.hash = "#/sale/vendorPerformanceAssess/" + id;
+        }
+
+    }]);
+});

+ 15 - 0
src/main/webapp/resources/js/vendor/controllers/b2b/sale/VendorPerformanceAssessDetailCtrl.js

@@ -0,0 +1,15 @@
+define(['app/app'], function (app) {
+    // 客户详情
+    app.register.controller('VendorPerformanceAssessDetailCtrl', ['$scope', 'toaster', '$stateParams', 'B2bVendorPerformanceAssessService', '$modal', 'ngTableParams', 'BaseService', '$rootScope', 'B2bAuthenticationService', function ($scope, toaster, $stateParams, VendorPerformanceAssessService, $modal, ngTableParams, BaseService, $rootScope, AuthenticationService) {
+        BaseService.scrollBackToTop();
+        var loadData = function () {
+            VendorPerformanceAssessService.getDetail({id: $stateParams.id}, {}, function (data) {
+                $scope.vendorPerformanceAssess = data;
+            }, function (response) {
+                $scope.loading = false;
+                toaster.pop('error', '数据加载失败', response.data);
+            });
+        };
+        loadData();
+    }]);
+});

+ 142 - 0
src/main/webapp/resources/view/usercenter/b2b/vendor/vendor.html

@@ -0,0 +1,142 @@
+<style>
+.wrap-content table{
+	background-color: #fff;
+}
+
+.wrap-content table .table-hover {
+	border: 1px red solid;
+}
+#customer-tab .header th,#customer-tab tbody tr.header,#customer-tab tbody tr.header th{
+	height: 38px;
+	text-align: center;
+	padding: 0;
+	line-height: 38px;
+	border-bottom-width: 0;
+	background: #f5f5f5;
+	border: none;
+	font-size: 12px;
+}
+#customer-tab tbody tr.header:hover{
+	border: none;
+}
+.pane-header{
+	/*border-radius: 0px 0 0px 0px;
+	box-shadow: 0 0 3px #ccc;
+	background: linear-gradient(to top, #e7e7e7 0%,#ffffff 100%);*/
+	height: 40px;
+	font-size: 14px;
+	line-height: 40px;}
+#customer-tab .pane-header th{
+	border-bottom: none;
+}
+.table>tbody+tbody{
+	border-top: none;
+}
+#customer-tab tbody td{
+	border: none;
+}
+#customer-tab .pane-body{
+	padding: 0;
+}
+#customer-tab tbody tr{
+	background: none;
+	height: 100px;
+	border-top: #e8e8e8 1px solid;
+	line-height: 100px;
+}
+#customer-tab tbody tr td{
+	text-align: center;
+	line-height: 20px;
+	vertical-align: inherit;
+	font-size: 14px;
+}
+#customer-tab tbody tr:hover{
+	border: #3f84f6 2px solid;
+}
+#customer-tab .com_title{
+	margin-bottom: 10px;
+}
+#customer-tab tbody tr td a{
+	color: #5078cb;
+}
+#customer-tab tbody tr td a:hover{
+	color: #d32526 !important;
+	text-decoration: underline !important;
+}
+#customer-tab table tr td a.color32{
+	color: #323232;
+}
+</style>
+<div class="pub-com_head">
+	<span>供应商资料</span>
+	<div class="p-right">
+	</div>
+</div>
+<div id="public">
+	<div class="condition block" style="padding: 10px 15px;">
+		<div class="search-bg condition block"  style="padding: 10px 15px;">
+			<div class="row">
+				<div id="topSearch" style="float: left">
+					<span class="text-muted f16"><i class="fa fa-search fa-lg"></i> 搜索"{{tip}}",为您找到结果:</span>
+					单据{{total}}条
+				</div>
+				<div class="col-xs-6">
+					<div class="search">
+						<div class="form-group form-group-sm has-feedback" dropdown auto-close="outsideClick" on-toggle="searchAdvance=open">
+							<input type="search" class="form-control input-sm" ng-model="keyword" ng-search="onSearch(keyword)" placeholder="输入企业名称、营业执照号、申请人或审核人"  style="width: 100%"/>
+							<a class="btn input-group-addon" ng-click="onSearch(keyword)">搜索</a>
+						</div>
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
+</div>
+<div class="wrap-content" id="customer-tab">
+	<div>
+		<!--供应商列表-->
+		<table class="table  table-hover"
+			ng-table="customerParams">
+			<thead>
+				<tr class="pane-header">
+					<th width="80" class="text-center">UU</th>
+					<th width="180" class="text-center">供应商名称</th>
+					<th width="120" class="text-center">简称</th>
+					<th width="200" class="text-center">地址</th>
+					<th width="100" class="text-center">联系人</th>
+					<th width="80" class="text-center">联系电话</th>
+					<th width="170" class="text-center">操作</th>
+				</tr>
+			</thead>
+			<tbody ng-if="$data.length === 0">
+			<tr>
+				<td colspan="7">
+					<div id="empty">
+						<div class="left_img">
+							<a href="http://www.ubtob.com/" target="_blank" title="优软云首页"><img src="static/img/empty/uas_empty.png"></a>
+							<a href="#/index" title="B2B商务首页">B2B 商务</a>
+						</div>
+						<div class="right_link">
+							<p>暂无对应的供应商信息</p>
+						</div>
+					</div>
+				</td>
+			</tr>
+			</tbody>
+			<tbody>
+					<tr ng-repeat="vendor in $data">
+						<td ng-bind="::vendor.vendorEnterprise.uu"></td>
+						<td class="text-center"><a href="#/purc/vendor/{{vendor.id}}" ng-bind="::vendor.vendorEnterprise.enName" title="查看供应商资料" class="color32 order-detail"></a></td>
+						<td class="text-center" ng-bind="::vendor.vendorEnterprise.enShortname"></td>
+						<td class="text-center" ng-bind="::vendor.vendorEnterprise.enAddress"></td>
+						<td class="text-center" ng-bind="::vendor.vendorUser.userName"></td>
+						<td class="text-center" ng-bind="::vendor.vendorUser.userTel"></td>
+						<td class="text-center">
+							<a ng-click="purcByEn(vendor.vendorEnterprise.enBussinessCode)">下采购单</a>
+							<a href="#/purc/purcinquiry/{{vendor.vendorEnterprise.enBussinessCode}}">立即询价</a>
+						</td>
+					</tr>
+			</tbody>
+		</table>
+	</div>
+</div>

+ 5 - 6
src/main/webapp/resources/view/usercenter/left_nav.html

@@ -35,13 +35,12 @@
         <div class="user_left fl">
             <a href="user#/home"><p ng-class="{'active' : active == 'home'}"><span>买家中心</span></p></a>
             <ul>
+                <li ng-class="{active: active == 'purc_vendor'}"><a ui-sref="purc_vendor">供应商资料</a></li>
                 <li ng-class="{'active' : active == 'seek_purchase'}"><a  ui-sref="buyerSeekPurchase">我的求购</a></li>
-                <div>
-                    <li ng-class="{'active' : active == 'buyer_cart'}"><a  ui-sref="buyer_cart">购物车<em>(<span ng-bind="countCart || 0 | number"></span>)</em></a> </li>
-                    <li ng-class="{'active' : active == 'buyer_order'}"><a  ui-sref="buyer_order">采购订单</a></li>
-                    <li ng-class="{'active' : active == 'buyer_pay_center'}"><a  ui-sref="pay_center">应付对账</a></li>
-                    <li ng-class="{'active' : active == 'buyer_invoice'}"><a  ui-sref="buyer_no_invoice">发票管理</a></li>
-                </div>
+                <li ng-class="{'active' : active == 'buyer_cart'}"><a  ui-sref="buyer_cart">购物车<em>(<span ng-bind="countCart || 0 | number"></span>)</em></a> </li>
+                <li ng-class="{'active' : active == 'buyer_order'}"><a  ui-sref="buyer_order">采购订单</a></li>
+                <li ng-class="{'active' : active == 'buyer_pay_center'}"><a  ui-sref="pay_center">应付对账</a></li>
+                <li ng-class="{'active' : active == 'buyer_invoice'}"><a  ui-sref="buyer_no_invoice">发票管理</a></li>
                 <!--<div ng-hide="!(userInfo.pwdEnable && userInfo.haveUserQuestion &&  userInfo.emailValidCode && userInfo.emailValidCode == 2)">-->
                     <!--<li ng-class="{'active' : active == 'buyer_order'}"><a  ui-sref="buyer_order">订单中心</a></li>-->
                     <!--<li ng-class="{'active' : active == 'seek_purchase'}"><a  ui-sref="buyerSeekPurchase">我的求购</a></li>-->

+ 3 - 0
src/main/webapp/resources/view/vendor/b2b/sale/customer.html

@@ -116,6 +116,9 @@
 				<li class="active">
 					<a>客户资料</a>
 				</li>
+				<li>
+					<a ui-sref="sale_vendorPerformanceAssess">绩效考核</a>
+				</li>
 				<li class="export">
 					<a ng-click="exportXls()"><i class="fa fa-file-text fa-fw"></i>导出Excel</a>
 				</li>

+ 184 - 0
src/main/webapp/resources/view/vendor/b2b/sale/vendorPerformanceAssess.html

@@ -0,0 +1,184 @@
+<style>
+	#customer-tab .header th,#customer-tab tbody tr.header,#customer-tab tbody tr.header th{
+		height: 38px;
+		text-align: center;
+		padding: 0;
+		line-height: 38px;
+		border-bottom-width: 0;
+		/*background: #f5f5f5;*/
+		border: none;
+		font-size: 14px;
+	}
+	#customer-tab tbody tr.header:hover{
+		border: none;
+	}
+	.table>tbody+tbody{
+		border-top: none;
+	}
+	#customer-tab tbody td{
+		border: none;
+	}
+	#customer-tab .pane-body{
+		padding: 0 14px;
+	}
+	#customer-tab tbody tr{
+		background: none;
+		height: 80px;
+		border-top: #dae5fd 1px solid;
+	}
+	#customer-tab tbody tr td{
+		text-align: center;
+		line-height: 20px;
+		vertical-align: inherit;
+		font-size: 14px;
+	}
+	#customer-tab tbody tr:hover{
+		background: #f5f8fe;
+	}
+	#customer-tab .form-horizontal .form-control{
+		height: 36px;
+		line-height: 36px;
+		border: #3f84f6 1px solid;
+		border-radius: 0px;
+		font-size: 14px;
+	}
+	#customer-tab .form-horizontal .form-group{
+		margin: 0;
+	}
+	#customer-tab .form-horizontal .form-group .input-group-addon{
+		width: 70px;
+		height: 36px;
+		display: inline-block;
+		background: #3f84f6;
+		font-size: 16px;
+		text-align: center;
+		line-height: 36px;
+		color: #fff;
+		padding: 0;
+		border: none;
+		border-radius: 0;
+		position: absolute;
+		top: 0;
+		right: 0;
+	}
+	.form-horizontal #topSearch{
+		font-size: 12px;
+		color: #999;
+	}
+	#customer-tab table tr td a.color32{
+		color: #323232;
+	}
+	#customer-tab table thead th:hover{
+		background: none;
+	}
+	#customer-tab .com_tab li.export {
+		float: right;
+	}
+	#customer-tab .com_tab li.export a {
+		color: #5078cb;
+	}
+	#customer-tab .body-wrap {
+		background: #fff;
+		padding: 10px 0;
+	}
+	#customer-tab .form-horizontal {
+		background: #f5f8fe;
+		height: 52px;
+		line-height: 52px;
+		margin-bottom: 10px;
+	}
+	#customer-tab .form-horizontal .has-feedback {
+		margin-top: 8px;
+	}
+	#customer-tab .pane-body table {
+		border: 1px solid #dae5fd;
+	}
+	#customer-tab .pane-body table thead {
+		height: 38px;
+		line-height: 38px;
+		background: #89aefa;
+	}
+	#customer-tab .pane-body table thead tr th {
+		color: #fff;
+		font-weight: normal;
+	}
+</style>
+<div class="loading in" ng-class="{'in': loading}">
+	<!--<i></i>-->
+	<div class="wrap">
+		<div class="outer"></div>
+	</div>
+</div>
+<div class="user_right fr">
+	<div class="pane base-info" style="/*max-height: 900px;overflow-y: auto; overflow-x: hidden;*/" id="customer-tab">
+		<div class="com_tab" style="margin-bottom: 10px">
+			<ul class="fl">
+				<li>
+					<a ui-sref="sale_customer">客户资料</a>
+				</li>
+				<li class="active">
+					<a>绩效考核</a>
+				</li>
+				<li class="export">
+					<a ng-click="exportXls()" target="_self" class="text-simple"><i class="fa fa-file-text fa-fw"></i>导出</a>
+				</li>
+			</ul>
+		</div>
+		<div class="body-wrap">
+			<form class="form-horizontal">
+				<div class="form-group">
+					<div class="col-md-6 col-sm-6">
+						<div id="topSearch" style="float: left">
+							<span class="text-muted"><i class="fa fa-search fa-lg"></i> 搜索"{{tip}}",为您找到结果:</span>
+							单据{{vendorPerformanceAssessParams.total()}}条
+						</div>
+					</div>
+					<div class="col-md-6 col-sm-6">
+						<div class="form-group form-group-sm has-feedback">
+							<input type="search" class="form-control input-sm" ng-model="keyword" ng-search="onSearch()" placeholder="输入单据编号搜索" />
+							<a class="btn  input-group-addon" ng-click="onSearch()">搜索</a>
+						</div>
+					</div>
+				</div>
+			</form>
+			<div class="pane-body">
+				<table class="table table-bordered table-striped table-hover"
+					   ng-table="vendorPerformanceAssessParams">
+					<thead>
+					<tr class="header">
+						<th width="80">考核单号</th>
+						<th width="180">考核单位</th>
+						<th width="180">考核期间</th>
+						<th width="180">录入日期</th>
+						<th width="180">考核人</th>
+					</tr>
+					</thead>
+					<tbody ng-repeat="vendorPerformanceAssess in $data" ng-mouseenter="showUserInfo(vendorPerformanceAssess,true)" ng-mouseleave="showUserInfo(vendorPerformanceAssess,false)">
+					<tr>
+						<td class="text-center"><a ng-click="viewDetail(vendorPerformanceAssess.id)" title="查看绩效考核详情" ng-bind="::vendorPerformanceAssess.vpaCode" class="order-detail base-blue"></a></td>
+						<td class="text-center" ng-bind="::vendorPerformanceAssess.enterprise.enName"></td>
+						<td class="text-center" ng-bind="::vendorPerformanceAssess.vpaAssessdate"></td>
+						<td class="text-center" ng-bind="::vendorPerformanceAssess.vpaApplydate | date: 'yyyy年MM月dd日 hh:mm'"></td>
+						<td class="text-center" ng-bind="::vendorPerformanceAssess.vpaApplyman"></td>
+					</tr>
+					</tbody>
+					<tbody ng-if="$data.length === 0">
+					<tr>
+						<td colspan="5">
+							<div id="empty">
+								<div class="left_img">
+									<a href="http://www.ubtob.com/" target="_blank" title="优软云首页"><img src="static/img/empty/uas_empty.png"></a>
+									<a href="#/index" title="B2B商务首页">B2B 商务</a>
+								</div>
+								<div class="right_link">
+									<p>暂无对应的单据</p>
+								</div>
+							</div>
+						</td>
+					</tr>
+					</tbody>
+				</table>
+			</div>
+		</div>
+	</div>
+</div>

+ 248 - 0
src/main/webapp/resources/view/vendor/b2b/sale/vendorPerformanceAssess_detail.html

@@ -0,0 +1,248 @@
+<style>
+    .com_title01 a{
+        float: right;
+        font-size: 14px;
+        color: #5078cb;
+        line-height: 50px;
+        margin-right: 10px;
+    }
+    .pro-add-data02{
+        display: none;
+        margin-top: 0;
+    }
+    .pro-add-data02.open{
+        display: inline-block;
+    }
+    .pro-add-data02 table tbody tr td{
+        padding: 15px;
+    }
+    .pro-add-data {
+        background: #fff;
+        padding: 0 19px;
+    }
+    .pro-add-data dl dd div.fl {
+        width: 225px;
+    }
+    .pro-add-data dl dd div.fr {
+        width: 214px;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+    }
+    .pro-add-data dl dd {
+        width: auto;
+        margin: 0 auto 10px;
+        height: 34px;
+        line-height: 34px;
+        font-size: 14px;
+        display: inline-block;
+    }
+    .float-right {
+        float: right;
+        margin-right: 35px;
+    }
+    .pro-add-data dl {
+        border-bottom: 1px solid #f5f5f5;
+    }
+</style>
+<div class="user_right fr">
+    <div class="b2b-com-head">
+        <div class="inline-block">绩效考核</div>
+        <span class="float-right">申请日期:{{vendorPerformanceAssess.vpaApplydate | date: 'yyyy年MM月dd日 hh:mm'}}</span><span class="float-right">申请人:{{vendorPerformanceAssess.vpaApplyman}}</span>
+    </div>
+    <!--供应商绩效考核详情-->
+    <div class="pro-add-data clearfix">
+        <div class="com_title01 sty01 b2b-com-title"><span>基本信息</span></div>
+        <dl>
+            <dd>
+                <div class="fl">单据编号:</div>
+                <div class="fr grey">{{vendorPerformanceAssess.vpaCode}}</div>
+            </dd>
+            <dd>
+                <div class="fl">考核单位:</div>
+                <div class="fr grey" title="{{vendorPerformanceAssess.enterprise.enName}}">{{vendorPerformanceAssess.enterprise.enName}}</div>
+            </dd>
+            <dd>
+                <div class="fl">考核期间:</div>
+                <div class="fr grey">{{vendorPerformanceAssess.vpaAssessdate}}</div>
+            </dd>
+            <dd>
+                <div class="fl">采购限单:</div>
+                <div class="fr grey" title="{{vendorPerformanceAssess.vpaPurchasename}}">{{vendorPerformanceAssess.vpaPurchasename}}</div>
+            </dd>
+            <dd>
+                <div class="fl">SQE:</div>
+                <div class="fr grey" title="{{vendorPerformanceAssess.vpaSqename}}">{{vendorPerformanceAssess.vpaSqename}}</div>
+            </dd>
+            <dd>
+                <div class="fl">物料认定:</div>
+                <div class="fr grey" title="{{vendorPerformanceAssess.vpaOrdername}}">{{vendorPerformanceAssess.vpaOrdername}}</div>
+            </dd>
+
+            <dd>
+                <div class="fl">物料类别:</div>
+                <div class="fr grey" title="{{vendorPerformanceAssess.vpaProdkind}}">{{vendorPerformanceAssess.vpaProdkind}}</div>
+            </dd>
+            <dd>
+                <div class="fl">审核日期:</div>
+                <div class="fr grey">{{vendorPerformanceAssess.vpaAuditdate | date: 'yyyy年MM月dd日 hh:mm'}}</div>
+            </dd>
+            <dd>
+                <div class="fl">审核人:</div>
+                <div class="fr grey" title="{{vendorPerformanceAssess.vpaAuditor}}">{{vendorPerformanceAssess.vpaAuditor}}</div>
+            </dd>
+
+        </dl>
+        <div class="com_title01 b2b-com-title"><span>质量评分</span></div>
+        <div class="supply-list01 pro-info clearfix">
+            <dl>
+                <dd>
+                    <div class="fl">来料批不合格率(15分):</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaLlpbhgl}}</div>
+                </dd>
+
+                <dd>
+                    <div class="fl">上线不良率(25分):</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaSxbll}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">客户失效次数(10分):</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaKhsxcs}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">产线重大异常(10分):</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaCxzdyc}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">8D回复及时率(5分):</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpa8dhfjsl}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">异常复发率(10分):</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaYcffl}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">供方配合度(25分):</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaGfphd}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">质量综合得分:</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaZlzhdf}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">质量权重得分(30%):</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaZlqzdf}}</div>
+                </dd>
+            </dl>
+        </div>
+        <div class="com_title01 b2b-com-title"><span>技术评分</span></div>
+        <div class="supply-list01 pro-info clearfix">
+            <dl>
+                <dd>
+                    <div class="fl">技术支持(10分):</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaJszc}}</div>
+                </dd>
+
+                <dd>
+                    <div class="fl">技术标准(10分):</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaJsbz}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">技术分析(10分):</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaJsfx}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">技术资料完整情况(15分):</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaJszlwzqk}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">样品合格率(5分):</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaYphgl}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">研发/工程实力(10分):</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaGcsl}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">可靠性要求/条件(25分):</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaKkxyq}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">物料是否发生技术质量问题(20分):</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaWlsffsjszlwt}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">技术综合得分:</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaJszhdf}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">技术权重得分(30%):</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaJsqzdf}}</div>
+                </dd>
+            </dl>
+        </div>
+        <div class="com_title01 b2b-com-title"><span>采购评分</span></div>
+        <div class="supply-list01 pro-info clearfix">
+            <dl>
+                <dd>
+                    <div class="fl">成本降价(50分):</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaCbjj}}</div>
+                </dd>
+
+                <dd>
+                    <div class="fl">支付条件(20分):</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaZftj}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">打样支持(15分):</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaDyzc}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">服务支持(15分):</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaFwzc}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">采购开发综合得分:</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaCgkfzhdf}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">物料交付(50分):</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaWljf}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">停线/调计划次数(30分):</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaDjhcs}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">NG品处理(10分):</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaNgpcl}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">服务响应(10分):</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaFwxl}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">采购综合得分:</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaCgzhdf}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">采购及采购开发权重得分(各20%):</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaCgjcgkfqzdf}}</div>
+                </dd>
+            </dl>
+        </div>
+        <div class="com_title01 b2b-com-title"><span>总评</span></div>
+        <div class="supply-list01 pro-info clearfix">
+            <dl>
+                <dd>
+                    <div class="fl">总计得分:</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaZjdf}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">等级评分:</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaGrade}}</div>
+                </dd>
+            </dl>
+        </div>
+    </div>
+</div>