Browse Source

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

# Conflicts:
#	src/main/webapp/resources/js/usercenter/app.js
huangb 7 years ago
parent
commit
8916441af3
25 changed files with 5961 additions and 227 deletions
  1. 259 10
      src/main/webapp/resources/css/b2bCommon.css
  2. 2 2
      src/main/webapp/resources/css/common.css
  3. 0 7
      src/main/webapp/resources/css/user/base.css
  4. BIN
      src/main/webapp/resources/img/tender/close.png
  5. BIN
      src/main/webapp/resources/img/tender/comm_bg01.png
  6. 326 0
      src/main/webapp/resources/js/common/b2bServices.js
  7. 233 0
      src/main/webapp/resources/js/common/controllers/b2bCommonCtrls.js
  8. 35 7
      src/main/webapp/resources/js/usercenter/app.js
  9. 16 0
      src/main/webapp/resources/js/usercenter/controllers/b2b/Purc/CustServeCtrl.js
  10. 360 0
      src/main/webapp/resources/js/usercenter/controllers/b2b/Purc/PurcInquiryNewCtrl.js
  11. 62 4
      src/main/webapp/resources/js/usercenter/controllers/b2b/Purc/PurcNewOrderCtrl.js
  12. 243 9
      src/main/webapp/resources/js/usercenter/controllers/b2b/Purc/tender.js
  13. 406 177
      src/main/webapp/resources/view/usercenter/b2b/Purc/addOrder.html
  14. 1273 0
      src/main/webapp/resources/view/usercenter/b2b/Purc/purcinquiry_new.html
  15. 71 0
      src/main/webapp/resources/view/usercenter/b2b/Purc/right.html
  16. 1751 10
      src/main/webapp/resources/view/usercenter/b2b/Purc/tender.html
  17. 71 0
      src/main/webapp/resources/view/usercenter/b2b/modal/contact_person_modal.html
  18. 53 0
      src/main/webapp/resources/view/usercenter/b2b/modal/product_brandChoose_modal.html
  19. 420 0
      src/main/webapp/resources/view/usercenter/b2b/modal/product_kindChoose_modal.html
  20. 93 0
      src/main/webapp/resources/view/usercenter/b2b/modal/purc_order_vendor.html
  21. 85 0
      src/main/webapp/resources/view/usercenter/b2b/modal/purc_uplodaByBatch.html
  22. 119 0
      src/main/webapp/resources/view/usercenter/b2b/modal/tender_vendor.html
  23. 81 0
      src/main/webapp/resources/view/usercenter/b2b/modal/uplodaByBatch.html
  24. 1 0
      src/main/webapp/resources/view/usercenter/left_nav.html
  25. 1 1
      src/main/webapp/resources/view/vendor/b2b/modal/contact_person_modal.html

+ 259 - 10
src/main/webapp/resources/css/b2bCommon.css

@@ -4,28 +4,28 @@
     font-size: 14px;
     text-align: center;
 }
-.b2b-com-table thead tr {
+.b2b-com-table > thead > tr {
     height: 38px;
     line-height: 38px;
     background: #f5f8fe;
     border-bottom: 1px solid #dae5fd;
 }
-.b2b-com-table thead tr th {
+.b2b-com-table > thead > tr > th {
     font-size: 14px;
     font-weight: normal;
     text-align: center;
 }
-.b2b-com-table tbody tr {
+.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 {
+.b2b-com-table > tbody > tr:hover {
     background: #f9fafd;
 }
-.b2b-com-table tbody tr td {
+.b2b-com-table > tbody > tr > td {
     font-size: 14px;
 }
 .b2b-com-table .td-operate a {
@@ -46,10 +46,14 @@
 }
 .b2b-com-search .search-result {
     margin-left: 32px;
+    display: inline-block;
+    vertical-align: middle;
 }
 .b2b-com-search .search-content {
     font-size: 0;
     margin-right: 13px;
+    display: inline-block;
+    vertical-align: middle;
 }
 .b2b-com-search .search-content input {
     width: 267px;
@@ -81,9 +85,12 @@
     text-align: center;
     border-radius: 2px;
     color: #fff;
+    vertical-align: middle;
+    display: inline-block;
 }
 .b2b-btn[disabled] {
     cursor: not-allowed;
+    opacity: .6;
 }
 .b2b-btn-submit {
     background: #5078cb;
@@ -145,19 +152,19 @@
 .b2b-operate-modal #user-lists {
     padding: 0 30px;
 }
-table.b2b-modal-table thead tr {
+table.b2b-modal-table > thead > tr {
     height: 34px;
     line-height: 34px;
     padding: 0;
     background: #89aefa;
 }
-table.b2b-modal-table thead tr th {
+table.b2b-modal-table > thead > tr > th {
     color: #fff;
     font-weight: normal;
     font-size: 14px;
     text-align: center;
 }
-table.b2b-modal-table tbody tr {
+table.b2b-modal-table > tbody > tr {
     height: 40px;
     line-height: 40px;
     text-align: center;
@@ -165,10 +172,10 @@ table.b2b-modal-table tbody tr {
     border-right: 1px solid #ecf0fb;
     border-bottom: 1px solid #ecf0fb;
 }
-table.b2b-modal-table tbody tr:hover {
+table.b2b-modal-table > tbody > tr:hover {
     background: #f9fafd;
 }
-table.b2b-modal-table tbody tr td {
+table.b2b-modal-table > tbody > tr > td {
     font-size: 14px;
     border: none;
 }
@@ -195,4 +202,246 @@ table.b2b-modal-table tbody tr td {
     position: absolute;
     left: 0;
     top: 22px;
+}
+.b2b-com-title .operate {
+    float: right;
+    color: #30a603;
+    font-weight: normal;
+}
+/*B2B商务账号设置-个人信息*/
+/*弹框*/
+.bomb-box {
+    width: 100%;
+    height: 100%;
+    position: fixed;
+    z-index: 11111;
+    background: rgba(0, 0, 0, 0.2);
+    top: 0;
+    left: 0;
+}
+
+.bomb-box .box {
+    position: absolute;
+    left: 0;
+    right: 0;
+    top: 0;
+    bottom: 0;
+    margin: auto;
+    box-shadow: 0 0 3px #888;
+}
+
+.bomb-box .box01 {
+    margin-top: 80px;
+    width: 580px;
+    height: 406px;
+    border-radius: 5px;
+    background: #fff;
+}
+
+.bomb-box .box i.off {
+    width: 20px;
+    height: 20px;
+    display: inline-block;
+    position: absolute;
+    right: 8px;
+    top: 8px;
+    text-align: center;
+    cursor: pointer;
+}
+
+.bomb-box .box p {
+    height: 40px;
+    line-height: 40px;
+    font-size: 14px;
+    width: 100%;
+    margin: 0 auto;
+    border-bottom: #e8e8e8 1px solid;
+    padding-left: 20px;
+}
+.bomb-box .box-bottom{
+    padding: 0 5px 5px;
+    width: 465px;
+    height: 450px!important;
+    background: #e8e8e8;
+}
+.bomb-box .box-bottom .box-header{
+    padding-left: 5px;
+    width: 100%;
+    height: 26px;
+}
+.bomb-box .box-bottom .box-header p{
+    float: left;
+    padding-left: 10px;
+    height: 26px;
+    line-height: 28px;
+    width: 100px;
+    font-size: 14px;
+    color: #000;
+}
+.bomb-box .box-bottom .box-header a{
+    margin-top: 6px;
+    display: inline-block;
+    float: right;
+    width: 15px;
+    height: 15px;
+    text-align: center;
+    font-size: 14px;
+    color: #000;
+    border-radius: 3px;
+    border: 1px solid #000;
+}
+.bomb-box .box-bottom .per-data{
+    margin: 0 auto;
+    width: 455px;
+    height: 418px;
+    text-align: center;
+    background: #f3f3f3;
+    border-top: 1px solid #ccc;
+}
+.bomb-box .box-bottom .per-data ul li{
+    margin-bottom: 15px;
+    height: 26PX;
+    line-height: 26px;
+}
+.bomb-box .box-bottom .per-data ul li:first-child, .bomb-box .box-bottom .per-data ul li:last-child{
+    margin-top: 25px;
+}
+.bomb-box .box-bottom .per-data ul li em{
+    width: 80px;
+    text-align: right;
+}
+.bomb-box .box-bottom .per-data ul li input{
+    padding-left: 10px;
+    width: 300px;
+    height: 26px;
+    border: 1px solid #a0a0a0;
+}
+.bomb-box .box-bottom .per-data ul li a.mod-psd{
+    float: none;
+}
+
+/*设置-企业设置-收货地址编辑*/
+.bomb-box .box04 {
+    width: 492px;
+    height: 478px;
+    background: #fff;
+}
+
+.bomb-box .box04 p {
+    height: 30px;
+    line-height: 30px;
+    background: #5078cb;
+    border-bottom: #dcdcdc 1px dotted;
+    color: #fff;
+}
+.bomb-box .box04 i.off {
+    color: #fff;
+}
+.bomb-box .box04 ul {
+    width: 92%;
+    margin: 0 auto;
+}
+
+.bomb-box .box04 ul li {
+    width: 100%;
+    height: 34px;
+    margin-top: 16px !important;
+    line-height: 34px;
+    margin: 0 auto;
+}
+.bomb-box .box04 ul li > div {
+    margin-bottom: 10px;
+}
+.bomb-box .box04 ul li.line01 div {
+    width: 100%;
+    float: left;
+}
+
+.bomb-box .box04 ul li.line01 div.fl span.fl, .bomb-box .box04 ul li.line01 div.fr span.fl {
+    width: 80px;
+    font-size: 14px;
+}
+
+.bomb-box .box04 ul li.line01 div.fl span.fr, .bomb-box .box04 ul li.line01 div.fr span.fr {
+    width: 254px;
+    height: 34px;
+    display: inline-block;
+    float: left;
+}
+
+.bomb-box .box04 ul li div em {
+    color: #f00;
+}
+
+.bomb-box .box04 ul li.line01 div.fl span.fr input, .bomb-box .box04 ul li.line01 div.fr span.fr input {
+    width: 254px;
+    height: 34px;
+    padding-left: 10px;
+    border: #cccccd 1px solid;
+    font-size: 14px;
+}
+
+.bomb-box .box04 ul li.line01 div.fr span.fl {
+    margin-left: 20px;
+}
+
+.bomb-box .box04 ul li.line02 div.fl {
+    width: 80px;
+    font-size: 14px;
+}
+
+.bomb-box .box04 ul li.line02 div.fr {
+    width: 632px;
+    height: 34px;
+    font-size: 14px;
+    float: left;
+}
+
+.bomb-box .box04 ul li.line02 div.fr input {
+    width: 632px;
+    height: 34px;
+    font-size: 14px;
+    padding-left: 10px;
+    border: #cccccd 1px solid;
+}
+
+.bomb-box .box04 .margin-top40 {
+    margin-top: 40px !important;
+}
+
+.bomb-box .box04 .emaill, .bomb-box .box04 .address {
+    position: relative;
+}
+
+.bomb-box .box04 .emaill i, .bomb-box .box04 .address i {
+    font-size: 14px;
+    color: #999;
+    left: 0;
+}
+
+.bomb-box .box04 .select {
+    position: relative;
+}
+
+.bomb-box .box04 .select i {
+    position: absolute;
+    top: 10px;
+    left: 60px;
+    color: #959595;
+}
+
+.bomb-box .box04 .many-file-btn {
+    width: 240px;
+    margin: 60px auto 0;
+}
+.no-padding {
+    padding: 0;
+}
+.no-margin {
+    margin: 0;
+}
+.btn-warning {
+    color: #5078cb;
+    background-color: #fff;
+    border-color: #5078cb;
 }

+ 2 - 2
src/main/webapp/resources/css/common.css

@@ -102,10 +102,10 @@ body {
 	text-align: right !important;
 }
 .text-left{
-	text-left: right !important;
+	text-align: left !important;
 }
 .text-center{
-	text-center: right !important;
+	text-align: center !important;
 }
 /* text */
 .text-theme {

+ 0 - 7
src/main/webapp/resources/css/user/base.css

@@ -502,13 +502,6 @@ select {
     right: -5px;
 }
 
-select {
-    filter: alpha(opacity=0);
-    -moz-opacity: .0;
-    opacity: 0.0;
-    opacity: 0;
-}
-
 .undo {
     color: #ccc !important;
 }

BIN
src/main/webapp/resources/img/tender/close.png


BIN
src/main/webapp/resources/img/tender/comm_bg01.png


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

@@ -2185,5 +2185,331 @@ define([ 'angular', 'common/services', 'common/utils', 'big'], function(angular,
                 method: 'GET'
             }
         });
+    }])
+        .factory('B2bPurchaseInquiry', ['$resource', 'BaseService', function($resource, BaseService){
+            var b2bUrl = BaseService.getB2bUrl();
+            return $resource(b2bUrl + '/purc/inquiry/info/search', {}, {
+                getTodo: {
+                    params: {
+                        _state: 'todo'
+                    },
+                    method: 'GET'
+                },
+                getDone: {
+                    params: {
+                        _state: 'done'
+                    },
+                    method: 'GET'
+                },
+                getEnd: {
+                    params: {
+                        _state: 'end'
+                    },
+                    method: 'GET'
+                },
+                getAgreed: {
+                    params: {
+                        _state: 'agreed'
+                    }
+                },
+                getRefused: {
+                    params: {
+                        _state: 'refused'
+                    }
+                },
+                getAll: {
+                    method: 'GET'
+                },
+                getUnapply: {
+                    url: b2bUrl + '/purc/inquiry/info/nosearch',
+                    method: 'GET',
+                    params: {
+                        _state: 'unapply'
+                    }
+                },
+                getSubmit: {
+                    url: b2bUrl + '/purc/inquiry/info/nosearch',
+                    method: 'GET',
+                    params: {
+                        _state: 'submit'
+                    }
+                },
+                deleteById: {
+                    url: b2bUrl + '/purc/inquiry/deleteById/:id',
+                    method: 'DELETE'
+                },
+                clearOrder: {
+                    url: b2bUrl + '/purc/inquiry/clearOrder/:id',
+                    method: 'DELETE'
+                },
+                save: {
+                    url: b2bUrl + '/purc/inquiry/save/withVendor',
+                    method: 'POST'
+                },
+                detail: {
+                    url: b2bUrl + '/purc/inquiry/:id/info',
+                    method: 'GET'
+                },
+                submit: {
+                    url: b2bUrl + '/purc/inquiry/submit/withVendor',
+                    method: 'POST'
+                },
+                accept: {
+                    url: b2bUrl + '/purc/inquiry/accept/:id',
+                    method: 'POST'
+                },
+                refuse: {
+                    url: b2bUrl + '/purc/inquiry/refuse/:id',
+                    method: 'POST'
+                },
+                getAllDetail: {
+                    url: b2bUrl + '/purc/inquiry/getAllDetail/:id',
+                    method: 'GET',
+                    isArray: true
+                },
+                submitUnapply: {
+                    url: b2bUrl + '/purc/inquiry/submit/update',
+                    method: 'POST'
+                },
+                saveAndSubmitWithoutVendor: {
+                    url: b2bUrl + '/purc/inquiry/submit/withoutVendor',
+                    method: 'POST'
+                },
+                saveWithoutVendor: {
+                    url: b2bUrl + '/purc/inquiry/save/withoutVendor',
+                    method: 'POST'
+                },
+                publishInquiry: {
+                    url: b2bUrl + '/purc/inquiry/submit/updatePublic',
+                    method: 'POST'
+                },
+                publicInquiryItem: {
+                    url: b2bUrl + '/purc/inquiry/publicInquiryItem',
+                    method: 'GET'
+                },
+                inquiryItemDetail: {
+                    url: b2bUrl + '/purc/inquiry/inquiryItem/:id',
+                    method: 'GET'
+                },
+                transtoInquiry: {
+                    url: b2bUrl + '/purc/inquiry/transtoInquiry/:id',
+                    method: 'POST'
+                },
+                setRead:{
+                    url: b2bUrl + '/sale/inquiry/setRead/purc',
+                    method: 'POST'
+                },
+                getUnreadIds:{
+                    url: b2bUrl + '/sale/inquiry/getUnreadIds/purc',
+                    method: 'GET'
+                },
+                getUnreadCount:{
+                    url: b2bUrl + '/sale/inquiry/unread/purc',
+                    method: 'GET'
+                },
+                exportXls: {
+                    url: b2bUrl + '/purc/inquiry/xls/permission',
+                    method: 'GET'
+                },
+                hisquotation: {
+                    url: b2bUrl + '/sale/inquiry/info/search',
+                    method: 'GET',
+                    params: {
+                        _state: 'teams'
+                    }
+                }
+            });
+        }])
+        .factory('B2bGetProductInfo', ['$resource', 'BaseService', function($resource, BaseService) {
+            var b2bUrl = BaseService.getB2bUrl();
+            return $resource(b2bUrl + '/product/baseInfo/info/search', {}, {
+            getSaleProduct: {
+                url: b2bUrl + '/product/baseInfo/:id/info',
+                method: 'GET'
+            },
+            getPurcProduct: {
+                url: b2bUrl + '/purcProduct/:id/info',
+                method: 'GET'
+            },
+            getOne : {
+                url : b2bUrl + "/product/baseInfo/:id",
+                method : 'GET'
+            },
+            getAll : {
+                isArray : false
+            },
+            getStandard: {
+                params: {
+                    _state: 'standard'
+                }
+            },
+            getNonstandard: {
+                params: {
+                    _state: 'nonstandard'
+                }
+            },
+            uploadByBatch : {
+                url : b2bUrl + "/product/baseInfo/uploadByBatch",
+                method : 'GET',
+            },
+            addNewProd : {
+                url: b2bUrl + "/product/baseInfo/edit/addNewProduct",
+                method : 'POST'
+            },
+            update : {
+                url: b2bUrl + "/product/baseInfo/edit/updateProdInfo",
+                method : 'POST'
+            },
+            deleteById : {
+                url: b2bUrl + "/product/baseInfo/edit/delete",
+                method : 'POST'
+            },
+            deletePurcById : {
+                url: b2bUrl + "/purcProduct/edit/delete",
+                method : 'POST'
+            },
+            getAllPartners : {
+                url : b2bUrl + "/product/baseInfo/getAllPartners",
+                method : 'GET',
+                isArray : true
+            },
+            addCust : {
+                url : b2bUrl + "/product/baseInfo/addCust",
+                method : 'POST',
+                isArray: false,
+                headers: {
+                    'Content-Type' : 'application/text;charset=UTF-8'
+                }
+            },
+            addSupplier : {
+                url: b2bUrl + "/product/baseInfo/addSupplier",
+                method : 'POST',
+                isArray: false,
+                headers: {
+                    'Content-Type' : 'application/text;charset=UTF-8'
+                }
+            },
+            businessGroups: {
+                url: b2bUrl + "/product/baseInfo/enterbusinessGroups",
+                method : 'GET',
+                headers: {
+                    'Content-Type' : 'application/text;charset=UTF-8'
+                }
+            },
+            getAttach: {
+                url: b2bUrl + "/product/baseInfo/getAttach/:id",
+                method: 'GET',
+            },
+            toggle: {
+                url: b2bUrl + '/product/baseInfo/edit/toggle/:status',
+                method: 'POST'
+            },
+            setRead:{
+                url: b2bUrl + '/product/baseInfo/setRead',
+                method: 'POST'
+            },
+            getUnreadIds:{
+                url: b2bUrl + '/product/baseInfo/getUnreadIds',
+                method: 'GET'
+            },
+            getUnreadCount:{
+                url: b2bUrl + '/product/baseInfo/unread',
+                method: 'GET'
+            },
+            exportXls: {
+                url: b2bUrl + '/product/baseInfo/xls/permission',
+                method: 'GET'
+            },
+            matchbytype: {
+                url: b2bUrl + '/product/baseInfo/edit/matchbytype/:type',
+                method: 'POST'
+            }
+        })
+    }])
+        .factory('B2bSearch', ['$resource', 'BaseService', function($resource, BaseService) {
+            var b2bUrl = BaseService.getB2bUrl();
+            return $resource(b2bUrl + '/search/', {}, {// 搜索接口
+            getSimilarBrands: {
+                // 根据品牌名获取品牌联想词
+                url: b2bUrl + '/search/similarBrands',
+                method: 'GET',
+                isArray: true
+            },
+            getSimilarKinds: {
+                // 根据类目名获取类目联想词
+                url: b2bUrl + '/search/similarKinds',
+                method: 'GET',
+                isArray: true
+            },
+            getSimilarLeafKinds: {
+                // 根据类目名获取 末级类目 联想词
+                url: b2bUrl + '/search/similarLeafKinds',
+                method: 'GET',
+                isArray: true
+            },
+            getSimilarComponents: {
+                // 根据器件名获取器件联想词
+                url: b2bUrl + '/search/similarComponents',
+                method: 'GET',
+                isArray: true
+            }
+        });
+    }])
+        .factory('B2bComponentActiveAPI', ['$resource', 'BaseService', function($resource, BaseService){
+            var b2bUrl = BaseService.getB2bUrl();
+            return $resource(b2bUrl + '/product/component', {},{
+            //获取ComponentInfo的分页数据
+            getInfoPage: {
+                url: b2bUrl + '/product/component/list',
+                method: 'GET'
+            },
+            //根据uuid获取器件信息
+            get: {
+                url: b2bUrl + '/product/component/:uuid',
+                method: 'GET'
+            },// 根据UUid获取单个器件的简要信息
+            // 分页获取简要信息
+            getInfo: {
+                url: b2bUrl + '/product/component/info',
+                method: 'GET'
+            }
+        });
+    }])
+        .factory('B2bKindAPI', ['$resource', '$cacheFactory', 'BaseService', function($resource, $cacheFactory, BaseService) {
+            var cache = $cacheFactory('B2bKindAPI');
+            var b2bUrl = BaseService.getB2bUrl();
+            return $resource (b2bUrl + '/product/kind', {}, {
+                // 根据父级类目获取其子类目,不包含深层
+                getChildren: {
+                    url: b2bUrl + '/product/kind/:parentId/children',
+                    method: 'GET',
+                    isArray: true
+                }
+            })
+        }])
+        .factory('B2bBrandActiveAPI', ['$resource', 'BaseService', function($resource, BaseService) {
+        //对单个BrandActive对象操作
+            var b2bUrl = BaseService.getB2bUrl();
+            return $resource(b2bUrl + '/product/brand/:uuid', {}, {
+            /*
+             * get,根据uuid获得BrandActive
+             */
+            // 获取所有品牌的简要信息
+            getSimpleInfo : {
+                url : b2bUrl + '/product/brand/Info',
+                method : 'GET',
+                isArray : true
+            },
+            // 分页获取简要信息
+            getSimpleInfoPage: {
+                url: b2bUrl + '/product/brand/Info/ByPage',
+                method: 'GET'
+            },
+            // 通过名称获取品牌
+            findByName : {
+                url: b2bUrl + '/product/brand/ByName/:name',
+                method: 'GET'
+            }
+        })
     }]);
 });

+ 233 - 0
src/main/webapp/resources/js/common/controllers/b2bCommonCtrls.js

@@ -68,5 +68,238 @@ define([ 'app/app' ], function(app) {
             });
         };
     }]);
+    /**
+     * 采购批量导入
+     */
+    app.controller('PurcUploadByBatchCtrl', ['$scope', 'toaster', '$upload', '$modalInstance', 'BaseService', function ($scope, toaster, $upload, $modalInstance, BaseService) {
+        // 通过excel批量上传物料
+        $scope.result = null;
+        $scope.loading = false;
+        $scope.upload = function () {
+            $scope.loading = true;
+            var file = $scope.myFiles[0];
+            $upload.upload({
+                url: BaseService.getB2bUrl() + '/purchase/release/excel',
+                file: file,
+                method: 'POST'
+            }).success(function (data) {
+                $scope.loading = false;
+                $scope.result = data;
+                $scope.success = $scope.result.success;
+                $scope.total = $scope.result.total;
+                $scope.alters = $scope.result.alters;
+            }).error(function (response) {
+                $scope.loading = false;
+                toaster.pop('error', response.data || response);
+            });
+        };
+
+        // 下载模板
+        $scope.download = function () {
+            window.location.href = BaseService.getB2bUrl() + '/purchase/upload/template';
+        };
+
+        $scope.enSure = function () {
+            $scope.loading = true;
+            $modalInstance.close($scope.result.products);
+        }
+
+        $scope.cancel = function () {
+            $modalInstance.dismiss();
+        }
+    }]);
+
+    /**
+     * 代采订单批量导入
+     */
+    app.controller('PurcInquiryUploadCtrl', ['$scope', 'toaster', '$upload', '$modalInstance', 'BaseService', function ($scope, toaster, $upload, $modalInstance, BaseService) {
+        // 通过excel批量上传物料
+        var b2bUrl = BaseService.getB2bUrl();
+        $scope.result = null;
+        $scope.upload = function () {
+            var file = $scope.myFiles[0];
+            $upload.upload({
+                url: b2bUrl + '/purc/inquiry/release/excel',
+                file: file,
+                method: 'POST'
+            }).success(function (data) {
+                $scope.result = data;
+                $scope.success = $scope.result.success;
+                $scope.total = $scope.result.total;
+                $scope.alters = $scope.result.alters;
+            }).error(function (response) {
+                toaster.pop('error', response.data || response);
+            });
+        };
+
+        // 查看范例
+        $scope.showImg = function () {
+            var src = "static/img/eg/uploadByBatch_example.png", box = $('#image-box');
+            box.show();
+            box.find('img').attr('src', src);
+            box.find('a').click(function () {
+                box.hide();
+            });
+            box.dblclick(function () {
+                box.hide();
+            });
+        };
+
+        // 下载模板
+        $scope.download = function () {
+            window.location.href = b2bUrl + '/purc/inquiry/upload/template';
+        };
+
+        $scope.enSure = function () {
+            $modalInstance.close($scope.result.items);
+        }
+
+        $scope.cancel = function () {
+            $modalInstance.dismiss();
+        }
+    }]);
+
+    //类目选择模态框(招标产品明细)
+    app.controller('ProdKindChooseCtrl', ['$scope', 'B2bKindAPI', 'actives', 'toaster', '$modalInstance', function ($scope, KindAPI, actives, toaster, $modalInstance) {
+        $scope.actives = actives;
+        $scope.kinds = [[], [], [], []];
+        // 获取子类目
+        var getChildren = function (pid, deep) {
+            KindAPI.getChildren({parentId: pid}, function (data) {
+                $scope.kinds[deep] = data;
+            }, function (response) {
+                toaster.pop('error', '获取子类目失败', response.data);
+            });
+        };
+
+        // 改变节点选中状态
+        var changeStatus = function (item, deep) {
+            var actives = [], level = 0;
+            angular.forEach($scope.kinds, function (ks, i) {
+                if (i > deep) {
+                    $scope.kinds[i] = [];
+                } else {
+                    angular.forEach(ks, function (k, j) {
+                        if (i == deep) {
+                            if (k.id == item.id) {
+                                $scope.kinds[i][j].$active = true;
+                                actives.push(k);
+                            } else {
+                                k.$active = null;
+                            }
+                        } else {
+                            if (k.$active) {
+                                actives.push(k);
+                            }
+                        }
+                    });
+                }
+            });
+            // 选择的节点
+            $scope.actives = actives;
+            $scope.active = item;
+            // 当前可操作的层级
+            if (deep < 3) {
+                $scope.activeDeep = deep + 1;
+            }
+        };
+
+        // 节点点击后获取子类目,节点被选中
+        $scope.onItemClick = function (item, deep) {
+            changeStatus(item, deep);
+            if (!item.isLeaf) {
+                getChildren(item.id, deep + 1);
+            }
+        };
+
+        // 重新加载数据
+        function reload(deep) {
+            var pid;
+            if (deep) {
+                pid = $scope.actives[deep - 1].id;
+            } else {
+                pid = 0;
+                deep = 0;
+            }
+            getChildren(pid, deep);
+        }
+
+        // 初始加载数据,获取第一层的类目
+        if ($scope.actives) {
+            angular.forEach($scope.actives, function (v, k) {
+                KindAPI.getChildren({parentId: v.parentid}, function (data) {
+                    $scope.kinds[k] = data;
+                    angular.forEach($scope.kinds[k], function (kind, i) {
+                        if (kind.id == v.id) {
+                            $scope.kinds[k][i].$active = true;
+                            $scope.actives[k] = $scope.kinds[k][i];
+                        }
+                    })
+                }, function (response) {
+                    toaster.pop('error', '获取子类目失败', response.data);
+                });
+            });
+        } else {
+            reload();
+        }
+
+        // 取消
+        $scope.cancel = function () {
+            $modalInstance.dismiss();
+        };
+
+        // 确认选择
+        $scope.check = function () {
+            var a = {
+                active: $scope.active,
+                actives: $scope.actives
+            };
+            $modalInstance.close(a);
+        };
+    }]);
+
+    //品牌选择模态框的controller
+    app.controller('BrandModalInstanceCtrl', ['$scope', '$modalInstance', 'ngTableParams', 'B2bBrandActiveAPI', 'BaseService', function ($scope, $modalInstance, ngTableParams, BrandActiveAPI, BaseService) {
+        $scope.filter = {};
+        $scope.brandsTableParams = new ngTableParams({
+            page: 1,
+            count: 6,
+            sorting: {
+                nameCn: 'asc'
+            }
+        }, {
+            total: 0,
+            counts: [],
+            getData: function ($defer, params) {
+                var param = BaseService.parseParams(params.url());
+                param.keyword = $scope.filter.keyword;
+                var keyword = $scope.filter.keyword;
+                // param.keyword = $scope.filter.keyword;
+                BrandActiveAPI.getSimpleInfoPage(param, {}, function (page) {
+                    if (page) {
+                        params.total(page.totalElements);
+                        $defer.resolve(page.content);
+                    }
+                }, function () {
+
+                });
+            }
+        });
+
+        // 搜索
+        $scope.search = function () {
+            // $scope.brandsTableParams.filter({$: $scope.filter.keyword});
+            $scope.brandsTableParams.page(1);
+            $scope.brandsTableParams.reload();
+        };
+        // 选择
+        $scope.select = function (brand) {
+            $modalInstance.close(brand);
+        };
+        // 关闭
+        $scope.cancel = function () {
+            $modalInstance.dismiss();
+        };
+    }]);
 
 });

+ 35 - 7
src/main/webapp/resources/js/usercenter/app.js

@@ -468,6 +468,30 @@ define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'commo
       templateUrl: "static/view/usercenter/b2b/Purc/tender_evaluation.html",
       controller: 'PurcEvaluationCtrl',
       controllerUrl: 'app/controllers/b2b/Purc/tender_evaluation'
+    })).state('purc_tenderanswerlist', angularAMD.route({
+      title: '买家中心-B2b采购招标提问列表',
+      url: "/tender/answer",
+      templateUrl: "static/view/usercenter/b2b/Purc/tender_answer_list.html",
+      controller: 'PurcTenderAnswerListCtrl',
+      controllerUrl: 'app/controllers/b2b/Purc/tender_answer_list'
+    })).state('purc_tenderanswerdetail', angularAMD.route({
+      title: '买家中心-B2b采购招标提问列表详情',
+      url: "/tender/answer/:id",
+      templateUrl: "static/view/usercenter/b2b/Purc/tender_answer_detail.html",
+      controller: 'PurcTenderAnswerDetailCtrl',
+      controllerUrl: 'app/controllers/b2b/Purc/tender_answer_detail'
+    })).state('purc_tender', angularAMD.route({
+      title: '买家中心-B2b采购招标新增招标单',
+      url: "/addTender",
+      templateUrl: "static/view/usercenter/b2b/Purc/tender.html",
+      controller: 'PurcNewTenderCtrl',
+      controllerUrl: 'app/controllers/b2b/Purc/tender'
+    })).state('purc_savedtender', angularAMD.route({
+      title: '买家中心-B2b采购招标发布招标单',
+      url: "/tender/:id",
+      templateUrl: "static/view/usercenter/b2b/Purc/tender.html",
+      controller: 'PurcNewTenderCtrl',
+      controllerUrl: 'app/controllers/b2b/Purc/tender'
     })).state('sale_vendortender', angularAMD.route({
       title: '买家中心-B2b采购招标评标单详情',
       url: "/tender/:vendUU/:id",
@@ -498,13 +522,17 @@ define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'commo
             templateUrl: "static/view/usercenter/b2b/order/outorder.html",
             controller: 'PurcMakeOutOrderCtrl',
             controllerUrl: 'app/controllers/b2b/order/purcMakeOutOrderCtrl'
-        })).state('purc_make_outorder', angularAMD.route({
-            url: "/purc/makeoutorder",
-            title: '买家中心-B2b委外订单',
-            templateUrl: "static/view/usercenter/b2b/order/outorder.html",
-            controller: 'PurcMakeOutOrderCtrl',
-            controllerUrl: 'app/controllers/b2b/order/purcMakeOutOrderCtrl'
-        }));
+        })).state('purc_purcinquiry_new', angularAMD.route({
+			url: "/purc/purcinquiry/:bussinessCode",
+			templateUrl: "static/view/usercenter/b2b/Purc/purcinquiry_new.html",
+			controller: 'PurcInquiryNewCtrl',
+			controllerUrl: 'app/controllers/b2b/Purc/PurcInquiryNewCtrl'
+		})).state('purc_vendorserve', angularAMD.route({
+			url: "/purc/vendor/serve",
+			templateUrl: "static/view/usercenter/b2b/Purc/right.html",
+			controller: 'CustServeCtrl',
+			controllerUrl: 'app/controllers/b2b/Purc/CustServeCtrl'
+		}));
 	}]);
 
 	// 状态码  -> 描述

+ 16 - 0
src/main/webapp/resources/js/usercenter/controllers/b2b/Purc/CustServeCtrl.js

@@ -0,0 +1,16 @@
+define(['app/app'], function(app) {
+    //客户服务
+    app.register.controller('CustServeCtrl', ['$scope', '$rootScope', 'B2bVendor', 'BaseService', function ($scope, $rootScope, Vendor, BaseService) {
+        $rootScope.active = 'purc_vendorserve';
+        Vendor.getServe(function (datas) {
+            $scope.vendors = datas;
+            // 自动跳转
+            if (datas && datas.length == 1)
+                $scope.redirect(datas[0]);
+        });
+        var b2bUrl = BaseService.getB2bUrl();
+        $scope.redirect = function (vendor) {
+            window.open(b2bUrl + '/purc/vendor/serve/' + vendor.vendorEnterprise.uu);
+        };
+    }]);
+});

+ 360 - 0
src/main/webapp/resources/js/usercenter/controllers/b2b/Purc/PurcInquiryNewCtrl.js

@@ -0,0 +1,360 @@
+define(['app/app'], function(app) {
+    // 平台新增的询价单(指定一个供应商)
+    app.register.controller('PurcInquiryNewCtrl', ['$scope', 'B2bPurchaseInquiry', 'toaster', 'BaseService', '$upload', '$filter', '$modal', '$rootScope', 'ngTableParams', 'B2bGetProductInfo', '$timeout', '$http', 'B2bShipAddress', '$stateParams', 'B2bVendor', 'B2bProduct', 'B2bSearch', 'B2bComponentActiveAPI', 'B2bVendorInfo', function ($scope, PurchaseInquiry, toaster, BaseService, $upload, $filter, $modal, $rootScope, ngTableParams, GetProductInfo, $timeout, $http, ShipAddress, $stateParams, Vendor, Product, Search, ComponentActiveAPI, VendorInfo) {
+        $scope.active = 'all';
+
+        // 供应商信息
+        var loadData = function () {
+            Vendor.enterpriseInfo({bussinessCode: $stateParams.bussinessCode}, {}, function (data) {
+                $scope.vendor = data;
+                Vendor.contacts({venduu: $scope.vendor.uu}, {}, function (data) {
+                    $scope.vendorContacts = data;
+                });
+
+                // 物料信息
+                $scope.tableParams = 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;
+                        $scope.tip = $scope.keyword;
+                        pageParams.custUU = $scope.vendor.uu;
+                        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);
+                        });
+                    }
+                });
+            });
+        };
+        loadData();
+
+        $rootScope.tenderVendor = null;// 清除掉已选择的
+        var getService = function () {
+            return GetProductInfo;
+        };
+        $scope.inquiry = {
+            code: 'XJ' + $filter('date')(new Date(), 'yyMMddsss'),
+            showdate: $filter('date')(new Date, 'yyyy-MM-dd'),
+            priceType: '采购',
+            isOpen: 0,
+            invoice: 0,
+            ifTax: 1,
+            currency: 'RMB'
+        };
+
+        $scope.changeCurrency = function (inquiry) {
+            if (inquiry.currency !== 'RMB') {
+                $scope.notRMB = true;
+                inquiry.ifTax = 0; // 非RMB时,默认不含税和不需要发票,且不可更改
+                inquiry.invoice = 0;
+            } else {
+                $scope.notRMB = false;
+            }
+        };
+
+        // 获取收货地址列表
+        var loadShipAddress = function () {
+            ShipAddress.shipAddList({}, function (data) {
+                $scope.ships = data;
+                $scope.inquiry.ship = $scope.ships[0].address + $scope.ships[0].addressdet + $scope.ships[0].receiver + $scope.ships[0].usertel;
+            });
+        };
+        loadShipAddress();
+
+        // 获取地址信息
+        $http.get('resources/citydata/city.json', {
+            "Accept": "application/json;charset=utf-8", "Accept-Charset": "charset=utf-8"
+        }).then(function (response) {
+            $scope.provinces = response.data;
+        });
+
+        // 新增收货地址保存
+        $scope.saveShipAddress = function (ship) {
+            ship.address = ship.province + ship.city + ship.district;
+            ShipAddress.saveAddress({}, ship, function (data) {
+                if (data.success) {
+                    // 获取收货地址列表
+                    loadShipAddress();
+                    toaster.pop('success', '提示', data.success);
+                }
+                if (data.error) {
+                    toaster.pop('error', '提示', data.error);
+                }
+            });
+        };
+
+        $scope.currentDay = function () {
+            return $filter('date')(new Date(), 'yyyy-MM-dd');
+        };
+
+        // 搜索框回车
+        $scope.onSearch = function (keyword) {
+            $scope.tableParams.page(1);
+            $scope.tableParams.reload();
+        };
+
+        $scope.inquiry.inquiryItems = [];
+        var prod = {
+            prodCode: null,
+            prodTitle: null,
+            inbrand: null,
+            currency: 'RMB',
+            toDate: null,
+            unit: 'PCS'
+        };
+        $scope.inquiry.inquiryItems.push(prod);
+        // 联想词start
+
+        // 获取品牌联想词
+        $scope.getSimilarBrands = function (value) {
+            if (value) {
+                // 获取品牌联想词
+                return Search.getSimilarBrands({keyword: value}).$promise.then(function (data) {
+                    return data.map(function (item) {
+                        return item;
+                    });
+                });
+            }
+        };
+
+        // 获取产品型号联想词
+        $scope.getSimilarCodes = function (value) {
+            if (value) {
+                // 获取产品型号联想词
+                return Search.getSimilarComponents({keyword: value}).$promise.then(function (data) {
+                    return data.map(function (item) {
+                        return item;
+                    })
+                });
+            }
+        };
+
+        $scope.selectKind = function (prod) {
+            var submit = [];
+            $modal.open({
+                animation: true,
+                size: 'lg',
+                templateUrl: 'static/view/usercenter/b2b/modal/product_kindChoose_modal.html',
+                controller: 'ProdKindChooseCtrl',
+                resolve: {
+                    actives: function () {
+                        return $scope.actives;
+                    }
+                }
+            }).result.then(function (data) {
+                $scope.actives = data.actives;
+                var size = data.actives.length;
+                submit.gradeOneKiName = '';
+                submit.gradeTwoKiName = '';
+                submit.gradeThreeKiName = '';
+                if (size > 0) {
+                    submit.gradeOneKiName = $scope.actives[0].nameCn;
+                    prod.prodTitle = submit.gradeOneKiName;
+                    if (size > 1) {
+                        submit.gradeTwoKiName = $scope.actives[1].nameCn;
+                        prod.prodTitle = submit.gradeTwoKiName;
+                        if (size > 2) {
+                            submit.gradeThreeKiName = $scope.actives[2].nameCn;
+                            prod.prodTitle = submit.gradeThreeKiName;
+                        }
+                    }
+                }
+            }, function () {
+
+            });
+        };
+
+        // 点击联想词获取品牌信息
+        $scope.onAssociateBrandClick = function (brand, prod) {
+            if (brand instanceof String) {
+                prod.inbrand = brand;
+            } else if (brand instanceof Object) {
+                prod.inbrand = brand.brandCn;
+            }
+        };
+
+        // 打开品牌选择的模态框
+        $scope.selectBrand = function (prod) {  //打开模态
+            var modalInstance = $modal.open({
+                templateUrl: 'static/view/usercenter/b2b/modal/product_brandChoose_modal.html',  //指向上面创建的视图
+                controller: 'BrandModalInstanceCtrl'  // 初始化模态范围
+            });
+            modalInstance.opened.then(function () {// 模态窗口打开之后执行的函数
+            });
+            modalInstance.result.then(function (brand) {
+                prod.inbrand = brand.nameCn;
+            }, function (reason) {
+
+            });
+        };
+
+        // 点击联想词获取器件信息 带入产品分类和品牌
+        $scope.onAssociateCmpClick = function (cmp, prod) {
+            ComponentActiveAPI.get({uuid: cmp.uuid}, {}, function (data) {
+                $scope.component = data;
+                prod.prodCode = data.code;
+                prod.prodTitle = data.kind.nameCn;
+                prod.inbrand = data.brand.nameCn;
+            }, function (res) {
+                toaster.pop('error', '提示', '产品信息加载失败,请刷新页面');
+            })
+        };
+        //联想词end
+
+        // 导入商品信息
+        $scope.uplodaByBatch = function () {
+            var modalInstance = $modal.open({
+                templateUrl: 'static/view/usercenter/b2b/modal/uplodaByBatch.html',
+                controller: 'PurcInquiryUploadCtrl',
+                size: 'lg',
+                resolve: {}
+            });
+
+            modalInstance.result.then(function (data) {
+                angular.forEach(data, function (prod) {
+                    $scope.inquiry.inquiryItems.push(prod);
+                    for (var i = 0; i < $scope.inquiry.inquiryItems.length; i++) {
+                        if ($scope.inquiry.inquiryItems[i].prodCode == null) { // 如果没有填写就删除这行数据
+                            $scope.inquiry.inquiryItems.splice(i, 1);
+                        }
+                    }
+                })
+
+            }, function () {
+
+            });
+        }
+        //增加商品
+        $scope.add = function () {
+            $scope.inquiry.inquiryItems.push(
+                {
+                    prodCode: null,
+                    prodTitle: null,
+                    unit: 'PCS',
+                    ibrand: null,
+                    currency: 'RMB',
+                    toDate: null
+                });
+        };
+        //删除商品
+        $scope.del = function (index) {
+            $scope.inquiry.inquiryItems.splice(index, 1);
+        };
+
+        // 搜索结果询价
+        if ($rootScope.prodId) {
+            VendorInfo.getProdInfo({id: $rootScope.prodId}, {}, function (data) {
+                prod.prodCode = data.code;
+                prod.prodTitle = data.title;
+                prod.spec = data.spec;
+                prod.unit = data.unit;
+                prod.productId = data.id;
+                prod.inbrand = data.brand;
+                $scope.inquiry.inquiryItems.push(prod);
+                $rootScope.prodId = null;// 清除掉prodId
+            }, function (response) {
+
+            });
+        }
+
+        $scope.check = function (product) {
+            for (var i = 0; i < $scope.inquiry.inquiryItems.length; i++) {
+                if ($scope.inquiry.inquiryItems[i].prodCode == null) { // 如果没有填写就删除这行数据
+                    $scope.inquiry.inquiryItems.splice(i, 1);
+                }
+            }
+            $scope.inquiry.inquiryItems.push({
+                prodCode: product.code, prodTitle: product.title, spec: product.spec, unit: product.unit,
+                currency: null, toDate: null, productId: product.id, inbrand: product.brand
+            });
+        }
+
+        $scope.getMinDate = function (item) {
+            return $filter('date')(new Date, 'yyyy-MM-dd');
+        };
+
+        $scope.openDatePicker = function ($event, openParam, index) {
+            $event.preventDefault();
+            $event.stopPropagation();
+            $scope.inquiry.inquiryItems[index].$toDateOpen = !openParam;
+        };
+
+        $scope.openEndDatePicker = function ($event, item, openParam) {
+            $event.preventDefault();
+            $event.stopPropagation();
+            item[openParam] = !item[openParam];
+        };
+
+        $scope.ifrepeat = false;
+        // 保存并提交
+        $scope.submit = function () {
+            $scope.loading = true;
+            for (var i = 0; i < $scope.inquiry.inquiryItems.length; i++) {
+                $scope.item = $scope.inquiry.inquiryItems[i];
+                for (var j = 0; j < $scope.inquiry.inquiryItems.length; j++) {
+                    $scope.otheritem = $scope.inquiry.inquiryItems[j];
+                    if (i != j) {
+                        if ($scope.item.prodCode = $scope.otheritem.prodCode && $scope.item.prodTitle == $scope.otheritem.prodTitle
+                                && $scope.item.inbrand == $scope.otheritem.inbrand && $scope.item.needquantity == $scope.otheritem.needquantity
+                                && $scope.item.toDate.getTime() == $scope.otheritem.toDate.getTime()) {
+                            $scope.ifrepeat = true;
+                        }
+                    }
+                }
+            }
+            var file = $scope.myFiles, file = file && file.length > 0 ? file[0] : null;// 可以不传附件
+            $scope.vendors = [];
+            $scope.vendors.push({
+                enName: $scope.vendor.enName,
+                enuu: $scope.vendor.uu,
+                currency: $scope.vendor.currency,
+                rate: $scope.vendor.rate
+            });
+            var b2bUrl = BaseService.getB2bUrl();
+            if (!$scope.ifrepeat) {
+                $upload.upload({
+                    url: b2bUrl + '/purc/inquiry/submit/withVendor',
+                    file: file,
+                    method: 'POST',
+                    data: {
+                        inquiry: $scope.inquiry,
+                        contacts: $scope.vendors
+                    },
+                }).success(function (data) {
+                    if (data.success) {
+                        $scope.loading = false;
+                        toaster.pop('success', '提示', data.success);
+                        $timeout(function () {
+                            window.location.hash = "#/purc/purchaseinquiry";
+                        }, 500);
+                    }
+                    if (data.error) {
+                        $scope.loading = false;
+                        toaster.pop('error', '提示', data.error);
+                    }
+                }).error(function (data) {
+                    $scope.loadingShow = false;
+                    toaster.pop('error', '操作失败', data.error);
+                });
+            } else {
+                $scope.loading = false;
+                toaster.pop('error', '提示', '存在条件相同的物料');
+            }
+        }
+    }]);
+
+});

+ 62 - 4
src/main/webapp/resources/js/usercenter/controllers/b2b/Purc/PurcNewOrderCtrl.js

@@ -14,7 +14,7 @@ define(['app/app'], function(app) {
             });
 
             // 获取地址信息
-            $http.get('resources/citydata/city.json', {
+            $http.get('resources/js/prod/data/city.json', {
                 "Accept": "application/json;charset=utf-8", "Accept-Charset": "charset=utf-8"
             }).then(function (response) {
                 $scope.provinces = response.data;
@@ -79,7 +79,7 @@ define(['app/app'], function(app) {
             // 查找供应商
             $scope.dbfindVend = function () {
                 var modalInstance = $modal.open({
-                    templateUrl: 'static/tpl/index/purc/modal/purc_order_vendor.html',
+                    templateUrl: 'static/view/usercenter/b2b/modal/purc_order_vendor.html',
                     controller: 'DbfindVendorInfoCtrl',
                     size: 'lg',
                     resolve: {
@@ -245,7 +245,7 @@ define(['app/app'], function(app) {
             // 导入商品信息
             $scope.uplodaByBatch = function () {
                 var modalInstance = $modal.open({
-                    templateUrl: 'static/tpl/index/purc/modal/purc_uplodaByBatch.html',
+                    templateUrl: 'static/view/usercenter/b2b/modal/purc_uplodaByBatch.html',
                     controller: 'PurcUploadByBatchCtrl',
                     size: 'lg',
                     resolve: {}
@@ -374,7 +374,7 @@ define(['app/app'], function(app) {
             $scope.addContact = function (uu) {
                 var modalInstance = $modal.open({
                     animation: true,
-                    templateUrl: 'static/tpl/index/purc/modal/contact_person_modal.html',
+                    templateUrl: 'static/view/vendor/b2b/modal/contact_person_modal.html',
                     controller: 'AddContacCtrl',
                     resolve: {}
                 });
@@ -394,4 +394,62 @@ define(['app/app'], function(app) {
             }
 
         }]);
+
+    // 查找供应商
+    app.register.controller('DbfindVendorInfoCtrl', ['$scope', 'BaseService', 'ngTableParams', 'toaster', '$modalInstance', 'B2bVendor', '$rootScope', 'orderItems', function ($scope, BaseService, ngTableParams, toaster, $modalInstance, Vendor, $rootScope, orderItems) {
+        $scope.prod = false;
+        if (orderItems.length != 0) {
+            $scope.prod = true;
+        }
+        BaseService.scrollBackToTop();
+        if ($rootScope.venduu != null) {
+            $scope.venduu = $rootScope.venduu;
+        }
+        // 搜索框回车
+        $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);
+                        $defer.resolve(page.content);
+                    }
+                    $scope.totalCount = page.totalElement;
+                }, function (response) {
+                    $scope.loading = false;
+                    toaster.pop('error', '数据加载失败', response.data);
+                });
+            }
+        });
+
+        $scope.cancel = function () {
+            $modalInstance.dismiss();
+        };
+
+        $scope.ensure = false;
+        $scope.check = function (vendor) { // 需要进行判断的选择
+            $scope.vendorInfo = vendor;
+            $scope.ensure = true;
+        };
+
+        $scope.checkVendor = function (vendor) { // 直接选择
+            $modalInstance.close(vendor);
+        }
+
+    }]);
+
 });

+ 243 - 9
src/main/webapp/resources/js/usercenter/controllers/b2b/Purc/tender.js

@@ -82,9 +82,8 @@ define(['app/app'], function(app) {
       });
     };
     loadShipAddress();
-
     // 获取地址信息
-    $http.get('resources/citydata/city.json', {
+    $http.get('resources/js/prod/data/city.json', {
       "Accept": "application/json;charset=utf-8", "Accept-Charset": "charset=utf-8"
     }).then(function (response) {
       $scope.provinces = response.data;
@@ -158,7 +157,7 @@ define(['app/app'], function(app) {
       $modal.open({
         animation: true,
         size: 'lg',
-        templateUrl: 'static/tpl/index/purc/modal/product_kindChoose_modal.html',
+        templateUrl: 'static/view/usercenter/b2b/modal/product_kindChoose_modal.html',
         controller: 'ProdKindChooseCtrl',
         resolve: {
           actives: function () {
@@ -201,7 +200,7 @@ define(['app/app'], function(app) {
     $scope.selectBrand = function (prod) {  //打开模态
       var modalInstance = $modal.open({
         size: 'lg',
-        templateUrl: 'static/tpl/index/purc/modal/product_brandChoose_modal.html',  //指向上面创建的视图
+        templateUrl: 'static/view/usercenter/b2b/modal/product_brandChoose_modal.html',  //指向上面创建的视图
         controller: 'BrandModalInstanceCtrl'  // 初始化模态范围
       });
       modalInstance.opened.then(function () {// 模态窗口打开之后执行的函数
@@ -269,9 +268,9 @@ define(['app/app'], function(app) {
     // 批量导入
     $scope.uplodaByBatch = function () {
       var modalInstance = $modal.open({
-        templateUrl: 'static/tpl/index/purc/modal/uplodaByBatch.html',
+        templateUrl: 'static/view/usercenter/b2b/modal/uplodaByBatch.html',
         controller: 'PurcTenderUploadCtrl',
-        size: 'lg',
+        size: 'md',
         resolve: {}
       });
 
@@ -362,8 +361,11 @@ define(['app/app'], function(app) {
 
     // 查找供应商
     $scope.dbfindVendor = function () {
+      angular.element('body').css({
+        'overflow': 'hidden'
+      })
       var modalInstance = $modal.open({
-        templateUrl: 'static/tpl/index/purc/tender_vendor.html',
+        templateUrl: 'static/view/usercenter/b2b/modal/tender_vendor.html',
         controller: 'DbfindVendorCtrl',
         size: 'lg',
         resolve: {}
@@ -371,6 +373,7 @@ define(['app/app'], function(app) {
 
       var ifPush = true;
       modalInstance.result.then(function (data) {
+        angular.element('body').removeAttr('style')
         angular.forEach(data, function (vendor) {
           // 获取供应商联系人
           Vendor.contacts({venduu: vendor.vendorEnterprise.uu}, {}, function (data) {
@@ -397,7 +400,7 @@ define(['app/app'], function(app) {
         $rootScope.tenderVendor = $scope.tenderProd.enterpriseBaseInfo;
 
       }, function () {
-
+        angular.element('body').removeAttr('style')
       });
     };
 
@@ -405,7 +408,7 @@ define(['app/app'], function(app) {
     $scope.addContact = function (en) {
       var modalInstance = $modal.open({
         animation: true,
-        templateUrl: 'static/tpl/index/purc/modal/contact_person_modal.html',
+        templateUrl: 'static/view/usercenter/b2b/modal/contact_person_modal.html',
         controller: 'AddContacCtrl',
         resolve: {}
       });
@@ -562,6 +565,7 @@ define(['app/app'], function(app) {
 
     // 切换为在平台公开招标时,清除掉已添加的供应商信息
     $scope.removeChecked = function () {
+      if (!$scope.tenderProd.enterpriseBaseInfo) return
       if ($scope.tenderProd.enterpriseBaseInfo.size > 0) {
         $scope.tenderProd.enterpriseBaseInfo = [];
       }
@@ -671,6 +675,96 @@ define(['app/app'], function(app) {
       $event.stopPropagation();
       item[openParam] = !item[openParam];
     };
+
+    /**
+     * 将日期转化为整数日期
+     */
+    var getDateTime = function (date) {
+      if (angular.isDate(date)) {
+        return date.getTime();
+      } else {
+        return null;
+      }
+    };
+
+    var getState = function (active) {
+      var fn = 'get';
+      switch (active) {
+        case 'done':
+          fn = 'getDone';
+          break;
+        case 'todo':
+          fn = 'getTodo';
+          break;
+        case 'end':
+          fn = 'getEnd';
+          break;
+        case 'waiting':
+          fn = 'getWaiting';
+          break;
+        case 'received':
+          fn = 'getReceived';
+          break;
+        case 'invalid':
+          fn = 'getInvalid';
+          break;
+          // 已采纳
+        case 'agreed':
+          fn = 'getAgreed';
+          break;
+          // 未采纳
+        case 'refused':
+          fn = 'getRefused';
+          break;
+          // 个人
+        case 'personal':
+          fn = 'getPersonal';
+          break;
+          // 集体
+        case 'teams':
+          fn = 'getTeams';
+          break;
+          // 非标准
+        case 'nonstandard':
+          fn = 'getNonstandard';
+          break;
+          // 标准
+        case 'standard':
+          fn = 'getStandard';
+          break;
+          // 变更单无需确认
+        case 'unread':
+          fn = 'getUnread';
+          break;
+      }
+      return fn;
+    };
+
+    var getDateCondition = function (zone, condition) {
+      var fromDate = new Date();
+      var toDate = new Date();
+      //去除时分秒限制,dateFrom设置成0时0分0秒,dateTo设置成23时59分59秒
+      fromDate.setHours(0, 0, 0, 0);
+      toDate.setHours(23, 59, 59, 999);
+      if (zone == -1) { // 自定义时间,什么都不做
+
+      } else if (zone == 1) {
+        fromDate.setMonth(fromDate.getMonth() - 1);
+        condition.dateFrom = fromDate;
+        condition.dateTo = toDate;
+      } else if (zone == 3) {
+        fromDate.setMonth(fromDate.getMonth() - 3);
+        condition.dateFrom = fromDate;
+        condition.dateTo = toDate;
+      } else if (zone == 6) {
+        fromDate.setMonth(fromDate.getMonth() - 6);
+        condition.dateFrom = fromDate;
+        condition.dateTo = toDate;
+      } else {
+        condition.dateFrom = null;
+        condition.dateTo = null;
+      }
+    };
   }]);
 
   //类目选择模态框(招标产品明细)
@@ -816,4 +910,144 @@ define(['app/app'], function(app) {
     };
   }]);
 
+  /**
+   * 招标单批量导入
+   */
+  app.register.controller('PurcTenderUploadCtrl', ['$scope', 'toaster', '$upload', '$modalInstance', function ($scope, toaster, $upload, $modalInstance) {
+    // 通过excel批量上传物料
+    $scope.result = null;
+    $scope.upload = function () {
+      var file = $scope.myFiles[0];
+      $upload.upload({
+        url: 'tender/release/excel',
+        file: file,
+        method: 'POST'
+      }).success(function (data) {
+        $scope.result = data;
+        $scope.success = $scope.result.success;
+        $scope.total = $scope.result.total;
+        $scope.alters = $scope.result.alters;
+      }).error(function (response) {
+        toaster.pop('error', '提示', '上传失败,请检查填写格式');
+      });
+    };
+
+    // 查看范例
+    $scope.showImg = function () {
+      var src = "static/img/eg/uploadTenderProducts_example.png", box = $('#image-box');
+      box.show();
+      box.find('img').attr('src', src);
+      box.find('a').click(function () {
+        box.hide();
+      });
+      box.dblclick(function () {
+        box.hide();
+      });
+    };
+
+    // 下载模板
+    $scope.download = function () {
+      window.location.href = 'tender/upload/template';
+    };
+
+    $scope.enSure = function () {
+      $modalInstance.close($scope.result.items);
+    }
+
+    $scope.cancel = function () {
+      $modalInstance.dismiss();
+    }
+  }]);
+  // 查找供应商
+  app.register.controller('DbfindVendorCtrl', ['$scope', 'B2bVendor', 'BaseService', 'ngTableParams', 'toaster', '$modalInstance', '$rootScope', function ($scope, Vendor, BaseService, ngTableParams, toaster, $modalInstance, $rootScope) {
+    BaseService.scrollBackToTop();
+    // 搜索框回车
+    $scope.onSearch = function (keyword) {
+      $scope.keyword = keyword;
+      $scope.tableParams.page(1);
+      $scope.tableParams.reload();
+    };
+
+    $scope.tableParams = new ngTableParams({
+      page: 1,
+      count: 20
+    }, {
+      total: 0,
+      counts: [10, 25, 50, 100],
+      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);
+            $defer.resolve(page.content);
+            // 添加供应商时,将已存在的选中
+            if ($rootScope.tenderVendor) {
+              angular.forEach(page.content, function (vendor) {
+                for (var i = 0; i < $rootScope.tenderVendor.length; i++) {
+                  vendor.checked = false;
+                  if (vendor.vendorEnterprise.enName == $rootScope.tenderVendor[i].enName) {
+                    vendor.checked = true;
+                    break;
+                  }
+                }
+              });
+            }
+          }
+          $scope.totalCount = page.totalElement;
+        }, function (response) {
+          $scope.loading = false;
+          toaster.pop('error', '数据加载失败', response.data);
+        });
+      }
+    });
+
+
+    $scope.cancel = function () {
+      $modalInstance.dismiss();
+    };
+
+    $scope.checks = {
+      checked: false
+    };// 全选框
+
+    $scope.checkAll = function () {
+      angular.forEach($scope.tableParams.data, function (vendor) {
+        vendor.checked = $scope.checks.checked;
+      });
+    };
+
+    // 单选
+    $scope.checkOne = function (vendor) {
+      vendor.checked = true;
+
+      var checked = true;
+      angular.forEach($scope.tableParams.data, function (message) { // 单选全部时,全选选中
+        if (!message.checked) {
+          checked = false;
+        }
+      });
+      $scope.checks.checked = checked;
+    };
+
+    // 单反选
+    $scope.unCheckOne = function (vendor) {
+      vendor.checked = false;
+      $scope.checks.checked = false;
+    };
+
+    $scope.close = function () {
+      var vendors = [];
+      angular.forEach($scope.tableParams.data, function (vendor) {
+        if (vendor.checked) {
+          vendors.push(vendor);
+          $modalInstance.close(vendors);
+        }
+      });
+    };
+
+  }]);
+
 })

+ 406 - 177
src/main/webapp/resources/view/usercenter/b2b/Purc/addOrder.html

@@ -1,100 +1,254 @@
 <style>
-	#pub .purc li div span .select02 {
-		background: none;
-		-webkit-appearance: inherit;
-		appearance: inherit;
-		-o-appearance: inherit;
-		-moz-appearance: inherit;
-		-ms-appearance: inherit;
-		border: #bfbfbf 1px solid !important;
-		width: 187px;
+	.add-order {
+		background: #fff;
+	}
+	.add-order .content-wrap {
+		padding: 0 20px;
+	}
+	.add-order .oder-change .title {
+		width: 86px;
+		display: inline-block;
+		vertical-align: middle;
+		position: relative;
+	}
+	.add-order .oder-change .title i {
+		position: absolute;
+		left: -7px;
+	}
+	.add-order .oder-change .item {
+		line-height: 48px;
+	}
+	.add-order .oder-change .item .input-group {
+		width: 280px;
+		display: inline-table;
+		vertical-align: middle;
+	}
+	.add-order .oder-change .item .form-control {
+		width: 280px;
+		display: inline-block;
+		vertical-align: middle;
+	}
+	.add-order .oder-change .item .form-control.large {
+		width: 773px;
+	}
+	.add-order .oder-change .item .plus {
+		color: #30a603;
+	}
+	.add-order .b2b-com-title .operate {
+		float: right;
+		color: #30a603;
+		font-weight: normal;
+	}
+	.add-order #empty {
+		text-align: center;
+		padding: 30px 0;
+	}
+	.add-order .buy-wrap {
+		padding-right: 50px;
+		margin-top: 30px;
+	}
+	.add-order .buy-wrap .b2b-btn {
+		width: 94px;
+		margin-right: 10px;
+	}
+	.editable {
+		width: 92px;
+		height: 34px;
+		border-radius: 2px;
+		border: 1px solid #ccc;
+		text-align: center;
+		padding: 0 10px;
+	}
+	.add-order .b2b-com-table > tbody > tr {
+		line-height: 30px;
+		height: 30px;
+	}
+	.add-order .form-control {
+		border-radius: 2px;
+	}
+	.add-order .select .select-adder {
+		width: 100px;
 	}
 
-	.dropdown-menu tr td button {
-		border: none;
+	.add-tanchuang {
+		position: absolute;
+		box-shadow: 0 0 3px #888;
+		width: 238px;
+		height: 202px;
+		background: #fff;
+		right: 100px;
+		top: 20%;
+		display: none;
 	}
 
-	.oder-change .purc li .dropdown-menu {
-		padding: 0;
-		margin: 0;
-		width: 185px;
+	.add-tanchuang ul {
+		width: 195px;
+		margin: 0 auto;
+		margin-top: 10px;
 	}
 
-	.oder-change .purc li .dropdown-menu li {
-		margin-bottom: 0;
+	.add-tanchuang ul li {
+		width: 100%;
+		margin: 0 auto;
 		height: 34px;
 		line-height: 34px;
+		margin-top: 12px;
 	}
 
-	.oder-change .purc li  .dropdown-menu>li>a {
-		display: inline-block;
-		width: 100%;
-		padding: 0;
+	.add-tanchuang ul li div.fl {
+		width: 50px;
+		font-size: 14px;
+	}
+
+	.add-tanchuang ul li div.fr {
+		width: 145px;
+	}
+
+	.add-tanchuang ul li div.fr .price-input {
+		width: 145px;
+		border: #969595 1px solid;
 		height: 34px;
-		line-height: 34px;
+		font-size: 14px;
 		padding-left: 10px;
 	}
 
-	.dropdown-menu>.active>a, .dropdown-menu>.active>a:hover, .dropdown-menu>.active>a:focus
-	{
+	.add-tanchuang ul li.add-btn {
+		margin-top: 20px;
+	}
+
+	.add-tanchuang ul li.add-btn div.fr a {
+		width: 62px;
+		height: 24px;
+		display: inline-block;
+		line-height: 24px;
+		text-align: center;
+	}
+
+	.add-tanchuang ul li div.fr a.off {
+		border: #3f84f6 1px solid;
+		color: #3f84f6;
+		float: left;
+	}
+
+	.add-tanchuang ul li div.fr a.ok {
+		background: #3f84f6;
+		color: #fff;
+		float: right;
+	}
+
+	.add-tanchuang ul li div.fr a:hover {
 		background: #5078cb;
+		color: #fff;
+	}
+
+	.add-tanchuang ul li .btn-wrap {
+		position: relative;
+		height: 30px;
+		width: 145px;
+		line-height: 30px;
+	}
+
+	.add-tanchuang ul li .btn-wrap input {
+		display: inline-block;
 	}
 
-	.com_title01 a {
+	.add-tanchuang ul li .btn-wrap .number {
+		width: 145px;
+		height: 34px !important;
+		border: #969595 1px solid;
+		display: inline-block;
+		text-align: center;
+		line-height: 34px !important;
+		color: #333;
+	}
+
+	.add-tanchuang ul li .btn-wrap .number a {
+		width: 26px;
+		height: 33px;
+		display: inline-block;
+		font-size: 18px;
+		color: #666;
+		line-height: 28px;
+	}
+
+	.add-tanchuang ul li .btn-wrap .number a:hover {
+		color: #fff;
+		background: #5078cb
+	}
+
+	.add-tanchuang ul li .btn-wrap .number .reduce {
+		float: left;
+		border-right: #969595 1px solid;
+	}
+
+	.add-tanchuang ul li .btn-wrap .number .add {
 		float: right;
-		color: #5078cb;
-		font-weight: normal;
-		margin-right: 30px;
-		margin-top: 20px;
-		font-size: 14px;
+		border-left: #969595 1px solid;
+	}
+
+	.add-tanchuang ul li .btn-wrap .number input {
+		float: left;
+		width: 91px;
+		height: 32px;
+		line-height: 32px;
+		text-align: center;
+		font-size: 16px;
+		color: #666;
+		border: none;
 	}
+
 </style>
-<div class="wrap" id="pub">
-	<div class="content">
-		<!--<div class="com_title">服务>采购模块>采购单<font>>新增采购单</font></div>-->
-		<div class="com_head">
-			<span>新增采购单</span>
-		</div>
+<div class="user_right fr add-order">
+	<div class="b2b-com-head">新增采购单</div>
+	<div class="content-wrap">
 		<!--B2B商务采购变更-添加-->
+		<div class="b2b-com-title">基本信息</div>
 		<form class="oder-change clearfix" name="orderForm" id="orderForm">
-			<ul class="purc">
-				<li>
-					<div class="fl">
-						<em>流水号:</em> <span>{{::order.code}}</span>
+			<ul>
+				<li class="clearfix item">
+					<div class="col-sm-6">
+						<em class="title">流水号:</em> <span>{{::order.code}}</span>
 					</div>
-					<div class="fr">
-						<em>录入时间:</em> <span>{{::order.date | date:'yyyy-MM-dd HH:mm:ss'}}</span>
+					<div class="col-sm-6">
+						<em class="title">录入时间:</em> <span>{{::order.date | date:'yyyy-MM-dd HH:mm:ss'}}</span>
 					</div>
 				</li>
-				<li>
-					<div class="fl">
-						<em>供应商:</em> <span><input type="text"
-												   ng-model="order.vend.enName" placeholder="输入供应商名称" class="bor01"
-												   ng-required="true"
-												   ng-change="getSimilarVendors(order.vend.enName)" name="enName"
-												   ng-focus="onFocus('enName')"
-												   typeahead="order.vendName for order in getSimilarVendors($viewValue)"
-												   autocomplete="off"
-												   typeahead-on-select="onAssociateCmpClick($item, order)"
-												   spellcheck="false" style="width: 147px;"> <a class="btn"
-																								ng-click="dbfindVend()"
-																								style="width: 40px; border: #bfbfbf 1px solid !important; border-radius: 0px; margin-left: -5px; margin-top: -3px;"><i
-							class="fa fa-search" aria-hidden="true"></i></a> </span>
+				<li class="clearfix item">
+					<div class="col-sm-6">
+						<em class="title"><i class="must">*</i>供应商:</em>
+						<span class="input-group">
+							<input type="text"
+								   ng-model="order.vend.enName" placeholder="输入供应商名称"
+								   class="form-control input-sm"
+								   ng-required="true"
+								   ng-change="getSimilarVendors(order.vend.enName)" name="enName"
+								   ng-focus="onFocus('enName')"
+								   typeahead="order.vendName for order in getSimilarVendors($viewValue)"
+								   autocomplete="off"
+								   typeahead-on-select="onAssociateCmpClick($item, order)"
+								   spellcheck="false">
+						<a class="btn input-group-addon" ng-click="dbfindVend()">
+							<i class="fa fa-search" aria-hidden="true"></i>
+						</a>
+					</span>
 					</div>
-					<div class="fr">
-						<em>供应商联系人:</em> <span> <select class="select01"
-														ng-model="order.vendor" required="required"
-														ng-options="(contact.venduser + '' + contact.tel) for contact in contacts">
-									<option value="">请选择供应商联系人</option>
-							</select> <a class="add-address" ng-if="id!=null"
-										 ng-click="addContact(venduu)">+增加联系人</a>
-							</span>
+					<div class="col-sm-6 item">
+						<em class="title"><i class="must">*</i>供应商联系人:</em>
+						<span>
+							<select class="form-control select-adder"
+									ng-model="order.vendor" required="required"
+									ng-options="(contact.venduser + '' + contact.tel) for contact in contacts">
+								<option value="">请选择供应商联系人</option>
+							</select>
+							<a class="plus" ng-if="id!=null"
+							   ng-click="addContact(venduu)"><i class="fa fa-plus-circle"></i> 增加联系人</a>
+						</span>
 					</div>
 				</li>
-				<li>
-					<div class="fl">
-						<em>付款方式:</em> <span> <input ng-model="order.payments"
-													 list="paymentmethod" class="select02 wid152"
+				<li class="clearfix item">
+					<div class="col-sm-6">
+						<em class="title"><i class="must">*</i>付款方式:</em> <span> <input ng-model="order.payments"
+													 list="paymentmethod" class="form-control"
 													 placeholder="选择付款方式" /> <datalist id="paymentmethod">
 									<option value="月结30天">月结30天</option>
 									<option value="月结60天">月结60天</option>
@@ -102,36 +256,38 @@
 								</datalist>
 							</span>
 					</div>
-					<div class="fr">
-						<em>交易币别:</em> <span> <select name=""
-													  class="select02 wid100" ng-model="order.currency"
-													  ng-init="order.currency = 'RMB'">
-									<option value="RMB">RMB</option>
-									<option value="USD">USD</option>
-									<option value="HKD">HKD</option>
+					<div class="col-sm-6">
+						<em class="title"><i class="must">*</i>交易币别:</em>
+						<span>
+							<select name="" class="form-control select-adder" ng-model="order.currency" ng-init="order.currency = 'RMB'">
+								<option value="RMB">RMB</option>
+								<option value="USD">USD</option>
+								<option value="HKD">HKD</option>
 							</select>
-							</span>
+						</span>
 					</div>
 				</li>
-				<li>
-					<div class="fr address">
-						<em>收货信息:</em> <span class="fr" required="required"> <select
-							class="select fl" ng-model="order.shipadd" required="required"
+				<li class="clearfix item">
+					<div class="col-sm-12 address" style="padding-right: 0;">
+						<em class="title"><i class="must">*</i>收货信息:</em> <span required="required"> <select
+							ng-model="order.shipadd" required="required"
+							class="form-control large select-adder"
 							ng-options="(ship.address + ship.addressdet + ' ' + ship.receiver + ' ' + ship.usertel) for ship in ships">
 									<option value="">请选择收货地址</option>
-							</select> <a href="javascript:void(0);" class="add-address"><i class="fa fa-plus-square fa-fw"></i>新增收货信息</a>
+							</select> <a href="javascript:void(0);" class="plus add-address"><i class="fa fa-plus-circle"></i> 新增收货信息</a>
 							</span>
 					</div>
 				</li>
-				<li class="beizhu">
-					<div class="fl">
-						<em>备注:</em> <span><input type="text"
-												  ng-model="order.remark" class="bor01" placeholder="请填写备注"
-												  style="cursor: pointer; width: 568px;" /></span>
+				<li class="beizhu clearfix item">
+					<div class="col-sm-12">
+						<em class="title">备注:</em>
+						<span>
+							<input type="text" class="form-control large" ng-model="order.remark" placeholder="请填写备注" />
+						</span>
 					</div>
 				</li>
-				<li ng-show="false">
-					<div class="fl">
+				<li class="clearfix item" ng-show="false">
+					<div class="col-sm-6">
 						<em>税率:</em> <span class="fl" required="required"
 										   ng-if="order.currency == 'RMB'"> <select
 							class="select02 wid100" ng-model="order.rate"
@@ -146,20 +302,81 @@
 					</div>
 				</li>
 			</ul>
-			<div class="com_title01"
+			<div class="b2b-com-title"
 				 ng-if="order.orderItems[0].code == null && !order.vend.uu">
 				<span>请先选择供应商</span>
 			</div>
-			<div class="com_title01"
+			<div class="b2b-com-title"
 				 ng-if="order.orderItems[0].code == null && order.vend.uu">
-				<span>请先选择供应商产品</span> <a ng-click="uplodaByBatch()">批量导入</a>
+				<span>请先选择供应商产品</span> <a class="operate" ng-click="uplodaByBatch()"><i class="fa fa-arrow-circle-o-up"></i> 批量导入</a>
 			</div>
-			<div class="com_title01"
+			<div class="b2b-com-title"
 				 ng-if="order.orderItems[0].code != null && order.vend.uu">
-				<span>产品信息</span> <a ng-click="uplodaByBatch()">批量导入</a>
+				<span>产品信息</span> <a class="operate" ng-click="uplodaByBatch()"><i class="fa fa-arrow-circle-o-up"></i> 批量导入</a>
 			</div>
 			<!--产品信息-->
-			<dl ng-if="order.orderItems[0].code != null">
+			<table class="b2b-com-table" ng-if="order.orderItems[0].code != null">
+				<thead>
+				<tr>
+					<th>序号</th>
+					<th>产品信息</th>
+					<th>单位</th>
+					<th>数量</th>
+					<th>单价</th>
+					<th>税率(%)</th>
+					<th>交货日期</th>
+					<th>备注</th>
+					<th></th>
+				</tr>
+				</thead>
+				<tbody>
+				<tr ng-repeat="item in order.orderItems">
+					<td>{{$index + 1}}</td>
+					<td>
+						<p>{{::item.code}}</p>
+						<p>{{::item.title}}</p>
+						<p>{{::item.spec}}</p>
+					</td>
+					<td>{{::item.unit||'-'}}</td>
+					<td>
+						<input class="editable" type="text"
+							   ng-model="item.qty" placeholder="数量" style="cursor: pointer;"
+							   required="true"
+							   ng-pattern="/^(([0-9]+\.[0-9]{1,3})|([0-9]*[1-9][0-9]*\.[0-9]{1,3})|([0-9]*[1-9][0-9]*))$/" />
+					</td>
+					<td>
+						<input class="editable" type="text" ng-model="item.price"
+							   placeholder="单价" style="cursor: pointer;" required="true"
+							   ng-pattern="/^(([0-9]+\.[0-9]{1,6})|([0-9]*[1-9][0-9]*\.[0-9]{1,6})|([0-9]*[1-9][0-9]*))$/" />
+					</td>
+					<td ng-if="order.currency == 'RMB'">
+						<input class="editable" type="text" ng-model="item.taxrate" placeholder="税率"
+							   style="cursor: pointer;" ng-pattern="/^[0-9][0-9]{0,1}$/" />
+					</td>
+					<td ng-if="order.currency != 'RMB'">
+						<input class="editable" type="text" style="cursor: pointer;" value="0" readonly="readonly" />
+					</td>
+					<td>
+						<input ng-model="item.delivery"
+							   type="text" class="editable" placeholder="选择时间"
+							   datepicker-popup="yyyy-MM-dd" is-open="item.$endDateOpen"
+							   min-date="getMinDate()" ng-required="true" current-text="今天"
+							   clear-text="清除" close-text="关闭"
+							   datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+							   ng-focus="openDatePicker($event, item.$endDateOpen)"
+							   readonly="readonly"
+							   ng-click="openDatePicker($event, item.$endDateOpen, $index)">
+					</td>
+					<td>
+						<input class="editable" type="text" ng-model="item.remark" placeholder="备注" />
+					</td>
+					<td>
+						<a ng-click="deleteProduct($index)"><i class="fa fa-close"></i></a>
+					</td>
+				</tr>
+				</tbody>
+			</table>
+			<!--<dl ng-if="order.orderItems[0].code != null">
 				<dt>
 					<b>序号</b> <b class="wid01">产品信息</b> <b>单位</b> <b>数量</b> <b>单价</b>
 					<b>税率(%)</b> <b>交货日期</b> <b>备注</b> <b class="wid02">&nbsp;</b>
@@ -204,11 +421,11 @@
 						<a ng-click="deleteProduct($index)"><i class="fa fa-close"></i></a>
 					</b>
 				</dd>
-			</dl>
-			<div class="save" ng-if="order.orderItems[0].code != null">
-				<button ng-click="addToOrder(order)"
+			</dl>-->
+			<div class="text-right buy-wrap" ng-if="order.orderItems[0].code != null">
+				<button class="b2b-btn b2b-btn-submit" ng-click="addToOrder(order)"
 						ng-disabled="orderForm.$invalid">立即购买</button>
-				<button ng-click="addToCart(order)"
+				<button class="b2b-btn b2b-btn-submit" ng-click="addToCart(order)"
 						ng-disabled="orderForm.$invalid">添加购物车</button>
 			</div>
 		</form>
@@ -216,19 +433,20 @@
 		<div class="pro-add-data02" style="min-height: 500px;"
 			 ng-if="order.vend.uu">
 			<div class="pro-search">
-				<div class="col-xs-2 search-title fl">供应商产品库</div>
-				<div class="col-xs-8 fr">
-					<div class="col-xs-9 search" style="margin-right: 0;">
-						<input type="text" placeholder="输入供应商物料关键字查询" ng-model="keyword"
-							   ng-search="onSearch(keyword)" /> <a class="seek"
-																   ng-click="onSearch(keyword)" style="right: inherit;">搜索</a>
-					</div>
-					<div class="col-xs-3 result-title fr">
+				<div class="b2b-com-title">供应商产品库</div>
+				<div class="b2b-com-search" style="margin-bottom: 15px;">
+					<div class="search-result inline-block">
 						搜索到<em>{{total}}</em>条
 					</div>
+					<div class="search-content inline-block fr">
+						<input type="text" placeholder="输入供应商物料关键字查询" ng-model="keyword"
+							   class="inline-block"
+							   ng-search="onSearch(keyword)" />
+						<a class="seek" ng-click="onSearch(keyword)" style="right: inherit;">搜索</a>
+					</div>
 				</div>
 			</div>
-			<table class="block table table-default table-striped"
+			<table class="b2b-modal-table table"
 				   ng-table="tableParams">
 				<thead>
 				<tr class="header">
@@ -312,81 +530,92 @@
 				</tbody>
 			</table>
 		</div>
-	</div>
-</div>
-<!--设置-企业设置-收货地址编辑-->
-<div class="bomb-box" style="display: none">
-	<form class="box04 box" name="shipAddress" id="shipAddress">
-		<i class="off"><img src="static/img/purc/close.png" alt="" /></i>
-		<p>收货人资料</p>
-		<ul>
-			<li class="line01">
-				<div class="fl">
-						<span class="fl"><em>*</em>收货人:
-						</span> <span class="fr"><input type="text" placeholder="填写收货人"
-														ng-model="ship.receiver" required="true"
-														ng-pattern="/^[\u4e00-\u9fa5]{1,6}$|^[\dA-Za-z]{1,12}$/" /></span>
-				</div>
-				<div class="fr">
-						<span class="fl"><em>*</em>手机:
-						</span> <span class="fr"><input type="text"
+		<!--设置-企业设置-收货地址编辑-->
+		<div class="bomb-box" style="display: none">
+			<form class="box04 box" name="shipAddress" id="shipAddress">
+				<i class="off"><i class="fa fa-close"></i></i>
+				<p>收货人资料</p>
+				<ul>
+					<li class="line01">
+						<div>
+						<span class="col-xs-3"><em>*</em>收货人:
+						</span> <span class="col-xs-9">
+							<input type="text" placeholder="填写收货人"
+								   ng-model="ship.receiver" required="true"
+								   class="form-control"
+								   ng-pattern="/^[\u4e00-\u9fa5]{1,6}$|^[\dA-Za-z]{1,12}$/" /></span>
+						</div>
+						<div>
+						<span class="col-xs-3"><em>*</em>手机:
+						</span> <span class="col-xs-9"><input type="text"
+															  class="form-control"
 														ng-model="ship.usertel" required="true"
 														ng-pattern="/^1(3|4|5|7|8)\d{9}$/" /></span>
-				</div>
-			</li>
-			<li class="line01">
-				<div class="fl">
-						<span class="fl">固定电话<em></em>:
-						</span> <span class="fr"><input type="text" ng-model="ship.phone"
+						</div>
+					</li>
+					<li class="line01">
+						<div>
+						<span class="col-xs-3">固定电话<em></em>:
+						</span> <span class="col-xs-9"><input class="form-control" type="text" ng-model="ship.phone"
 														ng-pattern="/([0-9]{3,4}-)?[0-9]{7,8}/" /></span>
+						</div>
+						<div>
+							<span class="col-xs-3">邮箱:</span> <span class="col-xs-9 emaill"><input
+								type="text" ng-model="ship.email" class="form-control"
+								ng-pattern="/^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/" /><i>用于接收订单提醒邮件,便于您及时了解订单状态</i></span>
+						</div>
+					</li>
+					<li class="line02 margin-top40">
+						<div class="col-xs-3">
+							<em>*</em>所在地址:
+						</div> <!--<div class="select fr"><input type="text" placeholder="请选择" ng-model="ship.address" required="true"/><i class="fa fa-angle-down"></i></div>-->
+						<div class="select col-xs-9">
+							<div class="col-xs-4 no-padding">
+								<select required="" class="select-adder form-control" ng-model="ship.province"
+										ng-options="key as key for (key,value) in provinces"
+										ng-change="ship.city='';ship.district='';" required="true">
+									<option value="">省</option>
+								</select>
+							</div>
+							<div class="col-xs-4 no-padding">
+								<select class="select-adder form-control col-xs-4" ng-model="ship.city"
+										ng-options="key as key for (key,value) in provinces[ship.province]"
+										ng-change="ship.district='';" required="true">
+									<option value="">市</option>
+								</select>
+							</div>
+							<div class="col-xs-4 no-padding">
+								<select class="select-adder form-control col-xs-4" ng-model="ship.district"
+										ng-options="value as value for value in provinces[ship.province][ship.city]"
+										required="true">
+									<option value="">区</option>
+								</select>
+							</div>
+						</div>
+					</li>
+					<li class="line02">
+						<div class="col-xs-3">
+							<em>*</em>详细地址:
+						</div>
+						<div class="col-xs-9">
+							<input type="text" class="form-control" ng-model="ship.addressdet" required="true" />
+						</div>
+					</li>
+					<li class="line02">
+						<div class="col-xs-3">地址别名:</div>
+						<div class="col-xs-9 address">
+							<input type="text" class="form-control" ng-model="ship.addalias" /><i>建议填写常用名称:家里/父母家/公司</i>
+						</div>
+					</li>
+				</ul>
+				<div class="many-file-btn text-center">
+					<button class="b2b-btn b2b-btn-submit btn01" ng-click="saveShipAddress(ship)"
+							ng-disabled="shipAddress.$invalid">保存</button>
+					<button href="#" class="b2b-btn b2b-btn-cancel btn02">取消</button>
 				</div>
-				<div class="fr">
-					<span class="fl">邮箱:</span> <span class="fr emaill"><input
-						type="text" ng-model="ship.email"
-						ng-pattern="/^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/" /><i>用于接收订单提醒邮件,便于您及时了解订单状态</i></span>
-				</div>
-			</li>
-			<li class="line02 margin-top40">
-				<div class="fl">
-					<em>*</em>所在地址:
-				</div> <!--<div class="select fr"><input type="text" placeholder="请选择" ng-model="ship.address" required="true"/><i class="fa fa-angle-down"></i></div>-->
-				<div class="select fr">
-					<select required="" class="area-select" ng-model="ship.province"
-							ng-options="key as key for (key,value) in provinces"
-							ng-change="ship.city='';ship.district='';" required="true">
-						<option value="">省</option>
-					</select> <select class="area-select" ng-model="ship.city"
-									  ng-options="key as key for (key,value) in provinces[ship.province]"
-									  ng-change="ship.district='';" required="true">
-					<option value="">市</option>
-				</select> <select class="area-select" ng-model="ship.district"
-								  ng-options="value as value for value in provinces[ship.province][ship.city]"
-								  required="true">
-					<option value="">区</option>
-				</select>
-				</div>
-			</li>
-			<li class="line02">
-				<div class="fl">
-					<em>*</em>详细地址:
-				</div>
-				<div class="fr">
-					<input type="text" ng-model="ship.addressdet" required="true" />
-				</div>
-			</li>
-			<li class="line02">
-				<div class="fl">地址别名:</div>
-				<div class="fr address">
-					<input type="text" ng-model="ship.addalias" /><i>建议填写常用名称:家里/父母家/公司</i>
-				</div>
-			</li>
-		</ul>
-		<div class="many-file-btn">
-			<button class="btn01" ng-click="saveShipAddress(ship)"
-					ng-disabled="shipAddress.$invalid">保存</button>
-			<a href="#" class="btn02">取消</a>
+			</form>
 		</div>
-	</form>
+	</div>
 </div>
 <script src="static/lib/jquery/jquery.min.js"></script>
 <script>

+ 1273 - 0
src/main/webapp/resources/view/usercenter/b2b/Purc/purcinquiry_new.html

@@ -0,0 +1,1273 @@
+<!--  询价单  -->
+<style>
+/* 标题 */
+.tender-label {
+	/*height: 30px;*/
+	/*margin-left: 10px;*/
+	/*margin-right: 10px;*/
+	/*background-color: #e8e8e8;*/
+	/*box-shadow: 0 0 5px #6f6f6f;*/
+	/*border-top-right-radius: 20px;*/
+	width: 100%;
+	height: 40px;
+	line-height: 42px;
+	background: url(static/img/comm_bg01.png) no-repeat center;
+	background-size: 100%;
+}
+/* 主体 */
+.purc-tender {
+	font-size: 14px;
+}
+
+.purc-tender .row {
+	margin-left: 0;
+	margin-right: 0;
+	padding-left: 7px;
+	padding-right: 15px;
+}
+
+.tender-content {
+	background-color: #fff;
+    display: inline-block;
+    width: 100%;
+}
+
+.tender-content>div>div {
+	margin-top: 3px;
+	margin-bottom: 3px;
+}
+/* 二级标题栏 */
+.title-div {
+	font-size: 14px;
+	font-weight: 600;
+	padding-left: 30px;
+	height: 50px;
+	padding-top: 11px;
+}
+
+/* 输入框前描述 */
+.tender-desc {
+	width: 100px;
+	float: left;
+	/*padding-top: 4px;*/
+}
+/* 输入框 */
+.tender-input {
+	/*border: #bfbfbf 1px solid !important;
+        padding-left: 10px;
+        height: 34px;
+        line-height: 34px;
+        width: 160px;*/
+	
+}
+
+.tender-input01 {
+	border: #bfbfbf 1px solid !important;
+	padding-left: 10px;
+	height: 34px;
+	line-height: 34px;
+	width: 160px;
+}
+
+.tender-input:focus {
+	border: #3578ba 1px solid !important;
+}
+
+/* 收货地址 */
+.address-group {
+	border-bottom: 1px solid #323232;
+	border-bottom-left-radius: 0;
+	margin-right: 20px;
+}
+
+.address-group>input:focus {
+	outline: none;
+}
+
+/* 基本信息 */
+.base-info {
+	border-bottom: 1px solid #e8e8e8;
+	padding-bottom: 30px;
+	padding-top: 20px;
+	margin-bottom: 0; /* 去除index中公共样式影响 */
+}
+
+/* 地址附加图标 */
+.address-addon {
+	border: none;
+	background: none;
+}
+
+/* 下拉选项 */
+.select-menu {
+	margin: 4px 0;
+	width: 100px;
+	padding: 0 5%;
+	height: 30px;
+}
+.tender-content .row .tender-desc {
+    line-height: 35px;
+}
+select.select-menu {
+	/*Chrome和Firefox里面的边框是不一样的,所以复写了一下*/
+	border: solid 1px #bfbfbf;
+	height: 34px;
+	line-height: 34px;
+	width: 280px;
+    font-size: 14px;
+	/*很关键:将默认的select选择框样式清除*/
+	/* appearance:none;
+        -moz-appearance:none;
+        -webkit-appearance:none;*/
+	/*在选择框的最右侧中间显示小箭头图片*/
+	/*background: url("static/img/tender/select.png") no-repeat scroll right center transparent;*/
+	/*为下拉小箭头留出一点位置,避免被文字覆盖*/
+	padding-right: 14px;
+}
+
+/*清除ie的默认选择框样式清除,隐藏下拉箭头*/
+select.select-menu::-ms-expand {
+	display: none;
+}
+
+/* 日期选择器 */
+.purc-tender .date-picker {
+	/*padding-top: 10px;*/
+    width: 280px;
+}
+
+.purc-tender .date-picker input {
+	border-radius: 0;
+	border: 1px solid #bfbfbf;
+	border-right: none;
+	font-size: 12px;
+    background: #fff;
+    font-size: 14px;
+}
+
+.purc-tender .date-picker span .btn-open {
+	color: #fff;
+	background-color: #bfbfbf;
+	border-radius: 0;
+	border: 1px solid #bfbfbf;
+	border-left: none;
+}
+.purc-tender .date-picker input:focus{
+    border: #5078cb 1px solid;
+}
+.purc-tender .date-picker span .btn-open:focus{
+    background: #5078cb;
+}
+/* 修改本页内btn的样式 及datepicker中的btn-success的样式 */
+.tender-content .date-picker .btn {
+	border-radius: 0;
+}
+
+.tender-content .date-picker .btn-success {
+	background-color: #3f84f6;
+}
+
+.tender-content .date-picker ul {
+	border-radius: 0;
+}
+
+.tender-content .date-picker ul div:focus {
+	outline: none;
+	border-radius: 0;
+	border: none;
+}
+
+/* 附件上传 */
+.purc-tender .base-info .attach-upload {
+	display: inline;
+}
+
+.purc-tender .base-info .attach-upload input {
+	height: 100px;
+	width: 100px;
+	margin: 6px 0 0 100px;
+	opacity: 0;
+	z-index: 1;
+	position: relative;
+}
+
+.purc-tender .base-info .attach-upload input:hover {
+	cursor: pointer;
+}
+
+.fileInputContainer {
+	height: 100px;
+	background-image: url('static/img/tender/upload.png');
+	position: relative;
+	width: 100px;
+	margin-left: 100px;
+	margin-top: 20px;
+}
+
+.fileInput {
+	height: 100px;
+	width: 100px;
+	font-size: 100px;
+	position: absolute;
+	margin-left: 100px;
+	margin-top: 20px;
+	right: 0;
+	top: 0;
+	opacity: 0;
+	filter: alpha(opacity = 0);
+	cursor: pointer;
+}
+/* 图片点击上传 */
+/*.upload-bg {*/
+/*width: 100px;*/
+/*height: 100px;*/
+/*background-image: url('static/img/tender/upload.png');*/
+/*margin-top: 10px;*/
+/*margin-left: 100px;*/
+/*border: 1px solid #e8e8e8;*/
+/*z-index: 2;*/
+/*}*/
+/* 供应商信息 添加供应商 */
+.vend-info  a.add-vendor {
+	color: #5078cb;
+}
+
+.vend-info  a.add-vendor:hover {
+	cursor: pointer;
+	color: #55b6ff;
+}
+
+.vend-info  a.remove-vendor {
+	color: #FF2E2F;
+}
+
+.vend-info  a.remove-vendor:hover {
+	cursor: pointer;
+	color: #D32526;
+}
+
+/* 单选框 复选框 */
+input[type="radio"], input[type="checkbox"] {
+	vertical-align: text-bottom;
+	margin-bottom: 2px;
+	margin-bottom: -2px\9;
+}
+
+.vend-info .input-select {
+	float: left;
+	padding-top: 4px;
+	margin-left: -20px;
+}
+
+.vend-info .input-select input {
+	margin-right: 8px;
+}
+
+/* 右下角按钮 */
+.tender-content>div {
+	background-color: #fff;
+    width: auto;
+}
+
+.tender-content>div>div>button {
+	width: 94px;
+	height: 36px;
+	font-size: 14px;
+	color: #fff;
+	border-radius: 0;
+}
+
+.tender-content>div>div.btn-publish>button {
+	background-color: #3f84f6;
+}
+
+.tender-content>div>div.btn-save>button {
+	background-color: #5078cb;
+    color: #fff !important;
+    margin-right: 50px;
+}
+
+.read-only {
+	border: none;
+	color: #969595;
+}
+
+.read-only:focus {
+	border: none;
+}
+
+.attach-file {
+	margin-left: 100px;
+	width: 400px;
+}
+
+.com_head a {
+	color: #fff;
+	float: right;
+	margin-right: 40px;
+	font-size: 14px;
+}
+
+.com_head a i {
+	margin-left: 5px;
+	line-height: 40px;
+}
+
+.com_head a:hover {
+	color: #d2272d;
+}
+
+.com_title {
+	width: 100%;
+	margin: 0px auto;
+	height: 40px;
+	line-height: 40px;
+	font-size: 14px;
+	color: #323232;
+	background: #f5f5f5;
+}
+
+.com_title font {
+	color: #3f84f6;
+}
+
+.com_title01 {
+	height: 50px;
+	line-height: 50px;
+	width: 100%;
+	border-bottom: #3578ba 1px dotted;
+	border-top: #e8e8e8 1px solid;
+	margin-top: -4px;
+} /*  这里修改过 margin-top*/
+.com_title01 span {
+	margin-left: 20px;
+	font-size: 14px;
+	line-height: 50px;
+	color: #555;
+	font-weight: bold;
+}
+
+.com_title01  a {
+	color: #5078cb;
+}
+
+.com_title01  a:hover {
+	cursor: pointer;
+	color: #55b6ff;
+}
+
+/*招标单*/
+.tender-list02 dl {
+	width: 990px;
+	margin: 0 auto;
+	position: relative;
+}
+
+.tender-list02 dl dt {
+	width: 100%;
+	margin: 0 auto;
+	height: 40px;
+    text-align: center;
+    background: #f5f8fe;
+}
+
+.tender-list02 dl dt span {
+	height: 50px;
+	line-height: 50px;
+	display: inline-block;
+	color: #323232;
+    width: 11.6%;
+}
+
+.tender-list02 dl dd {
+	width: 100%;
+	margin: 0 auto;
+	border: 1px solid #dae5fd;
+}
+
+.tender-list02 dl dd span {
+	height: 50px;
+	line-height: 50px;
+	display: inline-block;
+    width: 11.5%;
+    font-size: 14px;
+    float: left;
+    text-align: center;
+}
+
+.tender-list02 dl span.wid01 {
+    width: 20%;
+}
+.tender-list02 dl span.wid02 {
+	width: 20%;
+}
+
+.tender-list02 dl span.wid03 {
+	width: 5%;
+}
+
+.tender-list02 .editable {
+	text-align: center;
+	width: 100%;
+}
+
+.tender-list02  .scroll-y dd input {
+	width: 100%;
+	height: 34px;
+	font-size: 14px;
+	padding-left: 4px;
+	text-align: center;
+	vertical-align: middle;
+	line-height: 34px;
+    border: #ccc 1px solid;
+}
+
+.tender-list02 dl span.wid03 a {
+	display: none;
+}
+
+.tender-list02 dl span.wid03 a.active {
+	display: inline-block;
+}
+
+.tender-list02 dl span.wid03 a i {
+	width: 20px;
+	height: 20px;
+	display: inline-block;
+	line-height: 20px;
+	background: #d2272d;
+	text-align: center;
+	border-radius: 100%;
+	color: #fff;
+}
+
+.tender-list02 .com_title01 a {
+	float: right;
+	margin-right: 45px;
+	font-size: 14px;
+	line-height: 50px;
+}
+
+.scroll-y {
+	width: 100%;
+	margin: 0 auto;
+	max-height: 500px;
+	overflow-y: auto;
+    min-height: 100px;
+}
+
+.scroll-y.active {
+	overflow-y: scroll;
+	overflow-x: hidden;
+}
+
+/**日期选择器  start**/
+.tender-list02 .dropdown-menu{
+	min-width: auto;
+}
+
+.tender-list02 .save button {
+	border: 1px;
+	width: 94px;
+	height: 36px;
+	display: inline-block;
+	background: #3578ba;
+	text-align: center;
+	color: #fff;
+	font-size: 14px;
+	float: right;
+	line-height: 36px;
+	margin-right: 40px;
+	float:left;
+}
+
+.btn-group.pull-left{
+	width:120px;
+}
+
+.tender-list02 .dropdown-menu tr,.tender-list02 .dropdown-menu th,.tender-list02 .dropdown-menu td{
+	line-height:30px;
+}
+.tender-list02 .dropdown-menu button span{
+	line-height:15px;
+	width:15px;
+	height:15px;
+	font-size:12px;
+}
+.tender-list02 .dropdown-menu tr td button{
+    border: none;
+}
+/*end*/
+/* 弹框 */
+.bomb-box {
+	width: 100%;
+	height: 100%;
+	position: fixed;
+	z-index: 11111;
+	background: rgba(0, 0, 0, 0.2);
+	top: 0;
+	left: 0;
+}
+
+.bomb-box .box {
+	position: absolute;
+	left: 0;
+	right: 0;
+	top: 0;
+	bottom: 0;
+	margin: auto;
+	box-shadow: 0 0 3px #888;
+}
+
+.bomb-box .box01 {
+	width: 580px;
+	height: 406px;
+	border-radius: 5px;
+	background: #fff;
+}
+
+.bomb-box .box i.off {
+	width: 20px;
+	height: 20px;
+	display: inline-block;
+	position: absolute;
+	right: 8px;
+	top: 8px;
+	text-align: center;
+	cursor: pointer;
+}
+
+.bomb-box .box p {
+	height: 40px;
+	line-height: 40px;
+	font-size: 14px;
+	width: 100%;
+	margin: 0 auto;
+	border-bottom: #e8e8e8 1px solid;
+	padding-left: 20px;
+}
+
+.per-data {
+	width: 90%;
+	margin: 0 auto;
+}
+
+.per-data ul, .per-data ul li {
+	width: 100%;
+	margin: 0 auto;
+}
+
+.per-data ul li {
+	height: 34px;
+	line-height: 34px;
+	margin-top: 15px;
+}
+
+.per-data ul li em {
+	width: 60px;
+	font-size: 14px;
+	float: left;
+}
+
+.per-data ul li input, .per-data ul li select {
+	width: 236px;
+	height: 34px;
+	border: #e8e8e8 1px solid;
+	font-size: 14px;
+	padding-left: 10px;
+}
+
+.per-data ul li select {
+	background: url("../images/select.png") no-repeat right;
+	-webkit-appearance: none;
+	appearance: none;
+	-o-appearance: none;
+	-moz-appearance: none;
+	-ms-appearance: none;
+}
+
+.per-data ul li select option {
+	line-height: 30px;
+}
+
+.per-data ul li span {
+	color: #959595;
+	line-height: 18px;
+	float: right;
+	width: 215px;
+	display: inline-block;
+}
+
+.per-data ul li.per-btn {
+	margin-top: 30px;
+}
+
+.per-data ul li a {
+	width: 94px;
+	height: 36px;
+	display: inline-block;
+	font-size: 14px;
+	color: #fff;
+	text-align: center;
+	line-height: 34px;
+	float: left;
+}
+
+.per-data ul li a.save {
+	margin-left: 60px;
+	background: #3f84f6;
+}
+
+.per-data ul li a.mod-psd {
+	background: #8dc7f9;
+	margin-left: 30px;
+}
+
+.per-data ul li a:hover {
+	background: #3578ba;
+}
+
+.add-address {
+	color: #3f84f6;
+	font-size: 14px;
+	padding-left: 30px;
+}
+
+.add-address:hover {
+	color: #8dc7f9;
+}
+
+.tender-content  ul.association {
+	position: absolute;
+	left: 0;
+	top: 100%;
+	right: 61px;
+	list-style: none;
+	-webkit-padding-start: 0;
+	background: #ffffff;
+	border: 1px solid #dddddd;
+	z-index: 21;
+}
+
+.tender-content  ul.association li {
+	padding: 0 15px;
+	line-height: 30px;
+	text-align: left;
+}
+
+.tender-content  ul.association li.active, .tender-content  ul.association li.active:hover
+	{
+	background: #dddddd;
+}
+
+.tender-content  ul.association li:hover {
+	background: #EEEEEE;
+	cursor: pointer;
+}
+
+/*增加样式*/
+.view-slide-in {
+	/*margin-top: 20px;*/
+}
+.view-slide-in .block {
+	background: #f5f5f5;
+}
+.view-slide-in .group-container {
+	background: #fff;
+	margin-bottom: 10px;
+}
+.view-slide-in .group-container .btn-group {
+	width: 160px;
+	border: none;
+	height: 45px;
+}
+.view-slide-in .group-container .btn-group .btn {
+	color: #000;
+}
+.view-slide-in .group-container .btn-group .btn-info {
+	color: #d32526;
+	background: #fff;
+	border: none;
+}
+.view-slide-in .group-container .btn-group .btn {
+	border: none;
+	font-size: 16px;
+	font-family: "Microsoft YaHei", "微软雅黑";
+}
+.view-slide-in .group-container .btn-group .btn em {
+	color: #d32526;
+	font-style: inherit;
+}
+.view-slide-in .group-container .btn-group .btn:hover {
+	background: #fff;
+	color: #d32526;
+}
+.view-slide-in .group-container {
+	padding: 0;
+}
+.view-slide-in .search-bg {
+	margin-top: 15px;
+	margin-bottom: 15px;
+}
+#topSearch {
+	font-size: 18px;
+}
+.view-slide-in #topSearch .search-bg i {
+	color: #999;
+	margin-left: 10px;
+}
+.form-group-sm .form-control-feedback {
+	width: 85px;
+	height: 36px;
+	line-height: 36px;
+	color: #fff;
+	background: #3f84f6;
+	text-align: center;
+	font-size: 14px;
+	cursor: pointer;
+}
+#topSearch .input-sm, .form-group-sm .form-control {
+	height: 36px;
+	line-height: 36px;
+	border: #3f84f6 1px solid;
+	border-radius: 0px;
+	font-size: 14px;
+}
+.search-bg .col-xs-6,.search-bg .row {
+	padding-right: 0;
+}
+.order-table .company-list,.order-table .order-hd:first-child {
+	background: #fff;
+	font-size: 16px;
+	height: 55px;
+	line-height: 55px;
+	border-bottom: #ddd 1px solid;
+}
+.order-table .company-list {
+	width:100%;
+	height: 190px;
+	border-bottom: 20px solid #f5f5f5;
+}
+.order-table .order-hd span.margin-left20 {
+	margin-left: 20px;
+}
+.order-table .product {
+	line-height: 25px;
+	font-size: 14px;
+}
+.order-table .product span {
+	margin-right: 10px;
+}
+.grey01 {
+	color: #969595;
+	font-size: 14px;
+	text-align: center;
+}
+.order-table .btn {
+	border-radius: 0;
+	width: 94px;
+	height: 36px;
+	color: #fff;
+}
+.order-table .btn01 {
+	color: #3f84f6;
+	background: #fff;
+	border: none;
+	font-size: 16px;
+}
+.order-table .order-hd td.first {
+	line-height: 25px;
+	font-size: 14px;
+	padding-top: 10px;
+	padding-bottom: 10px;
+}
+.search-bg .input-group-addon{
+	width: 85px;
+	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;
+}
+.search-bg .form-group{
+	position: relative;
+}
+.title-div span{
+    font-weight: bold;
+    font-size: 14px;
+}
+    .add-vendor{
+        float: right;
+        font-weight: normal;
+        color: #5078cb;
+    }
+    .vend-info{
+        padding-bottom: 10px;
+        padding-top: 10px;
+    }
+.vend-info input{
+    font-size: 14px;
+    width: 200px;
+}
+.base-info{
+    box-shadow: none;
+}
+.tender-content input{
+    font-size: 14px;
+}
+
+#isOpenChoice {
+	margin-top: 10px;
+    line-height: 34px;
+}
+#isOpenChoice div{
+    line-height: 34px;
+    padding-top: 0;
+}
+#isOpenChoice div.tender-desc{
+    margin-left: 15px;
+}
+#isOpenChoice div span{
+    font-size: 14px;
+}
+.tender-content .row{
+    margin-bottom: 15px;
+}
+.tender-content .input-select{
+    padding: 0;
+}
+
+#li01 .com01 ul li {
+    height: 30px;
+    line-height: 30px;
+    padding: 0;
+}
+
+#li01 .com01 ul li a {
+    display: inline-block;
+    height: 30px;
+    width: 100%;
+}
+#li01 .com01  .input-group-addon {
+    width: 30px;
+    line-height: 34px;
+    height: 34px;
+    padding: 0;
+    display: inline-block;
+    position: relative;
+    top: -50px;
+    right: -7px;
+    border-top-right-radius: 0;
+    border-bottom-right-radius: 0;
+    left: 40%;
+}
+.title-div a{
+    float: right;
+    color: #5078cb;
+    font-weight :normal;
+    margin-right: 30px;
+}
+.well{
+    background-color: #fff;
+    border-radius: 0;
+    padding: 10px;
+}
+.width160{
+    width: 160px !important;
+}
+select.disabled {
+    background-color: #f5f5f5;
+}
+.left-dropdown-menu .dropdown-menu{
+    left: 700px !important;
+}
+.info-line span,.info-line input{
+    float: left;
+    font-size: 14px;
+}
+.info-line{
+    line-height: 34px;
+}
+.info-line span:last-child{
+    margin-left: 8px;
+}
+.purc-inquiry-new .b2b-com-title {
+    margin-left: 20px;
+}
+.tender-list02 dl dd:hover span a {
+    display: inline-block;
+}
+.purc-inquiry-new .select .select-adder {
+    width: 100px;
+}
+</style>
+<div class="user_right fr purc-inquiry-new">
+    <div class="b2b-com-head">询价单</div>
+    <div class="ng-scope">
+        <form name="tenderForm">
+            <div class="purc-tender">
+                <div class="tender-content ng-scope">
+                    <div class="b2b-com-title">基本信息</div>
+                    <div class="row base-info">
+                        <div class="row">
+                            <div class = "col-xs-6">
+                                <div class="tender-desc">询价单号:</div>
+                                <span ng-bind="inquiry.code"></span>
+                            </div>
+                            <div class = "col-xs-6">
+                                <div class="tender-desc">询价日期:</div>
+                                <span ng-bind="inquiry.showdate"></span>
+                            </div>
+                        </div>
+                        <div class="row">
+                            <div class="col-xs-6">
+                                <span class="tender-desc f14"><i class="must">*</i>报价截止时间:</span>
+                                <div class="input-group input-trigger date-picker">
+                                    <input type="text" ng-model="inquiry.endDate" required
+                                           class="form-control" placeholder="点击选择截止日期" readonly="readonly"
+                                           datepicker-popup="yyyy-MM-dd" is-open="inquiry.$fromOpened"
+                                           ng-required="true" current-text="今天" min-date = "currentDay()"
+                                           clear-text="清除" close-text="关闭"
+                                           datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+                                           ng-click="openDatePicker($event, condition, '$fromOpened')"> <span
+                                        class="input-group-btn">
+							<button type="button" class="btn btn-default btn-open"
+                                    ng-click="openEndDatePicker($event, inquiry, '$fromOpened')">
+								<i class="fa fa-calendar"></i>
+							</button>
+						</span>
+                                </div>
+                            </div>
+                            <div class="col-xs-6">
+                                <div class="tender-desc"><i class="must">*</i>交易币别:</div>
+                                <select class="select-menu select-adder" data-style="btn-primary" ng-model="inquiry.currency" ng-change="changeCurrency(inquiry)">
+                                    <option value ="RMB">RMB</option>
+                                    <option value ="USD">USD</option>
+                                    <option value ="HKD">HKD</option>
+                                    <option value ="EUR">EUR</option>
+                                </select>
+                            </div>
+                        </div>
+                        <div class="row">
+                            <div class="col-xs-6">
+                                <div class="tender-desc"><i class="must">*</i>是否含税:</div>
+                                <select class="select-menu select-adder" ng-model="inquiry.ifTax" ng-disabled="notRMB" ng-class="{'disabled':notRMB}">
+                                    <option value ="1">是</option>
+                                    <option value ="0">否</option>
+                                </select>
+                            </div>
+                            <div class="col-xs-6">
+                                <div class="tender-desc"><i class="must">*</i>发票要求:</div>
+                                <select class="select-menu select-adder" ng-model="inquiry.invoice" ng-disabled="notRMB" ng-class="{'disabled':notRMB}">
+                                    <option value ="2">增值税专用发票</option>
+                                    <option value ="1">普通发票</option>
+                                    <option value ="0">不需要发票</option>
+                                </select>
+                            </div>
+                        </div>
+                        <div class="row">
+                            <div class="col-xs-12">
+                                <div class="tender-desc"><i class="must">*</i>收货地址:</div>
+                                <span required="required" style="line-height: 34px;">
+	                             <select class="select select-adder form-control fl" style="width: 70%; font-size: 14px;" ng-model="inquiry.ship" required="required" ng-options="(ship.address + ship.addressdet + ship.receiver + ship.usertel) as (ship.address + ship.addressdet + ' ' + ship.receiver + ' ' + ship.usertel) for ship in ships">
+									<option value="">请选择收货地址</option>
+								 </select>
+	                            <a href="javascript:void(0);" class="add-address"><i class="fa fa-plus-square fa-fw"></i>新增收货信息</a>
+	                        </span>
+                                </span>
+                            </div>
+                        </div>
+                        <div class="row">
+                            <div class = "col-xs-12">
+                                <div class="tender-desc">备注:</div>
+                                <input class="tender-input01 form-control" type="text" name="user" ng-model="inquiry.remark" style="width: 70%;"/>
+                            </div>
+                        </div>
+                        <div class="row">
+                            <div class="col-xs-12">
+                                <div class="tender-desc">上传附件:</div>
+                                <div class="fileInputContainer">
+                                    <input class="fileInput" type="file" ng-file-select name="file" ng-model="myFiles"/>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="row" style="margin-bottom: 0;">
+                            <div class="col-xs-12">
+                                <div ng-show="previewShow">
+                                    <div class="fl" style="margin-left: 100px;">
+                                        <div class="well margin-b-0">
+                                            <div ng-show="previewShow">
+                                                <img ng-show="previewShow" alt="营业执照复印件" src="{{imgPreview}}" width="200px" height="100px">
+                                                <div>
+                                                    &nbsp;&nbsp;<span class="text-primary"><b>{{imgPreviewName}}</b></span>
+                                                </div>
+                                            </div>
+                                            <div ng-show="pdfShow">
+                                                <img ng-show="pdfShow" src="static/img/all/pdf.jpg" alt="PDF文件" width="30px" height="40px">
+                                                &nbsp;&nbsp;<span class="text-primary"><b>{{imgPreviewName}}</b></span>
+                                            </div>
+                                            <div ng-show="noneFileShow">
+                                                <span class="text-warning">请上传清晰照片的图片文件或PDF文件</span>
+                                            </div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="wrap">
+                        <div class="content">
+                            <div class="tender-list02">
+                                <!--产品信息-->
+                                <div class="b2b-com-title">
+                                    <span class="f14">询价明细</span>
+                                    <span class="base-blue" style="opacity: 0.8; margin-left: 10px; font-weight: normal;">
+                                        <i class="fa fa-info-circle"></i>您可以在页面下方选择本企业物料
+                                    </span>
+                                    <a ng-click="add()" class="operate" style="margin-left: 20px;margin-right: 13px;">
+                                        <i class="fa fa-plus-circle"></i> 新增询价明细
+                                    </a>
+                                    <a class="operate" ng-click="uplodaByBatch()"><i class="fa fa-arrow-circle-o-up"></i> 批量导入</a>
+                                </div>
+                                <dl>
+                                    <dt>
+                                        <span>序号</span> <span class="wid01">型号</span> <span
+                                            class="wid01">名称</span> <span class="wid02">品牌</span> <span>单位</span>
+                                        <span>报价有效期</span> <span class="wid03">&nbsp;</span>
+                                    </dt>
+                                    <div class="scroll-y">
+                                        <dd class="clearfix" ng-repeat="prod in inquiry.inquiryItems" id="li01">
+                                            <span>{{$index + 1}}</span>
+                                            <span class="com01 wid01 text-center">
+											<input type="text" name="code" ng-model="prod.cmpCode" ng-change="getSimilarCodes(prod.cmpCode)" ng-focus="onFocus('code')" placeholder="请输入标准原厂型号"
+                                                   typeahead="prod.code for prod in getSimilarCodes($viewValue)" autocomplete="off"
+                                                   typeahead-on-select="onAssociateCmpClick($item, prod)" spellcheck="false" required>
+										</span>
+                                            <span class="com01 wid01">
+											<input type="text" style="width: 165px; text-align: left;" class="input01"
+                                                   name="kindName" ng-model="prod.prodTitle" required placeholder="请输入或选择分类" spellcheck="false" autocomplete="off" />
+											<div class="input-group-addon" ng-click="selectKind(prod)">
+												<i class="fa fa-search" aria-hidden="true"></i>
+											</div>
+										</span>
+                                            <span class="com01 wid02 text-center">
+											<input type="text" style="width: 93%; text-align: left;" ng-change="getSimilarBrands(prod.inbrand)" class="input01"
+                                                   name="brandName" ng-model="prod.inbrand" required placeholder="请输入或选择品牌" spellcheck="false"
+                                                   typeahead="prod.brandCn for prod in getSimilarBrands($viewValue)" autocomplete="off" typeahead-on-select="onAssociateBrandClick($item, prod)" />
+											<div class="input-group-addon" ng-click="selectBrand(prod)">
+												<i class="fa fa-search" aria-hidden="true"></i>
+											</div>
+										</span>
+                                            <span class="text-center">
+											<input type="text" ng-model="prod.unit" placeholder="点击填入单位" required style="width: 93%" /></span>
+                                            <span class="left-dropdown-menu">
+										 	<input ng-model="prod.toDate" type="text" class="editable" required placeholder="选择时间" datepicker-popup="yyyy-MM-dd"
+                                                   is-open="prod.$toDateOpen" min-date="getMinDate()" current-text="今天" clear-text="清除" close-text="关闭"
+                                                   datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+                                                   ng-focus="openDatePicker($event, prod.$toDateOpen)"
+                                                   readonly="readonly"
+                                                   ng-click="openDatePicker($event, prod.$toDateOpen, $index)"></span>
+                                            <span class="wid03">
+											<a ng-click="del($index)"><i class="fa fa-close"></i></a>
+										</span>
+                                        </dd>
+                                    </div>
+                                    <div ng-if="inquiry.inquiryItems.length == 0" class="no-record">暂无产品信息!</div>
+                                </dl>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="b2b-com-title">供应商信息
+                        <input  class="tender-input" name="ifOpen" style="display: none" ng-init="inquiry.isOpen = 0"/>
+                        <a class="operate" ng-click="dbfindVendor()" href="javascript:void(0)" ng-if="inquiry.isOpen == 0">
+                            <i class="fa fa-plus-circle fa-fw"></i>添加供应商&nbsp;
+                        </a>
+                    </div>
+                    <div class="row vend-info">
+                        <div class="col-xs-12">
+                            <div class="info-line col-xs-4"><span>供应商:</span><span><input class="tender-input01" ng-model="vendor.enName" type="text" readonly></span></div>
+                            <div class="info-line col-xs-4">
+                                <span>币别:</span>
+                                <span>
+                                 <select ng-model="vendor.currency" ng-init="vendor.currency = 'RMB'" class="tender-input01 select-adder" style="width:200px">
+                                    <option value ="RMB">RMB</option>
+                                    <option value ="USD">USD</option>
+                                    <option value ="HKD">HKD</option>
+                                    <option value ="EUR">EUR</option>
+                                </select>
+                            </span>
+                            </div>
+                            <div class="info-line col-xs-4">
+                                <span>税率:</span>
+                                <span>
+                                <input ng-model="vendor.rate" type="text" class="tender-input01" style="width: 200px;">
+                            </span>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="btn-save text-right" style="padding: 0 30px 30px; width: 100%;" ng-if="inquiry.inquiryItems.length>0">
+                        <button class="b2b-btn-submit b2b-btn" ng-disabled="tenderForm.$invalid " ng-click="submit()">询价</button>
+                    </div>
+                </div>
+            </div>
+        </form>
+        <div class="pro-add-data02" style="min-height: 500px;background: #fff;" >
+            <div class="b2b-com-title">我的材料库</div>
+            <div class="b2b-com-search">
+                <div class="search-result">搜索到<em>{{total}}</em>条</div>
+                <div class="search-content fr">
+                    <input type="text" placeholder="输入物料关键字查询" ng-model="keyword" ng-search="onSearch(keyword)"/>
+                    <a class="seek" ng-click="onSearch(keyword)" style="right: inherit;">搜索</a>
+                </div>
+            </div>
+            <table class="table b2b-modal-table" style="margin-top: 10px;" ng-table="tableParams">
+                <thead>
+                <tr class="header">
+                    <th width="160px">原厂型号</th>
+                    <th width="120px">名称</th>
+                    <th>规格</th>
+                    <th width="120px">单位</th>
+                    <th width="80px">选择</th>
+                </tr>
+                </thead>
+                <tbody ng-if="tableParams.total() == 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 ng-if="tip != null">搜索"{{tip}}"未找到产品信息,请重新输入搜索条件</p>
+                                <p ng-if="tip == null">您还未添加商品信息</p>
+                            </div>
+                        </div>
+                    </td>
+                </tr>
+                </tbody>
+                <tbody>
+                <tr ng-repeat="product in $data">
+                    <td class="text-center" ng-bind="::product.cmpCode"></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)" ng-click="check(product)" style="text-decoration: none; color: #3f84f6;" id="click" class="add01">添加</a>
+                    </td>
+                </tr>
+                </tbody>
+            </table>
+        </div>
+    </div>
+    <!--设置-企业设置-收货地址编辑-->
+    <div class="bomb-box" style="display: none">
+        <form class="box04 box" name="shipAddress" id="shipAddress" style="height: 554px;">
+            <i class="off"><i class="fa fa-close"></i></i>
+            <p>收货人资料</p>
+            <ul>
+                <li class="line01">
+                    <div>
+                        <span class="col-xs-3">收货人<em>*</em>:</span>
+                        <span class="col-xs-9"><input class="form-control" type="text" placeholder="填写收货人" ng-model="ship.receiver" required="true" ng-pattern="/^[\u4e00-\u9fa5]{1,6}$|^[\dA-Za-z]{1,12}$/"/></span>
+                    </div>
+                    <div>
+                        <span class="col-xs-3">手机<em>*</em>:</span>
+                        <span class="col-xs-9"><input class="form-control" type="text" ng-model="ship.usertel" required="true" ng-pattern="/^1(3|4|5|7|8)\d{9}$/"/></span>
+                    </div>
+                </li>
+                <li class="line01">
+                    <div>
+                        <span class="col-xs-3">固定电话<em></em>:</span>
+                        <span class="col-xs-9"><input class="form-control" type="text" ng-model="ship.phone"  ng-pattern="/([0-9]{3,4}-)?[0-9]{7,8}/"/></span>
+                    </div>
+                    <div>
+                        <span class="col-xs-3">邮箱:</span>
+                        <span class="col-xs-9 emaill"><input class="form-control" type="text" ng-model="ship.email" ng-pattern="/^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/"/><i>用于接收订单提醒邮件,便于您及时了解订单状态</i></span>
+                    </div>
+                </li>
+                <li class="line02">
+                    <div class="col-xs-3">所在地址<em>*</em>:</div>
+                    <!--<div class="select fr"><input type="text" placeholder="请选择" ng-model="ship.address" required="true"/><i class="fa fa-angle-down"></i></div>-->
+                    <div class="select col-xs-9">
+                        <div class="col-xs-4 no-padding">
+                            <select required="" class="area-select select-adder form-control" ng-model="ship.province" ng-options="key as key for (key,value) in provinces"
+                                    ng-change="ship.city='';ship.district='';" required="true">
+                                <option value="">省</option>
+                            </select>
+                        </div>
+                        <div class="col-xs-4 no-padding">
+                            <select class="area-select select-adder form-control" ng-model="ship.city" ng-options="key as key for (key,value) in provinces[ship.province]"
+                                    ng-change="ship.district='';" required="true">
+                                <option value="">市</option>
+                            </select>
+                        </div>
+                        <div class="col-xs-4 no-padding">
+                            <select class="area-select select-adder form-control" ng-model="ship.district" ng-options="value as value for value in provinces[ship.province][ship.city]" required="true">
+                                <option value="">区</option>
+                            </select>
+                        </div>
+                    </div>
+                </li>
+                <li class="line02">
+                    <div class="col-xs-3">详细地址<em>*</em>:</div>
+                    <div class="col-xs-9"><input type="text" class="form-control" ng-model="ship.addressdet" required="true"/></div>
+                </li>
+                <li class="line02">
+                    <div class="col-xs-3">地址别名:</div>
+                    <div class="col-xs-9 address"><input class="form-control" type="text" ng-model="ship.addalias"/><i>建议填写常用名称:家里/父母家/公司</i></div>
+                </li>
+            </ul>
+            <div class="many-file-btn text-center">
+                <button class="btn01 b2b-btn b2b-btn-submit" ng-click="saveShipAddress(ship);" ng-disabled="shipAddress.$invalid">保存</button>
+                <button class="btn02 b2b-btn b2b-btn-cancel">取消</button>
+            </div>
+        </form>
+    </div>
+</div>
+<script src="static/lib/jquery/jquery.min.js"></script>
+<script>
+    $(function(){
+        var size10= $(".tender-list02 dl dd").size();
+        if(size10 > 10){
+            $(".scroll-y").addClass("active");
+        }else{
+            $(".scroll-y").removeClass("active");
+        }
+
+        /*下拉效果*/
+        $('.select p').click(function(e){
+            $('.select').toggleClass('open');
+            e.stopPropagation();
+        });
+        $('.select ul li').click(function(e){
+            var title=$(this).html();
+            $('.select p').html(title);
+            $(this).addClass('selected').siblings().removeClass('selected');
+            $('.select').removeClass('open');
+            e.stopPropagation();
+        });
+        $(document).click(function(){
+            $('.select').removeClass('open');
+        })
+
+        //新增收货地址
+        $(".tender-content .base-info .add-address").click(function(){
+            document.getElementById('shipAddress').reset();
+            $(".bomb-box").show();
+        });
+        $(".bomb-box .box04 .off,.box04 .many-file-btn .btn02").click(function(){
+            $(".bomb-box").hide();
+        });
+        $(".bomb-box .box04 .off,.box04 .many-file-btn .btn01").click(function(){
+            $(".bomb-box").hide();
+        })
+    })
+</script>

+ 71 - 0
src/main/webapp/resources/view/usercenter/b2b/Purc/right.html

@@ -0,0 +1,71 @@
+<style>
+	.pane-body {
+		background: #fff;
+	}
+	.pane .box-item {
+		margin-top: 20px;
+		background: #fff;
+		-webkit-box-shadow: 1px 1px 5px 0px #efeeee;
+		-moz-box-shadow: 1px 1px 5px 0px #efeeee;
+		box-shadow: 1px 1px 5px 0px #efeeee;
+		font-size: 14px;
+		padding: 9px 0 0;
+		cursor: default;
+	}
+	.pane .box-item .text-title {
+		width: 270px;
+		margin: 0 auto 16px;
+		text-align: center;
+		/*color: rgba(80, 120, 203, .5);
+		border-bottom: 1px solid rgba(204, 204, 204, .25);*/
+		color: #5078cb;
+		border-color: rgba(204, 204, 204, .5);
+		padding: 0 9px 16px;
+	}
+	.pane .box-item .content {
+		margin-bottom: 16px;
+		padding: 0 9px;
+		color: #666;
+		/*color: rgba(102, 102, 102, .5);*/
+	}
+	.pane .box-item .content-bottom {
+		height: 48px;
+		line-height: 48px;
+		color: rgba(51, 51, 51, .5);
+		background: rgba(204, 204, 204, .5);
+		margin-right: -1px;
+		margin-bottom: -1px;
+		cursor: pointer;
+	}
+	.pane .box-item .content-bottom:hover {
+		background: #606060;
+		color: #fff;
+	}
+</style>
+<!-- Start -->
+<div class="pane user_right fr">
+	<div class="b2b-com-head">供应商客服系统</div>
+	<div class="pane-body no-margin">
+		<div class="row no-margin">
+			<div class="col-xs-4" ng-repeat="vendor in vendors">
+				<div class="well well-sm box-item">
+					<div class="text-title" ng-bind="vendor.vendorEnterprise.enName"></div>
+					<div class="content clearfix">
+						<div class="col-xs-6 no-padding">
+							<i class="fa fa-user fa-fw"></i>
+							<span ng-bind="vendor.vendorUser.userName"></span>
+						</div>
+						<div class="col-xs-6 text-right no-padding">
+							<i class="fa fa-fw fa-tty" style="margin-left: 1em"></i> <span
+								ng-bind="vendor.vendorUser.userTel"></span>
+						</div>
+					</div>
+					<div class="text-center content-bottom" ng-click="redirect(vendor)">
+						安全访问
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
+</div>
+<!-- End -->

+ 1751 - 10
src/main/webapp/resources/view/usercenter/b2b/Purc/tender.html

@@ -1,10 +1,1751 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-  <meta charset="UTF-8">
-  <title>Title</title>
-</head>
-<body>
-
-</body>
-</html>
+<!--  招标单  -->
+<!--<link rel="stylesheet" href="static/css/add.css "/>-->
+<style>
+
+  /* 标题 */
+  .tender-label {
+    /*height: 30px;*/
+    /*margin-left: 10px;*/
+    /*margin-right: 10px;*/
+    /*background-color: #e8e8e8;*/
+    /*box-shadow: 0 0 5px #6f6f6f;*/
+    /*border-top-right-radius: 20px;*/
+    width: 100%;
+    /*height: 42px;*/
+    /*line-height: 42px;*/
+    /*background: url(static/img/tender/comm_bg01.png) no-repeat center;*/
+    /*background-size: 100%;*/
+  }
+  /* 主体 */
+  .purc-tender {
+    line-height: 2;
+    font-size: 14px;
+  }
+
+  .purc-tender .row {
+    margin-left: 0px;
+    margin-right: 0px;
+    padding-left: 15px;
+    padding-right: 15px;
+  }
+
+  .tender-content {
+    background-color: #fff;
+  }
+
+  .tender-content>div>div {
+    margin-top: 3px;
+    margin-bottom: 3px;
+  }
+  /* 二级标题栏 */
+  .title-div {
+    font-size: 14px;
+    font-weight: 600;
+    padding-left: 30px;
+    height: 50px;
+    padding-top: 11px;
+  }
+
+  /* 输入框前描述 */
+  .tender-desc {
+    width: 100px;
+    float: left;
+    padding-top: 4px;
+  }
+  /* 输入框 */
+  .tender-input {
+    /*border: #bfbfbf 1px solid !important;
+          padding-left: 10px;
+          height: 34px;
+          line-height: 34px;
+          width: 160px;*/
+
+  }
+
+  .tender-input01 {
+    border: #bfbfbf 1px solid !important;
+    padding-left: 10px;
+    height: 34px;
+    line-height: 34px;
+    width: 160px;
+  }
+
+  .tender-input:focus {
+    border: #3578ba 1px solid !important;
+  }
+
+  /* 收货地址 */
+  .address-group {
+    border-bottom: 1px solid #323232;
+    border-bottom-left-radius: 0;
+    margin-right: 20px;
+  }
+
+  .address-group>input:focus {
+    outline: none;
+  }
+
+  /* 基本信息 */
+  .base-info {
+    border-bottom: 1px solid #e8e8e8;
+    padding-bottom: 30px;
+    padding-top: 20px;
+    margin-bottom: 0; /* 去除index中公共样式影响 */
+  }
+
+  /* 地址附加图标 */
+  .address-addon {
+    border: none;
+    background: none;
+  }
+
+  /* 下拉选项 */
+  .select-menu {
+    margin: 4px 0;
+    width: 100px;
+    padding: 0 5%;
+    height: 30px;
+  }
+
+  select.select-menu {
+    /*Chrome和Firefox里面的边框是不一样的,所以复写了一下*/
+    border: solid 1px #bfbfbf;
+    height: 34px;
+    line-height: 34px;
+    width: 160px;
+    font-size: 14px;
+    /*很关键:将默认的select选择框样式清除*/
+    /* appearance:none;
+          -moz-appearance:none;
+          -webkit-appearance:none;*/
+    /*在选择框的最右侧中间显示小箭头图片*/
+    /*background: url("static/img/tender/select.png") no-repeat scroll right center transparent;*/
+    /*为下拉小箭头留出一点位置,避免被文字覆盖*/
+    padding-right: 14px;
+  }
+  .select-contact {
+    width: 200px;
+    height: 30px;
+  }
+
+  select.select-contact {
+    /*Chrome和Firefox里面的边框是不一样的,所以复写了一下*/
+    border: solid 1px #bfbfbf;
+    height: 34px;
+    line-height: 34px;
+    width: 160px;
+    font-size: 14px;
+    padding-right: 14px;
+  }
+  .input-select span{
+    font-size: 14px;
+  }
+  /*清除ie的默认选择框样式清除,隐藏下拉箭头*/
+  select.select-menu::-ms-expand {
+    display: none;
+  }
+
+  /* 日期选择器 */
+  .purc-tender .date-picker {
+    padding-top: 10px;
+  }
+
+  .purc-tender .date-picker input {
+    border-radius: 0;
+    border: 1px solid #bfbfbf;
+    border-right: none;
+    background: #fff;
+    font-size: 12px;
+  }
+  .tender-content>div>div.btn-save>button{
+    background: #5078cb;
+  }
+  .purc-tender .date-picker span .btn-open {
+    color: #fff;
+    background-color: #5078cb;
+    border-radius: 0;
+    border: 1px solid #bfbfbf;
+    border-left: none;
+  }
+  .purc-tender .date-picker input{
+    font-size: 14px;
+  }
+  .purc-tender .date-picker span .btn-open:focus{
+    background: #5078cb;
+  }
+  .input-group input:focus{
+    border: #5078cb 1px solid;
+  }
+  /* 修改本页内btn的样式 及datepicker中的btn-success的样式 */
+  .tender-content .date-picker .btn {
+    border-radius: 0;
+  }
+
+  .tender-content .date-picker .btn-success {
+    background-color: #3f84f6;
+  }
+
+  .tender-content .date-picker ul {
+    border-radius: 0;
+  }
+
+  .tender-content .date-picker ul div:focus {
+    outline: none;
+    border-radius: 0;
+    border: none;
+  }
+
+  /* 附件上传 */
+  .purc-tender .base-info .attach-upload {
+    display: inline;
+  }
+
+  .purc-tender .base-info .attach-upload input {
+    height: 100px;
+    width: 100px;
+    margin: 6px 0 0 100px;
+    opacity: 0;
+    z-index: 1;
+    position: relative;
+  }
+
+  .purc-tender .base-info .attach-upload input:hover {
+    cursor: pointer;
+  }
+
+  .fileInputContainer {
+    height: 100px;
+    background-image: url('static/img/tender/upload.png');
+    position: relative;
+    width: 100px;
+    margin-left: 100px;
+    margin-top: 20px;
+  }
+
+  .fileInput {
+    height: 100px;
+    width: 100px;
+    font-size: 100px;
+    position: absolute;
+    margin-left: 100px;
+    margin-top: 20px;
+    right: 0;
+    top: 0;
+    opacity: 0;
+    filter: alpha(opacity = 0);
+    cursor: pointer;
+    overflow: hidden;
+  }
+  /* 图片点击上传 */
+  /*.upload-bg {*/
+  /*width: 100px;*/
+  /*height: 100px;*/
+  /*background-image: url('static/img/tender/upload.png');*/
+  /*margin-top: 10px;*/
+  /*margin-left: 100px;*/
+  /*border: 1px solid #e8e8e8;*/
+  /*z-index: 2;*/
+  /*}*/
+  /* 供应商信息 添加供应商 */
+  .vend-info  a.add-vendor {
+    color: #5078cb;
+  }
+
+  .vend-info  a.add-vendor:hover {
+    cursor: pointer;
+    color: #55b6ff;
+  }
+
+  .vend-info  a.remove-vendor {
+    color: #FF2E2F;
+  }
+
+  .vend-info  a.remove-vendor:hover {
+    cursor: pointer;
+    color: #D32526;
+  }
+
+  /* 单选框 复选框 */
+  input[type="radio"], input[type="checkbox"] {
+    vertical-align: text-bottom;
+    margin-bottom: 2px;
+    margin-bottom: -2px\9;
+  }
+
+  .vend-info .input-select {
+    float: left;
+    padding-top: 4px;
+    margin-left: -20px;
+  }
+
+  .vend-info .input-select input {
+    margin-right: 8px;
+  }
+
+  /* 右下角按钮 */
+  .tender-content>div {
+    background-color: #fff;
+  }
+
+  .tender-content>div>div>button {
+    width: 94px;
+    height: 36px;
+    font-size: 14px;
+    color: #fff;
+    border-radius: 0;
+  }
+
+  .tender-content>div>div.btn-publish>button {
+    background-color: #5078cb;
+  }
+
+
+  .read-only {
+    border: none;
+    color: #969595;
+  }
+
+  .read-only:focus {
+    border: none;
+  }
+
+  .attach-file {
+    margin-left: 110px;
+    width: 400px;
+    float: left;
+    color: #5078cb;
+  }
+
+  .com_head a {
+    color: #fff;
+    float: right;
+    margin-right: 40px;
+    font-size: 14px;
+  }
+
+  .com_head a i {
+    margin-left: 5px;
+    line-height: 40px;
+  }
+
+  .com_head a:hover {
+    color: #d2272d;
+  }
+
+  .com_title {
+    width: 100%;
+    margin: 0px auto;
+    height: 40px;
+    line-height: 40px;
+    font-size: 14px;
+    color: #323232;
+    background: #f5f5f5;
+  }
+
+  .com_title font {
+    color: #3f84f6;
+  }
+
+  .com_title01 {
+    height: 50px;
+    line-height: 50px;
+    width: 100%;
+    /*border-bottom: #3578ba 1px dotted;*/
+    border-top: #e8e8e8 2px solid;
+    margin-top: -4px;
+  } /*  这里修改过 margin-top*/
+  .com_title01 span {
+    margin-left: 30px;
+    font-size: 14px;
+    line-height: 50px;
+    color: #555;
+    font-weight: bold;
+  }
+
+  .com_title01  a {
+    color: #5078cb;
+  }
+
+  .com_title01  a:hover {
+    cursor: pointer;
+    color: #d2272d;
+  }
+
+  /*招标单*/
+  .tender-list02 dl {
+    width: 100%;
+    margin: 0 auto;
+    position: relative;
+  }
+
+  .tender-list02 dl dt {
+    width: 100%;
+    margin: 0 auto;
+    /*height: 50px;*/
+    border-bottom: #e8e8e8 1px solid;
+  }
+
+  .tender-list02 dl dt span {
+    height: 50px;
+    line-height: 50px;
+    display: inline-block;
+    color: #323232;
+  }
+
+  .tender-list02 dl dd {
+    width: 100%;
+    margin: 0 auto;
+    height: 50px;
+    border-bottom: 1px solid #f5f8fe;
+    border-right: 1px solid #f5f8fe;
+    border-left: 1px solid #f5f8fe;
+    overflow: hidden;
+  }
+
+  .tender-list02 dl dd:hover {
+    border: #5078cb 1px solid;
+    background: #f5f8fe;
+  }
+
+  .tender-list02 dl dd:hover span a {
+    display: inline-block;
+  }
+
+  .tender-list02 dl dd span {
+    height: 50px;
+    line-height: 50px;
+    display: inline-block;
+  }
+
+  .tender-list02 dl span {
+    width: 14% !important;
+    font-size: 14px;
+    float: left;
+    text-align: center;
+  }
+
+  .tender-list02 dl span.wid01 {
+    width: 20% !important;
+  }
+
+  .tender-list02 dl span.wid02 {
+    width: 20% !important;
+  }
+
+  .tender-list02 dl span.wid03 {
+    width: 3% !important;
+  }
+
+  .tender-list02 .editable {
+    text-align: center;
+    width: 100%;
+  }
+
+  .tender-list02  .scroll-y dd input {
+    width: 100%;
+    height: 34px;
+    border: none;
+    font-size: 14px;
+    padding-left: 4px;
+    text-align: center;
+    vertical-align: middle;
+    line-height: 34px;
+  }
+
+  .tender-list02 dl span.wid03 a {
+    display: none;
+  }
+
+  .tender-list02 dl span.wid03 a.active {
+    display: inline-block;
+  }
+
+  .tender-list02 dl span.wid03 a i {
+    width: 20px;
+    height: 20px;
+    display: inline-block;
+    line-height: 20px;
+    background: #d2272d;
+    text-align: center;
+    border-radius: 100%;
+    color: #fff;
+  }
+
+  .tender-list02 .com_title01 a {
+    float: right;
+    margin-right: 45px;
+    font-size: 14px;
+    line-height: 20px;
+    height: 20px;
+    margin-top: 15px;
+  }
+
+  .scroll-y {
+    /*width: 100%;*/
+    margin: 0 auto;
+    max-height: 500px;
+    overflow-y: auto;
+  }
+
+  .scroll-y.active {
+    overflow-y: scroll;
+    overflow-x: hidden;
+  }
+
+  /* 弹框 */
+  .bomb-box {
+    width: 100%;
+    height: 100%;
+    position: fixed;
+    z-index: 11111;
+    background: rgba(0, 0, 0, 0.2);
+    top: 0;
+    left: 0;
+  }
+
+  .bomb-box .box {
+    position: absolute;
+    left: 0;
+    right: 0;
+    top: 0;
+    bottom: 0;
+    margin: auto;
+    box-shadow: 0 0 3px #888;
+    border-radius: 5px;
+    overflow: hidden;
+  }
+
+  .bomb-box .box01 {
+    width: 580px;
+    height: 406px;
+    border-radius: 5px;
+    background: #fff;
+  }
+
+  .bomb-box .box i.off {
+    width: 20px;
+    height: 20px;
+    display: inline-block;
+    position: absolute;
+    right: 8px;
+    top: 8px;
+    text-align: center;
+    cursor: pointer;
+  }
+
+  .bomb-box .box p {
+    height: 40px;
+    line-height: 40px;
+    font-size: 14px;
+    width: 100%;
+    margin: 0 auto;
+    border-bottom: #e8e8e8 1px solid;
+    padding-left: 20px;
+  }
+
+  .per-data {
+    width: 90%;
+    margin: 0 auto;
+  }
+
+  .per-data ul, .per-data ul li {
+    width: 100%;
+    margin: 0 auto;
+  }
+
+  .per-data ul li {
+    height: 34px;
+    line-height: 34px;
+    margin-top: 15px;
+  }
+
+  .per-data ul li em {
+    width: 60px;
+    font-size: 14px;
+    float: left;
+  }
+
+  .per-data ul li input, .per-data ul li select {
+    width: 236px;
+    height: 34px;
+    border: #e8e8e8 1px solid;
+    font-size: 14px;
+    padding-left: 10px;
+  }
+
+  .per-data ul li select {
+    background: url("../images/select.png") no-repeat right;
+    -webkit-appearance: none;
+    appearance: none;
+    -o-appearance: none;
+    -moz-appearance: none;
+    -ms-appearance: none;
+  }
+
+  .per-data ul li select option {
+    line-height: 30px;
+  }
+
+  .per-data ul li span {
+    color: #959595;
+    line-height: 18px;
+    float: right;
+    width: 215px;
+    display: inline-block;
+  }
+
+  .per-data ul li.per-btn {
+    margin-top: 30px;
+  }
+
+  .per-data ul li a {
+    width: 94px;
+    height: 36px;
+    display: inline-block;
+    font-size: 14px;
+    color: #fff;
+    text-align: center;
+    line-height: 34px;
+    float: left;
+  }
+
+  .per-data ul li a.save {
+    margin-left: 60px;
+    background: #3f84f6;
+  }
+
+  .per-data ul li a.mod-psd {
+    background: #8dc7f9;
+    margin-left: 30px;
+  }
+
+  .per-data ul li a:hover {
+    background: #3578ba;
+  }
+
+  .add-address {
+    color: #3f84f6;
+    font-size: 14px;
+    padding-left: 30px;
+  }
+
+  .add-address:hover {
+    color: #8dc7f9;
+  }
+
+  .tender-content  ul.association {
+    position: absolute;
+    left: 0;
+    top: 100%;
+    right: 61px;
+    list-style: none;
+    -webkit-padding-start: 0;
+    background: #ffffff;
+    border: 1px solid #dddddd;
+    z-index: 21;
+  }
+  /*.tender-content{*/
+    /*display: inline-block;*/
+  /*}*/
+  .tender-content  ul.association li {
+    padding: 0 15px;
+    line-height: 30px;
+    text-align: left;
+  }
+
+  .tender-content  ul.association li.active, .tender-content  ul.association li.active:hover
+  {
+    background: #dddddd;
+  }
+
+  .tender-content  ul.association li:hover {
+    background: #EEEEEE;
+    cursor: pointer;
+  }
+
+  .tender-list02 dl div.wid01 {
+    width: 22%;
+    float: left;
+    margin-top: 9px;
+  }
+
+  .tender-list02 dl div.wid02 {
+    width: 18%;
+    float: left;
+    margin-top: 9px;
+  }
+
+  .tender-list02 dl div.wid03 {
+    width: 5%;
+    float: left;
+    margin-top: 9px;
+  }
+
+  .tender-list02 dl div.input-group>input {
+    border: 1px solid #ccc;
+    border-right: 0;
+    margin-left: 5px;
+  }
+
+  .tender-list02 dl dd input {
+    border: 1px solid #ccc;
+    padding-left: 5px;
+  }
+
+  /*.tender-list02 dl div.input-group .input-group-addon {*/
+  /*border-bottom-right-radius: 0;*/
+  /*border-top-right-radius: 0;*/
+  /*border: 1px solid #ccc;*/
+  /*border-left: 0;*/
+  /*}*/
+  #li01 ul {
+    width: 200px;
+  }
+
+  #li01 ul li {
+    height: 30px;
+    line-height: 30px;
+    padding: 0;
+  }
+
+  #li01 ul li a {
+    display: inline-block;
+    height: 30px;
+    width: 100%;
+  }
+
+  #li01 .input-group {
+    /* position: absolute;*/
+    position: inherit;
+  }
+
+  #li01 .input-group input {
+    width: 155px;
+    border: 1px solid #ccc;
+  }
+
+  #li01 .input-group-addon {
+    width: 30px;
+    line-height: 34px;
+    height: 34px;
+    padding: 0;
+    display: inline-block;
+    position: relative;
+    /*top: -50px;*/
+    /*right: -7px;*/
+    border-top-right-radius: 0;
+    border-bottom-right-radius: 0;
+    left: -5px;
+    cursor: pointer;
+  }
+
+  .dropdown-menu {
+    min-width: 150px;
+  }
+
+  .tender-list02 dl dd span.codeInput input {
+    border: 1px solid #ccc;
+  }
+
+  select.disabled {
+    background-color: #f5f5f5;
+  }
+  select {
+    opacity: 1 !important;
+    background: url(static/img/tender/select.png) no-repeat scroll right center transparent; */
+  }
+  .modal {
+    position: fixed;
+  }
+</style>
+<style>
+  .base-info-content {
+    box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
+    -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
+    -o-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
+    -moz-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
+    border-radius: 5px;
+    /*min-height: 1066px;*/
+    background: #fff;
+    width: 1026px;
+  }
+  #order-detail-list {
+    font-size: 14px;
+  }
+  .pub-com_head, .com_head {
+    width: 100%;
+    height: 35px;
+    line-height: 35px;
+    background: #5078cb;
+    border-radius: 5px 5px 0 0;
+    /* background: url(../img/approvalFlow/comm_bg01.png) no-repeat left; */
+    /* background-color: #f5f5f5; */
+    /* background-size: 100% 100%; */
+  }
+  .pub-com_head span, .com_head span {
+    margin-left: 10px;
+    color: #fff;
+    font-size: 14px;
+    font-weight: bold;
+  }
+  .pub-com_head .p-right {
+    float: right;
+  }
+  .pane .pane-body {
+    /*padding: 15px!important;*/
+  }
+  com_title01, .title-div {
+    /*border-bottom: 1px dashed #3f84f6 !important;*/
+  }
+  .title-div {
+    color: #5078cb;
+    font-size: 14px;
+    font-weight: 600;
+    /*padding-left: 20px !important;*/
+    height: 50px;
+    padding-top: 11px;
+    position: relative;
+  }
+  .f14 {
+    font-size: 14px !important;
+  }
+  #order-detail-list .row {
+    width: 96%;
+    margin: 0 auto;
+    line-height: 30px;
+  }
+  .base-info-content .item {
+    line-height: 26px;
+    /* border-bottom: 1px dotted #e8e8e8; */
+    padding: 5px 0;
+  }
+  #order-detail-list .title {
+    font-weight: inherit;
+  }
+  .base-info-content .title {
+    float: left;
+    width: 92px;
+    color: #333;
+    font-weight: bold;
+  }
+  #order-detail-list .content {
+    color: #666;
+  }
+  .base-info-content .content {
+    /*float: left;*/
+    white-space: nowrap;
+  }
+  .title-div .end {
+    position: absolute;
+    top: 10px;
+    right: 0;
+    line-height: 24px;
+    padding-left: 15px;
+    background: #fff;
+    z-index: 2;
+  }
+  .block {
+    background-color: #fff;
+    border-radius: 5px;
+    width: 100%;
+    /*position: relative;*/
+    margin-bottom: 0px;
+  }
+  #order-detail-list .table-default .header {
+    box-shadow: none;
+    border: none;
+    background: none;
+    background: #f9f9f9;
+  }
+  #order-detail-list .table-default .header th {
+    display: inline-block;
+    border-bottom: none;
+    font-weight: normal;
+    color: #999;
+    padding: 8px 0;
+    text-align: center;
+  }
+  #order-detail-list .table-default th, #order-detail-list .table-default td {
+    /*border-top: #ddd 1px dotted;*/
+  }
+  #order-detail-list .table-default tbody tr {
+    background: none;
+    position: relative;
+  }
+  #order-detail-list table.table-default.pms tbody tr td {
+    vertical-align: middle;
+    color: #323232;
+    min-height: 140px;
+    position: relative;
+    padding: 15px 0;
+    font-size: 14px;
+  }
+  [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak, .ng-hide:not(.ng-hide-animate) {
+    display: none !important;
+  }
+  .text-bold {
+    font-weight: 700;
+  }
+
+  .text-num {
+    font-style: normal;
+    word-break: break-all;
+    font-size: 14px;
+  }
+  .text-muted {
+    color: #333;
+    font-size: 14px;
+  }
+  .bottomB {
+    border-bottom: 2px solid #f5f5f5;
+    padding: 15px 30px 15px 15px;
+  }
+
+  .title-div .f14{
+    border-left: 5px solid #5078cb;padding-left: 10px;
+  }
+
+  .order-number {
+    position: absolute;
+    top: -1px;
+    left: -1px;
+    width: 20px;
+    height: 20px;
+    line-height: 20px;
+    text-align: center;
+    background: #f9f9f9;
+    font-weight: 500;
+    border: solid 1px #d5d5d5;
+    border-radius: 0 0 10px 0;
+  }
+  #order-detail-list .table-default.pms tbody tr td.product {
+    padding-left: 30px;
+  }
+  #order-detail-list .table-default tbody tr td{
+    border-right: 1px solid #e8e8e8;
+  }
+  .text-trans {
+    top: 14px;
+    right: 20px;
+  }
+  .f14{
+    font-size: 14px;
+  }
+</style>
+<div class="ng-scope base-info-content fr">
+  <form name="tenderForm" id="tenderForm">
+    <div class="purc-tender">
+      <!--<div class="loading in" ng-class="{'in': loading}">-->
+        <!--&lt;!&ndash;<i></i>&ndash;&gt;-->
+        <!--<div class="wrap">-->
+          <!--<div class="outer"></div>-->
+        <!--</div>-->
+      <!--</div>-->
+      <div class="tender-label list-unstyled">
+        <div class="com_head">
+          <span>招标单</span>
+          <span class="fr"><em style="margin-right: 20px">录入人:{{user.userName}}</em><time style="margin-right: 20px">日期:{{time | date :'yyyy-MM-dd hh:MM:ss'}}</time></span>
+        </div>
+      </div>
+      <div class="tender-content ng-scope">
+        <div class="title-div com_title01" style="border-bottom: 0px">
+          <span class="f14" style="margin-left: 0;color: #5078cb;">基本信息<em style="color: rgb(211,37,38);">*</em></span>&nbsp;
+
+        </div>
+        <div class="row base-info" style="border-bottom: none;">
+          <div class = "col-xs-4">
+            <div class="tender-desc">招标标题:</div>
+            <input autofocus class="tender-input01" type="text" name="title" ng-model="tender.title" required/>
+          </div>
+          <div class = "col-xs-4">
+            <div class="tender-desc">联系人:</div>
+            <input class="tender-input01" type="text" name="user" ng-model="tender.user" required/>
+          </div>
+          <div class = "col-xs-4">
+            <div class="tender-desc">联系电话:</div>
+            <input class="tender-input01" type="text" name="userTel" ng-model="tender.userTel" required/>
+          </div>
+          <div class = "col-xs-4">
+            <div class="tender-desc">交易币别:</div>
+            <select class="select-menu" data-style="btn-primary" ng-model="tender.currency" ng-change="changeCurrency(tender)">
+              <option value ="RMB">RMB</option>
+              <option value ="USD">USD</option>
+              <option value ="HKD">HKD</option>
+              <option value ="EUR">EUR</option>
+            </select>
+          </div>
+          <div class = "col-xs-4">
+            <div class="tender-desc">是否含税:</div>
+            <select class="select-menu" ng-model="tender.ifTax" ng-disabled="notRMB" ng-class="{'disabled':notRMB}">
+              <option value ="1">是</option>
+              <option value ="0">否</option>
+            </select>
+          </div>
+          <div class="col-xs-4">
+            <div class="tender-desc">发票要求:</div>
+            <select class="select-menu" ng-model="tender.invoiceType" ng-disabled="notRMB" ng-class="{'disabled':notRMB}">
+              <option value ="2">增值税专用发票</option>
+              <option value ="1">普通发票</option>
+              <option value ="0">不需要发票</option>
+            </select>
+          </div>
+          <div class="col-xs-12" style="padding-top: 10px;">
+            <div class="tender-desc">交易方式:</div>
+            <input class="tender-input" style="width: 80%; text-align: left; height: 34px; padding-left: 10px; border: #ccc 1px solid;" required name="payment" type="text" ng-model="tender.payment" placeholder="必填,填写付款方式,如现金、月结30天等"/>
+          </div>
+          <div class="col-xs-2"></div>
+          <div class="col-xs-12">
+            <div class="tender-desc">证照要求:<span class="tender-desc" style="font-size: 12px; font-family: 'Microsoft Yahei'; color: #969595;margin-top:-10px;">(多选)</span></div>
+            <div class="input-select col-xs-3" ng-repeat="certificate in certificates">
+              <input type="checkbox" name="certificate" ng-model="certificate.checked" value="certificate">
+              <span ng-bind="certificate.name"></span>
+            </div>
+          </div>
+          <div class="col-xs-12" ng-show="!isSave" >
+            <div class="tender-desc">收货地址:</div>
+            <span required="required">
+                             <select class="select fl" style="text-indent: 12px;width: 70%; height: 34px; line-height: 34px; font-size: 14px;" ng-model="tender.shipadd" required="required" ng-options="(ship.address + ship.addressdet + ' ' + ship.receiver + ' ' + ship.usertel) for ship in ships">
+								<option value="">请选择收货地址</option>
+							</select>
+                            <a href="javascript:void(0);" class="add-address"><i class="fa fa-plus-square fa-fw"></i>新增收货地址</a>
+                        </span>
+          </div>
+          <div class="col-xs-12" ng-show="isSave">
+            <div class="tender-desc">收货地址:</div>
+            <div ng-show = "!changeShipAddress" style="padding-top: 6px;">
+              {{tender.shipAddress}}
+              <a class="change-address" style="color: #3f84f6;" ng-click="changeAddress()">
+                修改
+              </a>
+            </div>
+            <span ng-show = "changeShipAddress">
+                             <select class="select fl" style="width: 70%; height: 34px; line-height: 34px; font-size: 14px;" ng-model="tender.shipadd" required="required" ng-options="(ship.address + ship.addressdet + ' ' + ship.receiver + ' ' + ship.usertel) for ship in ships">
+								<option value="">请选择收货地址</option>
+							</select>
+                            <a href="javascript:void(0);" class="add-address"><i class="fa fa-plus-square fa-fw"></i>新增收货地址</a>
+                        </span>
+          </div>
+          <div class="col-xs-4">
+            <span class="tender-desc f14" style="padding-top: 15px;">投标截止时间:</span>
+            <div class="input-group input-trigger date-picker">
+              <input type="text" ng-model="tender.endDate" required
+                     class="form-control" placeholder="点击选择截止日期" readonly="readonly"
+                     datepicker-popup="yyyy-MM-dd" is-open="condition.$fromOpened"
+                     ng-required="true" max-date="getMaxDate()" current-text="今天" min-date = "currentDay()"
+                     clear-text="清除" close-text="关闭"
+                     datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+                     ng-click="openDatePicker($event, condition, '$fromOpened')"
+                     ng-change="onDateCondition()"> <span
+                class="input-group-btn">
+							<button type="button" class="btn btn-default btn-open"
+                      ng-click="openDatePicker($event, condition, '$fromOpened')">
+								<i class="fa fa-calendar"></i>
+							</button>
+						</span>
+            </div>
+          </div>
+          <div class="col-xs-4">
+            <span class="tender-desc f14" style="padding-top: 15px;">公布结果时间:</span>
+            <div class="input-group input-trigger date-picker">
+              <input type="text" ng-model="tender.publishDate" required
+                     class="form-control" placeholder="点击选择公布日期" readonly="readonly"
+                     datepicker-popup="yyyy-MM-dd" is-open="condition.$toOpened"
+                     ng-required="true" min-date="getMinDate()"
+                     current-text="今天" clear-text="清除" close-text="关闭"
+                     datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+                     ng-focus="openDatePicker($event, condition, '$toOpened')"
+                     ng-change="onDateCondition()"> <span
+                class="input-group-btn">
+							<button type="button" class="btn btn-default btn-open"
+                      ng-click="openDatePicker($event, condition, '$toOpened')">
+								<i class="fa fa-calendar"></i>
+							</button>
+						</span>
+            </div>
+          </div>
+          <div class="col-xs-4">
+            <span class="tender-desc f14" style="padding-top: 15px;">提问截止时间:</span>
+            <div class="input-group input-trigger date-picker">
+              <input type="text" ng-model="tender.questionEndDate" required
+                     class="form-control" placeholder="点击选择提问截止日期" readonly="readonly"
+                     datepicker-popup="yyyy-MM-dd" is-open="condition.$endOpened"
+                     ng-required="true" min-date="currentDay()" max-date="getMaxDate()"
+                     current-text="今天" clear-text="清除" close-text="关闭"
+                     datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+                     ng-focus="openDatePicker($event, condition, '$endOpened')"
+                     ng-change="onDateCondition()"> <span
+                class="input-group-btn">
+							<button type="button" class="btn btn-default btn-open"
+                      ng-click="openDatePicker($event, condition, '$endOpened')">
+								<i class="fa fa-calendar"></i>
+							</button>
+						</span>
+            </div>
+          </div>
+          <div class="col-xs-12" style="position: relative; margin-bottom: 20px;">
+            <div class="tender-desc">上传招标文件:</div>
+            <div class="fileInputContainer">
+              <input class="fileInput" type="file" ng-file-select name="file" ng-model="myFile" ng-change="upload(myFile)" />
+              <!-- href="file/{{attach.id}}" -->
+              <div class="attach-file" ng-repeat="attach in attaches">
+                <a style="color: #5078cb;" href="file/{{attach.id}}">{{::attach.name}}</a>&nbsp;&nbsp;
+                <a ng-click="removeAttach(attach.id, $index)" title="删除"><i class="fa fa-trash-o fa-lg"></i></a>
+              </div>
+            </div>
+            <div style="margin-left: 100px; color: #969595; font-size: 12px; position: absolute;">
+              提示:选择附件大小不超过5MB。
+            </div>
+          </div>
+        </div>
+
+        <div class="wrap-b">
+          <div class="content">
+            <div class="tender-list02">
+              <!--产品信息-->
+              <div class="com_title01 title-div">
+                <span class="f14" style="margin-left: 0;color:#5078cb">招标明细</span>
+                <span style="opacity: 0.8; margin-left: 10px; font-weight: normal;color: #89aefa">
+                  <i class="fa fa-info-circle" style="color: #5078cb;margin-right:5px;"></i>您可以在页面下方选择本企业物料
+                </span>
+                <a ng-click="add()" style="margin-left: 20px;color: #30a603"><i class="glyphicon glyphicon-plus-sign"></i>新增产品明细</a>
+                <a ng-click="uplodaByBatch()" style="color: #30a603"><i class="glyphicon glyphicon-upload"></i>批量导入 </a>
+                <!--<div class="com_title01" style="border-bottom: 1px solid #969595;"></div>-->
+              </div>
+              <dl>
+                <dt style="margin: 10px 30px 0;width: auto;background: #f5f8fe;border:1px solid #f5f8fe">
+                  <span style="width: 50px !important;">序号</span>
+                  <span class="wid01">型号</span>
+                  <span class="wid01">产品名称</span>
+                  <span class="wid02">品牌</span>
+                  <span>单位</span>
+                  <span>采购数量</span>
+                  <span class="wid03">&nbsp;</span>
+                  <div style="clear: both"></div>
+                </dt>
+                <div class="scroll-y" style="margin: 0 30px 20px;">
+                  <dd ng-repeat="prod in tenderProd" id="li01">
+                    <span style="width: 50px !important;">{{$index + 1}}</span>
+                    <span class="codeInput wid01">
+                        <input style="width:90%" type="text" name="code" ng-model="prod.prodCode" ng-change="getSimilarCodes(prod.prodCode)" ng-focus="onFocus('code')" placeholder="请输入标准原厂型号" typeahead="prod.code for prod in getSimilarCodes($viewValue)" autocomplete="off" typeahead-on-select="onAssociateCmpClick($item, prod)" spellcheck = "false" required>
+                    </span>
+                    <span class="input-group wid01">
+                        <input type="text" style="width: 80%; text-align: left;" class="input01" name="kindName" ng-model="prod.prodTitle"  required placeholder="请输入或选择分类" spellcheck = "false" autocomplete="off" />
+                        <div class="input-group-addon" ng-click="selectKind(prod)">
+                            <i class="fa fa-search" aria-hidden="true"></i>
+                        </div>
+                    </span>
+                    <span class="input-group wid02">
+                        <input type="text" style="width: 80%;text-align: left;" ng-change="getSimilarBrands(prod.brand)" class="input01" name="brandName" ng-model="prod.brand" placeholder="请输入或选择品牌" spellcheck = "false" typeahead="prod.brandCn for prod in getSimilarBrands($viewValue)" autocomplete="off" typeahead-on-select="onAssociateBrandClick($item, prod)" />
+                        <div class="input-group-addon" ng-click="selectBrand(prod)">
+                            <i class="fa fa-search" aria-hidden="true"></i>
+                        </div>
+                    </span>
+                    <span class="codeInput"><input type="text" ng-model="prod.unit" placeholder="点击填入单位" required/></span>
+                    <span class="codeInput" style="margin-left: 4px;"><input type="text" ng-model="prod.qty" ng-pattern="/^\+?[1-9][0-9]*$/" placeholder="点击填入数量" required/></span>
+                    <span class="wid03" ng-show="!isSave"><a ng-click="del($index)"><i class="fa fa-close"></i></a></span>
+                    <span class="wid03" ng-show="isSave"><a ng-click="del($index);deleteProd(prod);"><i class="fa fa-close"></i></a></span>
+                    <div style="clear: both"></div>
+                  </dd>
+                </div>
+              </dl>
+            </div>
+          </div>
+        </div>
+
+
+        <div class="title-div">
+          <span class="f14">供应商信息</span>
+          <a style="width: 110px;margin-right:20px;color:#5078cb;transition: 0s all" class="add-vendor pull-right" ng-click="dbfindVendor()" href="javascript:void(0)" ng-if="tender.ifOpen == 0">
+            <i class="fa fa-plus-square fa-fw"></i>添加供应商
+          </a>
+        </div>
+        <div class="row vend-info">
+          <div class="col-xs-12">
+            <div class="tender-desc">是否开放报名:</div>
+            <div class="input-select col-xs-3">
+              <label class="com-check-radio">
+                <input type="radio" id="forSeller" value="1" name="ifOpen" ng-click="removeChecked()" ng-model="tender.ifOpen" />
+                <label for="forSeller"></label>
+                允许优软平台的供应商参与
+              </label>
+              <!--<input class="tender-input" name="ifOpen" type="radio" value="1" ng-click="removeChecked()" ng-model="tender.ifOpen"/>-->
+              <!--<input class="tender-input" name="ifOpen" type="radio" value="1" ng-click="removeChecked()" ng-model="tender.ifOpen" />-->
+              <!--<input class="tender-input" name="ifOpen" type="radio" value="1" ng-click="removeChecked()" ng-model="tender.ifOpen"/>-->
+              <!--<span></span>-->
+            </div>
+            <div class="input-select col-xs-4">
+              <!--<input  class="tender-input" name="ifOpen" type="radio" value="0" ng-model="tender.ifOpen"/>-->
+              <label class="com-check-radio">
+                <input type="radio" id="forSeller2" value="0" name="ifOpen" ng-model="tender.ifOpen" />
+                <label for="forSeller2"></label>
+                只允许我邀请的供应商参与
+              </label>
+            </div>
+          </div>
+          <div class="col-xs-12" style="" ng-repeat="en in tenderProd.enterpriseBaseInfo" ng-show="tender.ifOpen == 0">
+            <div class="col-xs-2 control-label" style="width: 100px;">供应商{{$index + 1}}</div>
+            <!--<div for="uu{{$index + 1}}" class="col-xs-1" style="width: 20px;">UU</div>-->
+            <!--<div class="col-xs-2">-->
+            <!--<input class="tender-input01" ng-model="en.uu" type="number" id="uu{{$index + 1}}" readonly ng-required="tender.ifOpen == 0">-->
+            <!--</div>-->
+            <div for="enName{{$index + 1}}" style="width: 40px; float: left;">名称:</div>
+            <div class="col-xs-3">
+              <input ng-model="en.enName" type="text" style="width: 100%;" class="tender-input01 f14" readonly id="enName{{$index + 1}}"
+                     ng-required="tender.ifOpen == 0">
+            </div>
+            <div style="width: 60px; float: left;">联系人:</div>
+            <div class="col-xs-5" ng-show="!isSave">
+              <select class="select-contact f14"
+                      ng-model="en.contact"
+                      ng-options="(contact.venduser + '' + contact.tel) for contact in en.contacts">
+                <option value="">请选择供应商联系人</option>
+              </select>
+              <a class="add-address" ng-click="addContact(en)">+增加联系人</a>
+            </div>
+            <div class="col-xs-5" ng-show="isSave">
+              <div ng-show = "!en.changeContact && en.contact">
+                {{en.contact.venduser}}&nbsp;{{en.contact.tel}}
+                <a class="add-address" style="color: #3f84f6; padding-left: 30px; font-size: 14px;" ng-click="changeContactInfo(en)">
+                  修改联系人
+                </a>
+              </div>
+              <span ng-show="en.changeContact || !en.contact">
+                                <select class="select-contact f14"
+                                        ng-model="en.contact"
+                                        ng-options="(contact.venduser + '' + contact.tel) for contact in en.contacts">
+                                    <option value="">请选择供应商联系人</option>
+                                </select>
+                                <a class="add-address" ng-click="addContact(en)">+增加联系人</a>
+                            </span>
+            </div>
+            <div style="width: 30px; float: left;">
+              <a ng-show="!isSave" class="remove-vendor" href="javascript:void(0)" ng-click="removeVendor($index)" title="删除"><i class="fa fa-trash-o fa-lg"></i></a>
+              <a ng-show="isSave" class="remove-vendor" href="javascript:void(0)" ng-click="removeVendor($index);removeSaleTender(tender.id, en.uu);" title="删除"><i class="fa fa-trash-o fa-lg"></i></a>
+            </div>
+          </div>
+        </div>
+        <div ng-show="!isSave" style="padding: 30px; border-top: 1px solid #5078cb;margin-top:20px;">
+          <div class="pull-right btn-publish" style="margin-right: 15px">
+            <button class="btn" ng-disabled="tenderForm.$invalid" ng-click="save(true)" style="opacity: 1;color: #ffffff;">发布</button>
+          </div>
+          <div class="pull-right btn-save" style="margin-right: 15px">
+            <button class="btn" ng-disabled="tenderForm.$invalid" ng-click="save(false)" style="opacity: 1;background: #fff;border:1px solid #5078cb;color:#5078cb">保存</button>
+          </div>
+          <div style="clear:both"></div>
+        </div>
+        <div ng-show="isSave" style="padding: 30px;border-top: 1px solid #5078cb;">
+          <div class="pull-right btn-publish" style="margin-right: 15px">
+            <button class="btn" ng-click="updateSaved(true)" style="opacity: 1;color: #ffffff;">发布</button>
+          </div>
+          <div class="pull-right btn-save" style="margin-right: 15px">
+            <button class="btn" ng-click="updateSaved(false)" style="opacity: 1;background: #fff;border:1px solid #5078cb;color:#5078cb">更新</button>
+          </div>
+          <div class="pull-right btn-delete" style="margin-right: 15px">
+            <button class="btn btn-danger" ng-click="deleteThis(tender.id)" style="opacity: 1;color: red;border:1px solid red;background:#fff;">删除</button>
+          </div>
+          <div style="clear:both"></div>
+        </div>
+      </div>
+    </div>
+  </form>
+  <div style="background: #f5f5f5;height: 10px"></div>
+  <div class="title-div">
+    <span class="f14">我的材料库</span>
+  </div>
+  <div class="pro-add-data02" style="min-height: 500px;" >
+    <div class="pro-search">
+      <div class="col-xs-12" style="background: #f5f8fe;padding: 5px 0;margin-bottom: 10px">
+        <div class="col-xs-3 result-title" style="line-height: 36px;margin-left: 20px">搜索{{keyword}},为您找到<em>{{total}}</em>结果</div>
+        <div class="col-xs-8 search">
+          <input style="float:right" type="text" placeholder="输入物料关键字查询" ng-model="keyword" ng-search="onSearch(keyword)"/>
+          <a class="seek" ng-click="onSearch(keyword)" style="float:right">搜索</a>
+        </div>
+      </div>
+    </div>
+    <table class="block table table-default table-striped" ng-table="tableParams" style="margin:0 30px 20px;width: auto">
+      <thead>
+      <tr class="header">
+        <th width="160px">型号</th>
+        <th width="120px">名称</th>
+        <th>规格</th>
+        <th width="120px">单位</th>
+        <th width="80px">选择</th>
+      </tr>
+      </thead>
+      <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)" ng-click="check(product)" style="text-decoration: none; color: #3f84f6;" id="click" class="add01">添加</a>
+          <div class="add-tanchuang">
+            <ul>
+              <li>
+                <div class="fl">数量:</div>
+                <div class="fr">
+                  <div class="btn-wrap">
+	                                        <span class="number">
+	                                            <a href="###" class="reduce">-</a>
+	                                            <input type="text" value="100">
+	                                            <a href="###" class="add">+</a>
+	                                        </span>
+                  </div>
+                </div>
+              </li>
+              <li>
+                <div class="fl">交期:</div>
+                <div class="fr"><input type="text" class="price-input" value="时间选择"></div>
+              </li>
+              <li>
+                <div class="fl">单价:</div>
+                <div class="fr"><input type="text" class="price-input" value="¥1.23"></div>
+              </li>
+              <li class="add-btn">
+                <div class="fl">&nbsp;</div>
+                <div class="fr"><a href="javascript:void(0);" class="off">取消</a><a href="javascript:void(0);" class="ok">确认</a></div>
+              </li>
+            </ul>
+          </div>
+        </td>
+      </tr>
+      </tbody>
+    </table>
+    <div id="empty" ng-if="tableParams.total() == 0">
+      <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 ng-if="tip != null">搜索"{{tip}}"未找到产品信息,请重新输入搜索条件</p>
+        <p ng-if="tip == null">您还未添加商品信息</p>
+      </div>
+    </div>
+  </div>
+</div>
+<!--设置-企业设置-收货地址编辑-->
+<div class="bomb-box" style="display: none">
+  <form class="box04 box" name="shipAddress" id="shipAddress">
+    <i class="off">
+      <i class="glyphicon glyphicon-remove" style="color: #fff;font-size: 14px;top:5px"></i>
+
+    </i>
+    <p style="background: #5078cb;color: #fff">收货人资料</p>
+    <ul>
+      <li class="line01">
+        <div class="fl">
+          <span class="fl"><em>*</em>收货人:</span>
+          <span class="fr"><input type="text" placeholder="填写收货人" ng-model="ship.receiver" required="true" ng-pattern="/^[\u4e00-\u9fa5]{1,6}$|^[\dA-Za-z]{1,12}$/"/></span>
+        </div>
+        <div class="fr">
+          <span class="fl"><em>*</em>手机:</span>
+          <span class="fr"><input type="text" ng-model="ship.usertel" required="true" ng-pattern="/^1(3|4|5|7|8)\d{9}$/"/></span>
+        </div>
+      </li>
+      <li class="line01">
+        <div class="fl">
+          <span class="fl">固定电话<em></em>:</span>
+          <span class="fr"><input type="text" ng-model="ship.phone"  ng-pattern="/([0-9]{3,4}-)?[0-9]{7,8}/"/></span>
+        </div>
+        <div class="fr">
+          <span class="fl">邮箱:</span>
+          <span class="fr emaill"><input type="text" ng-model="ship.email" ng-pattern="/^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/"/><i>用于接收订单提醒邮件,便于您及时了解订单状态</i></span>
+        </div>
+      </li>
+      <li class="line02 margin-top40">
+        <div class="fl"><em>*</em>所在地址:</div>
+        <!--<div class="select fr"><input type="text" placeholder="请选择" ng-model="ship.address" required="true"/><i class="fa fa-angle-down"></i></div>-->
+        <div class="select fr">
+          <select required="" class="area-select" ng-model="ship.province" ng-options="key as key for (key,value) in provinces"
+                  ng-change="ship.city='';ship.district='';" required="true">
+            <option value="">省</option>
+          </select>
+          <select class="area-select" ng-model="ship.city" ng-options="key as key for (key,value) in provinces[ship.province]"
+                  ng-change="ship.district='';" required="true">
+            <option value="">市</option>
+          </select>
+          <select class="area-select" ng-model="ship.district" ng-options="value as value for value in provinces[ship.province][ship.city]" required="true">
+            <option value="">区</option>
+          </select>
+        </div>
+      </li>
+      <li class="line02">
+        <div class="fl"><em>*</em>详细地址:</div>
+        <div class="fr"><input type="text" ng-model="ship.addressdet" required="true"/></div>
+      </li>
+      <li class="line02">
+        <div class="fl">地址别名:</div>
+        <div class="fr address"><input type="text" ng-model="ship.addalias"/><i>建议填写常用名称:家里/父母家/公司</i></div>
+      </li>
+    </ul>
+    <div class="many-file-btn">
+      <button style="background: #5078cb" class="btn01" ng-click="saveShipAddress(ship);" ng-disabled="shipAddress.$invalid">保存</button>
+      <a href="#" class="btn02" style="background: #969595;color:#fff;border:1px solid #969595">取消</a>
+    </div>
+  </form>
+</div>
+<script src="static/lib/jquery/jquery.min.js"></script>
+<script>
+  $(function(){
+    var size10= $(".tender-list02 dl dd").size();
+    if(size10 > 10){
+      $(".scroll-y").addClass("active");
+    }else{
+      $(".scroll-y").removeClass("active");
+    }
+
+    /*下拉效果*/
+    $('.select p').click(function(e){
+      $('.select').toggleClass('open');
+      e.stopPropagation();
+    });
+    $('.select ul li').click(function(e){
+      var title=$(this).html();
+      $('.select p').html(title);
+      $(this).addClass('selected').siblings().removeClass('selected');
+      $('.select').removeClass('open');
+      e.stopPropagation();
+    });
+    $(document).click(function(){
+      $('.select').removeClass('open');
+    })
+
+    //新增收货地址
+    $(".tender-content .base-info .add-address").click(function(){
+      document.getElementById('shipAddress').reset();
+      $(".bomb-box").show();
+    });
+    $(".bomb-box .box04 .off,.box04 .many-file-btn .btn02").click(function(){
+      $(".bomb-box").hide();
+    });
+    $(".bomb-box .box04 .off,.box04 .many-file-btn .btn01").click(function(){
+      $(".bomb-box").hide();
+    })
+  })
+</script>
+<style>
+  .pro-add-data02 {
+    width: 100%;
+    margin: 0 auto;
+    background: #fff;
+    margin-top: 20px;
+  }
+  .pro-search {
+    width: 100%;
+    /*height: 90px;*/
+    margin: 0 auto;
+    overflow: hidden;
+  }
+  .search-title {
+    font-size: 14px;
+    line-height: 90px;
+    font-weight: bold;
+    margin: 0 30px 0 5px;
+  }
+  .pro-search .search {
+    /*margin-top: 26px !important;*/
+    position: relative;
+  }
+  .search input {
+    width: 348px;
+    padding-left: 10px;
+    height: 36px;
+    background: #fff;
+    float: left;
+    vertical-align: middle;
+    border: #3578ba 1px solid;
+    font-size: 14px;
+    text-align: center;
+    padding-right: 85px;
+    line-height: 36px;
+  }
+  .search a.seek {
+    vertical-align: middle;
+    display: inline-block;
+    line-height: 36px;
+    text-align: center;
+    height: 36px;
+    width: 85px;
+    background: #5078cb;
+    color: #fff;
+    font-size: 16px;
+    float: right;
+    border: #5078cb 1px solid;
+    border-left: 0;
+    position: absolute;
+    right: 0;
+  }
+  .result-title {
+    font-size: 14px;
+    /*line-height: 90px;*/
+    text-align: left;
+  }
+  .result-title em {
+    color: #5078cb;
+    font-size: 14px;
+  }
+  .block {
+    background-color: #fff;
+    border-radius: 5px;
+    width: 100%;
+    position: relative;
+  }
+  .pro-add-data02 .table-default .header {
+    /*background: #fff;*/
+    border: none;
+    font-size: 14px;
+    /*box-shadow: 0 0 7px 0 rgba(119, 119, 119, 0.2);*/
+    background: #89aefa;
+    color: #fff;
+  }
+  .table-default .header>th {
+    padding: 10px;
+    text-align: center;
+    border-bottom: #e8e8e8 1px solid
+  }
+  .pro-add-data02 table tbody {
+    font-size: 14px;
+  }
+  .pro-add-data02 table tbody tr {
+    margin-top: 1px;
+    background: #fff !important;
+    border:1px solid #f5f8fe
+  }
+  .pro-add-data02 table tbody tr:hover {
+    background: #f5f8fe !important;
+  }
+  .table-striped>tbody>tr:nth-child(odd) {
+    /*background-color: #f9f9f9;*/
+  }
+  .pro-add-data02 table tbody tr td {
+    /* line-height: 50px; */
+    height: 50px;
+    padding: 0;
+    font-size: 14px !important;
+    /*border-bottom: #e8e8e8 1px solid;*/
+    /*background: #fff;*/
+    vertical-align: middle;
+    border-top: 0px;
+  }
+  .add-tanchuang {
+    position: absolute;
+    box-shadow: 0 0 3px #888;
+    width: 238px;
+    height: 202px;
+    background: #fff;
+    right: 100px;
+    top: 20%;
+    display: none;
+  }
+  .add-tanchuang ul {
+    width: 195px;
+    margin: 0 auto;
+    margin-top: 10px;
+  }
+  .add-tanchuang ul li {
+    width: 100%;
+    margin: 0 auto;
+    height: 34px;
+    line-height: 34px;
+    margin-top: 12px;
+  }
+  .add-tanchuang ul li div.fl {
+    width: 50px;
+    font-size: 14px;
+  }
+  .add-tanchuang ul li div.fr {
+    width: 145px;
+  }
+  .add-tanchuang ul li .btn-wrap {
+    position: relative;
+    height: 30px;
+    width: 145px;
+    line-height: 30px;
+  }
+  .add-tanchuang ul li .btn-wrap .number {
+    width: 145px;
+    height: 34px !important;
+    border: #969595 1px solid;
+    display: inline-block;
+    text-align: center;
+    line-height: 34px !important;
+    color: #333;
+  }
+  .add-tanchuang ul li .btn-wrap .number a {
+    width: 26px;
+    height: 33px;
+    display: inline-block;
+    font-size: 18px;
+    color: #666;
+    line-height: 28px;
+  }
+  .add-tanchuang ul li .btn-wrap .number .reduce {
+    float: left;
+    border-right: #969595 1px solid;
+  }
+  .add-tanchuang ul li .btn-wrap .number input {
+    float: left;
+    width: 91px;
+    height: 32px;
+    line-height: 32px;
+    text-align: center;
+    font-size: 16px;
+    color: #666;
+    border: none;
+    display: inline-block;
+  }
+  .add-tanchuang ul li .btn-wrap .number .add {
+    float: right;
+    border-left: #969595 1px solid;
+  }
+
+  .bomb-box {
+    width: 100%;
+    height: 100%;
+    position: fixed;
+    z-index: 11111;
+    background: rgba(0, 0, 0, 0.5);
+    top: 0;
+    left: 0;
+  }
+  .bomb-box .box {
+    position: absolute;
+    left: 0;
+    right: 0;
+    top: 0;
+    bottom: 0;
+    margin: auto;
+    box-shadow: 0 0 3px #888;
+    width: 780px;
+    height: 478px;
+    background: #fff;
+  }
+  .bomb-box .box i.off {
+    width: 20px;
+    height: 20px;
+    display: inline-block;
+    position: absolute;
+    right: 8px;
+    top: 8px;
+    text-align: center;
+    cursor: pointer;
+  }
+  .bomb-box .box p {
+    height: 40px;
+    line-height: 40px;
+    font-size: 14px;
+    width: 100%;
+    margin: 0 auto;
+    border-bottom: #e8e8e8 1px solid;
+    padding-left: 20px;
+  }
+  .bomb-box .box04 ul {
+    width: 92%;
+    margin: 0 auto;
+  }
+  .bomb-box .box04 ul li {
+    width: 100%;
+    height: 34px;
+    margin-top: 16px !important;
+    line-height: 34px;
+    margin: 0 auto;
+  }
+  .bomb-box .box04 ul li.line01 div {
+    width: 50%;
+    float: left;
+  }
+  .bomb-box .box04 ul li.line01 div.fl span.fl, .bomb-box .box04 ul li.line01 div.fr span.fl {
+    width: 80px;
+    font-size: 14px;
+  }
+  .bomb-box .box04 ul li div em {
+    color: #f00;
+  }
+  .bomb-box .box04 ul li.line01 div.fl span.fr, .bomb-box .box04 ul li.line01 div.fr span.fr {
+    width: 254px;
+    height: 34px;
+    display: inline-block;
+    float: left;
+  }
+  .bomb-box .box04 ul li.line01 div.fl span.fr input, .bomb-box .box04 ul li.line01 div.fr span.fr input {
+    width: 254px;
+    height: 34px;
+    padding-left: 10px;
+    border: #cccccd 1px solid;
+    font-size: 14px;
+  }
+  .bomb-box .box04 .margin-top40 {
+    margin-top: 40px !important;
+  }
+  .bomb-box .box04 ul li.line02 div.fl {
+    width: 80px;
+    font-size: 14px;
+  }
+  .bomb-box .box04 ul li.line02 div.fr {
+    width: 632px;
+    height: 34px;
+    font-size: 14px;
+    float: left;
+  }
+  .bomb-box .box04 .emaill, .bomb-box .box04 .address {
+    position: relative;
+  }
+  .bomb-box .box04 ul li.line02 div.fr input {
+    width: 632px;
+    height: 34px;
+    font-size: 14px;
+    padding-left: 10px;
+    border: #cccccd 1px solid;
+  }
+  .bomb-box .box04 .emaill i, .bomb-box .box04 .address i {
+    position: absolute;
+    bottom: -30px;
+    width: 112%;
+    font-size: 12px;
+    color: #959595;
+    left: 0;
+  }
+  .bomb-box .box04 .many-file-btn {
+    width: 240px;
+    margin: 0px auto;
+    margin-top: 60px;
+  }
+  .bomb-box .box04 .many-file-btn button {
+    width: 94px;
+    height: 36px;
+    line-height: 36px;
+    font-size: 14px;
+    display: inline-block;
+    text-align: center;
+  }
+  .bomb-box .box04 .many-file-btn button.btn01 {
+    border: 1px;
+    background: #3f84f6;
+    color: #fff;
+  }
+  .bomb-box .box04 .many-file-btn a {
+    width: 94px;
+    height: 36px;
+    line-height: 36px;
+    font-size: 14px;
+    display: inline-block;
+    text-align: center;
+  }
+  .bomb-box .box04 .many-file-btn a.btn02 {
+    border: #3f84f6 1px solid;
+    color: #3f84f6;
+    margin-left: 45px;
+  }
+  .area-select {
+    width: 204px;
+    height: 34px;
+    padding-left: 10px;
+    border: #cccccd 1px solid;
+    font-size: 14px;
+    float: left;
+    margin-left: 10px;
+  }
+  .area-select:first-child {
+    margin-left: 0 !important;
+  }
+</style>

+ 71 - 0
src/main/webapp/resources/view/usercenter/b2b/modal/contact_person_modal.html

@@ -0,0 +1,71 @@
+<!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: 30px;
+		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;
+	}
+	.red{
+		color: #f00 !important;
+	}
+	.per-data ul li input, .per-data ul li select{
+		width: 340px;
+	}
+</style>
+<div class="bomb-box">
+	<div class="box01" >
+		<p style="line-height: 34px;background: #5078cb;color: #fff;padding-left: 20px;">
+			供应商联系人信息<a style="color: #fff;font-size: 14px;float:right;margin-right: 20px" ng-click="cancel()">
+			<i class="fa fa-close"></i>
+		</a></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 class="red">*必填</span></li>
+				<li>
+					<em>性别</em>
+					<select name="" id="" ng-model="contact.sex" ng-init="contact.sex ? 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 class="red">*必填</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" style="border:0px">保存</button><a ng-click="cancel()" class="mod-psd">取消</a></li>
+			</ul>
+		</form>
+	</div>
+</div>
+</body>
+</html>

+ 53 - 0
src/main/webapp/resources/view/usercenter/b2b/modal/product_brandChoose_modal.html

@@ -0,0 +1,53 @@
+<style>
+.modal-dialog {
+    width: 900px;
+    margin: 30px auto;
+}
+
+table tr {
+	cursor: pointer;
+}
+table tr:hover .br-name {
+	position: relative;
+	left: 4px;
+	font-weight: 600;
+}
+table tr .br-select {
+	display: none;
+}
+table tr:hover .br-select {
+	display: inline-block;
+}
+</style>
+<!-- 品牌选择模态框 -->
+<div class="modal-header">
+	<h3 class="modal-title">选择所属品牌</h3>
+</div>
+<div class="modal-body">
+	<div class="row">
+		<div class="col-xs-12">
+			<table ng-table="brandsTableParams" class="table table-condensed table-bordered table-striped">
+				<tr class="info">
+					<th width="100">
+						<input type="text" ng-model="filter.keyword" ng-change="search()"
+							class="form-control input-sm" placeholder="请输入关键词进行筛选" autofocus/>
+					</th>
+				</tr>
+		        <tr ng-repeat="brand in $data" ng-click="select(brand)">
+		          <td class="text-left">
+		          	<div class="text-num f14">
+		          		<span class="br-name" ng-bind="brand.nameCn"></span>
+		          	</div>
+		          	<div class="text-muted f12">
+		          		<span ng-bind="brand.nameEn||'空'"></span>
+		          		<span class="br-select pull-right">选择</span>
+		          	</div>
+		          </td>
+		        </tr>
+	        </table>
+		</div>
+	</div>
+</div>
+<div class="modal-footer">
+	<button class="btn btn-warning" ng-click="cancel()">取消</button>
+</div>

+ 420 - 0
src/main/webapp/resources/view/usercenter/b2b/modal/product_kindChoose_modal.html

@@ -0,0 +1,420 @@
+<style>
+.modal-header {
+	padding: 5px 15px 5px 15px;
+}
+
+.modal-body {
+	padding-top: 5px;
+}
+
+.modal-body .tabbable .nav>li>a {
+	padding: 5px 10px;
+}
+
+.modal-body .tips {
+	margin-top: 5px;
+	margin-right: 8px;
+}
+
+.nav-tabs>li {
+	cursor: pointer;
+}
+
+.panel-sm .panel-heading {
+	padding: 5px 10px;
+}
+
+.panel-sm .panel-title {
+	font-size: 100%;
+}
+
+.image-content li {
+	float: left;
+	margin-right: 10px;
+	width: 64px;
+	height: 64px;
+	line-height: 64px;
+	overflow: hidden;
+	border: dotted 1px #d9d9d9;
+	background-color: #f7f7f7;
+	font-size: 18px;
+	font-family: 'Arial';
+	font-style: italic;
+	color: #e1e1e1;
+	text-align: center;
+}
+
+.tab-pane {
+	padding-top: 15px;
+}
+
+/*main*/
+#main {
+	background-color: #f0f0f0;
+	border-top: 1px solid #e7e7e7;
+	border-bottom: 1px solid #e7e7e7;
+	padding-bottom: 30px;
+}
+
+#main [ng-view] .container {
+	width: 990px;
+}
+
+#main .main-guide {
+	width: 600px;
+	margin: 0 auto;
+	text-align: center;
+	font: 16px/43px 'Microsoft Yahei';
+}
+
+#main .main-guide ul {
+	margin-bottom: 0;
+}
+
+#main .main-guide li {
+	cursor: pointer;
+	position: relative;
+}
+
+#main .main-guide li.arrow_right:before {
+	font-family: 'Glyphicons Halflings';
+	content: "\e092";
+	padding-left: 0.5em;
+	padding-right: 0.5em;
+	color: #ddd;
+	font-weight: normal;
+	font-size: 100%;
+}
+
+#main .main-guide li:nth-child(1):before {
+	content: "";
+	padding: 0;
+}
+
+#main .main-guide li.active {
+	color: #ff7300;
+	border-bottom: 3px solid #ff7300;
+}
+
+#main .main-guide li .caret {
+	position: absolute;
+	display: none;
+	bottom: 1px;
+	left: 50%;
+	margin-left: -2px;
+	border-bottom: 5px solid !important;
+	border-top: none;
+}
+
+#main .main-guide li.active .caret {
+	display: block;
+}
+
+#main .main-content {
+	margin-top: 10px;
+}
+
+#main .main-content .panel {
+	padding: 10px;
+	border-color: #d6d6d6;
+	margin-bottom: 10px;
+}
+
+#main .main-content .panel-shadow {
+	-webkit-box-shadow: 2px 2px 8px rgba(0, 0, 0, .2);
+	-moz-box-shadow: 2px 2px 8px rgba(0, 0, 0, .2);
+	box-shadow: 2px 2px 8px rgba(0, 0, 0, .2);
+}
+
+#main .main-content .panel .panel-title {
+	border-bottom: 1px dashed #d7d7d7;
+	padding-left: 7px;
+}
+
+#main .main-content .panel .panel-title * {
+	display: inline-block;
+}
+
+#main .main-content .panel .panel-title h4 {
+	color: #926437;
+	font-size: 14px;
+	font-weight: 700;
+}
+
+#main .main-content .panel .panel-title h5 {
+	color: #444;
+	font-size: 12px;
+}
+
+#main .main-content .panel .panel-title .glyphicon {
+	margin-right: 7px;
+}
+
+#main .main-content .panel .panel-body {
+	padding-bottom: 0;
+}
+
+.choose-body {
+	display: table;
+	width: 100%;
+	padding: 10px;
+	table-layout: fixed;
+	border-collapse: separate;
+	border: 1px solid #ccc;
+}
+
+.choose-body>.choose-item {
+	display: table-cell;
+}
+
+.choose-body>.choose-item>ul {
+	height: 380px;
+	overflow-x: hidden;
+	overflow-y: scroll;
+}
+
+.choose-body>.choose-item>ul>li {
+	line-height: 30px;
+	padding-left: 5px;
+	position: relative;
+}
+
+.choose-body>.choose-item>ul>li.add {
+	margin: 10px 5px;
+	text-align: center;
+	border: 1px solid #ff7300;
+	color: #ff7300;
+	border-radius: 4px;
+	cursor: pointer;
+}
+
+.choose-body>.choose-item>ul>li:hover {
+	background: #f1f1f1;
+}
+
+.choose-body>.choose-item>ul>li.active {
+	background: #f9fafd;
+}
+
+.choose-body>.choose-item>ul>li.active a {
+	color: #5078cb;
+}
+
+.choose-body>.choose-item>ul>li>a {
+	display: block;
+	color: #666666;
+}
+
+.choose-body>.choose-item .caret {
+	float: right;
+	margin-top: 14px;
+	margin-right: 8px;
+	border-left: 3px solid;
+	border-right: none;
+	border-top: 3px solid transparent;
+	border-bottom: 3px solid transparent;
+}
+
+.choose-body>.choose-item .setting {
+	display: none;
+	position: absolute;
+	right: 20px;
+	top: 1px;
+}
+
+.choose-body>.choose-item>ul>li:hover .setting {
+	display: block;
+}
+
+.choose-result {
+	margin-top: 10px;
+}
+
+.choose-result .breadcrumb {
+	background-color: #89aefa;
+	color: #fff;
+	display: inline-block;
+	margin-bottom: 0;
+	width: 100%;
+	border-radius: 0;
+}
+.choose-result .breadcrumb>li+li:before {
+	color: #fff;
+}
+
+#main .form-group {
+	margin-bottom: 8px;
+}
+
+#main .modal-body .form-group {
+	margin-left: 0;
+	margin-right: 0;
+}
+
+#main .form-horizontal .control-subinfo {
+	text-align: left;
+	margin-bottom: 0;
+	padding-top: 7px;
+	padding-left: 0;
+	padding-right: 0;
+}
+
+#main .form-horizontal .control-subinfo * {
+	display: inline;
+}
+
+#main .text-danger {
+	color: #e42a2a;
+}
+
+#main .well label.control-label {
+	font-weight: normal;
+	color: #444;
+}
+
+#main .img-thumbnail {
+	cursor: pointer;
+	margin-right: 15px;
+}
+
+.side-box {
+    padding-bottom: 15px;
+    margin-top: 10px;
+    margin-bottom: 10px;
+    padding: 0 14px 14px;
+    border: 1px solid #e6e6e6;
+    background: #fcfcfc;
+    line-height: 22px;
+    color: #555;
+}
+
+.side-box .title {
+	font-size: 14px;
+    font-weight: 700;
+    padding-bottom: 4px;
+    line-height: 20px;
+    margin-bottom: 5px;
+    margin-top: 12px;
+    color: #555;
+}
+
+.base-info {
+	margin-bottom: 10px;
+}
+
+.base-info .item {
+	line-height: 26px;
+	border-bottom: 1px dotted #e8e8e8;
+	padding: 5px 15px;
+	margin: 0;
+}
+
+.base-info .title {
+	float: left;
+	width: 78px;
+	color: #999;
+	font-weight: bold;
+}
+
+.base-info .content {
+	float: left;
+	white-space: nowrap;
+}
+
+.headerline {
+	font-size: 22px;
+	font-family: Microsoft YaHei, SimHei, Verdana;
+	font-weight: 500;
+	line-height: 22px;
+	margin: 25px 0 25px -10px;
+	clear: both;
+	zoom: 1;
+	border-top: 1px solid #eee;
+	position: relative;
+}
+
+.headerline .title {
+	float: left;
+	line-height: 24px;
+	margin-top: -12px;
+	padding: 0 15px 0 18px;
+	border-left: 12px solid #4F9CEE;
+	background: #fff;
+	z-index: 2;
+}
+
+.text-box {
+	padding: 20px;
+	font-size: 14px;
+    word-wrap: break-word;
+    color: #333;
+    margin-bottom: 15px;
+    text-indent: 2em;
+    line-height: 24px;
+    zoom: 1;
+}
+/*mgr*/
+#main .mgr {
+	font-family: "microsoft yahei";
+}
+
+#main .mgr a {
+	color: #666;
+}
+
+#main .mgr a:hover {
+	color: #3ba354 !important;
+}
+</style>
+<!-- 类目修改模态框,修改类目名称 -->
+<div class="b2b-com-modal">
+	<p class="title">选择类目(只能选择子类目)
+		<i class="fa fa-close" ng-click="cancel()"></i>
+	</p>
+</div>
+<div class="modal-body">
+	<div class="choose-result">
+		<ol class="breadcrumb" ng-show="actives.length > 0">
+			<span>您当前选择的类目:</span>
+			<li ng-repeat="a in actives">{{a.nameCn}}</li>
+		</ol>
+	</div>
+	<div class="choose-body">
+		<div class="choose-item">
+			<ul class="list-unstyled">
+				<li ng-repeat="k in kinds[0]" ng-class="{active: k.$active}"><a
+					ng-click="onItemClick(k, 0)">{{k.nameCn}}<span class="caret"
+						ng-show="!k.isLeaf"></span></a></li>
+			</ul>
+		</div>
+		<div class="choose-item">
+			<ul class="list-unstyled" ng-show="kinds[1].length>0">
+				<li ng-repeat="k in kinds[1]" ng-class="{active: k.$active}"><a
+					ng-click="onItemClick(k, 1)">{{k.nameCn}}<span class="caret"
+						ng-show="!k.isLeaf"></span></a></li>
+			</ul>
+		</div>
+		<div class="choose-item">
+			<ul class="list-unstyled" ng-show="kinds[2].length>0">
+				<li ng-repeat="k in kinds[2]" ng-class="{active: k.$active}"><a
+					ng-click="onItemClick(k, 2)">{{k.nameCn}}<span class="caret"
+						ng-show="!k.isLeaf"></span></a></li>
+			</ul>
+		</div>
+		<div class="choose-item">
+			<ul class="list-unstyled" ng-show="kinds[3].length>0">
+				<li ng-repeat="k in kinds[3]" ng-class="{active: k.$active}"><a
+					ng-click="onItemClick(k, 3)">{{k.nameCn}}<span class="caret"
+						ng-show="!k.isLeaf"></span></a></li>
+			</ul>
+		</div>
+	</div>
+	<div style="margin-top: 10px">
+		如果您觉得类目结构设置有待改善,您可以<a class="text-primary" href="product#/kindAdvice" target="_blank">提出您的宝贵建议</a>。
+	</div>
+</div>
+<div class="modal-footer text-center">
+	<button class="b2b-btn b2b-btn-submit" type="button"
+		ng-disabled="!active.isLeaf" ng-click="check()">确认</button>
+	<button class="b2b-btn b2b-btn-cancel" ng-click="cancel()" type="button">取消</button>
+</div>

+ 93 - 0
src/main/webapp/resources/view/usercenter/b2b/modal/purc_order_vendor.html

@@ -0,0 +1,93 @@
+<style>
+.headerline .content {
+	width: 200px;
+	font-size: 14px;
+}
+.modal-body {
+	min-height: 350px;
+}
+.modal {
+	position: fixed;
+	top: 70px;
+	left: 0;
+	right: 0;
+	bottom: 0;
+	margin: 0 auto;
+	overflow-y: auto !important;
+}
+
+@media screen and (max-width: 1366px) {
+	.modal {
+ 		top: -20px;
+}
+}
+.form-horizontal .form-control{
+	border: #3578ba 1px solid;
+	height: 36px;
+	line-height: 36px;
+}
+</style>
+<div class="b2b-com-modal b2b-operate-modal">
+	<p class="title">采购订单 - 选择供应商
+		<i class="fa fa-close" ng-click="cancel()"></i>
+	</p>
+	<div class="modal-body" style="padding-top: 0;">
+		<div class="form-group" id="window-search">
+			<div class="text-center" style="margin: 12px 0;">
+				<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(keyword)">搜索</a>
+			</div>
+		</div>
+		<table class="table b2b-modal-table"
+			   ng-table="customerParams">
+			<thead>
+			<tr class="header">
+				<th>UU</th>
+				<th>供应商名称</th>
+				<th>地址</th>
+				<th>操作</th>
+			</tr>
+			</thead>
+			<tbody ng-if="loading">
+			<tr>
+				<td colspan="5">
+					<div class="text-center">
+						<img src="static/img/all/loading.gif">
+					</div>
+				</td>
+			</tr>
+			</tbody>
+			<tbody>
+			<tr ng-repeat="vendor in $data">
+				<td class="text-center" >
+					<a ng-bind="::vendor.vendorEnterprise.uu" ng-click="checkVendor(vendor)" ng-if="!prod && vendor.vendorEnterprise.uu!=venduu"></a>
+					<a ng-bind="::vendor.vendorEnterprise.uu" ng-click="check(vendor)" ng-if="prod && vendor.vendorEnterprise.uu!=venduu"></a>
+					<a ng-bind="::vendor.vendorEnterprise.uu" ng-if="vendor.vendorEnterprise.uu==venduu"></a>
+				</td>
+				<td class="text-center" >
+					<a ng-bind="::vendor.vendorEnterprise.enName" ng-click="checkVendor(vendor)" ng-if="!prod && vendor.vendorEnterprise.uu!=venduu"></a>
+					<a ng-bind="::vendor.vendorEnterprise.enName" ng-click="check(vendor)" ng-if="prod && vendor.vendorEnterprise.uu!=venduu"></a>
+					<a ng-bind="::vendor.vendorEnterprise.enName" ng-if="vendor.vendorEnterprise.uu==venduu"></a>
+				</td>
+				<td class="text-center" >
+					<a ng-bind="::vendor.vendorEnterprise.enAddress" ng-click="checkVendor(vendor)" ng-if="!prod && vendor.vendorEnterprise.uu!=venduu"></a>
+					<a ng-bind="::vendor.vendorEnterprise.enAddress" ng-click="check(vendor)" ng-if="prod && vendor.vendorEnterprise.uu!=venduu"></a>
+					<a ng-bind="::vendor.vendorEnterprise.enAddress" ng-if="vendor.vendorEnterprise.uu==venduu"></a>
+				</td>
+				<td class="text-center" ng-if="prod && vendor.vendorEnterprise.uu!=venduu"><a title="选择" href="javascript:void(0)" ng-click="check(vendor)" style="text-decoration: none;">选择</a></td>
+				<td class="text-center" ng-if="vendor.vendorEnterprise.uu==venduu"><a style="text-decoration: none;">已选择</a></td>
+				<td class="text-center" ng-if="!prod && vendor.vendorEnterprise.uu!=venduu"><a title="选择" href="javascript:void(0)" ng-click="checkVendor(vendor)" style="text-decoration: none;">选择</a></td>
+			</tr>
+			</tbody>
+		</table>
+	</div>
+	<div class="modal-footer" style="text-align: center">
+		<div class="pull-left" ng-if="ensure && prod">
+			<span style="color: red; font-size: 14px;">重新选择供应商将会清掉已经选择的产品信息,请确认是否执行?</span>
+			<br>
+		</div>
+		<button class="b2b-btn b2b-btn-submit" ng-if="ensure && prod" ng-click="checkVendor(vendorInfo)">确定</button>
+		<button class="b2b-btn b2b-btn-cancel" ng-click="cancel()" type="button">取消</button>
+	</div>
+</div>

+ 85 - 0
src/main/webapp/resources/view/usercenter/b2b/modal/purc_uplodaByBatch.html

@@ -0,0 +1,85 @@
+<style>
+	.modal-content {
+		width: 492px;
+		margin: 0 auto;
+	}
+	.step {
+		margin-bottom: 40px;
+	}
+	.step .content {
+		margin-bottom: 10px;
+	}
+	.step .box-item {
+		margin-left: 10px;
+	}
+</style>
+<!--<div class="loading " ng-class="{'in': loading}">
+	&lt;!&ndash;<i></i>&ndash;&gt;
+	<div class="wrap">
+		<div class="outer"></div>
+	</div>
+</div>-->
+<div class="b2b-com-modal">
+	<p class="title">批量导入<i class="fa fa-close" ng-click="cancel()"></i></p>
+	<div class="modal-body" style="min-height: 200px;">
+		<div class="step">
+			<div class="content f14">第一步、下载Excel模板</div>
+			<div class="box-item">
+				<p>
+					<button class="btn btn-success btn-sm" ng-click="download()">下载Excel模板 <i
+							class="fa fa-download"></i></button> 在Excel模板上录入商品信息。
+				</p>
+			</div>
+			<div id="image-box" style="display: none">
+				<div class="x-close-wrap" title="关闭">
+					<a href="javascript:void(0);">&times;</a>
+				</div>
+				<div class="x-floating-wrap"></div>
+				<div class="x-floating">
+					<img />
+				</div>
+			</div>
+		</div>
+		<div class="step">
+			<div class="content f14">第二步、上传已经填好的Excel文件</div>
+			<div class="box-item">
+				<form class="form-horizontal">
+					<div class="form-group">
+						<div class="col-xs-4">
+							<input required ng-file-select accept="*.xls,*.xlsx"
+								   ng-model="myFiles" type="file" ng-multiple="false"
+								   class="form-control input-sm" id="xlsFile" name="xlsFile"
+								   placeholder="请上传.xls或.xlsx文件" />
+						</div>
+						<div class="col-xs-4">
+							<button ng-click="upload()" class="btn btn-success btn-sm">
+								确认上传 <i class="fa fa-upload"></i>
+							</button>
+						</div>
+					</div>
+					<div>
+					</div>
+					<!-- 分页 Start -->
+				</form>
+			</div>
+		</div>
+		<div class="step">
+			<div class="content f14">第三步、信息提示</div>
+			<div class="box-item">
+				<p ng-if="result.total">
+					<span>总共上传{{result.total}}个,成功{{result.success}}个</span>
+				</p>
+				<p ng-if="alters" ng-repeat="a in alters">
+					<span ng-bind="a" class="text-inverse"></span>
+				</p>
+			</div>
+		</div>
+	</div>
+	<div class="modal-footer Deputy">
+		<div class="text-center">
+			<button class="b2b-btn b2b-btn-submit" ng-click="enSure()" type="button">确定</button>
+			<button class="b2b-btn b2b-btn-cancel" ng-click="cancel()" type="button">取消</button>
+		</div>
+	</div>
+</div>
+<!-- block end -->

+ 119 - 0
src/main/webapp/resources/view/usercenter/b2b/modal/tender_vendor.html

@@ -0,0 +1,119 @@
+<style>
+    .btn {
+        border-radius: 0;
+    }
+
+    /*.modal-content {*/
+        /*border-radius: 0;*/
+    /*}*/
+
+    .content-title {
+        position: absolute;
+        top: -12px;
+        left: 25px;
+        line-height: 24px;
+        padding: 0 15px 0 10px;
+        background: #fff;
+        z-index: 2;
+    }
+    .headerline {
+        font-size: 24px;
+        font-family: Microsoft YaHei, SimHei, Verdana;
+        font-weight: 500;
+        line-height: 22px;
+        margin: 25px 0 25px -15px;
+        clear: both;
+        zoom: 1;
+        border-top: 1px solid #eee;
+        position: relative;
+        font-size: 18px;
+    }
+    .content-title {
+        position: absolute;
+        top: -12px;
+        left: 25px;
+        line-height: 24px;
+        padding: 0 15px 0 10px;
+        background: #fff;
+        z-index: 2;
+    }
+    i.fa {
+        font-size: 16px;
+    }
+    .form-group {
+        position: relative;
+    }
+    #window-search .form-control {
+        height: 36px;
+        line-height: 36px;
+        border: #3f84f6 1px solid;
+        border-radius: 0px;
+        font-size: 14px;
+    }
+    #window-search .input-group-addon {
+        width: 70px;
+        height: 36px;
+        display: inline-block;
+        background: #3f84f6;
+        font-size: 16px;
+        text-align: center;
+        line-height: 36px;
+        color: #fff !important;
+        padding: 0;
+        border: none;
+        border-radius: 0;
+        position: absolute;
+        top: 0;
+        right: 15px;
+    }
+    .modal-open .modal {
+        overflow-y: auto;
+    }
+</style>
+<div class="modal-body" style="min-height: 500px; border-radius: 0;">
+    <div class="headerline">
+        <span class="content-title"><i class="fa fa-fw fa-edit text-primary"></i>选择供应商</span>
+    </div>
+    <form class="form-horizontal">
+        <div class="form-group" id="window-search">
+            <div class="col-md-2 col-sm-2"></div>
+            <div class="col-md-8 col-sm-8">
+                <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(keyword)">搜索</a>
+            </div>
+        </div>
+    </form>
+    <table class="block table table-default table-striped table-bordered"
+           ng-table="tableParams">
+        <thead>
+        <tr class="header">
+            <th>序号</th>
+            <th>UU</th>
+            <th>供应商名称</th>
+            <th>地址</th>
+            <th><input type="checkbox" name="checkbox" ng-model="checks.checked" ng-click="checkAll()"></th>
+        </tr>
+        </thead>
+        <tbody>
+        <tr ng-repeat="vendor in $data">
+            <td class="text-center">{{$index + 1}}</td>
+            <td class="text-center" ng-bind="::vendor.vendorEnterprise.uu"></td>
+            <td class="text-center" ng-bind="::vendor.vendorEnterprise.enName"></td>
+            <td class="text-center" ng-bind="::vendor.vendorEnterprise.enAddress"></td>
+           <!-- <td class="text-center"><input type="checkbox" ng-click="check(vendor)"></td>-->
+            <td class="text-center" ng-show="!vendor.checked"><input ng-model="vendor.checked"
+                                           name="checkbox" ng-click="checkOne(vendor)"
+                                          type="checkbox"></td>
+            <td class="text-center" ng-show="vendor.checked"><input ng-model="vendor.checked"
+                                                                     name="checkbox" ng-click="unCheckOne(vendor)"
+                                                                     type="checkbox"></td>
+            <!--<td class="text-center"><a title="选择" href="javascript:void(0)" ng-click="check(vendor)"><i class="fa fa-check-square-o"></i></a></td>-->
+        </tr>
+        </tbody>
+    </table>
+</div>
+<div class="modal-footer">
+    <button class="btn" style="border-radius: 0;background: #5078cb;color: #fff;width: 80px" ng-click="close()" type="button">确认</button>
+    <button class="btn" style="border-radius: 0;background: #969595;color:#fff;border:1px solid #969595;width: 80px" ng-click="cancel()" type="button">取消</button>
+</div>

+ 81 - 0
src/main/webapp/resources/view/usercenter/b2b/modal/uplodaByBatch.html

@@ -0,0 +1,81 @@
+<style>
+	.modal-content {
+		width: 492px;
+		margin: 0 auto;
+	}
+	.step {
+		margin-bottom: 40px;
+	}
+	.step .content {
+		margin-bottom: 10px;
+	}
+	.step .box-item {
+		margin-left: 10px;
+	}
+</style>
+<div class="b2b-com-modal">
+	<p class="title">批量导入<i class="fa fa-close" ng-click="cancel()"></i></p>
+	<div class="modal-body" style="min-height: 200px;">
+		<div class="step">
+			<div class="content f14 text-bold">第一步、下载Excel模板</div>
+			<div class="box-item">
+				<p>
+					<button class="btn btn-success btn-sm" ng-click="download()">下载Excel模板 <i
+							class="fa fa-download"></i></button> 在Excel模板上录入商品发布信息。
+					<!-- <a class="f14 text-default" ng-click="showImg()">查看表格示例</a>。 -->
+				</p>
+			</div>
+			<div id="image-box" style="display: none">
+				<div class="x-close-wrap" title="关闭">
+					<a href="javascript:void(0);">&times;</a>
+				</div>
+				<div class="x-floating-wrap"></div>
+				<div class="x-floating">
+					<img />
+				</div>
+			</div>
+		</div>
+		<div class="step">
+			<div class="content f14 text-bold">第二步、上传已经填好的Excel文件</div>
+			<div class="box-item">
+				<form class="form-horizontal">
+					<div class="form-group">
+						<div class="col-xs-4">
+							<input required ng-file-select accept="*.xls,*.xlsx"
+								   ng-model="myFiles" type="file" ng-multiple="false"
+								   class="form-control input-sm" id="xlsFile" name="xlsFile"
+								   placeholder="请上传.xls或.xlsx文件" />
+						</div>
+						<div class="col-xs-4">
+							<button ng-click="upload()" class="btn btn-success btn-sm">
+								确认上传 <i class="fa fa-upload"></i>
+							</button>
+						</div>
+					</div>
+					<div>
+					</div>
+					<!-- 分页 Start -->
+				</form>
+			</div>
+		</div>
+		<div class="step">
+			<div class="content f14 text-bold">第三步、信息提示</div>
+			<div class="box-item">
+				<p ng-if="result.total">
+					<span>总共上传{{result.total}}个,成功{{result.success}}个</span>
+				</p>
+				<p ng-if="result.alters" ng-repeat="al in alters">
+					<span ng-bind="al"></span>
+				</p>
+			</div>
+		</div>
+	</div>
+	<div class="modal-footer">
+		<div class="text-center">
+			<button class="b2b-btn b2b-btn-submit" ng-click="enSure()" type="button">确定</button>
+			<button class="b2b-btn b2b-btn-cancel" ng-click="cancel()" type="button">取消</button>
+		</div>
+	</div>
+</div>
+
+<!-- block end -->

+ 1 - 0
src/main/webapp/resources/view/usercenter/left_nav.html

@@ -36,6 +36,7 @@
             <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 == 'purc_vendorserve'}"><a ui-sref="purc_vendorserve">供应商服务</a></li>
                 <li ng-class="{'active' : active == 'seek_purchase'}"><a  ui-sref="buyerSeekPurchase">我的求购</a></li>
                 <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>

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

@@ -31,7 +31,7 @@
 	}
 </style>
 <div class="cus-person-modal b2b-com-modal" >
-	<p class="title">客户联系人信息 <i class="fa fa-close" ng-click="cancel()"></i></p>
+	<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>