Browse Source

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

# Conflicts:
#	src/main/webapp/resources/view/usercenter/b2b/modal/product_kindChoose_modal.html
#	src/main/webapp/resources/view/usercenter/b2b/modal/uplodaByBatch.html
yangc 8 years ago
parent
commit
208985e57f

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


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


+ 24 - 0
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",

+ 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);
+        }
+      });
+    };
+
+  }]);
+
 })

+ 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>

+ 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>