Pārlūkot izejas kodu

客户详情

git-svn-id: svn+ssh://10.10.101.21/source/platform/platform-b2b@7932 f3bf4e98-0cf0-11e4-a00c-a99a8b9d557d
hejq 9 gadi atpakaļ
vecāks
revīzija
361d20bf09

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

@@ -232,6 +232,10 @@ define([ 'toaster', 'charts', 'ngTable', 'common/services', 'service/Purc', 'ser
             url : "/customer",
             templateUrl : "static/tpl/index/sale/customer.html",
             controller: 'CustomerCtrl'
+        }).state('sale.customer_detail', {
+            url : "/customer/:id",
+            templateUrl : "static/tpl/index/sale/customer_detail.html",
+            controller: 'CustomerDetailCtrl'
         }).state('sale.customerProduct', {
             url : "/customerProduct",
             templateUrl : "static/tpl/index/sale/customer.html",
@@ -1394,6 +1398,8 @@ define([ 'toaster', 'charts', 'ngTable', 'common/services', 'service/Purc', 'ser
 			$scope.count = date;
 		});
 	}]);
+	
+	// 客户
 	app.controller('CustomerCtrl', ['$scope', 'VendorService', 'BaseService','AuthenticationService', 'ngTableParams', '$modal','toaster', function($scope, VendorService, BaseService, AuthenticationService,ngTableParams,$modal, toaster){
 		BaseService.scrollBackToTop();
 		$scope.userInfoResult = true;
@@ -1499,7 +1505,191 @@ define([ 'toaster', 'charts', 'ngTable', 'common/services', 'service/Purc', 'ser
   			$scope.customerParams.reload();
   			$scope.tip = keyword;
   		};
+  		
+  		// 查看详情
+		$scope.viewDetail = function(id) {
+			console.log(id);
+			window.location.hash = "#/sale/customer/" + id;
+		}
+
 	}]);
+	
+	// 客户详情
+	app.controller('CustomerDetailCtrl', ['$scope', 'toaster', '$stateParams', 'Vendor', '$modal', 'Product', 'ngTableParams', 'BaseService', '$rootScope', 'VendorService', 'AuthenticationService', function($scope, toaster, $stateParams, Vendor, $modal, Product, ngTableParams, BaseService, $rootScope, VendorService, AuthenticationService) {
+		BaseService.scrollBackToTop();
+		$scope.userInfoResult = true;
+		AuthenticationService.getAuthentication().success(function(data) {
+			$scope.loading = false;
+			$scope.thisUser = data;
+		});
+		$scope.vendorContacts = [];
+		var loadData = function() {
+			Vendor.getVendorDetail({id: $stateParams.id}, {}, function(data) {
+				$scope.customer = data.myEnterprise;
+				$scope.customerInfo = data;
+				Vendor.custContacts({enuu: $scope.customer.uu}, {}, function(data) {
+					$scope.Contacts = data;
+				});
+		
+				// 查看已分配人员
+				VendorService.userInfo.query({uu: $scope.customer.uu},null,function(data) {
+					$scope.custInfos = data;
+					var getPage = function(page, size){
+						if($scope.custInfos) {
+							var result = {};
+							result.totalCount = $scope.custInfos.length;
+							result.content = $scope.custInfos.slice((page - 1)*size, page * size);
+							if($scope.custInfos.length % size == 0) {
+								result.totalPage = ($scope.custInfos.length - $scope.custInfos.length % size) / size;
+							}else {
+								result.totalPage = ($scope.custInfos.length - $scope.custInfos.length % size) / size + 1;
+							}
+							result.first = page == 1;
+							result.last = page == result.totalPage;
+							result.page = page;
+							result.next = page - 0 + 1;
+							result.pre = page - 1;
+							return result;
+						}
+					}
+					$scope.userdata = getPage(1,4);
+					$scope.first = function (){
+						$scope.userdata = getPage($scope.userdata.pre,4);
+					}
+					$scope.last = function (){
+						$scope.userdata = getPage($scope.userdata.next,4);
+					}
+				}, function(response){
+					$scope.loading = false;
+					toaster.pop('error', '数据加载失败', response.data);
+				});
+			});
+		};
+		loadData();
+		
+		// 新增客户联系人
+		$scope.addContact = function(uu) {
+			var modalInstance = $modal.open({
+				animation: true,
+				templateUrl: 'static/tpl/index/sale/contact_person_modal.html',
+				controller: 'AddContacCtrl',
+				resolve: {
+				}
+			});
+			modalInstance.result.then(function(data) {
+				$scope.contact = data;
+				$scope.contact.myenuu = uu;
+				Vendor.saveCustContact({}, $scope.contact, function(data) {
+					toaster.pop('success', '提示', '联系人保存成功');
+					$scope.Contacts.push(data);
+				}, function(response) {
+					toaster.pop('error', '失败', response.data);
+				});
+			});
+		}
+		
+		// 编辑客户联系人
+		$scope.edit = function(contact) {
+			var modalInstance = $modal.open({
+				animation: true,
+				templateUrl: 'static/tpl/index/purc/modal/contact_person_modal.html',
+				controller: 'EditContacCtrl',
+				resolve: {
+					contact: function() {
+						return contact;
+					}
+				}
+			});
+			modalInstance.result.then(function(data) {
+				$scope.contact = data;
+				Vendor.saveContact({}, $scope.contact, function(data) {
+					toaster.pop('success', '提示', '联系人修改成功');
+				}, function(response) {
+					toaster.pop('error', '失败', response.data);
+				});
+			});
+		}
+		
+		// 删除客户联系人
+		$scope.deleteById = function(id, index) {
+			$scope.Contacts.splice(index, 1);
+			Vendor.deleteContact({id: id}, {}, function(data) {
+				toaster.pop('success', '提示', '供应商联系人删除成功');
+			}, function(response) {
+				toaster.pop('error', '提示', response.data);
+			});
+		}
+		
+		// 供应商物料信息
+		$scope.viewProdList = function(uu){
+			$scope.uu = uu;
+			$scope.tableParams.page(1);
+			$scope.tableParams.reload();
+		};
+		
+		// 搜索框回车
+		$scope.onSearch = function(keyword) {
+			$scope.keyword = keyword;
+			$scope.tableParams.page(1);
+			$scope.tableParams.reload();
+		};
+		
+		// 供应商物料信息
+		$scope.tableParams = new ngTableParams({
+			page : 1, 
+			count : 10
+		}, {
+			total : 0, 
+			counts: [5, 10, 25, 50],
+			getData : function($defer, params) {
+				$scope.loading = true;
+				var pageParams = params.url();
+				pageParams.custUU = $scope.uu;
+				pageParams.keyword = $scope.keyword;
+				$scope.tip = $scope.keyword;
+				Product.get.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.keywordXls = angular.copy($scope.keyword);//保存当前取值的关键词
+					}
+				}, function(response){
+					$scope.loading = false;
+					toaster.pop('error', '数据加载失败', response.data);
+				});
+			}
+		});
+		
+		$scope.addUserInfo = function() {
+			//TODO
+			if ($scope.thisUser.sys) {
+				var modalInstance = $modal.open({
+					animation: true,
+					templateUrl: 'static/tpl/index/account/add_userInfo.html',
+					controller: 'AddUserInfoCtrl',
+					resolve: {
+						customer: function() {
+							return $scope.customerInfo;
+						}
+					}
+				});
+				modalInstance.result.then(function(changed, checked){
+					if(changed) {
+						if(checked)
+							$scope.newUser.roles = checked;
+						else 
+							loadUsers();
+					}
+				});
+				
+			} else {
+				toaster.pop('error', '您不是管理员,无权限分配用户!');
+			}
+		}
+	}]);
+	
 	app.controller('AddUserInfoCtrl', ['$scope', '$modalInstance', 'customer', 'AccountUser', 'toaster', function($scope, $modalInstance, customer, AccountUser, toaster){
 		$scope.checkboxes = {
 				checked : false
@@ -1554,6 +1744,7 @@ define([ 'toaster', 'charts', 'ngTable', 'common/services', 'service/Purc', 'ser
 				$modalInstance.close(false);
 			}
 		};
+		
 	}]);
 	
 	/**

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

@@ -674,6 +674,15 @@ define([ 'ngResource'], function() {
 				url: 'search/similarVendors',
 				method: 'GET',
 				isArray: true
+			},
+			saveCustContact: {
+				url: 'vendor/saveCustomerContact',
+				method: 'POST'
+			},
+			custContacts: {
+				url: 'vendor/custContacts/:enuu',
+				method: 'GET',
+				isArray: true
 			}
 		});
 	}]).factory('Quotation', ['$resource', function($resource){

+ 62 - 0
src/main/webapp/resources/tpl/index/sale/contact_person_modal.html

@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="UTF-8"/>
+	<title>B2B商务账号设置-个人信息</title>
+	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
+	<meta name="Keywords" content=""/>
+	<meta name="Description" content=""/>
+	<link rel="stylesheet" href="static/css/add.css "/>
+</head>
+<body>
+<!--B2B商务账号设置-个人信息-->
+<style>
+	.bomb-box .box01{
+		width: 600px;
+		padding-bottom: 10px;
+		height: 425px;
+	}
+	.per-data ul li span{
+		width: 120px;
+		line-height: 34px;
+	}
+	.modal-content{
+		border: none;
+	}
+	.per-data ul li.per-btn{
+		margin-top: 20px;
+	}
+	.per-data ul, .per-data ul li{
+		width: 90%;
+	}
+	.per-data{
+		margin-top: 10px;
+	}
+	.per-data ul{
+		padding-top: 3px;
+	}
+</style>
+<div class="bomb-box">
+	<div class="box01 box" >
+		<p>客户联系人信息</p>
+		<form class="per-data" name="contactInfo" id="contactInfo">
+			<ul>
+				<li><em>姓名</em><input type="text" placeholder="姓名" ng-model="contact.venduser" required="true" ng-pattern="/^[\u4e00-\u9fa5]{1,6}$|^[\dA-Za-z]{1,12}$/"><span>联系人姓名(必填)</span></li>
+				<li>
+					<em>性别</em>
+					<select name="" id="" ng-model="contact.sex" ng-init="contact.sex = 'M'">
+						<option value="M">男</option>
+						<option value="F">女</option>
+					</select>
+				</li>
+				<li><em>职位</em><input type="text" placeholder="职位"  ng-model="contact.position"></li>
+				<li><em>手机</em><input type="text" placeholder="手机" ng-model="contact.tel" required="true" ng-pattern="/^1(3|4|5|7|8)\d{9}$/"><span>联系人手机号(必填)</span></li>
+				<li><em>电话</em><input type="text" placeholder="电话" ng-model="contact.phone" ng-pattern="/([0-9]{3,4}-)?[0-9]{7,8}/"><span>联系人电话号码</span></li>
+				<li><em>邮箱</em><input type="email" placeholder="邮箱" ng-model="contact.email" ng-pattern="/^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/"/><span>联系人邮箱</span></li>
+				<li class="per-btn"><button ng-click="save(contact)" class="save"  ng-disabled="contactInfo.$invalid">保存</button><a ng-click="cancel()" class="mod-psd">取消</a></li>
+			</ul>
+		</form>
+	</div>
+</div>
+</body>
+</html>

+ 150 - 0
src/main/webapp/resources/tpl/index/sale/customer_detail.html

@@ -0,0 +1,150 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="UTF-8"/>
+	<title>供应商详情</title>
+	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
+	<meta name="Keywords" content=""/>
+	<meta name="Description" content=""/>
+	<link rel="stylesheet" href="static/css/add.css "/>
+</head>
+<body>
+<div class="wrap">
+	<div class="content">
+		<div class="com_head"><span>客户详情</span></div>
+		<!--供应商详情-->
+        <div class="pro-add-data clearfix">
+            <div class="com_title01 sty01"><span>基本信息</span></div>
+            <dl>
+                <dd>
+                    <div class="fl">企业名称:</div>
+                    <div class="fr grey">{{customer.enName}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">简称:</div>
+                    <div class="fr grey">{{customer.enShortname}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">地址:</div>
+                    <div class="fr grey">{{customer.enAddress}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">主营:</div>
+                    <div class="fr grey">{{customer.enType}}</div>
+                </dd>
+            </dl>
+            <!--客户联系人-->
+            <div class="com_title01"><span>客户联系人</span></div>
+            <div class="supply-list01 pro-info clearfix">
+                <dl>
+                    <dt>
+                        <span class="wid01">姓名</span>
+                        <span class="wid01">性别</span>
+                        <span class="wid01">职务</span>
+                        <span>手机</span>
+                        <span>电话</span>
+                        <span>邮箱</span>
+                        <span class="wid02">操作</span>
+                    </dt>
+                    <dd ng-repeat = "contact in Contacts| orderBy:'-id'">
+                        <span class="wid01">{{contact.venduser}}</span>
+                        <span class="wid01" ng-bind="contact.sex == 'F' ? '女' : '男'"></span>
+                        <span class="wid01">{{contact.position}}</span>
+                        <span>{{contact.tel}}</span>
+                        <span>{{contact.phone}}</span>
+                        <span>{{contact.email}}</span>
+                        <span class="wid02"><a ng-click="edit(contact)" class="edit">编辑</a><a ng-click="deleteById(contact.id, $index)">删除</a></span>
+                    </dd>
+                    <dd>
+                        <span class="add-wl"><a ng-click="addContact(customer.uu)">+新增客户联系人</a></span>
+                    </dd>
+                </dl>
+            </div>
+            <div class="com_title01"><span>已分配人员</span></div>
+            <div class="supply-list01 pro-info clearfix">
+                <dl>
+                    <dt>
+                        <span class="wid01">姓名</span>
+                        <span class="wid01">性别</span>
+                        <span class="wid01">职务</span>
+                        <span>手机</span>
+                        <span>UU</span>
+                        <span>邮箱</span>
+                        <span class="wid02">操作</span>
+                    </dt>
+                    <dd  ng-repeat="userinfo in userdata.content">
+                        <span class="wid01" ng-bind="::userinfo.user.userName"></span>
+                        <span class="wid01" ng-bind="::userinfo.sex == 'F' ? '女' : '男'"></span>
+                        <span class="wid01" ng-bind="::userinfo.position"></span>
+                        <span ng-bind="::userinfo.user.userTel"></span>
+                        <span ng-bind="::userinfo.userUU"></span>
+                        <span ng-bind="::userinfo.user.userEmail"></span>
+                        <span class="wid02"><a>删除</a></span>
+                    </dd>
+                    <dd>
+                       <div class="col-md-8 col-md-offset-1 col-sm-10 col-sm-offset-0 col-xs-12 col-xs-offset-0">
+						<a ng-disabled="userdata.first"
+							class="btn btn-default col-md-2 col-sm-3 col-xs-4"
+							ng-click="first()">上一页</a>
+						<div class="col-md-8 col-sm-6 col-xs-4 text-center f14"
+							style="line-height: 34px;">{{userdata.page}}/{{userdata.totalPage}}页</div>
+						<a ng-disabled="userdata.last"
+							class="btn btn-default col-md-2 col-sm-3 col-xs-4"
+							ng-click="last()">下一页</a>
+						</div>
+                    </dd>
+                    <dd>
+                        <span class="add-wl"><a ng-click="addUserInfo()">+新增分配人员</a></span>
+                    </dd>
+                </dl>
+            </div>
+            <div class="com_title01" ng-if="uu==null"><span><a ng-click="viewProdList(customer.uu)">查看客户物料信息</a></span></div>
+            <!--已分配人员-->
+        </div>
+        <div class="pro-add-data02" ng-if="uu!=null">
+           	<div class="pro-search" >
+                 <div class="search-result fl"><img src="resources/img/purc/search01.png"/>搜索“{{tip}}”,为您找到<em>{{total}}</em>个结果</div>
+                 <div class="search fr">
+                     <input type="text" placeholder="输入供应商物料关键字查询" ng-model="keyword" autofocus ng-search="onSearch(keyword)"/>
+                     <a class="seek" ng-click="onSearch(keyword)">搜索</a>
+                 </div>
+             </div>
+			<table class="block table table-default table-striped" ng-table="tableParams" >
+				<thead>
+					<tr class="header">
+						<th width="160px">编号</th>
+						<th width="160px">名称</th>
+						<th>规格</th>
+						<th width="80px">单位</th>
+						<!-- <th width="50px">选择</th> -->
+					</tr>
+				</thead>
+				<tbody ng-if="tableParams.total() == 0">
+					<tr>
+						<td class="text-center" colspan="7" ng-if="tip != null">
+							<br>
+							<div class="text-muted" style="font-size: 14px;"><i class="fa fa-spinner"></i> 搜索"{{tip}}"未找到产品信息,请重新输入搜索条件</div>
+						</td>
+						<td class="text-center" colspan="7" ng-if="tip == null">
+							<br>
+							<div class="text-muted" style="font-size: 14px;"><i class="fa fa-spinner"></i> 您的客户还未添加商品信息,请尽快通知客户</div>
+						</td>
+						<br>
+					</tr>
+				</tbody>
+				<tbody>
+					<tr ng-repeat="product in $data">
+						<td class="text-center" ng-bind="::product.code"></td>
+						<td class="text-center" ng-bind="::product.title"></td>
+						<td class="text-center f12" ng-bind="::product.spec"></td>
+						<td class="text-center" ng-bind="::product.unit"></td>
+						<td class="text-center" ><a title="主动报价" href="javascript:void(0)" style="text-decoration: none; color: #327ebe;" id="click" class="add01"></a>
+						</td>
+					</tr>
+				</tbody>
+			</table>
+        </div>
+	</div>
+</div>
+</body>
+</html>