Browse Source

Merge branch 'release-201840-wangcz'

wangcz 7 years ago
parent
commit
fe5c052dea
40 changed files with 2053 additions and 258 deletions
  1. 1 1
      components/applyPurchase/ApplyInfo.vue
  2. 1 1
      components/common/buyOrCar/buyComponent.vue
  3. 12 0
      components/mobile/MobileHeader.vue
  4. 53 48
      components/mobile/applyPurchase/SeekList.vue
  5. 1 1
      components/mobile/center/Message.vue
  6. 27 56
      components/mobile/center/Seek.vue
  7. 0 3
      components/mobile/register-saler/register/StepThird.vue
  8. 0 1
      components/pcb/search/GoodList.vue
  9. 2 2
      components/store/CommodityInfo.vue
  10. 1 1
      components/store/home/EnterpriseInfo.vue
  11. 1 1
      components/supplier/resource.vue
  12. 21 14
      nuxt.config.js
  13. 0 2
      pages/businessEnter/index.vue
  14. 579 0
      pages/mobile/center/user/btobarCheck.vue
  15. 0 1
      pages/mobile/center/user/collect/store.vue
  16. 16 8
      pages/mobile/center/user/index.vue
  17. 0 1
      pages/mobile/center/user/outOfStorage/purchase/_storeid.vue
  18. 0 1
      pages/mobile/center/user/pay/_orderId.vue
  19. 39 0
      pages/mobile/center/user/payCenter.vue
  20. 90 24
      pages/mobile/center/user/seek.vue
  21. 306 0
      pages/mobile/center/user/seek_btob_details.vue
  22. 267 0
      pages/mobile/center/user/supplier/index.vue
  23. 464 0
      pages/mobile/center/user/tender/index.vue
  24. 0 1
      pages/mobile/center/vendor/approval/index.vue
  25. 1 1
      pages/mobile/center/vendor/btobapCheck.vue
  26. 7 13
      pages/mobile/center/vendor/customer/index.vue
  27. 1 1
      pages/mobile/center/vendor/index.vue
  28. 1 1
      pages/mobile/center/vendor/invoice/index.vue
  29. 0 1
      pages/mobile/center/vendor/outOfStorage/purchase/_storeid.vue
  30. 2 2
      pages/mobile/center/vendor/payCenter.vue
  31. 0 2
      pages/mobile/center/vendor/productdetails.vue
  32. 0 1
      pages/mobile/center/vendor/sample/index.vue
  33. 1 1
      pages/mobile/center/vendor/seek_btob_details.vue
  34. 2 2
      pages/mobile/order/index.vue
  35. 33 13
      pages/mobile/order/orderbtob.vue
  36. 120 52
      pages/mobile/order/orderbtob_details.vue
  37. 0 1
      pages/mobile/product/_batchCode.vue
  38. BIN
      static/images/mobile/center/user/purc.png
  39. BIN
      static/images/mobile/center/user/tender.png
  40. 4 0
      yarn.lock

+ 1 - 1
components/applyPurchase/ApplyInfo.vue

@@ -466,7 +466,7 @@ export default {
         font-size:12px;
         height: 1235px;
         > li {
-          position: relative;
+          /*position: relative;*/
           border: 1px solid #ededed;
           &.active {
             border: 1px solid #2496f1;

+ 1 - 1
components/common/buyOrCar/buyComponent.vue

@@ -67,7 +67,7 @@
                     }
                   }
                 }, err => {
-                  console.log(err)
+                  // console.log(err)
                   if (this.item.minBuyQty > this.item.reserve) {
                     this.$message.error('商品' + this.item.code + '的库存已经不满足最小起订量')
                   }

+ 12 - 0
components/mobile/MobileHeader.vue

@@ -259,12 +259,24 @@
         } else if (this.startWith(val, '/mobile/center/vendor/approval')) {
           this.showSearchIcon = false
           title = '打样管理'
+        } else if (this.startWith(val, '/mobile/center/vendor/customer/vendorPerformanceAssess')) {
+          this.showSearchIcon = false
+          title = '绩效考核'
         } else if (this.startWith(val, '/mobile/center/vendor/customer')) {
           this.showSearchIcon = false
           title = '客户资料'
+        } else if (this.startWith(val, '/mobile/center/user/supplier')) {
+          this.showSearchIcon = false
+          title = '供应商资料'
         } else if (this.startWith(val, '/mobile/center/vendor/btobapCheck')) {
           this.showSearchIcon = false
           title = '应收对账'
+        } else if (this.startWith(val, '/mobile/center/user/btobapCheck')) {
+          this.showSearchIcon = false
+          title = '应付对账'
+        } else if (this.startWith(val, '/mobile/center/user/tender')) {
+          this.showSearchIcon = false
+          title = '采购招标'
         } else {
           this.showSearchIcon = true
           title = '优软商城'

+ 53 - 48
components/mobile/applyPurchase/SeekList.vue

@@ -2,84 +2,77 @@
   <div>
     <ul class="seek-list">
       <li v-for="(item, index) in purchaseManListData" class="clearfix">
-        <p v-if="!(userType === 'buyer') && !(userType !== 'buyer' && item.quotations)">
-          <span v-if="item.inquiry && (item.inquiry.enName || (item.inquiry.enterprise && item.inquiry.enterprise.enName))">{{[item.inquiry.enName || item.inquiry.enterprise.enName, user.logged] | enterpriseFilter}}</span>
+        <p v-if="!(seekType === 'seekPurchase') && !(seekType !== 'seekPurchase' && item.quotations)">
+          <span v-if="seekType === 'purchaseinquiry' && item.enterprise && item.enterprise.enName">{{[item.enName || item.enterprise.enName, user.logged] | enterpriseFilter}}</span>
+          <span v-else-if="seekType !== 'purchaseinquiry' && item.inquiry && (item.inquiry.enName || (item.inquiry.enterprise && item.inquiry.enterprise.enName))">{{[item.inquiry.enName || item.inquiry.enterprise.enName, user.logged] | enterpriseFilter}}</span>
           <span v-else>{{[item.userName, user.logged] | userNameFilter}}</span>
         </p>
         <div class="clearfix" :class="{'no-quot': !item.quotations}">
           <div class="fl">
-            <div class="content" v-if="item.quotations && userType !== 'buyer'">
-              <span v-if="item.inquiry && (item.inquiry.enName || (item.inquiry.enterprise && item.inquiry.enterprise.enName))">{{[item.inquiry.enName || item.inquiry.enterprise.enName, user.logged] | enterpriseFilter}}</span>
+            <div class="content" v-if="item.quotations && seekType !== 'seekPurchase'">
+              <span v-if="seekType === 'purchaseinquiry' && item.enterprise && item.enterprise.enName">{{[item.enName || item.enterprise.enName, user.logged] | enterpriseFilter}}</span>
+              <span v-else-if="seekType !== 'purchaseinquiry' && item.inquiry && (item.inquiry.enName || (item.inquiry.enterprise && item.inquiry.enterprise.enName))">{{[item.inquiry.enName || item.inquiry.enterprise.enName, user.logged] | enterpriseFilter}}</span>
               <span v-else>{{[item.userName, user.logged] | userNameFilter}}</span>
             </div>
-            <template v-if="seekType !== 'enquiry'">
+            <template v-if="seekType === 'enquiry' || seekType === 'purchaseinquiry'">
               <div class="content" >
-                品牌
-                <span>{{item.inbrand ||'-'}}</span>
+                单号
+                <span>{{item.inquiry.code || '-'}}</span>
               </div>
               <div class="content">
-                物料名称
-                <span>{{item.title || item.prodTitle || '-'}}</span>
+                物料编号
+                <span>{{item.product.code || '-'}}</span>
               </div>
               <div class="content">
-                型号
-                <span>{{item.cmpCode || '-'}}</span>
+                物料名称
+                <span>{{item.product.title || '-'}}</span>
               </div>
               <div class="content">
-                规格:
-                <span>{{item.spec || '-'}}</span>
+                物料规格:
+                <span>{{item.product.spec ||'-'}}</span>
               </div>
               <div class="content">
-                采购数量(PCS)
-                <span>{{item.needQty || '-'}}</span>
+                询价时间
+                <span>{{item.inquiry.date | date}}</span>
               </div>
             </template>
-            <template v-if="seekType === 'enquiry'">
+            <template v-else>
               <div class="content" >
-                单号
-                <span>{{item.inquiry.code || '-'}}</span>
+                品牌
+                <span>{{item.inbrand ||'-'}}</span>
               </div>
               <div class="content">
-                物料编号
-                <span>{{item.product.code || '-'}}</span>
+                物料名称
+                <span>{{item.title || item.prodTitle || '-'}}</span>
               </div>
               <div class="content">
-                物料名称
-                <span>{{item.product.title || '-'}}</span>
+                型号
+                <span>{{item.cmpCode || '-'}}</span>
               </div>
               <div class="content">
-                物料规格:
-                <span>{{item.product.spec ||'-'}}</span>
+                规格:
+                <span>{{item.spec || '-'}}</span>
               </div>
               <div class="content">
-                询价时间
-                <span>{{item.inquiry.date | date}}</span>
+                采购数量(PCS)
+                <span>{{item.needQty || '-'}}</span>
               </div>
             </template>
             <div class="content">
               截止日期:
               <span class="date">{{(item.endDate || item.inquiry.endDate) | date}}</span>
             </div>
-            <!--<template v-if="item.quotations">
-              <p class="remain-time" v-if="item.remainingTime > 0">剩余&nbsp;:
-                <span v-if="getDay(item.remainingTime) > 0" v-text="getDay(item.remainingTime)"></span>
-                <i v-if="getDay(item.remainingTime) > 0">&nbsp;天&nbsp;</i>
-                <span v-if="getDay(item.remainingTime) <= 0" v-text="getHours(item.remainingTime)"></span>
-                <i v-if="getDay(item.remainingTime) <= 0">&nbsp;小时</i>
-              </p>
-              <p class="remain-time" v-else><span>已截止</span></p>
-            </template>-->
           </div>
-          <div class="fr" :class="{'no-btn': !isSelfSeek(item) && !canSayPrice(item) && !canSeeInfo(item), 'is-qutation': item.quotations, 'is-simple': userType !== 'buyer' && item.quotations}">
+          <div class="fr" :class="{'no-btn': !isSelfSeek(item) && !canSayPrice(item) && !canSeeInfo(item) && !(seekType === 'purchaseinquiry' && activeType === 'todo'), 'is-qutation': item.quotations, 'is-simple': seekType !== 'seekPurchase' && item.quotations}">
             <template v-if="item.quotations">
-              <div class="content" v-if="userType === 'buyer'">
+              <div class="content" v-if="seekType !== 'enquiry' && seekType !== 'purchaseinquiry'">
                 <span>{{item.quotations.vendName || '-'}}</span>
               </div>
-              <div class="content" v-if="seekType !== 'enquiry'">
+              <div class="content" v-if="seekType !== 'enquiry' && seekType !== 'purchaseinquiry'">
                 报价人:
                 <span>{{item.quotations.user ? item.quotations.user.userName : '-'}}</span>
               </div>
-              <div class="content" v-if="seekType !== 'enquiry'">
+              <div class="content" v-if="seekType !== 'enquiry' && seekType !== 'purchaseinquiry'">
                 电话:
                 <span>{{item.quotations.user ? item.quotations.user.userTel : '-'}}</span>
               </div>
@@ -101,8 +94,8 @@
                 </tr>
                 </tbody>
               </table>
-              <button v-if="seekType !== 'enquiry'" class="more-btn" @click="goSayPriceInfo(item.newId || item.quteId || item.id, item.agreed, index)">查看更多</button>
-              <button v-if="seekType === 'enquiry'" class="more-btn" @click="goBtobDetails(item.id)">查看更多</button>
+              <button v-if="seekType !== 'enquiry' && seekType !== 'purchaseinquiry'" class="more-btn" @click="goSayPriceInfo(item.newId || item.quteId || item.id, item.agreed, index)">查看更多</button>
+              <button v-if="seekType === 'enquiry' || seekType === 'purchaseinquiry'" class="more-btn" @click="goBtobDetails(item.id)">查看更多</button>
             </template>
             <template v-else>
               <div v-if="seekType === 'enquiry'">
@@ -112,12 +105,25 @@
                   <span v-if="getDay(item.inquiry.endDate - new Date()) <= 0" v-text="getHours(item.inquiry.endDate - new Date())"></span>
                   <i v-if="getDay(item.inquiry.endDate - new Date()) <= 0">&nbsp;小时</i>
                 </p>
-                <p class="remain-time" v-if="(seekType === 'enquiry') && (item.status === 201 && item.invalid === 0 && item.overdue === 0 && !item.agreed)"><span>已报价</span></p>
-                <p class="remain-time" v-if="(seekType === 'enquiry') && (item.invalid === 1 || item.status === 314 || (item.inquiry.check || item.inquiry.check === 1) || item.overdue === 1)"><span>已失效</span></p>
-                <p class="remain-time" v-if="(seekType === 'enquiry') && (item.agreed === 1 && item.status === 201 && item.invalid === 0 && item.overdue === 0)"><span>已采纳</span></p>
+                <p class="remain-time" v-if="item.status === 201 && item.invalid === 0 && item.overdue === 0 && !item.agreed"><span>已报价</span></p>
+                <p class="remain-time" v-if="item.agreed === 1 && item.status === 201 && item.invalid === 0 && item.overdue === 0"><span>已采纳</span></p>
+                <p class="remain-time" v-if="item.invalid === 1 || item.status === 314 || (item.inquiry.check || item.inquiry.check === 1) || item.overdue === 1"><span>已失效</span></p>
                 <a style="margin-top:-1rem;" v-if="(seekType === 'enquiry') && (item.status===200 && item.invalid!==1 && item.overdue !== 1 && (!item.inquiry.check || item.inquiry.check === 0))" @click="goBtobDetails(item.id)">我要报价</a>
                 <a v-else @click="goBtobDetails(item.id)">查看更多</a>
               </div>
+              <div v-else-if="seekType === 'purchaseinquiry'">
+                <p class="remain-time" v-if="activeType === 'todo' && item.inquiry.endDate - new Date() > 0">剩余&nbsp;:
+                  <span v-if="getDay(item.inquiry.endDate - new Date()) > 0" v-text="getDay(item.inquiry.endDate - new Date())"></span>
+                  <i v-if="getDay(item.inquiry.endDate - new Date()) > 0">&nbsp;天&nbsp;</i>
+                  <span v-if="getDay(item.inquiry.endDate - new Date()) <= 0" v-text="getHours(item.inquiry.endDate - new Date())"></span>
+                  <i v-if="getDay(item.inquiry.endDate - new Date()) <= 0">&nbsp;小时</i>
+                </p>
+                <p class="remain-time" v-if="activeType === 'done'"><span>已报价</span></p>
+                <p class="remain-time" v-if="activeType === 'agreed'"><span>已采纳</span></p>
+                <p class="remain-time" v-if="activeType === 'end'"><span>已失效</span></p>
+                <!--<a style="margin-top:-1rem;" v-if="(seekType === 'enquiry') && (item.status===200 && item.invalid!==1 && item.overdue !== 1 && (!item.inquiry.check || item.inquiry.check === 0))" @click="goBtobDetails(item.id)">我要报价</a>-->
+                <a @click="goBtobDetails(item.id)">查看更多</a>
+              </div>
               <div v-else>
                 <p class="remain-time" v-if="item.remainingTime > 0">剩余&nbsp;:
                   <span v-if="getDay(item.remainingTime) > 0" v-text="getDay(item.remainingTime)"></span>
@@ -137,7 +143,7 @@
         </div>
       </li>
     </ul>
-    <empty-status v-if="!purchaseManListData || purchaseManListData.length == 0 && !isDataChange" :type="isSearch ? 'search' : 'collect'" :text="isSearch ? `抱歉,暂无与“${keyword}”匹配的求购信息` : '抱歉,暂无求购信息'" :showLink="true"></empty-status>
+    <empty-status v-if="!purchaseManListData || purchaseManListData.length === 0 && !isDataChange" :type="isSearch ? 'search' : 'collect'" :text="isSearch ? `抱歉,暂无与“${keyword}”匹配的求购信息` : '抱歉,暂无求购信息'" :showLink="true"></empty-status>
     <login-box :url="url" @onLoginBoxClose="showLoginBox = false" v-if="showLoginBox"></login-box>
     <say-price :showSayPriceBox="showSayPriceBox" @cancelSayPriceAction="onSayPriceCancel"></say-price>
     <say-price-info v-if="showSayPriceInfoBox" :agreed="agreed" @cancelSayPriceInfoAction="onSayPriceInfoCancel" :userType="userType"></say-price-info>
@@ -223,14 +229,13 @@ export default {
     'purchaseManList': {
       handler (newVal) {
         this.purchaseManListData = JSON.parse(JSON.stringify(this.purchaseManList))
-        console.log(this.purchaseManListData)
       },
       immediate: true
     }
   },
   methods: {
     goBtobDetails (type) {
-      this.$router.push(`/mobile/center/vendor/seek_btob_details?id=${type}&active=${this.activeType}`)
+      this.$router.push(`/mobile/center/${this.seekType === 'enquiry' ? 'vendor' : 'user'}/seek_btob_details?id=${type}&active=${this.activeType}`)
     },
     getDay: function(timeStamp) {
       return Math.floor(timeStamp / (1000 * 60 * 60 * 24))
@@ -318,7 +323,7 @@ export default {
       return !item.newId && (!(this.userType === 'saler' && this.activeType && this.activeType !== 'todo') && (item.remainingTime > 0 && (!item.quoted || item.quoted !== 1) && !(this.user.logged && ((item.inquiry && item.inquiry.enterprise && this.user.data.enterprise && (item.inquiry.enterprise.uu === this.user.data.enterprise.uu)) || (!this.user.data.enterprise.uu && item.userUU === this.user.data.userUU)))))
     },
     canSeeInfo: function (item) {
-      return ((!this.userType || this.userType === 'buyer') && (this.activeType && this.activeType !== 'wait')) || (this.userType === 'saler' && this.activeType && this.activeType !== 'todo') || item.quoted === 1 || item.newId
+      return ((!this.userType || this.userType === 'buyer') && (this.activeType && this.activeType !== 'todo')) || (this.userType === 'saler' && this.activeType && this.activeType !== 'todo') || item.quoted === 1 || item.newId
     }
   }
 }

+ 1 - 1
components/mobile/center/Message.vue

@@ -14,7 +14,7 @@
           </div>
           <div class="message">
             <p>{{item.createTime | time}}</p>
-            <a :href="item.type === 'MALL跳转买家已报价页面' ? '/mobile/center/user/seek?seekType=done' : item.type === 'MALL公共询价' ? '/mobile/center/vendor/seek?seekType=wait&messageType=my' : item.type === '商城公共询价采纳结果' ? '/mobile/center/vendor/seek?seekType=done' : ''"
+            <a :href="item.type === 'MALL跳转买家已报价页面' ? '/mobile/center/user/seek?seekType=seekPurchase' : item.type === 'MALL公共询价' ? '/mobile/center/vendor/seek?seekType=personage&messageType=my' : item.type === '商城公共询价采纳结果' ? '/mobile/center/vendor/seek?seekType=enterprise' : ''"
                v-if="item.type"
                :title="item.content" :class="{info: item.isRead === 0}">{{item.content}}</a>
             <a v-else :title="item.content" class="noLink" :class="{info: item.isRead === 0}">{{item.content}}</a>

+ 27 - 56
components/mobile/center/Seek.vue

@@ -1,32 +1,4 @@
 <template>
-  <!--  -->
-  <!--<div class="seek">
-    <div class="com-mobile-header mobile-center-header">
-      <a @click="goLastPage"><i class="iconfont icon-fanhui"></i></a>
-      <p>{{seekTitle}}</p>
-      <p class="en-name"><img :src="`/images/mobile/center/${user.data.enterprise.uu ? 'en' : 'self'}.png`" alt="">{{currentEnName}}</p>
-    </div>
-    <div class="mobile-fix-content mobile-centerfix-content" id="mobileFixContent">
-      <div class="seek-title com-switch-item" v-if="userType == 'saler' && seekType == 'wait'">
-        <span class="mobile-switch-btn" :class="{'active': activeType=='all'}" @click="switchActiveType('all')">公司商机</span>
-        <span class="mobile-switch-btn" :class="{'active': activeType=='self'}" @click="switchActiveType('self')">我的商机</span>
-      </div>
-      <div class="product-switch-item" v-if="userType == 'buyer' && seekType !== 'done'">
-        <span :class="overdue==='attention'?'mobile-switch-btn active':'mobile-switch-btn'" @click="ChangeTab('attention')">未截止</span>
-        <span :class="overdue==='isattention'?'mobile-switch-btn active':'mobile-switch-btn'" @click="ChangeTab('isattention')">已截止</span>
-      </div>
-      <div class="seek-title com-switch-item" v-if="userType == 'saler' && seekType == 'done'">
-        <span class="mobile-switch-btn" :class="{'active': activeType=='all'}" @click="switchActiveType('all')">公司报价</span>
-        <span class="mobile-switch-btn" :class="{'active': activeType=='self'}" @click="switchActiveType('self')">我的报价</span>
-      </div>
-      <div class="search-content">
-        <input type="text" v-model="seekKeyword" :placeholder="userType == 'buyer' ? '品牌/型号' : '品牌/物料名称/型号/规格/公司'" @keyup.13="onSearch">
-        <span @click="onSearch"><i class="iconfont icon-sousuo"></i></span>
-      </div>
-      <seek-list :keyword="remindKeyword" :isSearch="isSearch" :userType="userType" :seekType="seekType" :purchaseManList="purchaseManListData"></seek-list>
-      <pull-up :fixId="'mobileFixContent'" :searchMore="fetching" :allPage="allPage" :page="page" @pullUpAction="onPullUpAction"></pull-up>
-    </div>
-  </div>-->
   <div class="seek">
     <div class="com-mobile-header mobile-center-header">
       <a @click="goLastPage"><i class="iconfont icon-fanhui"></i></a>
@@ -34,26 +6,32 @@
       <p class="en-name"><img :src="`/images/mobile/center/${user.data.enterprise.uu ? 'en' : 'self'}.png`" alt="">{{currentEnName}}</p>
     </div>
     <div class="mobile-fix-content mobile-centerfix-content" id="mobileFixContent">
-      <div class="seek-title com-switch-item" v-if="userType == 'saler' && seekType == 'enterprise'">
-        <span class="mobile-switch-btn" :class="{'active': activeType=='todo'}" @click="switchActiveType('todo')"><b>待报价</b></span>
-        <span class="mobile-switch-btn" :class="{'active': activeType=='done'}" @click="switchActiveType('done')"><b>已报价</b></span>
+      <div class="seek-title com-switch-item" v-if="userType === 'saler' && seekType === 'enterprise'">
+        <span class="mobile-switch-btn" :class="{'active': activeType==='todo'}" @click="switchActiveType('todo')"><b>待报价</b></span>
+        <span class="mobile-switch-btn" :class="{'active': activeType==='done'}" @click="switchActiveType('done')"><b>已报价</b></span>
+      </div>
+      <div class="seek-title com-switch-item" v-if="userType === 'saler' && seekType === 'personage'">
+        <span class="mobile-switch-btn" :class="{'active': activeType==='todo'}" @click="switchActiveType('todo')"><b>待报价</b></span>
+        <span class="mobile-switch-btn" :class="{'active': activeType==='done'}" @click="switchActiveType('done')"><b>已报价</b></span>
       </div>
-      <div class="seek-title com-switch-item" v-if="userType == 'saler' && seekType == 'personage'">
-        <span class="mobile-switch-btn" :class="{'active': activeType=='todo'}" @click="switchActiveType('todo')"><b>待报价</b></span>
-        <span class="mobile-switch-btn" :class="{'active': activeType=='done'}" @click="switchActiveType('done')"><b>已报价</b></span>
+      <div class="seek-title com-switch-item" v-if="userType === 'saler' && seekType === 'enquiry'">
+        <span class="mobile-switch-btn fours" :class="{'active': activeType==='todo'}" @click="switchActiveType('todo')"><b>待报价</b></span>
+        <span class="mobile-switch-btn fours" :class="{'active': activeType==='done'}" @click="switchActiveType('done')"><b>已报价</b></span>
+        <span class="mobile-switch-btn fours" :class="{'active': activeType==='agreed'}" @click="switchActiveType('agreed')"><b>已采纳</b></span>
+        <span class="mobile-switch-btn fours" :class="{'active': activeType==='invalid'}" @click="switchActiveType('invalid')"><b>已失效</b></span>
       </div>
-      <div class="seek-title com-switch-item" v-if="userType == 'saler' && seekType == 'enquiry'">
-        <span class="mobile-switch-btn fours" :class="{'active': activeType=='todo'}" @click="switchActiveType('todo')"><b>待报价</b></span>
-        <span class="mobile-switch-btn fours" :class="{'active': activeType=='done'}" @click="switchActiveType('done')"><b>已报价</b></span>
-        <span class="mobile-switch-btn fours" :class="{'active': activeType=='agreed'}" @click="switchActiveType('agreed')"><b>已采纳</b></span>
-        <span class="mobile-switch-btn fours" :class="{'active': activeType=='invalid'}" @click="switchActiveType('invalid')"><b>已失效</b></span>
+      <div class="seek-title com-switch-item" v-if="userType === 'buyer' && seekType === 'seekPurchase'">
+        <span class="mobile-switch-btn" :class="{'active': activeType==='todo'}" @click="switchActiveType('todo')"><b>待报价</b></span>
+        <span class="mobile-switch-btn" :class="{'active': activeType==='done'}" @click="switchActiveType('done')"><b>已报价</b></span>
       </div>
-      <div class="product-switch-item" v-if="userType == 'buyer' && seekType !== 'done'">
-        <span :class="overdue==='attention'?'mobile-switch-btn active':'mobile-switch-btn'" @click="ChangeTab('attention')">未截止</span>
-        <span :class="overdue==='isattention'?'mobile-switch-btn active':'mobile-switch-btn'" @click="ChangeTab('isattention')">已截止</span>
+      <div class="seek-title com-switch-item" v-if="userType === 'buyer' && seekType === 'purchaseinquiry'">
+        <span class="mobile-switch-btn fours" :class="{'active': activeType==='todo'}" @click="switchActiveType('todo')"><b>待报价</b></span>
+        <span class="mobile-switch-btn fours" :class="{'active': activeType==='done'}" @click="switchActiveType('done')"><b>已报价</b></span>
+        <span class="mobile-switch-btn fours" :class="{'active': activeType==='agreed'}" @click="switchActiveType('agreed')"><b>已采纳</b></span>
+        <span class="mobile-switch-btn fours" :class="{'active': activeType==='end'}" @click="switchActiveType('end')"><b>已失效</b></span>
       </div>
       <div class="search-content">
-        <input type="text" v-model="seekKeyword" :placeholder="userType == 'buyer' ? '品牌/型号' : '品牌/物料名称/型号/规格/公司'" @keyup.13="onSearch">
+        <input type="text" v-model="seekKeyword" :placeholder="userType === 'buyer' ? '品牌/型号' : '品牌/物料名称/型号/规格/公司'" @keyup.13="onSearch">
         <span @click="onSearch"><i class="iconfont icon-sousuo"></i></span>
       </div>
       <seek-list :keyword="remindKeyword" :isSearch="isSearch" :userType="userType" :seekType="seekType" :activeType="activeType" :purchaseManList="purchaseManListData"></seek-list>
@@ -76,8 +54,7 @@
         isChange: false,
         isSearch: false,
         remindKeyword: '',
-        activeType: 'todo',
-        overdue: 'attention'
+        activeType: 'todo'
       }
     },
     props: ['userType'],
@@ -90,8 +67,7 @@
       'purchase.data': {
         handler: function (val) {
           let list = this.baseUtils.deepCopy(val.content || [])
-          if (this.activeType === 'done' && this.userType === 'saler') {
-            console.log(this.activeType, this.userType)
+          if (this.activeType === 'done' && this.seekType !== 'seekPurchase') {
             list.map(val => {
               val.quotations = {
                 replies: val.replies,
@@ -132,6 +108,8 @@
           case 'personage': title = '我的商机'; break
           case 'enterprise': title = '公司商机'; break
           case 'enquiry': title = '定向询价'; break
+          case 'seekPurchase': title = '公共询价'; break
+          case 'purchaseinquiry': title = '定向询价'; break
           default: title = '已报价'
         }
         return title
@@ -144,13 +122,6 @@
       })
     },
     methods: {
-      ChangeTab(a) {
-        this.overdue = a
-        this.page = 1
-        this.remindKeyword = this.seekKeyword = ''
-        this.isChange = true
-        this.reloadData()
-      },
       onSearch: function () {
         this.isSearch = true
         this.remindKeyword = this.seekKeyword
@@ -159,8 +130,8 @@
         this.reloadData()
       },
       reloadData: function () {
-        let overdue = this.overdue === 'attention' ? '0' : '1'
-        this.$emit('reloadAction', this.page, this.count, this.seekKeyword, this.seekType, this.activeType, overdue)
+        // let overdue = this.overdue === 'attention' ? '0' : '1'
+        this.$emit('reloadAction', this.page, this.count, this.seekKeyword, this.seekType, this.activeType)
       },
       onPullUpAction: function () {
         this.page++

+ 0 - 3
components/mobile/register-saler/register/StepThird.vue

@@ -370,13 +370,11 @@
     watch: {
       enterpriseData: function (val, oldVal) {
         if (val !== {}) {
-          console.log(1)
           this.businessLicenseUrl = val.url || val.businessCodeImage || ''
 //          this.defaultBusinessUrl = val.enBussinessCodeImage || ''
         }
       },
       businessImgUrl: function (val, oldVal) {
-        console.log(2)
         this.businessLicenseUrl = val
       }
     },
@@ -401,7 +399,6 @@
         this.businessLicenseUrl = ''
         this.taxPayerUrl = ''
         this.taxRegistrationUrl = ''
-        console.log('clear')
         // for (let i = 0; i < this.$refs.Pom.length; i++) {
         //   this.$refs.Pom[i].clearInfo()
         // }

+ 0 - 1
components/pcb/search/GoodList.vue

@@ -156,7 +156,6 @@
               if (!(/^1\d{10}$/).test(response.data.enTel)) {
                 this.$http.get('/basic/enterprise/' + response.data.uu + '/admin').then(response => {
                   obj.toPhone = response.data.userTel
-                  console.log(obj)
                   this.openWebChat(newTab, obj)
                 }, err => {
                   console.log(err)

+ 2 - 2
components/store/CommodityInfo.vue

@@ -527,7 +527,7 @@
                     }
                   }
                 }, err => {
-                  console.log(err)
+                  // console.log(err)
                   if (item.minBuyQty > item.reserve) {
                     this.$message.error('商品' + item.code + '的库存已经不满足最小起订量')
                   }
@@ -680,7 +680,7 @@
               this.hasDialog = false
               this.emptyForm()
             }, error => {
-              console.log(error)
+              // console.log(error)
               this.$message.error('发布失败')
             })
         } else {

+ 1 - 1
components/store/home/EnterpriseInfo.vue

@@ -216,7 +216,7 @@
                     }
                   }
                 }, err => {
-                  console.log(err)
+                  // console.log(err)
                   if (item.minBuyQty > item.reserve) {
                     this.$message.error('商品' + item.code + '的库存已经不满足起订量')
                   }

+ 1 - 1
components/supplier/resource.vue

@@ -341,7 +341,7 @@
               this.hasDialog = false
               this.emptyForm()
             }, error => {
-              console.log(error)
+              // console.log(error)
               this.$message.error('发布失败')
             })
         } else {

+ 21 - 14
nuxt.config.js

@@ -1,7 +1,7 @@
 const path = require('path')
 const isProdMode = Object.is(process.env.NODE_ENV, 'production')
 // b2c后台
-const baseUrl = process.env.BASE_URL || (isProdMode ? 'http://api.usoftchina.com/' : 'http://192.168.253.121:9090/platform-b2c/')
+const baseUrl = process.env.BASE_URL || (isProdMode ? 'http://api.usoftchina.com/' : 'http://10.1.51.101:8090/')
 // 公共询价
 const commonUrl = process.env.COMMON_URL || (isProdMode ? 'https://api-inquiry.usoftchina.com/' : 'http://218.17.158.219:24000/')
 // 公共物料
@@ -145,9 +145,28 @@ module.exports = {
    *   }
    */
   proxyTable: {
+    // B2B服务接口 uasUrl
     '/btob/**': uasUrl,
+    '/purchase/arCheck': uasUrl,
+    '/sale/inquiry/**': uasUrl,
+    '/purc/inquiry/**': uasUrl,
+    '/sale/orders/**': uasUrl,
+    '/sale/apBill/**': uasUrl,
+    '/sale/apCheck/**': uasUrl,
+    '/sale/tender/**': uasUrl,
+    '/sale/sample/**': uasUrl,
+    '/sale/**': uasUrl,
+    '/tender/purc/**': uasUrl,
+    '/tender/getUnreadIds/**': uasUrl,
+    '/token**': uasUrl,
+    '/authentication**': uasUrl,
+    '/authentication/**': uasUrl,
     '/vendor/customer/**': uasUrl,
+    '/vendor/info/**': uasUrl,
     '/vendorPerformanceAssess/info/**': uasUrl,
+    // 权限管理
+    '/account/user/**': uasUrl,
+    '/account/role/**': uasUrl,
     '/vendor/**': baseUrl,
     '/vendor**': baseUrl,
     // 账户中心统一前缀
@@ -202,9 +221,6 @@ module.exports = {
     '/goods/**': baseUrl,
     // 公共物料匹配物料名称
     '/productuser/**': materialUrl,
-    // 权限管理
-    '/account/user/**': uasUrl,
-    '/account/role/**': uasUrl,
     '/account/**': baseUrl,
     '/internalmessage-service/**': baseUrl,
     '/wx/**': baseUrl,
@@ -217,15 +233,6 @@ module.exports = {
     // 代办事项
     '/adminToDo/**': baseUrl,
     // 账户中心获取申请绑定列表接口
-    '/api/userspace/apply/**': ssoUrl,
-    // B2B服务接口 uasUrl
-    '/sale/inquiry/**': uasUrl,
-    '/sale/orders/**': uasUrl,
-    '/sale/apBill/**': uasUrl,
-    '/sale/apCheck/**': uasUrl,
-    '/token**': uasUrl,
-    '/authentication**': uasUrl,
-    '/authentication/**': uasUrl,
-    '/sale/sample/**': uasUrl
+    '/api/userspace/apply/**': ssoUrl
   }
 }

+ 0 - 2
pages/businessEnter/index.vue

@@ -446,7 +446,6 @@
         }
       },
       passwordStrength (flg) {
-        console.log(flg)
         let reg1 = /^(?=.{8,20})(((?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]))|((?=.*[0-9])((?=.*[a-zA-Z]))(?=.*[^a-zA-Z0-9]))).*$/
         let reg2 = /^(?=.{8,20})(((?=.*[0-9])(?=.*[a-z]))|((?=.*[0-9])(?=.*[A-Z]))).*$/
         if (flg.length <= 20 && flg.length >= 8) {
@@ -708,7 +707,6 @@
       },
       crossAfter (url) {
         try {
-          console.log(url, 'url')
           window.location.href = url
         } catch (err) {
           console.log(err)

+ 579 - 0
pages/mobile/center/user/btobarCheck.vue

@@ -0,0 +1,579 @@
+<template>
+  <div>
+    <div class="mobile-header mobile-center-header">
+      <a @click="goLastPage"><i class="iconfont icon-fanhui"></i></a>
+      <p>应付对账
+        <!--<span @click="addApCheck"><i class="icon-sousuo iconfont"></i>新增对账单</span>-->
+      </p>
+      <p class="en-name"><img :src="`/images/mobile/center/${user.data.enterprise && user.data.enterprise.uu ? 'en' : 'self'}.png`" alt="">{{currentEnName}}</p>
+    </div>
+    <div class="btobapCheck-wrapper">
+      <div class="order-tab">
+        <div class="order-tab-wrapper clearfix">
+          <div class="fl active tab">B2B</div>
+          <nuxt-link class="fl tab" to="/mobile/center/user/payCenter" tag="div" >
+            商城
+          </nuxt-link>
+        </div>
+      </div>
+      <div class="search-content mi-search-content">
+        <input type="text" v-model="filterParams.keyword" @keyup.13="onFilter" placeholder="单据编号/客户名称/物料名称">
+        <span @click="onFilter"><i class="iconfont icon-sousuo"></i></span>
+      </div>
+      <div class="btobapCheck-wrapper-scroll" id="btobapCheck-wrapper-scroll">
+        <div class="filter-wrapper">
+          <base-filter
+            v-for="filterOption in filterOptions"
+            :key="filterOption.selectOption"
+            :selectItems="filterOption.selectItems"
+            :defaultVal="filterOption.defaultVal"
+            :selectOption="filterOption.selectOption"
+            @selectAction="onSelectAction"
+            @valueAction="onValueAction"
+            :title="filterOption.title">
+          </base-filter>
+        </div>
+        <div v-if="resourceList.content && resourceList.content.length > 0">
+          <div class="invoice-btob-list" v-for="item in resourceList.content" :key="item.id">
+            <div class="invoice-btob-wrapper-top">
+              日期:<span  style="margin-right: 0.3rem">{{item.date | time}}</span>
+            </div>
+            <div class="invoice-btob-wrapper-middle">
+              <div class="invoice-btob-wrapper-middle-title">{{item.vendor.enName}}</div>
+              <div><span>单据编号:</span><a>{{item.code}}</a></div>
+            </div>
+            <div class="invoice-btob-wrapper-content">
+              <div><span>对账期间:</span>{{item.fromDate | time}} - {{item.toDate | time}}</div>
+              <div><span>对账总额:</span>{{item.checkAmount | toFixedNum}}</div>
+              <div><span>明细条目:</span>{{item.items.length}}条</div>
+              <div><span>商品总数:</span>{{item.getTotalProd}}</div>
+              <div><span>对账结果:</span><span v-text="checkStatus(item)"></span></div>
+            </div>
+          </div>
+        </div>
+        <empty-status
+          v-else
+          :text="'暂无对账信息'"
+          :showLink="false"
+        ></empty-status>
+        <pull-up :fixId="'btobapCheck-wrapper-scroll'" :allPage="allPage" :page="filterParams.page" @pullUpAction="onPullUpAction"></pull-up>
+      </div>
+    </div>
+    <modal-wrapper :title="'新增对账单'" :showModal="showModal" @closeAction="showModal = false">
+      <div class="btobapCheck-modal">
+        <div class="search-content mi-search-content">
+          <input type="text" placeholder="选择对账客户">
+          <span @click="toChooseUser"><i class="iconfont icon-sousuo"></i></span>
+        </div>
+        <div style="padding-left: 0.15rem">
+          <span class="title inline-block" style="font-size: 0.28rem;color: #666666;line-height: 0.5rem;margin-top:0.18rem">单据时间:</span>
+          <div class="date-wrap">
+            <label>
+              <i class="iconfont icon-ico-date"></i>
+              <input type="date" v-model="dateObj.fromDate" @change="setDate('fromDate')">
+              <p v-if="dateObj.fromDate">{{dateObj.fromDate | date}}</p>
+            </label>
+            <span>—</span>
+            <label>
+              <i class="iconfont icon-ico-date"></i>
+              <input type="date" v-model="dateObj.toDate" @change="setDate('toDate')">
+              <p v-if="dateObj.toDate">{{dateObj.toDate | date}}</p>
+            </label>
+          </div>
+        </div>
+        <div class="choosescreen clearfix">
+          <div class="fr">{{'收起'}}筛选条件<i class="iconfont icon-arrow-up"></i></div>
+        </div>
+        <div class="choosescreen-list">
+          <div><span>应付供应商:</span><input type="text" v-model="screenObj.key" placeholder="可用应付供应商名称筛选" /></div>
+          <div><span>物料名称:</span><input type="text" placeholder="请输入物料名称" /></div>
+          <div><span>税率:</span><input type="text" placeholder="请输入税率" /></div>
+          <div><span>送货工厂:</span><input type="text" placeholder="请输入送货工厂名称" /></div>
+          <div><span>规格:</span><input type="text" placeholder="请输入物料规格" /></div>
+        </div>
+        <div class="choosescreen-result">
+          <div class="clearfix choosescreen-result-list">
+            <span class="item inline-block">
+                <label class="mobile-cart-check"></label>
+              </span>
+            <div class="choosescreen-result-list-content">
+              <div>本次对账数:<span>1</span></div>
+              <div>客户名称:<span>1</span></div>
+              <div>单据编号:<span>1</span></div>
+              <div>发货单号:<span>1</span></div>
+              <div>序号:<span>1</span></div>
+              <div>类型:<span>1</span></div>
+              <div>单据日期:<span>1</span></div>
+              <div>应付供应商:<span>1</span></div>
+              <div>客户采购单:<span>1</span></div>
+              <div>客户料号:<span>1</span></div>
+              <div>客户物料名称:<span>1</span></div>
+              <div>客户规格型号:<span>1</span></div>
+              <div>送货工厂:<span>1</span></div>
+              <div>数量:<span>1</span></div>
+              <div>单价:<span>1</span></div>
+              <div>币别:<span>1</span></div>
+              <div>税率:<span>1</span></div>
+              <div>金额:<span>1</span></div>
+              <div>本次对账金额:<span>1</span></div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </modal-wrapper>
+  </div>
+</template>
+
+<script>
+  import { ModalWrapper, BaseFilter } from '~components/mobile/base'
+  import { PullUp, EmptyStatus } from '~components/mobile/common'
+  export default {
+    layout: 'mobileNoHeader',
+    middleware: 'authenticated',
+    data() {
+      return {
+        filterParams: {
+          keyword: '',
+          page: 1,
+          count: 10
+        },
+        filterOptions: [
+          {
+            title: '交易时间',
+            selectOption: 'date',
+            selectItems: [{
+              key: '30天',
+              val: 1
+            }, {
+              key: '90天',
+              val: 2
+            }, {
+              key: '180天',
+              val: 3
+            }, {
+              key: '自定义',
+              val: 4
+            }],
+            defaultVal: 1
+          }
+        ],
+        resourceList: {
+          content: []
+        },
+        showModal: false,
+        dateObj: {},
+        screenObj: {}
+      }
+    },
+    methods: {
+      toChooseUser () {
+        console.log('弹出详情表')
+      },
+      addApCheck() {
+        // this.showModal = true
+      },
+      setDate (type) {
+        if (this.dateObj[type]) {
+          this.dateObj[type] = new Date(this.dateObj[type]).getTime() - 8 * 60 * 60 * 1000
+          if (this.dateObj.fromDate && this.dateObj.toDate && this.dateObj.fromDate > this.dateObj.toDate) {
+            if (type === 'fromDate') {
+              this.setRemindText('起始时间不能大于结束时间')
+            } else {
+              this.setRemindText('结束时间不能小于起始时间')
+            }
+            this.dateObj[type] = null
+          }
+          if (this.dateObj.toDate && type === 'toDate') {
+            this.dateObj.toDate += (23 * 60 * 60 * 1000 + 59 * 60 * 1000 + 59 * 1000)
+          }
+        } else {
+          this.dateObj[type] = null
+        }
+      },
+      onPullUpAction () {
+        this.filterParams.page++
+        this.setSelect(this.$selectObj.key, this.$selectObj.value, false)
+      },
+      lookDetails(id) {
+        console.log('前往详情并且设置为已读')
+        // if (!this.isUnread(id)) { } else {
+        //   let sourceId = []
+        //   sourceId.push(id)
+        //   this.$http.post('/sale/tender/setRead', sourceId).then(res => {
+        //     this.getUnread()
+        //   })
+        // }
+      },
+      onFilter() {
+        this.filterParams.page = 1
+        this.setSelect(this.$selectObj.key, this.$selectObj.value, true)
+      },
+      onSelectAction(selectObj) {
+        this.$selectObj = selectObj
+        this.setSelect(selectObj.key, selectObj.value, true)
+      },
+      onValueAction(selectObj) {
+        this.$selectObj = selectObj
+        this.setSelect(selectObj.key, selectObj.value, true)
+      },
+      checkStatus (check) {
+        let info = ''
+        if (check.status === 200) {
+          info = '还未开始对账!'
+        } else if (check.status === 201 && check.items.length === check.agree) {
+          info = '已全部确认!'
+        } else if (check.status === 201 && check.items.length !== check.agree) {
+          info = '已开始对账,但未全部确认!'
+        } else if (check.status === 201 && check.items.length !== check.agree) {
+          info = `已确认:${check.agree},不同意:${check.disagree},未对帐:${check.items.length - check.agree - check.disagree}`
+        }
+        return info
+      },
+      async setSelect(...val) {
+        let { data } = await this.$http.get('/purchase/arCheck', {
+          params: {
+            count: this.filterParams.count,
+            page: this.filterParams.page,
+            searchFilter: {'keyword': this.filterParams.keyword || '', 'fromDate': val[1].fromDate, 'endDate': val[1].toDate},
+            sorting: {"date":"desc"}
+          }})
+        if (!this.resourceList.content) {
+          this.resourceList.content = []
+        }
+        data.content = data.content || []
+        data.content.forEach(item => {
+          item.checkAmount = item.checkAmount.toFixed(2)
+          item.getTotalProd = 0
+          item.items.forEach(im => {
+            item.getTotalProd += im.qty
+          })
+        })
+        if (!val[2]) {
+          this.resourceList.content.push(...data.content)
+          data.content = this.resourceList.content
+        } else {
+          this.resourceList.content = []
+        }
+        this.resourceList = data
+      }
+    },
+    computed: {
+      allPage () {
+        return Math.ceil(this.resourceList.totalElement / 10)
+      },
+      isEmpty () {
+        return this.resourceList.content.length === 0
+      }
+    },
+    components: {
+      ModalWrapper,
+      BaseFilter,
+      PullUp,
+      EmptyStatus
+    },
+    filters: {
+      time: function (time) {
+        if (typeof time === 'number') {
+          if (!time) {
+            return '无'
+          } else {
+            let d = new Date(time)
+            let year = d.getFullYear()
+            let month = d.getMonth() + 1
+            let day = d.getDate() < 10 ? '0' + d.getDate() : '' + d.getDate()
+            return year + '-' + month + '-' + day
+          }
+        }
+      },
+      toFixedNum: function (num) {
+        return num ? parseFloat(num).toFixed(2) : '-'
+      }
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+  @mixin overFlowHidden {
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
+  .mobile-header{
+    position: fixed;
+    top: 0;
+    z-index: 100;
+    width:100%;
+    height: 1.26rem;
+    line-height: 1.26rem;
+    /*border-bottom:.01rem solid #ccc;*/
+    background: #3e82f5;
+    padding:0 .2rem 0 .1rem;
+    color:#fff;
+  }
+  .mobile-header p{
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    font-size:.36rem;
+    text-align: center;
+    width: 6rem;
+    padding-left: 1rem;
+  }
+  .mobile-center-header p.en-name {
+    font-size: .3rem;
+  }
+  .mobile-header a{
+    font-size:.28rem;
+    color:#fff;
+    position: absolute;
+  }
+  .mobile-header a i{
+    font-size: .48rem;
+    margin-right: -.1rem;
+  }
+  .mobile-header p span {
+    position: absolute;
+    right: .4rem;
+    font-size: .28rem;
+  }
+  .mobile-header p span i {
+    font-size: .28rem;
+  }
+  .btobapCheck-wrapper {
+    background: #f1f3f6;
+    margin: 1.26rem 0 0.98rem 0;
+    .search-content {
+      padding: .24rem 0;
+      text-align: center;
+      background: #f1f3f6;
+      input {
+        width: 6.48rem;
+        height: .58rem;
+        line-height: .58rem;
+        border-radius: .14rem;
+        margin: 0 0 0 .11rem;
+        font-size: .26rem;
+        padding: 0 .71rem 0 .21rem;
+        border: 1px solid #3f84f6;
+      }
+    }
+    .order-tab {
+      background: #3f84f6;
+      padding-bottom: 0.2rem;
+      .order-tab-wrapper {
+        border: solid 1px #ffffff;
+        width: 7.06rem;
+        margin: 0 auto;
+        border-radius: 0.04rem;
+        line-height: 0.72rem;
+        height: 0.72rem;
+        overflow: hidden;
+        div {
+          color: #ffffff;
+          font-size: 0.28rem;
+          text-align: center;
+          width: 50%;
+          &.active {
+            background-color: #ffffff;
+            color: #3f84f6;
+          }
+        }
+      }
+    }
+    .order-nav {
+      background: #fff;
+      div {
+        height: 0.82rem;
+        line-height: 0.82rem;
+        display: inline-block;
+        width: 25%;
+        text-align: center;
+        font-size: .28rem;
+        color: #666;
+        &.active span{
+          color: #3f84f6;
+          border-bottom: 0.04rem solid #3f84f6;
+          padding-bottom: 0.2rem;
+        }
+      }
+    }
+    .btobapCheck-wrapper-scroll {
+      height: calc(100vh - 1.26rem - 0.98rem - 0.82rem - 1.06rem - 0.92rem);
+      overflow-y: auto;
+    }
+    .filter-wrapper{
+      width: 7.1rem;
+      margin: 0 auto 0.27rem;
+      background: #fff;
+      padding: 0.27rem 0.2rem;
+      border-radius: 0.05rem;
+    }
+    .invoice-btob-list {
+      width: 7.1rem;
+      margin: 0 auto 0.2rem;
+      background: #FFFFFF;
+      border-radius: 0.05rem;
+      padding: 0 0.24rem;
+    }
+    .invoice-btob-wrapper-top {
+      height: 0.8rem;
+      font-size: 0.28rem;
+      color: #333333;
+      span{
+        margin-top: 0.24rem;
+        display: inline-block;
+        font-size: 0.28rem;
+        color: #333333;
+        height:0.25rem;
+        &.read {
+          color: #15B262;
+        }
+        &.noread {
+          color: #DE4545;
+        }
+        &.isPut {
+          background: #15B262;
+          color: #FFFFFF;
+          font-size: 0.24rem;
+          border-radius: 0.04rem;
+        }
+        &.noPut {
+          font-size: 0.24rem;
+          background: #DE4545;
+          color: #FFFFFF;
+          border-radius: 0.04rem;
+        }
+      }
+    }
+    .invoice-btob-wrapper-middle {
+      border-top: 1px solid #D9D9D9;
+      @include overFlowHidden();
+      padding-top: 0.15rem;
+      font-size: 0.28rem;
+      color: #151515;
+      line-height: 0.5rem;
+      padding-bottom: 0.15rem;
+      span {
+        color: #666666;
+      }
+      .invoice-btob-wrapper-middle .tilte{
+        color: #333333;
+      }
+    }
+    .invoice-btob-wrapper-content {
+      border-top: 1px solid #D9D9D9;
+      @include overFlowHidden();
+      padding-top: 0.15rem;
+      font-size: 0.28rem;
+      color: #151515;
+      line-height: 0.5rem;
+      padding-bottom: 0.15rem;
+      span {
+        color: #666666;
+      }
+    }
+  }
+  .btobapCheck-modal {
+    .search-content input {border: 1px solid #3f84f6;}
+    .date-wrap{
+      text-align: center;
+      display: inline-block;
+      label {
+        width: 2.3rem;
+        height: .5rem;
+        line-height: .5rem;
+        border-radius: .04rem;
+        border: 1px solid #bfbfbf;
+        background: url(/images/mobile/select-arrow.png) no-repeat;
+        background-size: .12rem .06rem;
+        vertical-align: middle;
+        background-color: #fff;
+        background-position: 2.1rem .2rem;
+        position: relative;
+        margin: .2rem 0 0 0;
+        i {
+          font-size: .28rem;
+          color: #3f84f6;
+          margin-left: .1rem;
+          float: left;
+        }
+        input {
+          opacity: 0;
+          width: 2.22rem;
+          height: .5rem;
+          position: absolute;
+          left: 0;
+          z-index: 1;
+        }
+        p {
+          font-weight: normal;
+          font-size: .22rem;
+          color: #3E81F6;
+          text-align: left;
+          text-indent: 10px;
+        }
+      }
+      span {
+        color: #a0a0a0;
+        margin: 0.3rem .05rem 0;
+        width: .3rem;
+        display: inline-block;
+        text-align: center;
+        vertical-align: top;
+      }
+    }
+    .choosescreen {
+      padding: 0 0.15rem;
+      font-size: 0.28rem;
+      color: #418DF6;
+      line-height: 0.52rem;
+      i {
+        font-size: 0.28rem;
+      }
+    }
+    .choosescreen-list {
+      margin: 0 0.15rem;
+      padding-bottom: 0.28rem;;
+      border-bottom: 1px solid #D9D9D9;
+      div {
+        line-height: 0.76rem;
+        span {
+          font-size: 0.28rem;
+          color: #666666;
+          display: inline-block;
+          width: 1.68rem;
+        }
+        input {
+          height: 0.5rem;
+          line-height: 0.5rem;
+          width: 4.44rem;
+          margin-left: 0.18rem;
+          font-size: 0.28rem;
+          color: #333;
+          border: 1px solid #AEAEAE;
+          text-indent: 0.12rem;
+        }
+      }
+    }
+    .choosescreen-result {
+      margin: 0 0.15rem 0.2rem;
+      .choosescreen-result-list-content {
+        display: inline-block;
+        vertical-align: middle;
+        margin-left: 0.15rem;
+        div {
+          @include overFlowHidden();
+          width: 5.5rem;
+        }
+        padding-top: 0.15rem;
+        font-size: 0.28rem;
+        color: #151515;
+        line-height: 0.5rem;
+        padding-bottom: 0.15rem;
+        span {
+          color: #666666;
+        }
+      }
+    }
+  }
+</style>

+ 0 - 1
pages/mobile/center/user/collect/store.vue

@@ -117,7 +117,6 @@
     },
     async asyncData() {
       let { data } = await axios.get(`/trade/storeFocus/page`, {params: { count: 10, page: 1 }})
-      console.log(data)
       return {
         storeList: data
       }

+ 16 - 8
pages/mobile/center/user/index.vue

@@ -16,13 +16,13 @@
             <img src="/images/mobile/center/user/pub.png" alt="">
             <p>发布求购</p>
           </nuxt-link>
-          <nuxt-link to="/mobile/center/user/seek?seekType=wait" tag="li">
-            <img src="/images/mobile/center/user/wait.png" alt="">
-            <p>待报价</p>
+          <nuxt-link to="/mobile/center/user/seek?seekType=seekPurchase" tag="li">
+            <img src="/images/mobile/center/vendor/seek-done.png" alt="">
+            <p>公共询价</p>
           </nuxt-link>
-          <nuxt-link to="/mobile/center/user/seek?seekType=done" tag="li">
-            <img src="/images/mobile/center/user/done.png" alt="">
-            <p>已报价</p>
+          <nuxt-link to="/mobile/center/user/seek?seekType=purchaseinquiry" tag="li">
+            <img src="/images/mobile/center/vendor/seek-enquiry.png" alt="">
+            <p>定向询价</p>
           </nuxt-link>
         </ul>
       </div>
@@ -30,11 +30,11 @@
       <div class="block-wrap seek-operation">
         <p><i></i>更多业务</p>
         <ul>
-          <nuxt-link tag="li" to="/mobile/order?type=buyer" class="content-line">
+          <nuxt-link tag="li" to="/mobile/order/orderbtob?type=buyer" class="content-line">
             <img src="/images/mobile/center/user/order.jpg" alt="">
             <p>采购订单</p>
           </nuxt-link>
-          <nuxt-link tag="li" to="/mobile/center/user/payCenter" class="content-line">
+          <nuxt-link tag="li" to="/mobile/center/user/btobarCheck" class="content-line">
             <img src="/images/mobile/center/user/payfor_icon.png" alt="">
             <p>应付对账</p>
           </nuxt-link>
@@ -58,6 +58,14 @@
             <img src="/images/mobile/center/vendor/material-person.png" alt="">
             <p>入库</p>
           </nuxt-link>
+          <nuxt-link tag="li" to="/mobile/center/user/supplier">
+            <img src="/images/mobile/center/user/purc.png" alt="">
+            <p>供应商资料</p>
+          </nuxt-link>
+          <nuxt-link tag="li" to="/mobile/center/user/tender">
+            <img src="/images/mobile/center/user/tender.png" alt="">
+            <p>采购招标</p>
+          </nuxt-link>
           <nuxt-link tag="li" to="/mobile/center/user/collect/message" class="content-line" v-if="user.data.enterprise.uu">
             <img src="/images/mobile/center/user/message.png" alt="">
             <p>消息中心<span class="text" v-if="messageCount.count > 0">{{messageCount.count && messageCount.count >= 99 ? 99 : messageCount.count || 0}}</span></p>

+ 0 - 1
pages/mobile/center/user/outOfStorage/purchase/_storeid.vue

@@ -175,7 +175,6 @@
             if(arr.length <= 0) {
               this.onRemind('最少填写一个发货数量')
             } else {
-              console.log(type)
               this.allObj.sendType = this.storageList.sendType
               this.allObj.map = arr
               this.allObj.jsonSdAddress = this.storageList.jsonAddress

+ 0 - 1
pages/mobile/center/user/pay/_orderId.vue

@@ -924,7 +924,6 @@
       doSubmit (orders) {
         this.$http.put(`/trade/order/${this.baseUtils.enidfilter(this.payData.orderid)}/ensure`, orders)
           .then(res => {
-            console.log(res)
             if (res.data.code === 1) {
               if (res.data.data && res.data.data[0]) {
                 let orderids = []

+ 39 - 0
pages/mobile/center/user/payCenter.vue

@@ -1,4 +1,13 @@
 <template>
+  <div class="vendor-payCnter">
+    <div class="order-tab">
+      <div class="order-tab-wrapper clearfix">
+        <nuxt-link class="fl tab" to="/mobile/center/user/btobarCheck" tag="div" >
+          B2B
+        </nuxt-link>
+        <div class="fl active tab">商城</div>
+      </div>
+    </div>
   <div class="mobile-pay-center mobile-fix-content mobile-centerfix-content" :style="switchType === 'account' ? 'padding-bottom: 1rem;' : ''" id="mobileFixContent" @click="setShowSelect('all', false)">
     <!--<div class="mp-head" v-if="!fromUserPage">-->
       <!--<span class="inline-block" :class="{'active': switchType === 'record'}" @click="setSwitchType('record')">交易记录</span>-->
@@ -200,6 +209,7 @@
     <empty-status v-if="isEmpty" :text="'暂无支付记录,请下单购买商品吧!'" :showLink="true"></empty-status>
     <!-- 新增账户弹框end -->
   </div>
+  </div>
 </template>
 <script>
   import { RemindBox, PullUp, EmptyStatus } from '~components/mobile/common'
@@ -650,6 +660,35 @@
 </script>
 <style lang="scss" scoped>
   @import '~assets/scss/mobilePayCenter';
+  .vendor-payCnter {
+    .order-tab {
+      background: #3f84f6;
+      padding-bottom: 0.2rem;
+      margin-top: 1.26rem;
+      .order-tab-wrapper {
+        border: solid 1px #ffffff;
+        width: 7.06rem;
+        margin: 0 auto;
+        border-radius: 0.04rem;
+        line-height: 0.72rem;
+        height: 0.72rem;
+        overflow: hidden;
+        div {
+          color: #ffffff;
+          font-size: 0.28rem;
+          text-align: center;
+          width: 50%;
+          &.active {
+            background-color: #ffffff;
+            color: #3f84f6;
+          }
+        }
+      }
+    }
+  }
+  .mobile-centerfix-content {
+    top: 2.185rem;
+  }
   .new-account {
     padding: .24rem;
     background: #fff;

+ 90 - 24
pages/mobile/center/user/seek.vue

@@ -10,29 +10,62 @@
       let user = store.state.option.user.data
       let params = {
         pageNumber: 1,
-        pageSize: 10
+        pageSize: 10,
+        overdue: 0
       }
       if (user.enterprise.uu) {
         params.enUU = user.enterprise.uu
       } else {
         params.userUU = user.userUU
       }
-      if (query.seekType === 'wait') {
+      if (query.seekType === 'seekPurchase') {
         params.state = 'todo'
-        params.overdue = 0
         return Promise.all([
           store.dispatch('applyPurchase/loadBuyerUnSayPricePurchaseManList', params)
         ])
-      } else {
-        params._state = 'done'
-        return Promise.all([
-          store.dispatch('applyPurchase/loadBuyerPurchaseManList', params)
-        ])
       }
     },
     components: {
       Seek
     },
+    created () {
+      if (this.$route.query && this.$route.query.seekType === 'purchaseinquiry') {
+        let params = {}
+        params.page = 1
+        params.count = 10
+        params._state = 'todo'
+        params.searchFilter = {
+          'fromDate': null,
+          'endDate': null
+        }
+        params.sorting = {
+          'inquiry.date': 'desc',
+          'inquiry.enterprise.enName': 'asc',
+          'inquiry.code': 'asc'
+        }
+        this.$http.get('/purc/inquiry/info/search', {params})
+          .then(response => {
+            let obj = {}
+            if (response.data) {
+              obj.first = response.data.first
+              obj.last = response.data.last
+              obj.number = response.data.page
+              obj.numberOfElements = response.data.totalPage
+              obj.size = response.data.size
+              obj.totalElements = response.data.totalElement
+              obj.content = JSON.parse(JSON.stringify(response.data.content))
+            }
+            this.$store.commit('applyPurchase/purchaseManList/GET_PURCHASEMAN_SUCCESS', obj)
+          }, err => {
+            this.$store.commit('applyPurchase/purchaseManList/GET_PURCHASEMAN_FAILURE', err)
+          })
+      }
+    },
+    destroyed() {
+      this.$nextTick(() => {
+        this.$store.commit('applyPurchase/purchaseManList/GET_PURCHASEMAN_SUCCESS')
+      })
+    },
     computed: {
       seekType () {
         return this.$route.query.seekType
@@ -40,23 +73,56 @@
     },
     methods: {
       reloadData: function (page = 1, count = 10, keyword, ...otherParamas) {
-        let params = {
-          pageNumber: page,
-          pageSize: count,
-          keyword: keyword,
-          overdue: otherParamas[2] || null
-        }
-        if (this.user.data.enterprise.uu) {
-          params.enUU = this.user.data.enterprise.uu
-        } else {
-          params.userUU = this.user.data.userUU
-        }
-        if (this.seekType === 'done') {
-          params._state = 'done'
-          this.$store.dispatch('applyPurchase/loadBuyerPurchaseManList', params)
+        if (otherParamas[0] === 'seekPurchase') {
+          let params = {
+            pageNumber: page,
+            pageSize: count,
+            keyword: keyword
+          }
+          if (this.user.data.enterprise.uu) {
+            params.enUU = this.user.data.enterprise.uu
+          } else {
+            params.userUU = this.user.data.userUU
+          }
+          if (otherParamas[1] === 'done') {
+            params._state = 'done'
+            this.$store.dispatch('applyPurchase/loadBuyerPurchaseManList', params)
+          } else {
+            params.state = 'todo'
+            params.overdue = 0
+            this.$store.dispatch('applyPurchase/loadBuyerUnSayPricePurchaseManList', params)
+          }
         } else {
-          params.state = 'todo'
-          this.$store.dispatch('applyPurchase/loadBuyerUnSayPricePurchaseManList', params)
+          let params = {}
+          params.page = page
+          params.count = count
+          params._state = otherParamas[1]
+          params.searchFilter = {
+            'keyword': keyword,
+            'fromDate': null,
+            'endDate': null
+          }
+          params.sorting = {
+            'inquiry.date': 'desc',
+            'inquiry.enterprise.enName': 'asc',
+            'inquiry.code': 'asc'
+          }
+          this.$http.get('/purc/inquiry/info/search', {params})
+            .then(response => {
+              let obj = {}
+              if (response.data) {
+                obj.first = response.data.first
+                obj.last = response.data.last
+                obj.number = response.data.page
+                obj.numberOfElements = response.data.totalPage
+                obj.size = response.data.size
+                obj.totalElements = response.data.totalElement
+                obj.content = JSON.parse(JSON.stringify(response.data.content))
+              }
+              this.$store.commit('applyPurchase/purchaseManList/GET_PURCHASEMAN_SUCCESS', obj)
+            }, err => {
+              this.$store.commit('applyPurchase/purchaseManList/GET_PURCHASEMAN_FAILURE', err)
+            })
         }
       }
     }

+ 306 - 0
pages/mobile/center/user/seek_btob_details.vue

@@ -0,0 +1,306 @@
+<template>
+  <div class="orderbtob_details_wrapper">
+    <div class="mobile-header">
+      <a @click="goLastPage"><i class="iconfont icon-fanhui"></i></a>
+      <p v-if="active === 'done'">已报价</p>
+      <p v-if="active === 'end'">已失效</p>
+      <p v-if="active === 'agreed'">已采纳</p>
+      <p v-if="active === 'todo'">待报价</p>
+    </div>
+    <div class="orderbtob_details_content">
+      <div class="orderbtob_details_top">
+        <div class="item">
+          <span class="name">供应商:</span>
+          {{listInfo.enterprise && listInfo.enterprise.enName}}
+        </div>
+        <div class="item clearfix">
+          <span class="name fl">收货地址:</span>
+          <span class="fl" style="width: 5.2rem">{{listInfo.inquiry.enterprise && listInfo.inquiry.enterprise.enAddress}}</span>
+        </div>
+        <div class="item">
+          <span class="name">单据:</span>
+          {{listInfo.inquiry.code}}
+        </div>
+        <div class="item clearfix">
+          <span class="name fl">物料:</span>
+          <span class="fl" style="width: 5.2rem">
+            <p>{{listInfo.product.code}}</p>
+            <p style="margin:5px 0">{{listInfo.product.title}}</p>
+            <p>{{listInfo.product.spec}}</p>
+          </span>
+        </div>
+        <div class="item">
+          <span class="name">币别:</span>
+          {{listInfo.currency}}
+        </div>
+        <div class="item">
+          <span class="name">税率:</span>
+          {{listInfo.taxrate + '%' || '无'}}
+        </div>
+        <div class="item">
+          <span class="name">询价类型:</span>
+          {{listInfo.inquiry.inquirytype || '无'}}
+        </div>
+      </div>
+      <div class="orderbtob_details_middle">
+        <div class="list">
+          <div class="item clearfix">
+            <span class="name">交货周期:</span>
+            <span>{{listInfo.leadtime || '-'}}天</span>
+          </div>
+          <div class="item clearfix">
+            <span class="name">最小起订:</span>
+            <span>{{listInfo.minOrderQty || '-'}}PCS</span>
+          </div>
+          <div class="item clearfix">
+            <span class="name">最小包装:</span>
+            <span>{{listInfo.minPackQty || '-'}}PCS</span>
+          </div>
+          <div class="item clearfix" style="position: relative">
+            <span class="fl name">分段报价:</span>
+            <ul class="fl table">
+              <li class="li_title clearfix">
+                <div class="fl fisrt">段数</div>
+                <div class="fl">分段数量</div>
+                <div class="fl" >分段单价</div>
+              </li>
+              <li class="li_content clearfix" v-for="(item, index) in listInfo.replies">
+                <div class="fl fisrt">{{index + 1}}</div>
+                <div class="fl" v-if="index === 0">
+                  <input type="number" value="0" disabled readonly />
+                </div>
+                <div class="fl" v-if="index !== 0">
+                  <input type="number" v-model="item.lapQty" />
+                </div>
+                <div class="fl" >
+                  <input type="number" v-model="item.price" readonly/>
+                </div>
+              </li>
+            </ul>
+            <div style="clear:both"></div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+  export default {
+    name: 'user_seek_btob_details',
+    layout: 'mobileActivity',
+    middleware: 'authenticated',
+    data() {
+      return {
+        active: this.$route.query.active,
+        listInfo: {
+          inquiry: { },
+          replies: [{
+            lapQty: 0,
+            price: ''
+          }],
+          product: {}
+        }
+      }
+    },
+    created() {
+      this.getInitInfo()
+    },
+    methods: {
+      getInitInfo() {
+        this.$http.get(`/sale/inquiry/${this.$route.query.id}/info/mobile`).then(res => {
+          if (!res.data.replies[0].price || res.data.replies[0].price === '') {
+            res.data.replies[0].price = ''
+          }
+          this.listInfo = res.data
+        })
+      }
+    },
+    filters: {
+      time: function(time) {
+        if (typeof time === 'number') {
+          if (!time) {
+            return '无'
+          } else {
+            let d = new Date(time)
+            let year = d.getFullYear()
+            let month = d.getMonth() + 1 < 10 ? '0' + (d.getMonth() + 1) : '' + (d.getMonth() + 1)
+            let day = d.getDate() < 10 ? '0' + d.getDate() : '' + d.getDate()
+            return year + '-' + month + '-' + day
+          }
+        }
+      }
+    }
+  }
+</script>
+
+<style scoped lang="scss">
+  .orderbtob_details_wrapper {
+    background: #f5f5f5;
+    position: absolute;
+    height: 100%;
+    width: 100%;
+    overflow-y: scroll;
+    .mobile-header{
+      position: fixed;
+      top: 0;
+      z-index: 10;
+      width:100%;
+      height:.88rem;
+      line-height: .88rem;
+      /*border-bottom:.01rem solid #ccc;*/
+      background: #3e82f5;
+      padding:0 .2rem 0 .1rem;
+      color:#fff;
+    }
+    .mobile-header p{
+      overflow: hidden;
+      text-overflow: ellipsis;
+      white-space: nowrap;
+      font-size:.36rem;
+      text-align: center;
+      margin: 0;
+      width: 6rem;
+      padding-left: 1rem;
+    }
+    .mobile-header a{
+      font-size:.28rem;
+      color:#fff;
+      position: absolute;
+    }
+    .mobile-header a i{
+      font-size: .48rem;
+      margin-right: -.1rem;
+    }
+    .orderbtob_details_content {
+      margin-top: 0.9rem;
+      padding: 0.2rem;
+      .orderbtob_details_top {
+        background: #3f84f6;
+        border-radius: 0.07rem;
+        border: solid 0.01rem #e3e5e8;
+        padding: 0.24rem 0.2rem 0.14rem;
+        .item {
+          color: #fff;
+          font-size: 0.28rem;
+          margin-bottom: 0.1rem;
+        }
+      }
+      .orderbtob_details_middle {
+        margin-top: 0.2rem;
+        .list {
+          border: solid 1px #e3e5e8;
+          border-radius: 0.07rem;
+          overflow: hidden;
+          color: #333;
+          font-size: 0.28rem;
+          padding: 0.24rem 0.2rem;
+          margin-bottom: 0.2rem;
+          background: #fff;
+          .item {
+            margin-bottom: 0.1rem;
+            line-height: 0.5rem;
+          }
+          .ovrflow {
+            width: 5.2rem;
+            line-height: 0.5rem
+          }
+          .name {
+            color: #666;
+            width: 1.6rem;
+            display: inline-block;
+          }
+          .dateinput {
+            width: 3.49rem;
+            height: .5rem;
+            line-height: .5rem;
+            border: 1px solid #aeaeae;
+            font-size: .26rem;
+            vertical-align: middle;
+            background: #fff;
+            border-radius: 0;
+            margin-right: 0.05rem;
+          }
+        }
+        .replayBtn {
+          width: 6.59rem;
+          height: 0.77rem;
+          background-color: #3f84f6;
+          border-radius: 0.08rem;
+          font-size: 0.28rem;
+          line-height: 0.77rem;
+          color: #ffffff;
+          overflow: hidden;
+          text-align: center;
+          margin-top: 0.2rem
+        }
+        .table {
+          width: 4.52rem;
+          background-color: #f3f3f3;
+          color: #333333;
+          font-size: 0.28rem;
+          .li_title {
+            border: 1px solid #c5c5c5;
+            div {
+              width: 1.87rem;
+              text-align: center;
+              border-right: 1px solid #c5c5c5;
+              &:last-child {
+                border-right: 0
+              }
+            }
+            .fisrt {
+              width: 0.74rem;
+            }
+          }
+          .li_content {
+            border: 1px solid #c5c5c5;
+            background: #fff;
+            border-top: 0px;
+            div {
+              width: 1.87rem;
+              text-align: center;
+              border-right: 1px solid #c5c5c5;
+              &:last-child {
+                border-right: 0
+              }
+              input {
+                text-align: center;
+                width: 100%;
+                height: 0.49rem;
+                border: 0;
+              }
+            }
+            .fisrt {
+              width: 0.74rem;
+            }
+          }
+        }
+      }
+      .bottom {
+        font-size: 0.2rem;
+        color: #999;
+        border-top: 1px solid #aeaeae;
+        padding-top: 0.1rem;
+      }
+      .noborder{
+        border: 0
+      }
+    }
+    .icon-add {
+      color: #00d300;
+      font-size: 0.4rem
+    }
+    .icon-minus {
+      color: #cacaca;
+      font-size: 0.4rem;
+      display: block;
+    }
+    .posixicon {
+      position: absolute;
+      right: 0.3rem;
+      width: 0.4rem;
+      top: 0;
+    }
+  }
+</style>

+ 267 - 0
pages/mobile/center/user/supplier/index.vue

@@ -0,0 +1,267 @@
+<template>
+  <div class="modal-wrapper-bg">
+    <div class="mobile-customer-btob"  style="background: #f1f3f6" id="mobile-customer-btob">
+      <div class="search-content mi-search-content">
+        <input type="text" v-model="filterParams.keyword" @keyup.13="onFilter" placeholder="输入企业名称、营业执照号、申请人或审核人">
+        <span @click="onFilter"><i class="iconfont icon-sousuo"></i></span>
+      </div>
+      <div class="customer-btob-wrapper">
+        <div v-if="resourceList.content && resourceList.content.length > 0">
+          <div class="customer-btob-wrapper-list" v-for="item in resourceList.content">
+            <div class="customer-btob-wrapper-content">
+              <div class="list-item"><span>UU:</span>{{item.vendorEnterprise.uu}}</div>
+              <div class="list-item"><span>供应商名称:</span><a>{{item.vendorEnterprise.enName}}</a></div>
+              <div class="list-item"><span>简称:</span><a>{{item.vendorEnterprise.enShortname}}</a></div>
+              <div class="address clearfix"><span class="fl">地址:</span><div class="fl" style="width:5.6rem">{{item.vendorEnterprise.enAddress}}</div></div>
+              <div class="list-item"><span>联系人:</span>{{item.vendorUser.userName}}</div>
+              <div class="list-item"><span>联系人电话:</span>{{item.vendorUser.userTel}}</div>
+            </div>
+            <!--<div class="customer-btob-wrapper-bottom clearfix">-->
+              <!--<div @click="addUserInfo(item)"><i class="iconfont icon-allocation"></i>分配</div>-->
+              <!--<div @click="transferUserInfo(item)"><i class="iconfont icon-zhuanyi"></i>转移</div>-->
+            <!--</div>-->
+          </div>
+        </div>
+        <empty-status
+          v-else
+          :text="'暂无对应的单据'"
+          :showLink="false"
+        ></empty-status>
+      </div>
+    </div>
+    <pull-up :fixId="'mobile-customer-btob'" :allPage="allPage" :page="filterParams.page" @pullUpAction="onPullUpAction"></pull-up>
+  </div>
+</template>
+
+<script>
+  import { ModalWrapper } from '~components/mobile/base'
+  import { PullUp, EmptyStatus, RemindBox } from '~components/mobile/common'
+  export default {
+    name: 'customer-index',
+    layout: 'mobile',
+    middleware: 'authenticated',
+    data() {
+      return {
+        filterParams: {
+          keyword: '',
+          count: 10,
+          page: 1
+        },
+        resourceList: {
+          content: []
+        },
+        enabled: '',
+        thisUser: {}
+      }
+    },
+    created() {
+      this.setSelect()
+    },
+
+    methods: {
+      onFilter() {
+        this.setSelect(true)
+      },
+      onPullUpAction() {
+        this.filterParams.page++
+        this.setSelect()
+      },
+      async setSelect(reset) {
+        let { data } = await this.$http.get('/vendor/info/search', {
+          params: {
+            count: this.filterParams.count,
+            page: this.filterParams.page,
+            keyword: this.filterParams.keyword
+          }})
+        if (!this.resourceList.content) {
+          this.resourceList.content = []
+        }
+        if (reset) {
+          this.resourceList.content = []
+          this.resourceList = data
+        } else {
+          this.resourceList.content.push(...data.content)
+          data.content = this.resourceList.content
+        }
+        this.resourceList = data
+        data = null
+      }
+    },
+    computed: {
+      allPage() {
+        return this.resourceList.totalPage
+      }
+    },
+    components: {
+      ModalWrapper,
+      PullUp,
+      EmptyStatus,
+      RemindBox
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+  @import '~assets/scss/mobileInvoice';
+  @mixin overFlowHidden {
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
+
+  .com-switch-head .com-switch-item.active {
+    border-bottom: 0.04rem solid #3f84f6;
+  }
+  .com-switch-head {
+    height: .82rem;
+    line-height: .82rem;
+    text-align: center;
+    background: #fff;
+  }
+  .com-switch-head .com-switch-item {
+    font-size: .28rem;
+    text-align: center;
+    background: #fff;
+  }
+  .mobile-customer-btob{
+    background: #f1f3f6;
+    margin: 1.26rem 0 0.98rem 0;
+    height: calc(100vh - 1.26rem - 0.98rem);
+    overflow-y: auto;
+    .search-content {
+      padding: .24rem 0;
+      text-align: center;
+      background: #f1f3f6;
+      input {
+        width: 6.48rem;
+        height: .58rem;
+        line-height: .58rem;
+        border-radius: .14rem;
+        margin: 0 0 0 .11rem;
+        font-size: .26rem;
+        padding: 0 .71rem 0 .21rem;
+        border: 1px solid #3f84f6;
+      }
+    }
+  }
+
+  .modal-wrapper-bg {
+    .mobile-modal .mobile-modal-wrapper {
+      top: 1.6rem;
+      bottom: 1.6rem;
+      left: 5%;
+      right: 5%;
+    }
+    .mobile-scroll-wrap {
+      overflow: hidden;
+      height: 80%;
+      background: #fff;
+      border-bottom-left-radius: .07rem;
+      border-bottom-right-radius: .07rem;
+    }
+  }
+  .customer-btob-wrapper {
+    .customer-btob-wrapper-list {
+      width: 7.1rem;
+      margin: 0 auto 0.2rem;
+      background: #FFFFFF;
+      border-radius: 0.05rem;
+      padding: 0.16rem 0.24rem 0;
+      .customer-btob-wrapper-content {
+        div {
+          font-size: 0.28rem;
+          color: #151515;
+          line-height: 0.5rem;
+          &.list-item {
+            @include overFlowHidden();
+          }
+          span {
+            color: #666666;
+          }
+        }
+      }
+      .customer-btob-wrapper-bottom{
+        border-top: 1px solid #D9D9D9;
+        height: 0.8rem;
+        line-height: 0.8rem;
+        margin: 0.16rem -0.24rem 0;
+        padding:0 0.24rem 0.16rem;
+        div {
+          text-align: center;
+          width: 50%;
+          float: left;
+          font-size: 0.26rem;
+          color: #333333;
+          &:first-child {
+            border-right: 1px solid #D9D9D9;
+          }
+          i {
+            font-size: 0.36rem;
+            vertical-align: middle;
+            margin-right: 0.05rem
+          }
+        }
+      }
+    }
+  }
+  .customer-modal-wrapper {
+    padding-bottom: 0.5rem;
+    input {
+      border: 1px solid #3f84f6;
+    }
+
+  }
+  .customer-modal-content {
+    border-radius: 0.06rem 0.06rem 0 0;
+    font-size: 0.28rem;
+    margin: 0.24rem auto 0;
+    width: 90%;
+    overflow: hidden;
+    .customer-modal-content-title {
+      height: 0.76rem;
+      line-height: 0.76rem;
+      background: #89AEFA;
+      border: 1px solid #89AEFA;
+      color: #FFFFFF;
+      padding: 0 0.2rem;
+    }
+    .customer-modal-content-list {
+      padding: 0 0.2rem;
+      height: 0.76rem;
+      line-height: 0.76rem;
+      border: 1px solid #7E7E7E;
+      background: #FFFFFF;
+      color: #666666;
+      border-bottom: 0;
+      &:nth-last-child(1){
+        border-bottom: 1px solid #7E7E7E
+      }
+      span:nth-last-child(1) {
+        @include overFlowHidden()
+      }
+    }
+  }
+  .customer-modal-bottom {
+    position: absolute;
+    bottom :0rem;
+    width: 90%;
+    left: 0;
+    right: 0;
+    margin: 0 auto;
+    div {
+      background: #3F84F6;
+      border-radius: 8px;
+      width: 48%;
+      height: 0.74rem;
+      line-height: 0.74rem;
+      font-size: 0.28rem;
+      color: #FFFFFF;
+      text-align: center;
+      &:last-child {
+        background: #fff;
+        color: #3F84F6;
+      }
+    }
+  }
+
+</style>

+ 464 - 0
pages/mobile/center/user/tender/index.vue

@@ -0,0 +1,464 @@
+<template>
+  <div class="order-wrapper">
+    <div class="order-nav">
+      <div :class="activeType === 'all' ? 'active': ''" @click="ChangeList('all')"><span>全部</span></div>
+      <div :class="activeType === 'done' ? 'active': ''" @click="ChangeList('done')"><span>待评标</span></div>
+      <div :class="activeType === 'todo' ? 'active' : ''" @click="ChangeList('todo')"><span>待投标</span></div>
+      <div :class="activeType === 'waiting' ? 'active' : ''" @click="ChangeList('waiting')"><span>待发布</span></div>
+    </div>
+    <div class="search-content search-content2">
+      <input type="text" placeholder="单据编号/客户名称/物料名称" v-model="filterParams.keyword" @keyup.13="searchOrderlist">
+      <span @click="searchOrderlist">
+          <i class="iconfont icon-sousuo"></i>
+      </span>
+    </div>
+    <div class="filters-wrap">
+      <base-filter
+        v-for="filterOption in filterOptions"
+        :key="filterOption.selectOption"
+        :selectItems="filterOption.selectItems"
+        :defaultVal="filterOption.defaultVal"
+        :selectOption="filterOption.selectOption"
+        @selectAction="onSelectAction"
+        @valueAction="onValueAction"
+        :title="filterOption.title">
+      </base-filter>
+    </div>
+    <ul class="order-list-wrap" id="b2border-wrapper" v-show="orderList.length > 0">
+      <li v-for="item in orderList" @click="lookItem(item)">
+        <div class="list-title">
+          <span v-if="!isUnread(item.id)" style="color:#15B262;margin-right:.5rem;">已读</span>
+          <span v-if="isUnread(item.id)" style="color:#DE4545;margin-right:.5rem;">未读</span>
+          <span>{{item.date | time}}</span>
+          <span class="leave-active" v-if="item.status === '已结标'">已结标</span>
+          <span class="leave-active" v-if="item.status === '待评标' && item.overdue === 1 && item.result !== 1">待评标</span>
+          <span class="leave-active" v-if="(item.status === '待评标' && item.overdue !== 1) || (item.status === '待投标' && item.overdue !== 1)">待投标</span>
+          <span class="leave-active" v-if="(item.status === '待评标' && item.overdue === 1 && item.result === 1) || (item.status === '待投标' && item.overdue === 1) || item.status === '流标'">流标</span>
+          <span class="leave-active" v-if="item.status === '待发布'">待发布</span>
+        </div>
+        <div class="list-content">
+          <div class="item">
+            <span>标题:</span>
+            <label v-html="item.title || '-'"></label>
+          </div>
+          <div class="item">
+            <span>单号:</span>
+            <label v-html="item.code" style="color: #3F84F6;font-weight: 500"></label>
+          </div>
+          <div class="item">
+            <span>招标类型:</span>
+            <label v-html="item.ifOpen === 1 ? '公开招标' : '指定招标'" style="color: #333;font-weight: 500"></label>
+          </div>
+          <div class="item">
+            <span>币别:</span>
+            <label v-html="item.currency || '-'" style="color: #333;font-weight: 500"></label>
+          </div>
+          <div class="item">
+            <span>支付方式:</span>
+            <label v-html="item.payment || '-'" style="color: #333;font-weight: 500"></label>
+          </div>
+          <div class="item">
+            <span>联系人:</span>
+            <label v-html="item.user || '-'" style="color: #333;font-weight: 500"></label>
+          </div>
+          <div class="item">
+            <span>联系电话:</span>
+            <label v-html="item.userTel || '-'" style="color: #333;font-weight: 500"></label>
+          </div>
+          <div class="item">
+            <span>投标截止时间:</span>
+            <label style="color: #333;font-weight: 500">{{item.endDate | timeDay}}</label>
+          </div>
+          <div class="item">
+            <span>公布结果时间:</span>
+            <label style="color: #333;font-weight: 500">{{item.publishDate | timeDay}}</label>
+          </div>
+        </div>
+      </li>
+    </ul>
+    <div v-if="orderList.length === 0" class="com-none-state">
+      <img src="/images/mobile/@2x/search-empty.png">
+      <p>抱歉,暂无订单消息</p>
+      <nuxt-link to="/">返回首页</nuxt-link>
+    </div>
+    <pull-up :fixId="'b2border-wrapper'"
+             :allPage="allPage"
+             :page="page"
+             :FixedEl="true"
+             @pullUpAction="getMoreSearch"></pull-up>
+    <modal-wrapper :showModal="showModal" :title="'评标单'" @closeAction="showModal = false">
+      <div class="btob_invoice_modal">
+        <div class="btob_invoice_modal_title">
+          <span>单据信息</span>
+          <span class="block" v-if="modalObj.status === '已结标'">已结标</span>
+          <span class="block" v-if="modalObj.status === '待评标' && modalObj.overdue === 1 && modalObj.result !== 1">待评标</span>
+          <span class="block" v-if="(modalObj.status === '待评标' && modalObj.overdue !== 1) || (modalObj.status === '待投标' && modalObj.overdue !== 1)">待投标</span>
+          <span class="block" v-if="(modalObj.status === '待评标' && modalObj.overdue === 1 && modalObj.result === 1) || (modalObj.status === '待投标' && modalObj.overdue === 1) || modalObj.status === '流标'">流标</span>
+          <span class="block" v-if="modalObj.status === '待发布'">待发布</span>
+        </div>
+        <div class="btob_invoice_modal_content">
+          <div><span>招标标题:</span>{{modalObj.title}}</div>
+          <div><span>联系人:</span>{{modalObj.user}}</div>
+          <div><span>联系电话:</span>{{modalObj.userTel}}</div>
+          <div><span>收货地址:</span>{{modalObj.shipAddress}}</div>
+          <div><span>投标截止时间:</span>{{modalObj.endDate | timeDay}}</div>
+          <div><span>公布结果时间:</span>{{modalObj.publishDate |timeDay}}</div>
+          <div><span>交易币别:</span>{{modalObj.currency}}</div>
+          <div><span>是否含税:</span>{{modalObj.ifTax === 1 ? '是' : '否'}}</div>
+          <div><span>付款方式:</span>{{modalObj.payment}}</div>
+          <div><span>证照要求:</span>{{modalObj.certificate || '无'}}</div>
+        </div>
+      </div>
+    </modal-wrapper>
+  </div>
+</template>
+
+<script>
+  import { RemindBox, PullUp } from '~components/mobile/common'
+  import { ModalWrapper, BaseFilter } from '~components/mobile/base'
+  export default {
+    name: 'sample',
+    layout: 'mobile',
+    middleware: 'authenticated',
+    data() {
+      return {
+        filterOptions: [
+          {
+            title: '交易时间',
+            selectOption: 'date',
+            selectItems: [{
+              key: '30天',
+              val: 1
+            }, {
+              key: '90天',
+              val: 2
+            }, {
+              key: '180天',
+              val: 3
+            }, {
+              key: '自定义',
+              val: 4
+            }],
+            defaultVal: 1
+          }
+        ],
+        filterParams: {
+          keyword: ''
+        },
+        unreadCode: '',
+        activeType: 'all',
+        page: 1,
+        orderList: [],
+        allPage: 0,
+        modalObj: {},
+        showModal: false,
+        isUser: false
+      }
+    },
+    created() {
+      this.getResource()
+      this.getUnreadIds()
+      this.getHasUser()
+    },
+    methods: {
+      lookItem(bill) {
+        this.showModal = true
+        // if (this.isUnread(bill.id)) {
+        //   let lists = []
+        //   lists[0] = bill.id
+        //   let _then = this
+        //   this.$http.post(`/sale/sample/setRead`, lists)
+        //     .then(() => {
+        //       _then.getHasUser()
+        //     })
+        // }
+        this.$http.get(`/tender/purc/${bill.id}/info`)
+          .then(res => {
+            this.modalObj = bill
+            this.modalObj.sends = res.data
+          })
+      },
+      isUnread (id) {
+        for (let i in this.unreadCode) {
+          if (id === this.unreadCode[i]) {
+            return true
+          }
+        }
+      },
+      setSelect (type, val, isReload) {
+        if (type === 'date') {
+          if (val) {
+            this.filterParams.fromDate = val.fromDate
+            this.filterParams.endDate = val.toDate
+          } else {
+            this.filterParams.fromDate = null
+            this.filterParams.endDate = null
+          }
+        } else {
+          this.filterParams[type] = val
+        }
+        isReload && this.filterRecord()
+      },
+      initFilterParams () {
+        this.filterParams = {
+          keyword: '',
+          fromDate: '',
+          endDate: ''
+        }
+      },
+      filterRecord () {
+        this.page = 1
+        this.getResource(true)
+      },
+      onSelectAction (selectObj) {
+        this.setSelect(selectObj.key, selectObj.value, true)
+      },
+      onValueAction (selectObj) {
+        this.setSelect(selectObj.key, selectObj.value, false)
+      },
+      getHasUser () {
+        this.$http.get('/account/role/isUser').then(res => {
+          this.isUser = res.data.isUser
+        })
+      },
+      getUnreadIds () {
+        this.$http.get('/tender/getUnreadIds/purc')
+          .then(res => {
+            this.unreadCode = res.data.content
+          })
+      },
+      getResource(Reset) {
+        this.$http.get('/tender/purc/info/search', {params: {
+            _state: this.activeType !== 'all' ? this.activeType : null,
+            count: 10,
+            page: this.page,
+            searchFilter: this.filterParams,
+            sorting: {'id': 'desc'}
+          }}).then(res => {
+          if (Reset) {
+            this.orderList = []
+          }
+          this.orderList.push(...res.data.content)
+          this.allPage = Math.floor(res.data.totalElement / 10)
+        })
+      },
+      ChangeList(_tp) {
+        this.activeType = _tp
+        this.getResource(true)
+      },
+      getMoreSearch() {
+        this.page++
+        this.getResource()
+      },
+      searchOrderlist() {
+        this.page = 1
+        this.getResource(true)
+      }
+    },
+    components: {
+      RemindBox, PullUp, ModalWrapper, BaseFilter
+    },
+    filters: {
+      timeDay: function(time) {
+        if (typeof time === 'number') {
+          if (!time) {
+            return '无'
+          } else {
+            let d = new Date(time)
+            let year = d.getFullYear()
+            let month = d.getMonth() + 1
+            let day = d.getDate() < 10 ? '0' + d.getDate() : '' + d.getDate()
+            return year + '-' + month + '-' + day
+          }
+        }
+      },
+      toFixedNum: function (num) {
+        return num ? parseFloat(num).toFixed(2) : '-'
+      }
+    }
+  }
+</script>
+
+<style scoped lang="scss">
+  @mixin overFlowHidden {
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
+  @mixin lineHeight($value) {
+    height: $value;
+    line-height: $value;
+  }
+
+  .order-wrapper {
+    background: #f1f3f6;
+    margin: 1.26rem 0 0.98rem 0;
+    height: calc(100vh - 1.26rem - 0.98rem);
+    /*padding-bottom: 0.96rem;*/
+    .filters-wrap{
+      background: #fff;
+      margin: 0 auto .13rem;
+      width: 7.1rem;
+      overflow: hidden;
+      padding: .1rem;
+    }
+    .order-tab {
+      background: #3f84f6;
+      padding-bottom: 0.2rem;
+      .order-tab-wrapper {
+        border: solid 1px #ffffff;
+        width: 7.06rem;
+        margin: 0 auto;
+        border-radius: 0.04rem;
+        line-height: 0.72rem;
+        height: 0.72rem;
+        overflow: hidden;
+        div {
+          color: #ffffff;
+          font-size: 0.28rem;
+          text-align: center;
+          width: 50%;
+          &.active {
+            background-color: #ffffff;
+            color: #3f84f6;
+          }
+        }
+      }
+    }
+    .order-nav {
+      background: #fff;
+      div {
+        height: 0.82rem;
+        line-height: 0.82rem;
+        display: inline-block;
+        width: 25%;
+        text-align: center;
+        font-size: .28rem;
+        color: #666;
+        &.active span{
+          color: #3f84f6;
+          border-bottom: 0.04rem solid #3f84f6;
+          padding-bottom: 0.2rem;
+        }
+      }
+    }
+    .search-content2 {
+      text-align: center;
+      padding: .25rem 0 0 0;
+      margin-top: 0 !important;
+      margin-bottom:.25rem;
+      input {
+        width: 7.1rem;
+        border: 1px solid #376ff3;
+      }
+      span {
+        /*height: .46rem;*/
+        /*line-height: .46rem;*/
+      }
+    }
+    .order-list-wrap {
+      height: calc(90vh - 1.26rem - 0.96rem - 0.84rem - 1rem - 0.92rem);
+      overflow-y: scroll;
+      margin-top: 0.2rem;
+      li {
+        background: #fff;
+        width: 7.1rem;
+        margin: 0 auto 0.2rem;
+        border-radius: 0.04rem;
+        border: 1px solid #e4e4e4;
+        padding: 0 0.24rem;
+        .list-title {
+          @include lineHeight(0.91rem);
+          @include overFlowHidden();
+          font-size: 0.28rem;
+          color: #3a3a3a;
+          .over-active{
+            @include lineHeight(.4rem);
+            padding:.05rem;
+            margin:0 .5rem;
+            background: #989A9C;
+            color:#fff;
+            border-radius:.05rem;
+          }
+          .leave-active{
+            @include lineHeight(.4rem);
+            padding:.05rem;
+            margin:0 .5rem;
+            background: #15B262;
+            color:#fff;
+            border-radius:.05rem;
+          }
+        }
+        .list-bottom{
+          @include lineHeight(1rem);
+          text-align: center;
+          font-size: 0.26rem;
+          color: #333;
+        }
+        .list-content {
+          padding-top: 0.23rem;
+          border-top: 1px solid #d3d3d3;
+          .item {
+            font-size: 0.28rem;
+            color: #333;
+            @include overFlowHidden();
+            margin-bottom: 0.15rem;
+            span {
+              color: #666;
+            }
+            &.pric {
+              color: #e6353d;
+            }
+          }
+        }
+      }
+    }
+    .com-none-state{
+      background: #f1f3f6
+    }
+    .btob_invoice_modal {
+      padding: 0 0.24rem;
+      .btob_invoice_modal_title {
+        line-height: 0.72rem;
+        border-top:1px solid #D3D3D3;
+        border-bottom:1px solid #D3D3D3;
+        span {
+          font-size: 0.28rem;
+          color: #3F84F6;
+          border-left: 0.06rem solid #3F84F6;
+          padding-left: 0.15rem;
+          height: 0.18rem;
+          &.block{
+            float:right;
+            border:none;
+          }
+        }
+        &:nth-child(1) {
+          border-top: 0;
+        }
+      }
+      .btob_invoice_modal_content {
+        @include overFlowHidden();
+        padding-top: 0.15rem;
+        font-size: 0.28rem;
+        color: #151515;
+        line-height: 0.5rem;
+        padding-bottom: 0.15rem;
+        div{
+          text-indent:-1.4rem;
+          margin-left:1.4rem;
+          white-space:normal;
+        }
+        span {
+          color: #666666;
+        }
+        &.btob_invoice_modal_content2 {
+          border-bottom:1px solid #D3D3D3;
+          &:nth-last-of-type(1) {
+            border-bottom: 0px
+          }
+        }
+      }
+    }
+  }
+</style>

+ 0 - 1
pages/mobile/center/vendor/approval/index.vue

@@ -209,7 +209,6 @@
             }
             this.orderList.push(...res.data.content)
             this.allPage = Math.floor(res.data.totalElement / 10)
-            console.log(this.orderList)
           })
       },
       ChangeList(_tp) {

+ 1 - 1
pages/mobile/center/vendor/btobapCheck.vue

@@ -231,7 +231,7 @@
         // if (!this.isUnread(id)) { } else {
         //   let sourceId = []
         //   sourceId.push(id)
-        //   this.$http.post('/sale/sample/setRead', sourceId).then(res => {
+        //   this.$http.post('/sale/tender/setRead', sourceId).then(res => {
         //     this.getUnread()
         //   })
         // }

+ 7 - 13
pages/mobile/center/vendor/customer/index.vue

@@ -41,12 +41,12 @@
     </div>
     <div class="mobile-modal" v-if="modalObj.showModal" @click="closeModal()">
       <div class="mobile-modal-box mobile-modal-wrapper" @click="stopPropagation($event)">
-        <div class="mobile-modal-header">客户分配<i @click="closeModal()" class="icon-guanbi iconfont"></i></div>
+        <div class="mobile-modal-header">{{modalObj.type === 'add' ? '客户分配' : '权限转移'}}<i @click="closeModal()" class="icon-guanbi iconfont"></i></div>
         <div ref="mobileModalBox" class="mobile-scroll-wrap">
           <div>
             <div class="customer-modal-wrapper">
               <div class="search-content mi-search-content">
-                <input type="text" v-model="modalObj.keyword" @input="modalObjonFilter" placeholder="输入用户名/关键字">
+                <input type="text" v-model="modalObj.keyword" @input="modalObjonFilter" placeholder="输入用户UU">
                 <span @click="modalObjonFilter"><i class="iconfont icon-sousuo"></i></span>
               </div>
               <div class="customer-modal-content">
@@ -59,16 +59,16 @@
 
                   </span>
                   <span class="item inline-block" style="width: 32%;">用户UU</span>
-                  <span class="item inline-block" style="width: 40%;text-align: right">用户名称</span>
+                  <span class="item inline-block" style="width: 40%;text-align: center">用户名称</span>
                 </div>
-                <div class="customer-modal-content-list" v-for="item in modalObj.showModalList">
+                <div class="customer-modal-content-list" v-for="item in modalObj.showModalList" v-if="item.userUU !== thisUser.userUU">
                   <span class="item inline-block" style="width: 28%;" @click="checkItem(item)">
                     <label class="mobile-cart-check" :class="{'active': item.distribute}" v-if="modalObj.type === 'add'"></label>
                     <label class="mobile-cart-check" :class="{'active': item.transfer}" v-else></label>
                     <!--<label class="mobile-cart-check" :class="{'active': item.distribute}"></label>-->
                   </span>
                   <span class="item inline-block" style="width: 32%;">{{item.userUU}}</span>
-                  <span class="item inline-block" style="width: 40%;">{{item.userName}}</span>
+                  <span class="item inline-block" style="width: 40%;text-align: center;">{{item.userName}}</span>
                 </div>
               </div>
             </div>
@@ -249,13 +249,10 @@
       },
       // 分配
       async addUserInfo(customer) {
-        if (!this.enabled) {
-         this.onMind('您没有为当前客户分配用户的权限!')
-        }
         this.modalObj.type = 'add'
         this.modalObj.customer = customer
         this.$http.get(`/account/user/getEnTransfer/${customer.myEnterprise.uu}`).then(res => {
-          customer.enTransfer = res.result
+          customer.enTransfer = res.data.result
           if (this.enabled || customer.enTransfer) {
             this.$http.post(`/account/user/customer/${customer.myEnterprise.uu}`).then(data => {
                 customer.userinfos = data.data
@@ -271,13 +268,10 @@
       },
       // 转移
       transferUserInfo(customer) {
-        if (!this.enabled) {
-          this.onMind('您没有转移当前客户权限的权限!')
-        }
         this.modalObj.type = 'chance'
         this.modalObj.customer = customer
         this.$http.get(`/account/user/getDistribute/${customer.myEnterprise.uu}`).then(res => {
-          customer.enTransfer = res.result
+          customer.enTransfer = res.data.result
           if (this.enabled || customer.enTransfer) {
             this.$http.get('/authentication').then(res => {
               this.thisUser = res.data

+ 1 - 1
pages/mobile/center/vendor/index.vue

@@ -42,7 +42,7 @@
       <div class="block-wrap seek-operation">
         <p><i></i>更多业务</p>
         <ul>
-          <nuxt-link tag="li" to="/mobile/order/orderbtob">
+          <nuxt-link tag="li" to="/mobile/order/orderbtob?type=saler">
             <img src="/images/mobile/center/user/order.jpg" alt="">
             <p>销售订单</p>
           </nuxt-link>

+ 1 - 1
pages/mobile/center/vendor/invoice/index.vue

@@ -358,7 +358,7 @@
         return this.invoiceList.length && this.listActiveFlag
       },
       getRouterParams() {
-        console.log(this.$route.query.tp)
+        // console.log(this.$route.query.tp)
         return this.$route.query.tp === 'record'
       }
     },

+ 0 - 1
pages/mobile/center/vendor/outOfStorage/purchase/_storeid.vue

@@ -175,7 +175,6 @@
             if(arr.length <= 0) {
               this.onRemind('最少填写一个发货数量')
             } else {
-              console.log(type)
               this.allObj.sendType = this.storageList.sendType
               this.allObj.map = arr
               this.allObj.jsonSdAddress = this.storageList.jsonAddress

+ 2 - 2
pages/mobile/center/vendor/payCenter.vue

@@ -636,7 +636,7 @@
           }, err => {
             this.validBankAccountObj.number = false
             this.setRemindText(err.response.data || '银行账号校验失败')
-            console.log(err)
+            // console.log(err)
           })
         }
       },
@@ -677,7 +677,7 @@
             }
           }, err => {
             this.setRemindText(err.response.data || '新增账户失败')
-            console.log(err)
+            // console.log(err)
           })
         }
       },

+ 0 - 2
pages/mobile/center/vendor/productdetails.vue

@@ -317,7 +317,6 @@
           this.chooseItem.prices[1].end = '9999999999'
           this.chooseItem.prices.splice(index, 1)
         }
-        console.log(this.chooseItem.prices)
       },
       // 开始价格阶段失去焦点
       startpriceBlur(item, index) {
@@ -364,7 +363,6 @@
           return false
         }
         this.chooseItem.prices[index + 1].start = Math.abs(item.end) + 1
-        console.log(this.chooseItem.prices)
       },
       // 交期失去焦点
       minDeliveryBlur(str) {

+ 0 - 1
pages/mobile/center/vendor/sample/index.vue

@@ -312,7 +312,6 @@
               }
             })
           })
-        console.log(item)
       },
       getUnreadIds () {
         this.$http.get('/sale/sample/getUnreadIds')

+ 1 - 1
pages/mobile/center/vendor/seek_btob_details.vue

@@ -15,7 +15,7 @@
         </div>
         <div class="item clearfix">
           <span class="name fl">收货地址:</span>
-          <span class="fl" style="width: 5.2rem">{{listInfo.inquiry.ship}}</span>
+          <span class="fl" style="width: 5.2rem">{{listInfo.inquiry.enterprise && listInfo.inquiry.enterprise.enAddress}}</span>
         </div>
         <div class="item clearfix">
           <span class="name fl">联系电话:</span>

+ 2 - 2
pages/mobile/order/index.vue

@@ -1,8 +1,8 @@
 <template>
   <div class="order-wrapper">
-    <div class="order-tab" v-if="vendorType === 'saler'">
+    <div class="order-tab">
       <div class="order-tab-wrapper clearfix">
-        <nuxt-link class="fl tab" to="/mobile/order/orderbtob" tag="div" >
+        <nuxt-link class="fl tab" :to="`/mobile/order/orderbtob?type=${vendorType === 'saler' ? 'saler' : 'buyer'}`" tag="div" >
           B2B
         </nuxt-link>
         <div class="fl active tab">商城</div>

+ 33 - 13
pages/mobile/order/orderbtob.vue

@@ -3,7 +3,7 @@
     <div class="order-tab">
       <div class="order-tab-wrapper clearfix">
         <div class="fl active tab">B2B</div>
-        <nuxt-link class="fl tab" to="/mobile/order?type=saler" tag="div" >
+        <nuxt-link class="fl tab" :to="`/mobile/order?type=${vendorType === 'saler' ? 'saler' : 'buyer'}`" tag="div" >
           商城
         </nuxt-link>
       </div>
@@ -11,6 +11,7 @@
     <div class="order-nav">
       <div :class="activeType === 'todo' ? 'active': ''" @click="ChangeList('todo')"><span>待回复</span></div>
       <div :class="activeType === 'done' ? 'active' : ''" @click="ChangeList('done')"><span>已回复</span></div>
+      <div :class="activeType === 'waiting' ? 'active' : ''" @click="ChangeList('waiting')"><span>待收货</span></div>
       <div :class="activeType === 'end' ? 'active' : ''" @click="ChangeList('end')"><span>已结案</span></div>
     </div>
     <div class="search-content search-content2">
@@ -21,7 +22,7 @@
     </div>
     <ul class="order-list-wrap" id="b2border-wrapper" v-show="orderList.length > 0">
       <li v-for="item in orderList" @click="goDetails(item)">
-        <div class="list-title">{{item.enterprise.enName}}</div>
+        <div class="list-title">{{vendorType === 'saler' ? item.enterprise.enName : item.receiveName}}</div>
         <div class="clearfix list-content">
           <div class="fl left">
             <div class="item">
@@ -45,6 +46,9 @@
             <div v-else-if="activeType === 'done'" class="done">
               已回复
             </div>
+            <div v-else-if="activeType === 'waiting'" class="done">
+              待收货
+            </div>
             <div v-else-if="activeType === 'end'" class="end">
               已结案
             </div>
@@ -83,22 +87,38 @@
     created() {
       this.getResource('')
     },
+    computed: {
+      vendorType() {
+        return this.$route.query.type
+      }
+    },
     methods: {
       goDetails(item) {
-        this.$router.push('/mobile/order/orderbtob_details?id=' + item.id)
+        this.$router.push('/mobile/order/orderbtob_details?type=' + this.vendorType + '&id=' + item.id)
       },
       getResource(Reset, key) {
-        let _url = '/sale/orders/info/nosearch'
-        if (key) {
-          _url = '/sale/orders/info/search'
-        }
-        this.$http.get(_url, {params: {
+        let _url = ''
+        let filterParams = {
           _state: this.activeType,
           count: 10,
           page: this.page,
-          searchFilter: {'fromDate': 1293811200000, 'endDate': new Date().getTime(), 'keyword': this.keyword},
-          sorting: {date: 'desc', id: 'desc'}
-        }}).then(res => {
+          searchFilter: {'fromDate': 1293811200000, 'endDate': new Date().getTime(), 'keyword': this.keyword}
+        }
+        if (this.vendorType === 'buyer') {
+          filterParams.sorting = {'display': 'desc', 'date': 'desc'}
+            _url = '/sale/orders/purc/info/nosearch'
+          if (key) {
+            _url = '/sale/orders/purc/info/search'
+          }
+        } else {
+          filterParams.sorting = {date: 'desc', id: 'desc'}
+            _url = '/sale/orders/info/nosearch'
+          if (key) {
+            _url = '/sale/orders/info/search'
+          }
+        }
+        this.$http.get(_url, {params: filterParams})
+          .then(res => {
           if (Reset !== '') {
             this.orderList = []
           }
@@ -112,7 +132,7 @@
           this.orderList.push(...res.data.content)
           this.allPage = Math.floor(res.data.totalElement / 10)
           // this.isSearchSearchingMore = true
-          console.log(this.orderList)
+          // console.log(this.orderList)
         })
       },
       ChangeList(_tp) {
@@ -194,7 +214,7 @@
         height: 0.82rem;
         line-height: 0.82rem;
         display: inline-block;
-        width: 33.3%;
+        width: 25%;
         text-align: center;
         font-size: .28rem;
         color: #666;

+ 120 - 52
pages/mobile/order/orderbtob_details.vue

@@ -6,34 +6,75 @@
     </div>
     <div class="orderbtob_details_content">
       <div class="orderbtob_details_top">
-        <div class="item">
-          <span class="name">客户:</span>
-          {{listInfo.enterprise.enName}}
-        </div>
-        <div class="item">
-          <span class="name">收货地址:</span>
-          {{listInfo.enterprise.enAddress}}
-        </div>
-        <div class="item">
-          <span class="name">订单号:</span>
-          {{listInfo.code}}
-        </div>
-        <div class="item">
-          <span class="name">单据时间:</span>
-          {{listInfo.date | time}}
-        </div>
-        <div class="item">
-          <span class="name">备注:</span>
-          {{listInfo.remark || '无'}}
-        </div>
-        <div class="item">
-          <span class="name">币别:</span>
-          {{listInfo.currency}}
-        </div>
-        <div class="item">
-          <span class="name">金额:</span>
-          {{listInfo.sum}}
-        </div>
+        <template v-if="vendorType === 'saler'">
+          <div class="item">
+            <span class="name">客户:</span>
+            {{listInfo.enterprise.enName}}
+          </div>
+          <div class="item">
+            <span class="name">收货地址:</span>
+            {{listInfo.enterprise.enAddress}}
+          </div>
+          <div class="item">
+            <span class="name">订单号:</span>
+            {{listInfo.code}}
+          </div>
+          <div class="item">
+            <span class="name">单据时间:</span>
+            {{listInfo.date | time}}
+          </div>
+          <div class="item">
+            <span class="name">币别:</span>
+            {{listInfo.currency}}
+          </div>
+          <div class="item">
+            <span class="name">金额:</span>
+            {{listInfo.sum | toFixedNum}}
+          </div>
+          <div class="item">
+            <span class="name">备注:</span>
+            {{listInfo.remark || '无'}}
+          </div>
+        </template>
+        <template v-else>
+          <div class="item">
+            <span class="name">供应商:</span>
+            {{listInfo.receiveName}}
+          </div>
+          <div class="item">
+            <span class="name">录单人:</span>
+            {{listInfo.recorder}}
+          </div>
+          <div class="item">
+            <span class="name">交货地址:</span>
+            {{listInfo.shipAddress}}
+          </div>
+          <div class="item">
+            <span class="name">订单号:</span>
+            {{listInfo.code}}
+          </div>
+          <div class="item">
+            <span class="name">单据时间:</span>
+            {{listInfo.date | time}}
+          </div>
+          <div class="item">
+            <span class="name">付款方式:</span>
+            {{listInfo.payments || '无'}}
+          </div>
+          <div class="item">
+            <span class="name">币别:</span>
+            {{listInfo.currency}}
+          </div>
+          <div class="item">
+            <span class="name">金额:</span>
+            {{listInfo.sum | toFixedNum}}
+          </div>
+          <div class="item">
+            <span class="name">备注:</span>
+            {{listInfo.remark || '无'}}
+          </div>
+        </template>
+
       </div>
       <div class="orderbtob_details_middle">
         <div class="list" v-for="(item, index) in listInfo.orderItems">
@@ -50,25 +91,36 @@
           <div class="item">
             <span class="name">购买数量:</span>{{item.qty}}
           </div>
+          <div class="item">
+            <span class="name">交货日期:</span>{{item.delivery | time}}
+          </div>
+          <div class="item" v-if="item.acceptQty">
+            <span class="name">已验收:</span>{{item.acceptQty}}{{item.product.unit}}
+          </div>
+          <div class="item" v-if="item.returnQty">
+            <span class="name">已验退:</span>{{item.returnQty}}{{item.product.unit}}
+          </div>
           <ul class="bottom" v-if="item.replayList.length > 0">
-            <li v-for="ls in item.replayList">
-              <span style="margin-right:0.1rem"> <strong>{{ls.date | time}}</strong></span>
-              <span style="margin-right:0.1rem">{{ls.recorder}}回复数量:</span>
-              <span>{{ls.qty}}</span>
+            <li v-for="ls in item.replayList" style="padding:.1rem 0;">
+              <span style="margin-right:0.1rem">回复: <strong>{{ls.date | time}}</strong></span>
+              <span style="margin-right:0.1rem">{{ls.recorder}}</span>
+              <span>回复数量:{{ls.qty}}</span><br/>
+              <span style="margin-right:0.1rem">交期: <strong>{{ls.delivery | time}}</strong></span>
+              <span>备注:{{ls.remark}}</span><br/>
             </li>
           </ul>
-          <div v-if="(!item.replyQty || item.replyQty < item.qty) && listInfo.end !== 1">
+          <div v-if="(!item.replyQty || item.replyQty < item.qty) && listInfo.end !== 1 && vendorType === 'saler'">
             <div class="item clearfix">
               <span class="name">回复数量:</span>
-              <input type="number" class="dateinput" v-model="count">
+              <input type="number" class="dateinput" v-model="item.replayData.count">
             </div>
             <div class="item clearfix">
               <span class="name">交货日期:</span>
-              <input type="date" :min="item.delivery | time" class="dateinput" v-model="date">
+              <input type="date" :min="item.delivery | time" class="dateinput" v-model="item.replayData.date">
             </div>
             <div class="item clearfix">
               <span class="name">备注:</span>
-              <input type="text" class="dateinput" v-model="remank">
+              <input type="text" class="dateinput" v-model="item.replayData.remank">
             </div>
             <div class="replayBtn" @click="Replay(item)">
               回复
@@ -96,9 +148,6 @@
         listInfo: {
           enterprise: {}
         },
-        date: '',
-        count: '',
-        remank: '',
         collectResult: '',
         timeoutCount: 0,
         token: ''
@@ -108,28 +157,35 @@
       this.getInitInfo()
       this._getToken()
     },
+    computed: {
+      vendorType() {
+        return this.$route.query.type
+      }
+    },
     methods: {
       Replay(item) {
-        if (this.count === '') {
+        if (item.replayData.count === '') {
           this._iniFo('数量不能为空')
-        } else if (Number(this.count) > Number(item.qty)) {
+        } else if (Number(item.replayData.count) > Number(item.qty)) {
           this._iniFo('回复数量不能大于订单数量')
         } else {
-          this.$http.post(`/sale/orders/items/${item.id}/reply?token=${this.token}`, {
-            delivery: new Date().getTime(),
-            qty: this.count,
-            remark: this.remank
-          }).then(res => {
-            this.remank = ''
-            this.count = ''
-            this._iniFo('回复成功')
-            this.getInitInfo()
+          this.$http.get('/token?userType=sale').then(res => {
+            this.$http.post(`/sale/orders/items/${item.id}/reply?token=${res.data.token}`, {
+              delivery: item.replayData.date ? new Date(item.replayData.date).getTime() : new Date().getTime(),
+              qty: item.replayData.count,
+              remark: item.replayData.remank
+            }).then(res => {
+              this.remank = ''
+              this.count = ''
+              this._iniFo('回复成功')
+              this.getInitInfo()
+            })
           })
         }
       },
       LookReplay(item) {
         this.$http.get(`/sale/orders/items/${item.id}/reply/all`).then(res => {
-          item.replayList = res.data
+          item.replayList = res.data || []
         })
       },
       _iniFo(str) {
@@ -142,7 +198,13 @@
         })
       },
       getInitInfo() {
-        this.$http.get(`/sale/orders/${this.$route.query.id}/info`).then(res => {
+        let _url = ''
+        if (this.vendorType === 'saler') {
+          _url = `/sale/orders/${this.$route.query.id}/info`
+        } else {
+          _url = `/sale/orders/purc/${this.$route.query.id}/info`
+        }
+        this.$http.get(_url).then(res => {
           res.data.sum = 0
           res.data.orderItems.forEach(item => {
             res.data.sum += item.qty * item.price
@@ -151,6 +213,9 @@
           })
           res.data.sum = parseFloat(res.data.sum).toFixed(2)
           this.listInfo = res.data
+          this.listInfo.orderItems.forEach(item => {
+            item.replayData = {date: '', count: '', remank: ''}
+          })
         })
       }
     },
@@ -167,6 +232,9 @@
             return year + '-' + month + '-' + day
           }
         }
+      },
+      toFixedNum: function (num) {
+        return num ? parseFloat(num).toFixed(2) : '-'
       }
     },
     components: {

+ 0 - 1
pages/mobile/product/_batchCode.vue

@@ -212,7 +212,6 @@
       },
       goAttach: function (url) {
         if (this.user.logged) {
-          console.log(this.component)
           if (url && url !== '1') {
              // console.log(url)
             window.open(url)

BIN
static/images/mobile/center/user/purc.png


BIN
static/images/mobile/center/user/tender.png


+ 4 - 0
yarn.lock

@@ -3953,6 +3953,10 @@ js-beautify@1.6.14:
     mkdirp "~0.5.0"
     nopt "~3.0.1"
 
+js-md5@^0.7.3:
+  version "0.7.3"
+  resolved "https://registry.yarnpkg.com/js-md5/-/js-md5-0.7.3.tgz#b4f2fbb0b327455f598d6727e38ec272cd09c3f2"
+
 js-tokens@^3.0.0, js-tokens@^3.0.2:
   version "3.0.2"
   resolved "http://registry.npm.taobao.org/js-tokens/download/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"