Browse Source

客户资料详情

yangc 8 years ago
parent
commit
5098225147

+ 120 - 0
src/main/webapp/resources/css/b2bCommon.css

@@ -0,0 +1,120 @@
+/*b2b table基础样式*/
+.b2b-com-table {
+    width: 100%;
+    font-size: 14px;
+    text-align: center;
+}
+.b2b-com-table thead tr {
+    height: 38px;
+    line-height: 38px;
+    background: #f5f8fe;
+    border-bottom: 1px solid #dae5fd;
+}
+.b2b-com-table thead tr th {
+    font-size: 14px;
+    font-weight: normal;
+    text-align: center;
+}
+.b2b-com-table tbody tr {
+    height: 50px;
+    line-height: 50px;
+    border-left: 1px solid #dae5fd;
+    border-right: 1px solid #dae5fd;
+    border-bottom: 1px solid #dae5fd;
+}
+.b2b-com-table tbody tr:hover {
+    background: #f9fafd;
+}
+.b2b-com-table tbody tr td {
+    font-size: 14px;
+}
+.b2b-com-table .td-operate a {
+    color: #5078cb;
+    margin-right: 10px;
+}
+.b2b-com-table .td-operate a:last-child {
+    margin-right: 0;
+}
+
+/*b2b搜索栏基础样式*/
+.b2b-com-search {
+    height: 40px;
+    line-height: 40px;
+    background: #f5f8fe;
+    border: 1px solid #e8e8e8;
+    font-size: 14px;
+}
+.b2b-com-search .search-result {
+    margin-left: 32px;
+}
+.b2b-com-search .search-content {
+    font-size: 0;
+    margin-right: 13px;
+}
+.b2b-com-search .search-content input {
+    width: 267px;
+    height: 32px;
+    font-size: 12px;
+    padding: 0 11px;
+    border: 1px solid #5078cb;
+    border-bottom-left-radius: 2px;
+    border-top-left-radius: 2px;
+}
+.b2b-com-search .search-content .seek {
+    display: inline-block;
+    vertical-align: middle;
+    width: 58px;
+    height: 32px;
+    line-height: 32px;
+    text-align: center;
+    background: #5078cb;
+    color: #fff;
+    font-size: 14px;
+    border-bottom-right-radius: 2px;
+    border-top-right-radius: 2px;
+}
+/* 弹框按钮 */
+.b2b-btn {
+    font-size: 14px;
+    width: 70px;
+    height: 32px;
+    text-align: center;
+    border-radius: 2px;
+    color: #fff;
+}
+.b2b-btn[disabled] {
+    cursor: not-allowed;
+}
+.b2b-btn-submit {
+    background: #5078cb;
+    border: 1px solid #5078cb;
+}
+.b2b-btn-cancel {
+    background: #c8c6c6;
+    border: 1px solid #c8c6c6;
+}
+/*模态框*/
+.b2b-com-modal .title {
+    height: 30px;
+    line-height: 30px;
+    padding-left: 19px;
+    background: #5078cb;
+    color: #fff;
+    font-size: 14px;
+}
+.b2b-com-modal .title i {
+    float: right;
+    margin-right: 7px;
+    margin-top: 7px;
+    font-size: 16px;
+    cursor: pointer;
+}
+.b2b-com-modal .content {
+    background: #fff;
+}
+.b2b-com-modal .operate {
+    padding-top: 11px;
+    padding-bottom: 18px;
+    border-top: 1px solid #e3e3e3;
+    text-align: center;
+}

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

@@ -1378,4 +1378,8 @@ select {
 
 
 .base-blue {
 .base-blue {
 	color: #5078cb;
 	color: #5078cb;
+}
+
+i.must {
+	color: #ff0000;
 }
 }

+ 101 - 1
src/main/webapp/resources/js/common/b2bServices.js

@@ -388,5 +388,105 @@ define([ 'angular', 'common/services', 'common/utils', 'big'], function(angular,
                     url: b2bPath + 'product/vend'
                     url: b2bPath + 'product/vend'
                 }
                 }
             })
             })
-        }]);
+        }])
+        .factory('AccountUser', ['$resource', 'BaseService', function($resource, BaseService) {
+            var b2bPath = BaseService.getB2bUrl();
+            return $resource(b2bPath + 'account/user/:uu', {}, {
+            getAll: {
+                url: b2bPath + 'account/user',
+                method: 'GET'
+            },
+            findUsers: {
+                url: b2bPath + 'account/user/customer/:uu',
+                method: 'POST',
+                isArray: true
+            },
+            addUserToVendor: {
+                url: b2bPath + 'account/user/bindUserToVendor/:uu',
+                method: 'POST'
+            },
+            transferUserToVendor: {
+                url: b2bPath + 'account/user/transferUserToVendor/:uu',
+                method: 'POST'
+            },
+            transferMyDistribute: {
+                url: b2bPath + 'account/user/transferMyDistribute',
+                method: 'POST'
+            },
+            findDistribute: {
+                url: b2bPath + 'account/user/findDistribute',
+                method: 'GET',
+                isArray: true
+            },
+            getDistribute: {
+                url: b2bPath + 'account/user/getDistribute/:custUU',
+                method: 'GET'
+            },
+            getEnTransfer: {
+                url: b2bPath + 'account/user/getEnTransfer/:custUU',
+                method: 'GET'
+            },
+            findVendor: {
+                url: b2bPath + 'account/user/findVendor/:uu',
+                method: 'GET',
+                isArray: true
+            },
+            findChooseVendor: {
+                url: b2bPath + 'account/user/removeVendor/:uu',
+                method: 'GET',
+                isArray: true
+            },
+            removeChooseVendor: {
+                url: b2bPath + 'account/user/removeVendor/:uu',
+                method: 'POST',
+                isArray: true
+            },
+            addVendor: {
+                url: b2bPath + 'account/user/addVendor/:uu',
+                method: 'POST'
+            },
+            update: {
+                method: 'PUT'
+            },
+            updateRole: {
+                url: b2bPath + 'account/user/update/role',
+                method: 'POST'
+            },
+            checkPassword: {
+                url: b2bPath + 'account/user/checkPassword',
+                method: 'GET'
+            },
+            updatePassword: {
+                url: b2bPath + 'account/user/updatePassword',
+                method: 'POST'
+            },
+            telEnable: {
+                url: b2bPath + 'account/user/telEnable',
+                method: 'GET'
+            },
+            emailEnable: {
+                url: b2bPath + 'account/user/emailEnable',
+                method: 'GET'
+            },
+            findUsersByKeyword: {
+                url: b2bPath + 'account/user/info',
+                method: 'GET',
+                isArray: true
+            },
+            getUpdatePasswordUrl: {
+                url: b2bPath + 'account/user/getUrl',
+                params: {
+                    "_operate": "updatePassword"
+                },
+                method: 'GET'
+            },
+            getCloudCenterUrl: {
+                url: b2bPath + 'account/user/getUrl',
+                params: {
+                    "_operate": "cloudcenter"
+                },
+                method: 'GET'
+            }
+        });
+    }]);
 });
 });

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

@@ -138,7 +138,7 @@ define([ 'angular', 'common/utils', 'big'], function(angular, utils, Big) {
 				}
 				}
 			},
 			},
 			getB2bUrl: function () {
 			getB2bUrl: function () {
-				return 'http://10.1.51.88:8090/platform-b2b/';
+				return 'http://10.1.51.124:8090/platform-b2b/';
 			}
 			}
 		};
 		};
 	}]).factory('AuthenticationService', ['$http', 'SessionService', 'BaseService', 'SerializerUtil', function($http, SessionService, BaseService, SerializerUtil) {
 	}]).factory('AuthenticationService', ['$http', 'SessionService', 'BaseService', 'SerializerUtil', function($http, SessionService, BaseService, SerializerUtil) {

+ 115 - 5
src/main/webapp/resources/js/vendor/controllers/b2b/sale/saleCustomerDetailCtrl.js

@@ -60,7 +60,7 @@ define(['app/app'], function (app) {
         $scope.addContact = function (uu) {
         $scope.addContact = function (uu) {
             var modalInstance = $modal.open({
             var modalInstance = $modal.open({
                 animation: true,
                 animation: true,
-                templateUrl: 'static/tpl/index/sale/contact_person_modal.html',
+                templateUrl: 'static/view/vendor/b2b/modal/contact_person_modal.html',
                 controller: 'AddContacCtrl',
                 controller: 'AddContacCtrl',
                 resolve: {}
                 resolve: {}
             });
             });
@@ -80,7 +80,7 @@ define(['app/app'], function (app) {
         $scope.edit = function (contact) {
         $scope.edit = function (contact) {
             var modalInstance = $modal.open({
             var modalInstance = $modal.open({
                 animation: true,
                 animation: true,
-                templateUrl: 'static/tpl/index/sale/contact_person_modal.html',
+                templateUrl: 'static/view/vendor/b2b/modal/contact_person_modal.html',
                 controller: 'EditContacCtrl',
                 controller: 'EditContacCtrl',
                 resolve: {
                 resolve: {
                     contact: function () {
                     contact: function () {
@@ -152,11 +152,10 @@ define(['app/app'], function (app) {
         });
         });
 
 
         $scope.addUserInfo = function () {
         $scope.addUserInfo = function () {
-            //TODO
             if ($scope.thisUser.sys) {
             if ($scope.thisUser.sys) {
                 var modalInstance = $modal.open({
                 var modalInstance = $modal.open({
                     animation: true,
                     animation: true,
-                    templateUrl: 'static/tpl/index/account/add_userInfo.html',
+                    templateUrl: 'static/view/vendor/b2b/modal/add_userInfo.html',
                     controller: 'AddUserInfoCtrl',
                     controller: 'AddUserInfoCtrl',
                     resolve: {
                     resolve: {
                         customer: function () {
                         customer: function () {
@@ -174,7 +173,6 @@ define(['app/app'], function (app) {
                         }
                         }
                     }
                     }
                 });
                 });
-
             } else {
             } else {
                 toaster.pop('error', '您不是管理员,无权限分配用户!');
                 toaster.pop('error', '您不是管理员,无权限分配用户!');
             }
             }
@@ -186,4 +184,116 @@ define(['app/app'], function (app) {
             window.location.hash = "#/sale/quotation/new";
             window.location.hash = "#/sale/quotation/new";
         }
         }
     }]);
     }]);
+
+    /**
+     * 新增供应商联系人
+     */
+    app.register.controller('AddContacCtrl', ['$scope', 'toaster', '$modalInstance', function ($scope, toaster, $modalInstance) {
+        $scope.save = function (contact) {
+            $modalInstance.close(contact);
+        };
+
+        $scope.cancel = function () {
+            $modalInstance.dismiss();
+        }
+    }]);
+    /**
+     * 编辑供应商联系人
+     */
+    app.register.controller('EditContacCtrl', ['$scope', 'toaster', '$modalInstance', 'contact', function ($scope, toaster, $modalInstance, contact) {
+        $scope.contact = angular.copy(contact);
+
+        $scope.save = function (contact) {
+            $modalInstance.close(contact);
+        };
+
+        $scope.cancel = function () {
+            $modalInstance.dismiss();
+        }
+    }]);
+    /*
+    * 新增分配人员
+    * */
+    app.register.controller('AddUserInfoCtrl', ['$scope', '$modalInstance', 'customer', 'AccountUser', 'toaster', function ($scope, $modalInstance, customer, AccountUser, toaster) {
+        $scope.checkboxes = {
+            checked: false
+        };
+        $scope.loading = true;
+        $scope.distribute = [];
+        AccountUser.findUsers({uu: customer.myEnterprise.uu}, null, function (data) {
+            $scope.userinfos = data;
+            var distribute = [];
+            angular.forEach($scope.userinfos, function (user, index) {
+                if (user.distribute) {
+                    distribute.push({num: index});
+                }
+            });
+            $scope.distribute = distribute;
+            $scope.havedone = angular.copy($scope.distribute);
+            $scope.loading = false;
+        })
+
+        var checkStatus = function (userinfos) {
+            var distribute = [];
+            angular.forEach(userinfos, function (user, index) {
+                if (user.distribute) {
+                    distribute.push({num: index});
+                }
+            });
+            $scope.distribute = distribute;
+            $scope.isChanged = !angular.equals($scope.havedone, $scope.distribute);
+        }
+        $scope.isChanged = false;
+        $scope.isChangedAll = false;
+        $scope.changes = [];
+        // 点击勾选全部的复选框
+        $scope.checkAll = function () {
+            angular.forEach($scope.userinfos, function (item, index) {
+                item.distribute = $scope.checkboxes.checked;
+            });
+            checkStatus($scope.userinfos);
+        };
+
+        // 点击其中一个明细的复选框
+        $scope.checkOne = function () {
+            var result = true;
+            angular.forEach($scope.userinfos, function (item) {
+                if (item.distribute != true) {
+                    result = false;
+                    return;
+                }
+            });
+            $scope.checkboxes.checked = result;
+            checkStatus($scope.userinfos);
+        };
+        $scope.close = function (save) {
+            var chooseResult = [];
+            if (save) {
+                if (customer.myEnterprise.uu) {
+                    angular.forEach($scope.userinfos, function (item, i) {
+                        chooseResult.push(item);
+                    });
+                    if (chooseResult.length > 0) {
+                        $scope.loading = true;
+                        AccountUser.addUserToVendor({uu: customer.myEnterprise.uu}, chooseResult, function (data) {
+                            $scope.loading = false;
+                            toaster.pop('success', '提示', '保存成功');
+                            $modalInstance.close(false);
+                        }, function (response) {
+                            $scope.loading = false;
+                            toaster.pop('error', '保存失败', response.data);
+                            $modalInstance.close(false);
+                        })
+                    } else {
+                        toaster.pop('error', '保存失败', "您未勾选任何记录");
+                    }
+                } else {
+                    $modalInstance.close(true, $scope.checkboxes.checked);
+                }
+            } else {
+                $modalInstance.close(false);
+            }
+        };
+
+    }]);
 });
 });

+ 114 - 0
src/main/webapp/resources/view/vendor/b2b/modal/add_userInfo.html

@@ -0,0 +1,114 @@
+<style>
+	.modal-content {
+		width: 492px;
+	}
+	#user-lists{
+		max-height: 600px;
+		overflow-x: hidden;
+		overflow-y: scroll;
+	}
+	@media screen and (max-width: 1366px){
+		#user-lists{
+			max-height: 368px;
+		}
+	}
+	@media screen and (max-width: 1600px){
+		#user-lists{
+			max-height: 400px;
+		}
+	}
+	.add-user-modal .form-group {
+		font-size: 0;
+	}
+	.add-user-modal .form-group >div {
+		padding: 0 30px;
+	}
+	.add-user-modal .form-group input {
+		width: 354px;
+		height: 34px;
+		border: 1px solid #ccc;
+		font-size: 12px;
+		display: inline-block;
+	}
+	.add-user-modal .form-group .input-group-addon {
+		width: 76px;
+		height: 34px;
+		display: inline-block;
+		line-height: 34px;
+		padding: 0;
+		background: #5078cb;
+		color: #fff;
+		font-size: 14px;
+	}
+	.add-user-modal #user-lists {
+		padding: 0 30px;
+	}
+	.add-user-modal #user-lists table thead tr {
+		height: 34px;
+		line-height: 34px;
+		padding: 0;
+		background: #89aefa;
+	}
+	.add-user-modal #user-lists table thead tr th {
+		color: #fff;
+		font-weight: normal;
+		font-size: 14px;
+		text-align: center;
+	}
+	.add-user-modal #user-lists table tbody tr {
+		height: 40px;
+		line-height: 40px;
+		text-align: center;
+		border-left: 1px solid #ecf0fb;
+		border-right: 1px solid #ecf0fb;
+		border-bottom: 1px solid #ecf0fb;
+	}
+	.add-user-modal #user-lists table tbody tr td {
+		font-size: 14px;
+		border: none;
+	}
+</style>
+<div class="b2b-com-modal add-user-modal">
+	<p class="title">
+		客户分配 <i class="fa fa-close" ng-click="close(false)"></i>
+	</p>
+	<div class="form-group" id="window-search" style="height: 36px; margin-bottom: 0; margin-top: 16px;padding-bottom: 45px;border-bottom: 1px solid #e3e3e3;">
+		<div class="col-sm-12">
+			<input type="text" class="form-control input-sm" required="" placeholder="输入用户名关键词搜索" autofocus="" ng-model="keyword" ng-search="onSearch(keyword)" />
+			<a class="btn input-group-addon" ng-click="onSearch()">搜索</a>
+		</div>
+	</div>
+	<div class="modal-body" id="user-lists">
+		<table class="table">
+			<thead>
+			<th width="80px;">用户UU</th>
+			<th width="100px;">用户名称</th>
+			<th width="40px;" style="text-align: center">
+				<label class="com-check-box">
+					全选
+					<input type="checkbox" id="all" name="checkbox" ng-model="checkboxes.checked" ng-click="checkAll();">
+					<label for="all"></label>
+				</label>
+			</th>
+			</thead>
+			<tbody>
+			<div style="overflow-y:scroll; width:100%;max-height:500px">
+				<tr ng-repeat="user in userinfos| filter: keyword track by $index">
+					<td width="80px;">{{user.userUU}}</td>
+					<td width="100px;">{{user.userName}}</td>
+					<td width="40px;" style="text-align: center">
+						<label class="com-check-box">
+							<input ng-model="user.distribute" id="{{$index}}" name="checkbox" ng-click="checkOne()" type="checkbox">
+							<label for="{{$index}}"></label>
+						</label>
+					</td>
+				</tr>
+			</div>
+			<tbody>
+		</table>
+	</div>
+	<div class="operate">
+		<button class="b2b-btn b2b-btn-submit" ng-click="close(true)" ng-disabled="!isChanged">确认</button>
+		<button class="b2b-btn b2b-btn-cancel" ng-click="close(false)" type="button">取消</button>
+	</div>
+</div>

+ 55 - 0
src/main/webapp/resources/view/vendor/b2b/modal/contact_person_modal.html

@@ -0,0 +1,55 @@
+<!--B2B商务账号设置-个人信息-->
+<style>
+	.modal-content {
+		width: 492px;
+		background: transparent;
+	}
+	.cus-person-modal .contact-info ul {
+		padding: 22px 47px;
+	}
+	.cus-person-modal .contact-info li {
+		margin-top: 14px;
+		font-size: 0;
+	}
+	.cus-person-modal .contact-info li em {
+		width: 40px;
+		display: inline-block;
+		text-align: right;
+		margin-right: 15px;
+		font-size: 14px;
+	}
+	.cus-person-modal .contact-info li input,
+	.cus-person-modal .contact-info li select {
+		height: 30px;
+		width: 320px;
+		border: 1px solid #ccc;
+		font-size: 14px;
+		padding: 0 10px;
+	}
+	.cus-person-modal .contact-info .operate .b2b-btn-submit {
+		margin-right: 10px;
+	}
+</style>
+<div class="cus-person-modal b2b-com-modal" >
+	<p class="title">客户联系人信息 <i class="fa fa-close" ng-click="cancel()"></i></p>
+	<form class="contact-info content" name="contactInfo" id="contactInfo">
+		<ul>
+			<li><em><i class="must">*</i>姓名</em><input type="text" placeholder="姓名" ng-model="contact.venduser" required="true" ng-pattern="/^[\u4e00-\u9fa5]{1,6}$|^[\dA-Za-z]{1,12}$/"></li>
+			<li>
+				<em>性别</em>
+				<select class="select-adder" 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><i class="must">*</i>手机</em><input type="text" placeholder="手机" ng-model="contact.tel" required="true" ng-pattern="/^1(3|4|5|7|8)\d{9}$/"></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>
+		</ul>
+		<div class="operate">
+			<button ng-click="save(contact)" class="b2b-btn b2b-btn-submit" ng-disabled="contactInfo.$invalid">保存</button>
+			<button ng-click="cancel()" class="b2b-btn b2b-btn-cancel">取消</button>
+		</div>
+	</form>
+</div>

+ 84 - 74
src/main/webapp/resources/view/vendor/b2b/sale/customer_detail.html

@@ -14,13 +14,16 @@
         font-size: 14px;
         font-size: 14px;
         color: #f5f5f5;
         color: #f5f5f5;
     }
     }
+    .cus-detail .base-block {
+        border-top: 2px solid #f5f5f5;
+        padding: 0 16px 20px;
+    }
     .cus-detail .com_title01 {
     .cus-detail .com_title01 {
         padding: 21px 7px;
         padding: 21px 7px;
         font-size: 14px;
         font-size: 14px;
         color: #5078cb;
         color: #5078cb;
         font-weight: bold;
         font-weight: bold;
         position: relative;
         position: relative;
-        margin: 0 16px;
     }
     }
     .cus-detail .com_title01::before {
     .cus-detail .com_title01::before {
         content: '';
         content: '';
@@ -51,11 +54,19 @@
         color: #666;
         color: #666;
         padding-right: 25px;
         padding-right: 25px;
     }
     }
+    .cus-detail .supply-list01 dl {
+        width: 100%;
+    }
+    .cus-detail .search {
+        width: 1027px;
+        margin-left: -16px;
+        margin-bottom: 15px;
+    }
 </style>
 </style>
 <div class="user_right fr cus-detail">
 <div class="user_right fr cus-detail">
     <div class="head"><a class="head-link" href="vendor#/sale/customer">基础资料</a> > <span>客户详情</span></div>
     <div class="head"><a class="head-link" href="vendor#/sale/customer">基础资料</a> > <span>客户详情</span></div>
-    <!--供应商详情-->
-    <div class="pro-add-data clearfix">
+    <!--基本信息-->
+    <div class="base-block">
         <div class="com_title01 sty01">基本信息</div>
         <div class="com_title01 sty01">基本信息</div>
         <dl class="base-info">
         <dl class="base-info">
             <dd>
             <dd>
@@ -71,97 +82,96 @@
                 <span class="title">主营:</span>{{customer.enType}}
                 <span class="title">主营:</span>{{customer.enType}}
             </dd>
             </dd>
         </dl>
         </dl>
-        <!--客户联系人-->
+    </div>
+    <!--客户联系人-->
+    <div class="base-block">
         <div class="com_title01">
         <div class="com_title01">
             客户联系人({{Contacts.length || 0}})
             客户联系人({{Contacts.length || 0}})
             <a class="operate" ng-click="addContact(customer.uu)"><i class="fa fa-plus-square fa-fw"></i>新增客户联系人</a>
             <a class="operate" ng-click="addContact(customer.uu)"><i class="fa fa-plus-square fa-fw"></i>新增客户联系人</a>
         </div>
         </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 ng-if="Contacts.length == 0">
+        <table class="b2b-com-table">
+            <thead>
+            <tr>
+                <th>姓名</th>
+                <th>性别</th>
+                <th>职务</th>
+                <th>手机</th>
+                <th>电话</th>
+                <th>邮箱</th>
+                <th>操作</th>
+            </tr>
+            </thead>
+            <tbody>
+            <tr ng-repeat="contact in Contacts| orderBy:'-id'">
+                <td>{{contact.venduser}}</td>
+                <td ng-bind="contact.sex == 'F' ? '女' : '男'"></td>
+                <td>{{contact.position}}</td>
+                <td>{{contact.tel}}</td>
+                <td>{{contact.phone}}</td>
+                <td>{{contact.email}}</td>
+                <td class="td-operate"><a ng-click="edit(contact)" class="edit">编辑</a><a ng-click="deleteById(contact.id, $index)">删除</a></td>
+            </tr>
+            <tr ng-if="Contacts.length == 0">
+                <td colspan="7">
                     <span style="width: 100%; color: #999;">您还未添加客户联系人!</span>
                     <span style="width: 100%; color: #999;">您还未添加客户联系人!</span>
-                </dd>
-            </dl>
-        </div>
+                </td>
+            </tr>
+            </tbody>
+        </table>
+    </div>
+    <!--已分配人员-->
+    <div class="base-block">
         <div class="com_title01">
         <div class="com_title01">
             <span>已分配人员({{userdata.content.length || 0}})</span>
             <span>已分配人员({{userdata.content.length || 0}})</span>
             <a ng-click="addUserInfo()" class="operate"><i class="fa fa-plus-square fa-fw"></i>新增分配人员</a>
             <a ng-click="addUserInfo()" class="operate"><i class="fa fa-plus-square fa-fw"></i>新增分配人员</a>
         </div>
         </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 ng-if="userdata.content.length == 0">
+        <table class="b2b-com-table">
+            <thead>
+            <tr>
+                <th>姓名</th>
+                <th>性别</th>
+                <th>职务</th>
+                <th>手机</th>
+                <th>UU</th>
+                <th>邮箱</th>
+            </tr>
+            </thead>
+            <tbody>
+            <tr  ng-repeat="userinfo in userdata.content">
+                <td ng-bind="::userinfo.user.userName"></td>
+                <td ng-bind="::userinfo.sex == 'F' ? '女' : '男'"></td>
+                <td ng-bind="::userinfo.position"></td>
+                <td ng-bind="::userinfo.user.userTel"></td>
+                <td ng-bind="::userinfo.userUU"></td>
+                <td ng-bind="::userinfo.user.userEmail"></td>
+            </tr>
+            <tr ng-if="userdata.content.length == 0">
+                <td colspan="6">
                     <span style="width: 100%; color: #999;">当前客户还未分配人员!</span>
                     <span style="width: 100%; color: #999;">当前客户还未分配人员!</span>
-                </dd>
-                <dd ng-if="custInfos.length > 5">
-                    <div class="col-md-8 col-md-offset-1 col-sm-10 col-sm-offset-0 col-xs-12 col-xs-offset-0" style="margin-top: 10px;">
-                        <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>
-            </dl>
-        </div>
+                </td>
+            </tr>
+            </tbody>
+        </table>
+    </div>
+    <!-- 客户物料信息 -->
+    <div class="base-block">
         <div class="com_title01">
         <div class="com_title01">
             <span>查看客户物料信息</span>
             <span>查看客户物料信息</span>
-            <a ng-click="$open=!$open;viewProdList(customer.uu)">
+            <a class="operate" style="color: #5078cb;" ng-click="$open=!$open;viewProdList(customer.uu)">
                 <em ng-bind="$open ? '收起':'展开'" class="f14">展开</em>
                 <em ng-bind="$open ? '收起':'展开'" class="f14">展开</em>
                 <i class="fa fa-fw" ng-class="{'fa-angle-up': $open, 'fa-angle-down': !$open}"></i>
                 <i class="fa fa-fw" ng-class="{'fa-angle-up': $open, 'fa-angle-down': !$open}"></i>
             </a>
             </a>
         </div>
         </div>
-        <!--已分配人员-->
-    </div>
-    <div class="pro-add-data02" ng-class="{'open': $open}">
-        <div class="pro-search" >
-            <div class="search-result fl"><img src="static/img/purc/search01.png"/>搜索“{{tip}}”,为您找到<em>{{total}}</em>个结果</div>
-            <div class="search fr">
+        <div class="b2b-com-search search" >
+            <div class="search-result fl"><i class="fa fa-search"></i>  搜索“{{tip}}”,为您找到<em>{{total || 0}}</em>个结果</div>
+            <div class="search-content fr">
                 <input type="text" placeholder="输入供应商物料关键字查询" ng-model="keyword" autofocus ng-search="onSearch(keyword)"/>
                 <input type="text" placeholder="输入供应商物料关键字查询" ng-model="keyword" autofocus ng-search="onSearch(keyword)"/>
                 <a class="seek" ng-click="onSearch(keyword)">搜索</a>
                 <a class="seek" ng-click="onSearch(keyword)">搜索</a>
             </div>
             </div>
         </div>
         </div>
-        <table class="block table table-default table-striped" ng-table="tableParams" >
+        <table class="b2b-com-table" ng-table="tableParams" >
             <thead>
             <thead>
-            <tr class="header">
+            <tr>
                 <th width="160">编号</th>
                 <th width="160">编号</th>
                 <th width="200">名称</th>
                 <th width="200">名称</th>
                 <th>规格</th>
                 <th>规格</th>
@@ -191,7 +201,7 @@
                 <td class="text-center" ng-bind="::product.title"></td>
                 <td class="text-center" ng-bind="::product.title"></td>
                 <td class="text-center f12" ng-bind="::product.spec"></td>
                 <td class="text-center f12" ng-bind="::product.spec"></td>
                 <td class="text-center" ng-bind="::product.unit"></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: #3f84f6;" id="click" class="add01" ng-click="Quotation(customer.uu, product.id)">报价</a>
+                <td class="text-center td-operate" ><a title="主动报价" href="javascript:void(0)" style="text-decoration: none; color: #3f84f6;" id="click" class="add01" ng-click="Quotation(customer.uu, product.id)">报价</a>
                 </td>
                 </td>
             </tr>
             </tr>
             </tbody>
             </tbody>